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_Dempack_CL.h
Go to the documentation of this file.
1 
2 #if !defined(DEM_DEMPACK_CL_H_INCLUDED)
3 #define DEM_DEMPACK_CL_H_INCLUDED
4 
5 /* Project includes */
7 
8 
9 namespace Kratos {
10 
11  class KRATOS_API(DEM_APPLICATION) DEM_Dempack : public DEMContinuumConstitutiveLaw {
12 
14 
15  public:
16 
18 
21 
22  //DEMContinuumConstitutiveLaw(const DEMContinuumConstitutiveLaw &rReferenceContinuumConstitutiveLaw);
23 
28  double mHistoryDisp;
30 
31  virtual void Initialize(SphericContinuumParticle* element1, SphericContinuumParticle* element2, Properties::Pointer pProps) override;
32 
33  void TransferParametersToProperties(const Parameters& parameters, Properties::Pointer pProp) override;
34 
35  DEMContinuumConstitutiveLaw::Pointer Clone() const override;
36 
37  void Check(Properties::Pointer pProp) const override;
38 
39  virtual void CalculateContactArea(double radius,
40  double other_radius,
41  double &calculation_area) override;
42 
43  virtual void GetContactArea(const double radius,
44  const double other_radius,
45  const Vector& vector_of_initial_areas,
46  const int neighbour_position,
47  double& calculation_area) override;
48 
49  virtual void CalculateElasticConstants(double &kn_el,
50  double &kt_el,
51  double initial_dist,
52  double equiv_young,
53  double equiv_poisson,
54  double calculation_area,
55  SphericContinuumParticle* element1,
56  SphericContinuumParticle* element2, double indentation) override;
57 
58  virtual void CalculateViscoDampingCoeff(double &equiv_visco_damp_coeff_normal,
59  double &equiv_visco_damp_coeff_tangential,
60  SphericContinuumParticle* element1,
61  SphericContinuumParticle* element2,
62  const double kn_el,
63  const double kt_el) override;
64 
65  virtual double LocalMaxSearchDistance(const int i,
66  SphericContinuumParticle* element1,
67  SphericContinuumParticle* element2) override;
68 
69  virtual void CalculateForces(const ProcessInfo& r_process_info,
70  double OldLocalElasticContactForce[3],
71  double LocalElasticContactForce[3],
72  double LocalElasticExtraContactForce[3],
73  double LocalCoordSystem[3][3],
74  double LocalDeltDisp[3],
75  const double kn_el,
76  const double kt_el,
77  double& contact_sigma,
78  double& contact_tau,
79  double& failure_criterion_state,
80  double equiv_young,
81  double equiv_shear,
82  double indentation,
83  double calculation_area,
84  double& acumulated_damage,
85  SphericContinuumParticle* element1,
86  SphericContinuumParticle* element2,
87  int i_neighbour_count,
88  int time_steps,
89  bool& sliding,
90  double &equiv_visco_damp_coeff_normal,
91  double &equiv_visco_damp_coeff_tangential,
92  double LocalRelVel[3],
93  double ViscoDampingLocalContactForce[3]) override;
94 
95  virtual void CalculateNormalForces(double LocalElasticContactForce[3],
96  const double kn_el,
97  double equiv_young,
98  double indentation,
99  double calculation_area,
100  double& acumulated_damage,
101  SphericContinuumParticle* element1,
102  SphericContinuumParticle* element2,
103  int i_neighbour_count,
104  int time_steps,
105  const ProcessInfo& r_process_info) override;
106 
107 
108  virtual void CalculateTangentialForces(double OldLocalElasticContactForce[3],
109  double LocalElasticContactForce[3],
110  double LocalElasticExtraContactForce[3],
111  double ViscoDampingLocalContactForce[3],
112  double LocalCoordSystem[3][3],
113  double LocalDeltDisp[3],
114  double LocalRelVel[3],
115  const double kt_el,
116  const double equiv_shear,
117  double& contact_sigma,
118  double& contact_tau,
119  double indentation,
120  double calculation_area,
121  double& failure_criterion_state,
122  SphericContinuumParticle* element1,
123  SphericContinuumParticle* element2,
124  int i_neighbour_count,
125  bool& sliding,
126  const ProcessInfo& r_process_info) override;
127 
128  virtual void CalculateMoments(SphericContinuumParticle* element,
129  SphericContinuumParticle* neighbor,
130  double equiv_young,
131  double distance,
132  double calculation_area,
133  double LocalCoordSystem[3][3],
134  double ElasticLocalRotationalMoment[3],
135  double ViscoLocalRotationalMoment[3],
136  double equiv_poisson,
137  double indentation,
138  double LocalElasticContactForce[3],
139  double normalLocalContactForce,
140  double GlobalElasticContactForces[3],
141  double LocalCoordSystem_2[3],
142  const int i_neighbor_count) override;
143 
144  virtual void ComputeParticleRotationalMoments(SphericContinuumParticle* element,
145  SphericContinuumParticle* neighbor,
146  double equiv_young,
147  double distance,
148  double calculation_area,
149  double LocalCoordSystem[3][3],
150  double ElasticLocalRotationalMoment[3],
151  double ViscoLocalRotationalMoment[3],
152  double equiv_poisson,
153  double indentation,
154  double LocalElasticContactForce[3]) override;
155 
156  private:
157 
158  friend class Serializer;
159 
160  virtual void save(Serializer& rSerializer) const override{
162  //rSerializer.save("MyMemberName",myMember);
163  }
164 
165  virtual void load(Serializer& rSerializer) override{
167  //rSerializer.load("MyMemberName",myMember);
168  }
169 
170  };
171 
172 } /* namespace Kratos.*/
173 #endif /* DEM_DEMPACK_H_INCLUDED defined */
Definition: DEM_Dempack_CL.h:11
~DEM_Dempack()
Definition: DEM_Dempack_CL.h:20
double mHistoryMaxInd
Definition: DEM_Dempack_CL.h:24
double mHistoryDegradation
Definition: DEM_Dempack_CL.h:27
double mHistoryDisp
Definition: DEM_Dempack_CL.h:28
DEM_Dempack()
Definition: DEM_Dempack_CL.h:19
double mHistoryMaxForce
Definition: DEM_Dempack_CL.h:25
KRATOS_CLASS_POINTER_DEFINITION(DEM_Dempack)
double mHistoryShearFlag
Definition: DEM_Dempack_CL.h:29
double mHistoryDamage
Definition: DEM_Dempack_CL.h:26
Definition: DEM_continuum_constitutive_law.h:23
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
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
parameters
Definition: fluid_chimera_analysis.py:35
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