30 #ifndef THIN_STRUCTURE_DYNAMICS_H 31 #define THIN_STRUCTURE_DYNAMICS_H 33 #include "all_particle_dynamics.h" 35 #include "all_body_relations.h" 42 namespace thin_structure_dynamics
44 typedef DataDelegateSimple<SolidBody, ShellParticles, ElasticSolid> ShellDataSimple;
45 typedef DataDelegateInner<SolidBody, ShellParticles, ElasticSolid> ShellDataInner;
77 Real rho0_, physical_viscosity_, E0_, nu_, c0_;
78 Real smoothing_length_;
79 Real ReduceFunction(
size_t index_i, Real dt = 0.0)
override;
97 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
115 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
132 &angular_vel_, dangular_vel_dt_;
146 int number_of_gaussian_points = 3,
bool hourglass_control =
false);
150 Real rho0_, inv_rho0_;
153 Real smoothing_length_, E0_, G0_, nu_, hourglass_control_factor_;
154 bool hourglass_control_;
155 const Real inv_W0_ = 1.0 / body_->sph_adaptation_->getKernel()->W0(Vecd(0));
156 const Real shear_correction_factor_ = 5.0 / 6.0;
158 const StdVec<Real> three_gaussian_points_ = { 0.0, 0.7745966692414834, -0.7745966692414834 };
159 const StdVec<Real> three_gaussian_weights_ = { 0.8888888888888889, 0.5555555555555556, 0.5555555555555556 };
161 = { 0.0, 0.5384693101056831, -0.5384693101056831, 0.9061798459386640, -0.9061798459386640 };
163 = { 0.5688888888888889, 0.4786286704993665, 0.4786286704993665, 0.2369268850561891, 0.2369268850561891 };
164 int number_of_gaussian_points_;
169 virtual void Initialization(
size_t index_i, Real dt = 0.0)
override;
170 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
171 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
187 virtual void Initialization(
size_t index_i, Real dt = 0.0)
override;
188 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
189 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
208 virtual Vecd getDisplacement(
const Vecd &pos_0,
const Vecd &pos_n) {
return pos_0; };
209 virtual Vecd getVelocity(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &vel_n) {
return Vecd(0); };
210 virtual Vecd GetAcceleration(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &acc) {
return Vecd(0); };
211 virtual Vecd GetRotationAngle(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &rotation_angles_0_) {
return rotation_angles_0_; };
212 virtual Vecd GetAngularVelocity(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &angular_vel_) {
return Vecd(0); };
213 virtual Vecd GetAngularAcceleration(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &dangular_vel_dt_) {
return Vecd(0); };
214 virtual Vecd GetPseudoNormal(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &n_0) {
return n_0; };
215 virtual Vecd GetPseudoNormalChangeRate(
const Vecd &pos_0,
const Vecd &pos_n,
const Vecd &dpseudo_normal_dt_) {
return Vecd(0); };
216 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
233 Matd constrain_matrix_, recover_matrix_;
238 virtual void Initialization(
size_t index_i, Real dt = 0.0)
override;
239 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
240 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
259 virtual void Initialization(
size_t index_i, Real dt = 0.0)
override;
260 virtual void Interaction(
size_t index_i, Real dt = 0.0)
override;
261 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
280 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
290 std::vector<Vecd> point_forces_, reference_positions_, time_dependent_point_forces_;
291 Real time_to_full_external_force_;
292 Real particle_spacing_ref_, h_spacing_ratio_;
295 std::vector <StdLargeVec<Real>> weight_;
296 std::vector<Real> sum_of_weight_;
300 std::vector<Vecd> reference_positions, Real time_to_full_external_force,
301 Real particle_spacing_ref, Real h_spacing_ratio = 1.6);
306 virtual void Update(
size_t index_i, Real dt = 0.0)
override;
310 #endif //THIN_STRUCTURE_DYNAMICS_H
The boundary conditions are denoted by SS1 according to the references. The axis_direction must be 0 ...
Definition: thin_structure_dynamics.h:269
set initial condition for shell particles This is a abstract class to be override for case specific i...
Definition: thin_structure_dynamics.h:52
prepare data for inner particle dynamics
Definition: base_particle_dynamics.h:216
Computing the acoustic time step size for shell.
Definition: thin_structure_dynamics.h:67
const int axis_
Definition: thin_structure_dynamics.h:273
ShellStressRelaxationFirstHalf(BaseBodyRelationInner &inner_relation, int number_of_gaussian_points=3, bool hourglass_control=false)
Definition: thin_structure_dynamics.cpp:128
Simple particle dynamics without considering particle interaction.
Definition: particle_dynamics_algorithms.h:48
A body part with a collection of particles.
Definition: base_body_part.h:64
Distribute a series of point forces to its contact shell bodies.
Definition: thin_structure_dynamics.h:287
Declaration of solidbody which is used for Solid BCs and derived from RealBody.
Definition: solid_body.h:46
obtain the corrected initial configuration in strong form
Definition: thin_structure_dynamics.h:86
Abstract class for body part simple particle dynamics.
Definition: particle_dynamics_bodypart.h:70
Base abstract class for reduce.
Definition: particle_dynamics_algorithms.h:69
virtual void Initialization(size_t index_i, Real dt=0.0) override
Definition: thin_structure_dynamics.cpp:166
This class includes an initialization, an interaction and a update steps.
Definition: particle_dynamics_algorithms.h:181
The clamped constrain of a shell body part.
Definition: thin_structure_dynamics.h:247
abstract class for preparing shell relaxation
Definition: thin_structure_dynamics.h:122
virtual void Interaction(size_t index_i, Real dt=0.0) override
Definition: thin_structure_dynamics.cpp:61
This is the class for particle interaction with other particles.
Definition: particle_dynamics_algorithms.h:115
Definition: particle_dynamics_bodypart.h:124
This is the derived class of base particles.
The abstract relation within a SPH body.
Definition: base_body_relation.h:117
computing stress relaxation process by verlet time stepping This is the first step ...
Definition: thin_structure_dynamics.h:142
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...
Fix the position and angle of a shell body part. Note that the average values for FSI are prescribed ...
Definition: thin_structure_dynamics.h:196
Soft the constraint of a solid body part.
Definition: thin_structure_dynamics.h:223
virtual void Interaction(size_t index_i, Real dt=0.0) override
Definition: thin_structure_dynamics.cpp:236
These are classes for define properties of elastic solid materials. These classes are based on isotro...
This is the class for bodies used for solid BCs or Elastic structure.
computing stress relaxation process by verlet time stepping This is the second step ...
Definition: thin_structure_dynamics.h:179
Definition: solid_body_supplementary.cpp:9