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_mod_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_MODIFIED_MOHRCOULOMB_COHESIVE_3D_LAW_H_INCLUDED)
14 #define KRATOS_ELASTOPLASTIC_MODIFIED_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) ElastoPlasticModMohrCoulombCohesive3DLaw : 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<ElastoPlasticModMohrCoulombCohesive3DLaw>(ElastoPlasticModMohrCoulombCohesive3DLaw(*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  };
97 
98  // Member Variables
101 
102 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
103 
104  virtual void InitializeConstitutiveLawVariables(ConstitutiveLawVariables& rVariables, Parameters& rValues);
105 
106  virtual double ComputeYieldFunction(Vector& StressVector, ConstitutiveLawVariables& rVariables, Parameters& rValues);
107 
108  virtual double GetShearResultantStressVector(Vector& StressVector);
109 
110  virtual void ComputeStressVector(Vector& rStressVector,Vector& TrialStressVector, double& YieldFunction, double& PlasticMultiplier, Matrix& ElasticConstitutiveMatrix, ConstitutiveLawVariables& rVariables, Parameters& rValues);
111 
112  virtual void ComputeTangentConstitutiveMatrix(Matrix& rConstitutiveMatrix, Matrix& ElasticConstitutiveMatrix, Vector& rStressVector, double& PlasticMultiplier, ConstitutiveLawVariables& rVariables, Parameters& rValues);
113 
114  virtual void DerivativesPlasticPotentialSurface(Vector& StressVector, Vector& np, Matrix& DnpDtp, ConstitutiveLawVariables& rVariables, Parameters& rValues);
115 
116  virtual void DerivativesYieldSurface(Vector& StressVector,Vector& n, ConstitutiveLawVariables& rVariables, Parameters& rValues);
117 
118  virtual void GetElasticConstitutiveMatrix(Matrix& rElasticConstitutiveMatrix, ConstitutiveLawVariables& rVariables, Parameters& rValues);
119 
120 //----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
121 
122 private:
123 
124  // Serialization
125 
126  friend class Serializer;
127 
128  void save(Serializer& rSerializer) const override
129  {
131  }
132 
133  void load(Serializer& rSerializer) override
134  {
136  }
137 
138 }; // Class ElastoPlasticModMohrCoulombCohesive3DLaw
139 } // namespace Kratos.
140 #endif // KRATOS_ELASTOPLASTIC_MODIFIED_MOHRCOULOMB_COHESIVE_3D_LAW_H_INCLUDED defined
Definition: constitutive_law.h:47
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:32
Vector mOldPlasticStrainVector
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:100
Vector mPlasticStrainVector
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:99
ElastoPlasticModMohrCoulombCohesive3DLaw()
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:41
ElastoPlasticModMohrCoulombCohesive3DLaw(const ElastoPlasticModMohrCoulombCohesive3DLaw &rOther)
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:51
ConstitutiveLaw::Pointer Clone() const override
Clone function (has to be implemented by any derived class)
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:45
~ElastoPlasticModMohrCoulombCohesive3DLaw() override
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:56
KRATOS_CLASS_POINTER_DEFINITION(ElastoPlasticModMohrCoulombCohesive3DLaw)
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
int n
manufactured solution and derivatives (u=0 at z=0 dudz=0 at z=domain_height)
Definition: ode_solve.py:402
Definition: constitutive_law.h:189
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:86
double Cohesion
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:94
double NormalStiffness
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:88
double PenaltyStiffness
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:90
double TensileStrength
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:91
double DilatancyAngle
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:93
double ShearStiffness
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:89
double FrictionAngle
Definition: elastoplastic_mod_mohr_coulomb_cohesive_3D_law.hpp:92