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_Bentonite_Colloid_CL.h
Go to the documentation of this file.
1 // Authors: Miguel Angel Celigueta, maceli@cimne.upc.edu
2 // Guillermo Casas, gcasas@cimne.upc.edu
3 
4 #if !defined(DEM_D_BENTONITE_COLLOID_CL_H_INCLUDED)
5 #define DEM_D_BENTONITE_COLLOID_CL_H_INCLUDED
6 
7 #include <string>
8 #include <iostream>
10 
11 namespace Kratos {
12 
13  class SphericParticle;
14 
15  class KRATOS_API(DEM_APPLICATION) DEM_D_Bentonite_Colloid : public DEMDiscontinuumConstitutiveLaw {
16  public:
17 
19 
21 
22  std::string GetTypeOfLaw() override;
23 
25 
26  DEMDiscontinuumConstitutiveLaw::Pointer Clone() const override;
27 
28  std::unique_ptr<DEMDiscontinuumConstitutiveLaw> CloneUnique() override;
29 
30  void CalculateForces(const ProcessInfo& r_process_info,
31  const double OldLocalContactForce[3],
32  double LocalElasticContactForce[3],
33  double LocalDeltDisp[3],
34  double LocalRelVel[3],
35  double indentation,
36  double previous_indentation,
37  double ViscoDampingLocalContactForce[3],
38  double& cohesive_force,
39  SphericParticle* element1,
40  SphericParticle* element2,
41  bool& sliding, double LocalCoordSystem[3][3]) override;
42 
43  void CalculateForcesWithFEM(const ProcessInfo& r_process_info,
44  const double OldLocalContactForce[3],
45  double LocalElasticContactForce[3],
46  double LocalDeltDisp[3],
47  double LocalRelVel[3],
48  double indentation,
49  double previous_indentation,
50  double ViscoDampingLocalContactForce[3],
51  double& cohesive_force,
52  SphericParticle* const element,
53  Condition* const wall,
54  bool& sliding) override;
55 
56 
57  using DEMDiscontinuumConstitutiveLaw::CalculateNormalForce; //To avoid Clang Warning
58  double CalculateNormalForce(const double distance, const double cation_concentration);
59  double CalculateVanDerWaalsForce(const double);
60  double CalculateDiffuseDoubleLayerForce(const double distance, const double cation_concentration);
61 
62  double CalculateCohesiveNormalForce(SphericParticle* const element1,
63  SphericParticle* const element2,
64  const double indentation) override;
65 
66  double CalculateCohesiveNormalForceWithFEM(SphericParticle* const element,
67  Condition* const wall,
68  const double indentation) override;
69 
70  template <class NeighbourClassType>
71  void CalculateTangentialForceWithNeighbour(const double normal_contact_force,
72  const double OldLocalContactForce[3],
73  double LocalElasticContactForce[3],
74  double ViscoDampingLocalContactForce[3],
75  const double LocalDeltDisp[3],
76  const double LocalRelVel[3],
77  bool& sliding,
78  SphericParticle* const element,
79  NeighbourClassType* const neighbour,
80  double indentation,
81  double previous_indentation);
82 
83  void CalculateViscoDampingForce(double LocalRelVel[3],
84  double ViscoDampingLocalContactForce[3],
85  SphericParticle * const element1,
86  SphericParticle* const element2);
87 
88  void CalculateViscoDampingForceWithFEM(double LocalRelVel[3],
89  double ViscoDampingLocalContactForce[3],
90  SphericParticle* const element,
91  Condition* const wall);
92 
93  double mA_H;
94  double mA_p;
95  double mD_p;
96  double mThickness;
98  double mEquivRadius;
99 
100  private:
101 
102 
103 
104  friend class Serializer;
105 
106  virtual void save(Serializer& rSerializer) const override {
108  //rSerializer.save("MyMemberName",myMember);
109  }
110 
111  virtual void load(Serializer& rSerializer) override {
113  //rSerializer.load("MyMemberName",myMember);
114  }
115  };
116 
117 } /* namespace Kratos.*/
118 #endif /* DEM_D_BENTONITE_COLLOID_CL_H_INCLUDED defined */
Base class for all Conditions.
Definition: condition.h:59
Definition: DEM_D_Bentonite_Colloid_CL.h:15
double mEquivRadius
Definition: DEM_D_Bentonite_Colloid_CL.h:98
double mA_p
Definition: DEM_D_Bentonite_Colloid_CL.h:94
KRATOS_CLASS_POINTER_DEFINITION(DEM_D_Bentonite_Colloid)
double mD_p
Definition: DEM_D_Bentonite_Colloid_CL.h:95
double mDDLCoefficient
Definition: DEM_D_Bentonite_Colloid_CL.h:97
double mA_H
Definition: DEM_D_Bentonite_Colloid_CL.h:93
double mThickness
Definition: DEM_D_Bentonite_Colloid_CL.h:96
~DEM_D_Bentonite_Colloid()
Definition: DEM_D_Bentonite_Colloid_CL.h:24
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