31 #ifndef BASE_PARTICLES_H 32 #define BASE_PARTICLES_H 34 #include "base_data_package.h" 46 class ParticleGenerator;
48 template <
class ReturnType>
49 class ParticleDynamics;
108 size_t total_real_particles_;
110 size_t total_ghost_particles_;
116 StdVec<ParticleDynamics<void> *> derived_variables_;
120 template <
typename VariableType>
125 template <
typename VariableType,
class InitializationFunction>
126 void registerVariable(StdLargeVec<VariableType> &variable_addrs,
const std::string &variable_name,
127 const InitializationFunction &initialization);
130 template <
typename VariableType>
134 template <
typename VariableType>
138 template <
typename VariableType>
142 template <
class DerivedVariableMethod>
146 template <
typename VariableType>
150 template <
typename VariableType>
163 template <
typename VariableType>
169 void addBufferParticles(
size_t buffer_size);
170 void copyFromAnotherParticle(
size_t this_index,
size_t another_index);
171 void updateFromAnotherParticle(
size_t this_index,
size_t another_index);
173 void switchToBufferParticle(
size_t index_i);
176 template <
typename OutStreamType>
183 void resizeXmlDocForParticles(
XmlEngine &xml_engine);
184 void writeParticlesToXmlForRestart(std::string &filefullpath);
185 void readParticleFromXmlForRestart(std::string &filefullpath);
186 XmlEngine *getReloadXmlEngine() {
return &reload_xml_engine_; };
187 void writeToXmlForReloadParticle(std::string &filefullpath);
188 void readFromXmlForReloadParticle(std::string &filefullpath);
190 virtual BaseParticles *ThisObjectPtr() {
return this; };
198 virtual Vecd ParticleTotalAcceleration(
size_t index_i) {
return acc_[index_i] +
acc_prior_[index_i]; }
199 virtual Real ParticleVolume(
size_t index_i) {
return Vol_[index_i]; }
200 virtual Real ParticleMass(
size_t index_i) {
return mass_[index_i]; }
204 std::string body_name_;
209 void addAParticleEntry();
211 virtual void writePltFileHeader(std::ofstream &output_file);
212 virtual void writePltFileParticleData(std::ofstream &output_file,
size_t index_i);
215 template <
typename VariableType>
218 void operator()(
ParticleData &particle_data,
size_t new_size)
const;
222 template <
typename VariableType>
229 template <
typename VariableType>
232 void operator()(
ParticleData &particle_data,
size_t this_index,
size_t another_index)
const;
243 size_t &total_real_particles_;
245 : xml_engine_(xml_engine), total_real_particles_(total_real_particles){};
247 template <
typename VariableType>
248 void operator()(std::string &variable_name, StdLargeVec<VariableType> &variable)
const;
254 size_t &total_real_particles_;
256 : xml_engine_(xml_engine), total_real_particles_(total_real_particles){};
258 template <
typename VariableType>
259 void operator()(std::string &variable_name, StdLargeVec<VariableType> &variable)
const;
266 template <
typename VariableType>
271 std::string variable_name_;
277 StdLargeVec<VariableType> derived_variable_;
280 #endif // BASE_PARTICLES_H
Definition: base_particles.h:216
Particles with essential (geometric and kinematic) data. There are three types of particles, all par...
Definition: base_particles.h:81
StdLargeVec< Real > rho_
Definition: base_particles.h:96
A body part with the collection of particles at surface of a body.
Definition: base_body_part.h:138
Definition: base_particles.h:251
std::array< StdVec< std::pair< std::string, size_t > >, 4 > ParticleVariableList
Definition: sph_data_containers.h:63
GeneralDataAssemble< StdLargeVec > ParticleData
Definition: sph_data_containers.h:59
void registerSortableVariable(const std::string &variable_name)
Definition: base_particles.hpp:143
Definition: base_data_package.h:46
virtual void initializeOtherVariables()
Definition: base_particles.cpp:39
Base of all materials.
Definition: base_material.h:52
StdLargeVec< Real > mass_
Definition: base_particles.h:97
void writeParticlesToPltFile(std::ofstream &output_file)
Definition: base_particles.cpp:188
StdLargeVec< Vecd > acc_prior_
Definition: base_particles.h:93
void addVariableToRestart(const std::string &variable_name)
Definition: base_particles.hpp:131
XML class for xml input and output, this is GUI of simbody xml parser.
SPHBody * sph_body_
Definition: base_particles.h:203
StdLargeVec< Vecd > vel_
Definition: base_particles.h:91
void addVariableToReload(const std::string &variable_name)
Definition: base_particles.hpp:137
virtual void writeSurfaceParticlesToVtuFile(std::ostream &output_file, BodySurface &surface_particles)
Definition: base_particles.cpp:207
This is the base classes of all materials. A function in a derived material class returns a value wit...
size_t insertAGhostParticle(size_t index_i)
Definition: base_particles.cpp:100
StdLargeVec< VariableType > * getVariableByName(const std::string &variable_name)
Definition: base_particles.hpp:74
Definition: base_particles.h:223
void addVariableToWrite(const std::string &variable_name)
Definition: base_particles.hpp:116
void registerVariable(StdLargeVec< VariableType > &variable_addrs, const std::string &variable_name, VariableType initial_value=VariableType(0))
Definition: base_particles.hpp:40
void addDerivedVariableToWrite()
Definition: base_particles.hpp:122
StdLargeVec< Real > Vol_
Definition: base_particles.h:95
Real rho0_
Definition: base_particles.h:101
StdLargeVec< Vecd > acc_
Definition: base_particles.h:92
A wrapper to provide an ownership for a vector of base class pointers which point to derived objects...
Definition: ownership.h:127
computing displacement from current and initial particle position
Definition: base_particles.h:267
void addVariableNameToList(ParticleVariableList &variable_name_list, const std::string &variable_name)
Definition: base_particles.hpp:89
Set up of basic data structure.
StdLargeVec< size_t > sequence_
Definition: base_particles.h:158
Real signal_speed_max_
Definition: base_particles.h:104
SPHBody is a base body with basic data and functions. Its derived class can be a real fluid body...
Definition: base_body.h:61
void writeParticlesToVtk(OutStreamType &output_stream)
size_t real_particles_bound_
Definition: base_particles.h:109
std::array< std::map< std::string, size_t >, 4 > ParticleDataMap
Definition: sph_data_containers.h:61
Definition: xml_engine.h:56
Real speed_max_
Definition: base_particles.h:103
Definition: base_particles.h:230
StdLargeVec< size_t > unsorted_id_
Definition: base_particles.h:156
Definition: base_particles.h:240
Real sigma0_
Definition: base_particles.h:102
StdLargeVec< Vecd > pos_
Definition: base_particles.h:88
StdLargeVec< size_t > sorted_id_
Definition: base_particles.h:157
Definition: solid_body_supplementary.cpp:9
virtual Vecd getKernelGradient(size_t index_i, size_t index_j, Real dW_ij, Vecd &e_ij)
Definition: base_particles.h:193