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.
elastoplastic_mohr_coulomb_cohesive_3D_law.hpp
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Danilo Cavalcanti and Ignasi de Pouplana
11 //
12 
13 #if !defined (KRATOS_ELASTOPLASTIC_MOHRCOULOMB_COHESIVE_3D_LAW_H_INCLUDED)
14 #define KRATOS_ELASTOPLASTIC_MOHRCOULOMB_COHESIVE_3D_LAW_H_INCLUDED
15 
16 // System includes
17 #include <cmath>
18 
19 // Project includes
20 #include "utilities/math_utils.h"
21 #include "includes/serializer.h"
22 #include "includes/checks.h"
24 
25 // Application includes
27 
28 namespace Kratos
29 {
30 
31 class KRATOS_API(POROMECHANICS_APPLICATION) ElastoPlasticMohrCoulombCohesive3DLaw : public ConstitutiveLaw
32 {
33 
34 public:
35 
37 
38 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
39 
40  // Default Constructor
42  {
43  }
44 
45  ConstitutiveLaw::Pointer Clone() const override
46  {
47  return Kratos::make_shared<ElastoPlasticMohrCoulombCohesive3DLaw>(ElastoPlasticMohrCoulombCohesive3DLaw(*this));
48  }
49 
50  // Copy Constructor
52  {
53  }
54 
55  // Destructor
57  {
58  }
59 
60 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
61 
62  void GetLawFeatures(Features& rFeatures) override;
63 
64  int Check(const Properties& rMaterialProperties, const GeometryType& rElementGeometry, const ProcessInfo& rCurrentProcessInfo) const override;
65 
66  void InitializeMaterial( const Properties& rMaterialProperties,const GeometryType& rElementGeometry,const Vector& rShapeFunctionsValues ) override;
67 
68 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
69 
70  void CalculateMaterialResponseCauchy(Parameters & rValues) override;
71 
72  void FinalizeMaterialResponseCauchy(Parameters & rValues) override;
73 
74 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
75  Vector& GetValue( const Variable<Vector>& rThisVariable, Vector& rValue ) override;
76 
77  void SetValue( const Variable<Vector>& rThisVariable,
78  const Vector& rValue,
79  const ProcessInfo& rCurrentProcessInfo ) override;
80 
81 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
82 
83 protected:
84 
86  {
87  // Material parameters
91  double TensileStrength;
92  double FrictionAngle;
94  double Cohesion;
95  };
96 
98  {
99  // Yield surfaces
102 
103  // Vector normal to the yield surface
106 
107  // Vector normal to the plastic potential surface
110  };
111 
112  // Member Variables
115 
116 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
117 
118  virtual void InitializeConstitutiveLawVariables(ConstitutiveLawVariables& rVariables, Parameters& rValues);
119 
120  virtual void InitializeElastoPlasticConstitutiveLawVariables(ElastoPlasticConstitutiveLawVariables& rEPlasticVariables, const double VoigtSize);
121 
122  virtual void ComputeYieldFunction(Vector& StressVector, ConstitutiveLawVariables& rVariables, ElastoPlasticConstitutiveLawVariables& rEPlasticVariables, Parameters& rValues);
123 
124  virtual double GetShearResultantStressVector(Vector& StressVector);
125 
126  virtual void ReturnMapping(Vector& rStressVector, Matrix& rConstitutiveMatrix, Vector& TrialStressVector, Matrix& ElasticConstitutiveMatrix, ConstitutiveLawVariables& rVariables, ElastoPlasticConstitutiveLawVariables& rEPlasticVariables, Parameters& rValues);
127 
128  virtual void DerivativesPlasticPotentialSurface(Vector& StressVector, ConstitutiveLawVariables& rVariables, ElastoPlasticConstitutiveLawVariables& rEPlasticVariables, Parameters& rValues);
129 
130  virtual void DerivativesYieldSurface(Vector& StressVector, ConstitutiveLawVariables& rVariables, ElastoPlasticConstitutiveLawVariables& rEPlasticVariables, Parameters& rValues);
131 
132  virtual void StressVectorInstersectionYieldSurfaces(Vector& rStressVector, const double ts, const double ts_intersection, const double ft);
133 
134  virtual void ConstitutiveMatrixInstersectionYieldSurfaces(Vector& StressVector, Matrix& rConstitutiveMatrix, ConstitutiveLawVariables& rVariables);
135 
136  virtual void GetElasticConstitutiveMatrix(Matrix& rElasticConstitutiveMatrix, ConstitutiveLawVariables& rVariables, Parameters& rValues);
137 
138 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
139 
140 private:
141 
142  // Serialization
143 
144  friend class Serializer;
145 
146  void save(Serializer& rSerializer) const override
147  {
149  }
150 
151  void load(Serializer& rSerializer) override
152  {
154  }
155 
156 }; // Class ElastoPlasticMohrCoulombCohesive3DLaw
157 } // namespace Kratos.
158 #endif // KRATOS_ELASTOPLASTIC_MOHRCOULOMB_COHESIVE_3D_LAW_H_INCLUDED defined
Definition: constitutive_law.h:47
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:32
ConstitutiveLaw::Pointer Clone() const override
Clone function (has to be implemented by any derived class)
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:45
KRATOS_CLASS_POINTER_DEFINITION(ElastoPlasticMohrCoulombCohesive3DLaw)
~ElastoPlasticMohrCoulombCohesive3DLaw() override
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:56
ElastoPlasticMohrCoulombCohesive3DLaw()
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:41
ElastoPlasticMohrCoulombCohesive3DLaw(const ElastoPlasticMohrCoulombCohesive3DLaw &rOther)
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:51
Vector mPlasticStrainVector
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:113
Vector mOldPlasticStrainVector
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:114
Geometry base class.
Definition: geometry.h:71
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
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def SetValue(entity, variable, value)
Definition: coupling_interface_data.py:256
def load(f)
Definition: ode_solve.py:307
list ts
Definition: radii_error_plotter.py:48
Definition: constitutive_law.h:189
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:86
double PenaltyStiffness
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:90
double DilatancyAngle
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:93
double NormalStiffness
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:88
double Cohesion
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:94
double FrictionAngle
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:92
double ShearStiffness
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:89
double TensileStrength
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:91
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:98
Vector n_MC
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:104
Vector np_MC
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:108
Vector n_TC
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:105
double YieldFunction_MC
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:100
Vector np_TC
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:109
double YieldFunction_CutOff
Definition: elastoplastic_mohr_coulomb_cohesive_3D_law.hpp:101