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.
elastic_isotropic_K0_3d_law.h
Go to the documentation of this file.
1 // KRATOS___
2 // // ) )
3 // // ___ ___
4 // // ____ //___) ) // ) )
5 // // / / // // / /
6 // ((____/ / ((____ ((___/ / MECHANICS
7 //
8 // License: geo_mechanics_application/license.txt
9 //
10 // Main authors: Vahid Galavi
11 //
12 
13 #if !defined (KRATOS_ELASTIC_ISOTROPIC_K0_3D_LAW_H_INCLUDED)
14 #define KRATOS_ELASTIC_ISOTROPIC_K0_3D_LAW_H_INCLUDED
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
21 #include "includes/serializer.h"
22 #include "linear_elastic_law.h"
23 
24 // Application includes
26 
27 namespace Kratos
28 {
31 
35 
39 
43 
47 
55 class KRATOS_API(GEO_MECHANICS_APPLICATION) ElasticIsotropicK03DLaw
56  : public GeoLinearElasticLaw
57 {
58 public:
59 
62 
64 
66  using SizeType = std::size_t;
67 
69  static constexpr SizeType Dimension = N_DIM_3D;
70 
72  static constexpr SizeType VoigtSize = VOIGT_SIZE_3D;
73 
76 
80 
84  ConstitutiveLaw::Pointer Clone() const override;
85 
89 
93 
98  void GetLawFeatures(Features& rFeatures) override;
99 
104  {
105  return Dimension;
106  }
107 
111  SizeType GetStrainSize() const override
112  {
113  return VoigtSize;
114  }
115 
116 protected:
117 
120 
124 
128 
132 
138  void CalculateElasticMatrix(Matrix& rConstitutiveMatrix,
139  ConstitutiveLaw::Parameters& rValues) override;
140 
147  void CalculatePK2Stress(const Vector& rStrainVector,
148  Vector& rStressVector,
149  ConstitutiveLaw::Parameters& rValues) override;
150 
156  void CalculateCauchyGreenStrain(ConstitutiveLaw::Parameters& rValues,
157  Vector& rStrainVector) override;
158 
160 
161 private:
162 
165 
169 
173 
177 
182 
186  friend class Serializer;
187 
188  void save(Serializer& rSerializer) const override
189  {
191  }
192 
193  void load(Serializer& rSerializer) override
194  {
195  KRATOS_SERIALIZE_LOAD_BASE_CLASS(rSerializer, BaseType)
196  }
197 }; // Class ElasticIsotropicK03DLaw
198 } // namespace Kratos.
199 #endif // KRATOS_ELASTIC_ISOTROPIC_K0_3D_LAW_H_INCLUDED defined
std::size_t SizeType
Definition: constitutive_law.h:82
This class defines a small deformation linear elastic constitutive model for 3D cases.
Definition: elastic_isotropic_K0_3d_law.h:57
SizeType GetStrainSize() const override
Voigt tensor size:
Definition: elastic_isotropic_K0_3d_law.h:111
KRATOS_CLASS_POINTER_DEFINITION(ElasticIsotropicK03DLaw)
Counted pointer of ElasticIsotropicK03DLaw.
SizeType WorkingSpaceDimension() override
Dimension of the law:
Definition: elastic_isotropic_K0_3d_law.h:103
Definition: linear_elastic_law.h:21
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
#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
constexpr SizeType N_DIM_3D
Definition: geo_mechanics_application_constants.h:25
constexpr SizeType VOIGT_SIZE_3D
Definition: geo_mechanics_application_constants.h:41
def load(f)
Definition: ode_solve.py:307
Definition: constitutive_law.h:137
Definition: constitutive_law.h:189