4 #if !defined(DEM_D_HERTZ_VISCOUS_COULOMB_CL_H_INCLUDED)
5 #define DEM_D_HERTZ_VISCOUS_COULOMB_CL_H_INCLUDED
13 class SphericParticle;
26 std::string GetTypeOfLaw()
override;
28 virtual void Check(Properties::Pointer pProp)
const override;
30 DEMDiscontinuumConstitutiveLaw::Pointer Clone()
const override;
32 std::unique_ptr<DEMDiscontinuumConstitutiveLaw> CloneUnique()
override;
38 void CalculateForces(
const ProcessInfo& r_process_info,
39 const double OldLocalElasticContactForce[3],
40 double LocalElasticContactForce[3],
41 double LocalDeltDisp[3],
42 double LocalRelVel[3],
44 double previous_indentation,
45 double ViscoDampingLocalContactForce[3],
46 double& cohesive_force,
50 double LocalCoordSystem[3][3])
override;
52 void CalculateForcesWithFEM(
const ProcessInfo& r_process_info,
53 const double OldLocalElasticContactForce[3],
54 double LocalElasticContactForce[3],
55 double LocalDeltDisp[3],
56 double LocalRelVel[3],
58 double previous_indentation,
59 double ViscoDampingLocalContactForce[3],
60 double& cohesive_force,
63 bool& sliding)
override;
65 double CalculateNormalForce(
const double indentation)
override;
69 const double indentation,
70 double LocalCoordSystem[3][3])
override;
74 const double indentation)
override;
78 const double indentation)
override;
82 const double indentation)
override;
84 template <
class NeighbourClassType>
85 void CalculateTangentialForceWithNeighbour(
const double normal_contact_force,
86 const double OldLocalElasticContactForce[3],
87 double LocalElasticContactForce[3],
88 double ViscoDampingLocalContactForce[3],
89 const double LocalDeltDisp[3],
90 const double LocalRelVel[3],
93 NeighbourClassType*
const neighbour,
95 double previous_indentation,
96 double& AuxElasticShearForce,
97 double& MaximumAdmisibleShearForce);
99 void CalculateViscoDampingForce(
double LocalRelVel[3],
100 double ViscoDampingLocalContactForce[3],
104 void CalculateViscoDampingForceWithFEM(
double LocalRelVel[3],
105 double ViscoDampingLocalContactForce[3],
109 void CalculateElasticEnergyDEM(
double& elastic_energy,
111 double LocalElasticContactForce[3]);
113 void CalculateInelasticFrictionalEnergyDEM(
double& inelastic_frictional_energy,
114 double& AuxElasticShearForce,
115 double LocalElasticContactForce[3]);
117 void CalculateInelasticViscodampingEnergyDEM(
double& inelastic_viscodamping_energy,
118 double ViscoDampingLocalContactForce[3],
119 double LocalDeltDisp[3]);
121 void CalculateElasticEnergyFEM(
double& elastic_energy,
123 double LocalElasticContactForce[3]);
125 void CalculateInelasticFrictionalEnergyFEM(
double& inelastic_frictional_energy,
126 double& AuxElasticShearForce,
127 double LocalElasticContactForce[3]);
129 void CalculateInelasticViscodampingEnergyFEM(
double& inelastic_viscodamping_energy,
130 double ViscoDampingLocalContactForce[3],
131 double LocalDeltDisp[3]);
137 virtual void save(
Serializer& rSerializer)
const override {
Base class for all Conditions.
Definition: condition.h:59
Definition: DEM_D_Hertz_viscous_Coulomb_CL.h:15
DEM_D_Hertz_viscous_Coulomb()
Definition: DEM_D_Hertz_viscous_Coulomb_CL.h:22
~DEM_D_Hertz_viscous_Coulomb()
Definition: DEM_D_Hertz_viscous_Coulomb_CL.h:24
KRATOS_CLASS_POINTER_DEFINITION(DEM_D_Hertz_viscous_Coulomb)
Definition: DEM_discontinuum_constitutive_law.h:22
virtual double CalculateNormalForce(const double indentation)
Definition: DEM_discontinuum_constitutive_law.cpp:81
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Definition: spheric_particle.h:31
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: mesh_converter.cpp:33