KratosMultiphysics
KRATOS Multiphysics (Kratos) is a framework for building parallel, multi-disciplinary simulation software, aiming at modularity, extensibility, and high performance. Kratos is written in C++, and counts with an extensive Python interface.
DEM_D_Stress_dependent_cohesive_CL.h
Go to the documentation of this file.
1 //Author: J. Irazábal (CIMNE)
2 // Date: March 2019
3 
4 #if !defined(DEM_D_STRESS_DEPENDENT_COHESIVE_LAW_CL_H_INCLUDED)
5 #define DEM_D_STRESS_DEPENDENT_COHESIVE_LAW_CL_H_INCLUDED
6 
7 #include <string>
8 #include <iostream>
9 
10 // Project includes
14 
15 namespace Kratos {
16 
17  class KRATOS_API(DEM_APPLICATION) DEM_D_Stress_Dependent_Cohesive : public DEM_D_Linear_viscous_Coulomb {
18 
19  public:
20 
22 
24 
26 
27  void Check(Properties::Pointer pProp) const override;
28 
29  std::string GetTypeOfLaw() override;
30 
31  DEMDiscontinuumConstitutiveLaw::Pointer Clone() const override;
32 
33  std::unique_ptr<DEMDiscontinuumConstitutiveLaw> CloneUnique() override;
34 
35  void CalculateIndentedContactArea(const double radius,
36  const double other_radius,
37  const double indentation,
38  double &calculation_area);
39 
40  void CalculateIndentedContactAreaWithFEM(const double radius,
41  const double indentation,
42  double &calculation_area,
43  const double ini_delta = 0.0);
44 
45  void InitializeContact(SphericParticle* const element1,
46  SphericParticle* const element2,
47  const double indentation) override;
48 
49  void InitializeContactWithFEM(SphericParticle* const element,
50  Condition* const wall,
51  const double indentation,
52  const double ini_delta = 0.0) override;
53 
54  void CalculateForces(const ProcessInfo& r_process_info,
55  const double OldLocalElasticContactForce[3],
56  double LocalElasticContactForce[3],
57  double LocalDeltDisp[3],
58  double LocalRelVel[3],
59  double indentation,
60  double previous_indentation,
61  double ViscoDampingLocalContactForce[3],
62  double& cohesive_force,
63  SphericParticle* element1,
64  SphericParticle* element2,
65  bool& sliding,
66  double LocalCoordSystem[3][3]) override;
67 
68  void CalculateForcesWithFEM(const ProcessInfo& r_process_info,
69  const double OldLocalElasticContactForce[3],
70  double LocalElasticContactForce[3],
71  double LocalDeltDisp[3],
72  double LocalRelVel[3],
73  double indentation,
74  double previous_indentation,
75  double ViscoDampingLocalContactForce[3],
76  double& cohesive_force,
77  SphericParticle* const element,
78  Condition* const wall,
79  bool& sliding) override;
80 
81  double CalculateStressDependentCohesiveNormalForce(SphericParticle* const element1,
82  SphericParticle* const element2,
83  const double normal_contact_force,
84  const double indentation,
85  const bool initial_time_step);
86 
87  double CalculateStressDependentCohesiveNormalForceWithFEM(SphericParticle* const element,
88  Condition* const wall,
89  const double normal_contact_force,
90  const double indentation,
91  const bool initial_time_step);
92 
94 
96 
99 
106 
107  private:
108 
109  friend class Serializer;
110 
111  virtual void save(Serializer& rSerializer) const override {
113  }
114 
115  virtual void load(Serializer& rSerializer) override {
117  }
118 
119  }; //class DEM_D_Stress_Dependent_Cohesive
120 
121 } /* namespace Kratos.*/
122 #endif /* DEM_D_STRESS_DEPENDENT_COHESIVE_LAW_H defined */
Base class for all Conditions.
Definition: condition.h:59
Definition: DEM_D_Linear_viscous_Coulomb_CL.h:15
void CalculateViscoDampingForceWithFEM(double LocalRelVel[3], double ViscoDampingLocalContactForce[3], SphericParticle *const element, Condition *const wall)
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:263
void CalculateInelasticViscodampingEnergyDEM(double &inelastic_viscodamping_energy, double ViscoDampingLocalContactForce[3], double LocalDeltDisp[3])
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:313
void CalculateInelasticViscodampingEnergyFEM(double &inelastic_viscodamping_energy, double ViscoDampingLocalContactForce[3], double LocalDeltDisp[3])
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:333
virtual double CalculateNormalForce(const double indentation)
Definition: DEM_discontinuum_constitutive_law.cpp:81
void CalculateInelasticFrictionalEnergyFEM(double &inelastic_frictional_energy, double &AuxElasticShearForce, double LocalElasticContactForce[3])
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:327
void CalculateViscoDampingForce(double LocalRelVel[3], double ViscoDampingLocalContactForce[3], SphericParticle *const element1, SphericParticle *const element2)
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:154
void CalculateElasticEnergyDEM(double &elastic_energy, double indentation, double LocalElasticContactForce[3])
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:299
void CalculateInelasticFrictionalEnergyDEM(double &inelastic_frictional_energy, double &AuxElasticShearForce, double LocalElasticContactForce[3])
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:307
void CalculateElasticEnergyFEM(double &elastic_energy, double indentation, double LocalElasticContactForce[3])
Definition: DEM_D_Linear_viscous_Coulomb_CL.cpp:319
void CalculateTangentialForceWithNeighbour(const double normal_contact_force, const double OldLocalElasticContactForce[3], double LocalElasticContactForce[3], double ViscoDampingLocalContactForce[3], const double LocalDeltDisp[3], const double LocalRelVel[3], bool &sliding, SphericParticle *const element, NeighbourClassType *const neighbour, double indentation, double previous_indentation, double &modulus_of_elastic_shear_force, double &maximum_admissible_shear_force)
Definition: DEM_D_Linear_viscous_Coulomb_CL.h:89
Definition: DEM_D_Stress_dependent_cohesive_CL.h:17
KRATOS_CLASS_POINTER_DEFINITION(DEM_D_Stress_Dependent_Cohesive)
DEM_D_Stress_Dependent_Cohesive()
Definition: DEM_D_Stress_dependent_cohesive_CL.h:23
~DEM_D_Stress_Dependent_Cohesive()
Definition: DEM_D_Stress_dependent_cohesive_CL.h:25
Definition: DEM_discontinuum_constitutive_law.h:22
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
initial_time_step
Definition: edgebased_PureConvection.py:113
float radius
Definition: mesh_to_mdpa_converter.py:18
def load(f)
Definition: ode_solve.py:307
Definition: mesh_converter.cpp:33