2 #if !defined(DEM_CONTINUUM_CONSTITUTIVE_LAW_H_INCLUDED)
3 #define DEM_CONTINUUM_CONSTITUTIVE_LAW_H_INCLUDED
7 #include "custom_utilities/AuxiliaryFunctions.h"
21 class SphericContinuumParticle;
35 virtual void SetConstitutiveLawInProperties(Properties::Pointer pProp,
bool verbose =
true);
37 virtual void SetConstitutiveLawInPropertiesWithParameters(Properties::Pointer pProp,
const Parameters&
parameters,
bool verbose =
true);
39 virtual void TransferParametersToProperties(
const Parameters&
parameters, Properties::Pointer pProp);
41 virtual void Check(Properties::Pointer pProp)
const;
43 virtual std::string GetTypeOfLaw();
47 virtual DEMContinuumConstitutiveLaw::Pointer Clone()
const;
49 virtual void CalculateViscoDamping(
double LocalRelVel[3],
50 double ViscoDampingLocalContactForce[3],
52 double equiv_visco_damp_coeff_normal,
53 double equiv_visco_damp_coeff_tangential,
59 double& calculation_area) {
60 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateContactArea) shouldn't be accessed, use derived class instead"<<std::endl;
70 const double other_radius,
71 const Vector& vector_of_initial_areas,
72 const int neighbour_position,
73 double& calculation_area){
75 CalculateContactArea(
radius, other_radius, calculation_area);
84 double calculation_area,
87 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateElasticConstants) shouldn't be accessed, use derived class instead"<<std::endl;
91 double &equiv_visco_damp_coeff_tangential,
96 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateViscoDampingCoeff) shouldn't be accessed, use derived class instead"<<std::endl;
108 double& contact_sigma,
110 double LocalElasticContactForce[3],
111 double ViscoDampingLocalContactForce[3],
112 double ElasticLocalRotationalMoment[3],
113 double ViscoLocalRotationalMoment[3]) {
118 double OldLocalElasticContactForce[3],
119 double LocalElasticContactForce[3],
120 double LocalElasticExtraContactForce[3],
121 double LocalCoordSystem[3][3],
122 double LocalDeltDisp[3],
125 double& contact_sigma,
127 double& failure_criterion_state,
131 double calculation_area,
132 double& acumulated_damage,
135 int i_neighbour_count,
138 double &equiv_visco_damp_coeff_normal,
139 double &equiv_visco_damp_coeff_tangential,
140 double LocalRelVel[3],
141 double ViscoDampingLocalContactForce[3]) {
142 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateForces) shouldn't be accessed, use derived class instead"<<std::endl;
149 double calculation_area,
150 double& acumulated_damage,
153 int i_neighbour_count,
156 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateNormalForces) shouldn't be accessed, use derived class instead"<<std::endl;
160 double LocalElasticContactForce[3],
161 double LocalElasticExtraContactForce[3],
162 double ViscoDampingLocalContactForce[3],
163 double LocalCoordSystem[3][3],
164 double LocalDeltDisp[3],
165 double LocalRelVel[3],
167 const double equiv_shear,
168 double& contact_sigma,
171 double calculation_area,
172 double& failure_criterion_state,
175 int i_neighbour_count,
178 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateTangentialForces) shouldn't be accessed, use derived class instead"<<std::endl;
185 double calculation_area,
186 double LocalCoordSystem[3][3],
187 double ElasticLocalRotationalMoment[3],
188 double ViscoLocalRotationalMoment[3],
189 double equiv_poisson,
191 double LocalElasticContactForce[3],
192 double normalLocalContactForce,
193 double GlobalElasticContactForces[3],
194 double LocalCoordSystem_2[3],
195 const int i_neighbor_count){
196 KRATOS_ERROR <<
"This function (DEMContinuumConstitutiveLaw::CalculateMoments) shouldn't be accessed, use derived class instead"<<std::endl;
203 double calculation_area,
204 double LocalCoordSystem[3][3],
205 double ElasticLocalRotationalMoment[3],
206 double ViscoLocalRotationalMoment[3],
207 double equiv_poisson,
209 double LocalElasticContactForce[3]);
211 virtual void AddPoissonContribution(
const double equiv_poisson,
212 double LocalCoordSystem[3][3],
213 double& normal_force,
214 double calculation_area,
219 const int i_neighbor_count,
220 const double indentation);
222 virtual double LocalMaxSearchDistance(
const int i,
226 virtual bool CheckRequirementsOfStressTensor();
235 virtual void save(
Serializer& rSerializer)
const override {
Definition: DEM_continuum_constitutive_law.h:23
virtual void CalculateMoments(SphericContinuumParticle *element, SphericContinuumParticle *neighbor, double equiv_young, double distance, double calculation_area, double LocalCoordSystem[3][3], double ElasticLocalRotationalMoment[3], double ViscoLocalRotationalMoment[3], double equiv_poisson, double indentation, double LocalElasticContactForce[3], double normalLocalContactForce, double GlobalElasticContactForces[3], double LocalCoordSystem_2[3], const int i_neighbor_count)
Definition: DEM_continuum_constitutive_law.h:181
virtual void CalculateForces(const ProcessInfo &r_process_info, double OldLocalElasticContactForce[3], double LocalElasticContactForce[3], double LocalElasticExtraContactForce[3], double LocalCoordSystem[3][3], double LocalDeltDisp[3], const double kn_el, const double kt_el, double &contact_sigma, double &contact_tau, double &failure_criterion_state, double equiv_young, double equiv_shear, double indentation, double calculation_area, double &acumulated_damage, SphericContinuumParticle *element1, SphericContinuumParticle *element2, int i_neighbour_count, int time_steps, bool &sliding, double &equiv_visco_damp_coeff_normal, double &equiv_visco_damp_coeff_tangential, double LocalRelVel[3], double ViscoDampingLocalContactForce[3])
Definition: DEM_continuum_constitutive_law.h:117
virtual void CalculateContactArea(double radius, double other_radius, double &calculation_area)
Definition: DEM_continuum_constitutive_law.h:57
virtual void CheckFailure(const int i_neighbour_count, SphericContinuumParticle *element1, SphericContinuumParticle *element2, double &contact_sigma, double &contact_tau, double LocalElasticContactForce[3], double ViscoDampingLocalContactForce[3], double ElasticLocalRotationalMoment[3], double ViscoLocalRotationalMoment[3])
Definition: DEM_continuum_constitutive_law.h:105
KRATOS_CLASS_POINTER_DEFINITION(DEMContinuumConstitutiveLaw)
virtual void GetContactArea(const double radius, const double other_radius, const Vector &vector_of_initial_areas, const int neighbour_position, double &calculation_area)
Definition: DEM_continuum_constitutive_law.h:69
Properties::Pointer mpProperties
Definition: DEM_continuum_constitutive_law.h:229
virtual double CalculateContactArea(double radius, double other_radius, Vector &v)
Definition: DEM_continuum_constitutive_law.h:63
virtual void CalculateViscoDampingCoeff(double &equiv_visco_damp_coeff_normal, double &equiv_visco_damp_coeff_tangential, SphericContinuumParticle *element1, SphericContinuumParticle *element2, const double kn_el, const double kt_el)
Definition: DEM_continuum_constitutive_law.h:90
virtual void CalculateNormalForces(double LocalElasticContactForce[3], const double kn_el, double equiv_young, double indentation, double calculation_area, double &acumulated_damage, SphericContinuumParticle *element1, SphericContinuumParticle *element2, int i_neighbour_count, int time_steps, const ProcessInfo &r_process_info)
Definition: DEM_continuum_constitutive_law.h:145
virtual void CalculateElasticConstants(double &kn_el, double &kt_el, double initial_dist, double equiv_young, double equiv_poisson, double calculation_area, SphericContinuumParticle *element1, SphericContinuumParticle *element2, double indentation)
Definition: DEM_continuum_constitutive_law.h:79
virtual void CalculateTangentialForces(double OldLocalElasticContactForce[3], double LocalElasticContactForce[3], double LocalElasticExtraContactForce[3], double ViscoDampingLocalContactForce[3], double LocalCoordSystem[3][3], double LocalDeltDisp[3], double LocalRelVel[3], const double kt_el, const double equiv_shear, double &contact_sigma, double &contact_tau, double indentation, double calculation_area, double &failure_criterion_state, SphericContinuumParticle *element1, SphericContinuumParticle *element2, int i_neighbour_count, bool &sliding, const ProcessInfo &r_process_info)
Definition: DEM_continuum_constitutive_law.h:159
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
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_continuum_particle.h:26
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
#define KRATOS_ERROR
Definition: exception.h:161
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
KRATOS_DEFINE_APPLICATION_VARIABLE(CHIMERA_APPLICATION, double, CHIMERA_DISTANCE)
parameters
Definition: fluid_chimera_analysis.py:35
v
Definition: generate_convection_diffusion_explicit_element.py:114
float radius
Definition: mesh_to_mdpa_converter.py:18
def load(f)
Definition: ode_solve.py:307
integer i
Definition: TensorModule.f:17
Definition: mesh_converter.cpp:33