30 #ifndef RELAX_DYNAMICS_H 31 #define RELAX_DYNAMICS_H 33 #include "all_particle_dynamics.h" 36 #include "all_body_relations.h" 44 namespace relax_dynamics
46 typedef DataDelegateSimple<SPHBody, BaseParticles> RelaxDataDelegateSimple;
48 typedef DataDelegateInner<SPHBody, BaseParticles> RelaxDataDelegateInner;
50 typedef DataDelegateComplex<SPHBody, BaseParticles, BaseMaterial, SPHBody, BaseParticles> RelaxDataDelegateComplex;
67 Real ReduceFunction(
size_t index_i, Real dt = 0.0)
override;
68 Real OutputResult(Real reduced_value)
override;
87 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
103 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
119 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
140 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
159 StdVec<StdLargeVec<Real> *> contact_Vol_;
160 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
179 Real constrained_distance_;
180 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
197 Real constrained_distance_;
200 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
216 bool level_set_correction =
false);
219 UniquePtr<RelaxationAccelerationInner> relaxation_acceleration_inner_;
224 virtual void exec(Real dt = 0.0)
override;
225 virtual void parallel_exec(Real dt = 0.0)
override;
244 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
260 const std::string &shape_name,
bool level_set_correction =
false);
263 UniquePtr<RelaxationAccelerationComplex> relaxation_acceleration_complex_;
268 virtual void exec(Real dt = 0.0)
override;
269 virtual void parallel_exec(Real dt = 0.0)
override;
284 Real thickness, Real level_set_refinement_ratio);
289 Real constrained_distance_;
291 Real particle_spacing_ref_, thickness_, level_set_refinement_ratio_;
292 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
301 const Real convergence_criterion_;
302 const Real consistency_criterion_;
304 void predictNormalDirection();
305 void correctNormalDirection();
309 Real thickness, Real consistency_criterion = cos(Pi / 20.0));
312 virtual void exec(Real dt = 0.0)
override;
313 virtual void parallel_exec(Real dt = 0.0)
override {
exec(); };
325 void update(
size_t index_i, Real dt = 0.0);
336 const Real convergence_criterion_;
338 bool ReduceFunction(
size_t index_i, Real dt = 0.0)
override;
351 const Real consistency_criterion_;
352 StdLargeVec<int> updated_indicator_;
354 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
365 StdLargeVec<int> &updated_indicator_;
366 bool ReduceFunction(
size_t index_i, Real dt = 0.0)
override;
376 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
394 Real level_set_refinement_ratio,
bool level_set_correction =
false);
400 virtual void exec(Real dt = 0.0)
override;
401 virtual void parallel_exec(Real dt = 0.0)
override;
405 #endif // RELAX_DYNAMICS_H
computing smoothed variable field by averaging with neighbors
Definition: general_dynamics.h:95
compute relaxation acceleration while consider the present of contact bodies with considering contact...
Definition: relax_dynamics.h:235
prepare data for inner particle dynamics
Definition: base_particle_dynamics.h:216
A body part with the collection of particles at surface of a body.
Definition: base_body_part.h:138
carry out particle relaxation step of particles within the shell body
Definition: relax_dynamics.h:390
Base class for all volumetric geometries Note that checkContain and findClosest point are basic funct...
Definition: base_geometry.h:64
Simple particle dynamics without considering particle interaction.
Definition: particle_dynamics_algorithms.h:48
virtual void exec(Real dt=0.0) override
Definition: relax_dynamics.cpp:238
This is the particle dynamics aplliable for all type bodies.
virtual void Interaction(size_t index_i, Real dt=0.0) override
Definition: relax_dynamics.cpp:107
Definition: relax_dynamics.h:341
Here gives the classes for managing cell linked lists. This is the basic class for building the parti...
relaxation dynamics for particle initialization computing the square of time step size ...
Definition: relax_dynamics.h:57
Abstract class for body part simple particle dynamics.
Definition: particle_dynamics_bodypart.h:70
compute relaxation acceleration while consider the present of contact bodies with considering contact...
Definition: relax_dynamics.h:149
Definition: relax_dynamics.h:369
Definition: particle_dynamics_algorithms.h:247
Abstract base class of a general SPH kernel function which is a smoothed Dirac delta function...
Definition: base_kernel.h:63
Base abstract class for reduce.
Definition: particle_dynamics_algorithms.h:69
prepare data for complex particle dynamics
Definition: base_particle_dynamics.h:264
simple algorithm for physics relaxation without considering contact interaction. this is usually used...
Definition: relax_dynamics.h:77
update the particle position for a time step
Definition: relax_dynamics.h:110
we constrain particles to a level function representing the interafce.
Definition: relax_dynamics.h:94
virtual void parallel_exec(Real dt=0.0) override
Definition: relax_dynamics.h:348
virtual void exec(Real dt=0.0) override
Definition: relax_dynamics.cpp:287
A shape using level set to define geometry.
Definition: level_set_shape.h:46
A body part with the cell lists near the surface of a prescribed shape.
Definition: base_body_part.h:187
Definition: relax_dynamics.h:328
Definition: relax_dynamics.h:357
Adaptive resolutions within a SPH body according to the distance to the body surface.
Definition: adaptation.h:128
prodict the normal direction of shell particles.
Definition: relax_dynamics.h:299
virtual void exec(Real dt=0.0) override
Definition: relax_dynamics.cpp:440
constrain surface particles by map contrained particles to geometry face and r = r + phi * norm (vect...
Definition: relax_dynamics.h:169
constrain particles by constraining particles to mid-surface. Note that level_set_refinement_ratio sh...
Definition: relax_dynamics.h:279
virtual void exec(Real dt=0.0) override
Definition: relax_dynamics.cpp:182
update the particle smoothing length ratio
Definition: relax_dynamics.h:126
The relation combined an inner and a contact body relation. The interaction is in a inner-boundary-co...
Definition: complex_body_relation.h:42
Definition: relax_dynamics.h:316
carry out particle relaxation step of particles within multi bodies
Definition: relax_dynamics.h:251
This is the class for particle interaction with other particles.
Definition: particle_dynamics_algorithms.h:115
Abstract class for imposing Eulerian constrain to a body. The constrained particles are in the tagged...
Definition: particle_dynamics_bodypart.h:143
SPHBody is a base body with basic data and functions. Its derived class can be a real fluid body...
Definition: base_body.h:61
The abstract relation within a SPH body.
Definition: base_body_relation.h:117
prepare data for simple particle dynamics.
Definition: base_particle_dynamics.h:185
This is the base classes of kernel functions. Implementation will be implemented in derived classes...
StdLargeVec< Vecd > & n_
Definition: relax_dynamics.h:353
Derived body with inner particle configuration or inner interactions. After construction, the particle and material must be specified.
Definition: base_body.h:182
carry out particle relaxation step of particles within the body
Definition: relax_dynamics.h:207
Definition: solid_body_supplementary.cpp:9
virtual void exec(Real dt=0.0) override
Definition: particle_dynamics_algorithms.cpp:31
constrain surface particles by map contrained particles to geometry face and r = r + phi * norm (vect...
Definition: relax_dynamics.h:189
The base class for all particle dynamics This class contains the only two interface functions availab...
Definition: base_particle_dynamics.h:145