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_3d.h
Go to the documentation of this file.
1 // KRATOS ___| | | |
2 // \___ \ __| __| | | __| __| | | __| _` | |
3 // | | | | | ( | | | | ( | |
4 // _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS
5 //
6 // License: BSD License
7 // license: structural_mechanics_application/license.txt
8 //
9 // Main authors: Riccardo Rossi
10 // Vicente Mataix Ferrandiz
11 //
12 
13 #if !defined (KRATOS_ELASTIC_ISOTROPIC_3D_LAW_H_INCLUDED)
14 #define KRATOS_ELASTIC_ISOTROPIC_3D_LAW_H_INCLUDED
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
22 
23 namespace Kratos
24 {
27 
31 
35 
39 
43 
52 class KRATOS_API(FEM_TO_DEM_APPLICATION) ElasticIsotropic3DFEMDEM
53  : public ConstitutiveLaw
54 {
55 public:
56 
59 
62 
65 
67  typedef std::size_t SizeType;
68 
70  static constexpr SizeType Dimension = 3;
71 
73  static constexpr SizeType VoigtSize = 6;
74 
77 
81 
86 
90  ConstitutiveLaw::Pointer Clone() const override;
91 
96 
100  ~ElasticIsotropic3DFEMDEM() override;
101 
105 
109 
114  void GetLawFeatures(Features& rFeatures) override;
115 
120  {
121  return Dimension;
122  };
123 
127  SizeType GetStrainSize() const override
128  {
129  return VoigtSize;
130  };
131 
137  {
138  return StrainMeasure_Infinitesimal;
139  }
140 
146  {
147  return StressMeasure_Cauchy;
148  }
149 
156  void CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override;
157 
164  void CalculateMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override;
165 
172  void CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override;
173 
180  void CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override;
181 
186  void InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) override;
187 
192  void InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters& rValues) override;
193 
198  void InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) override;
199 
204  void InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) override;
205 
212  void FinalizeMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override;
213 
220  void FinalizeMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override;
221 
228  void FinalizeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override;
229 
236  void FinalizeMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override;
237 
245  double& CalculateValue(
246  ConstitutiveLaw::Parameters& rParameterValues,
247  const Variable<double>& rThisVariable,
248  double& rValue
249  ) override;
250 
258  Vector& CalculateValue(
259  ConstitutiveLaw::Parameters& rParameterValues,
260  const Variable<Vector>& rThisVariable,
261  Vector& rValue
262  ) override;
263 
271  Matrix& CalculateValue(
272  ConstitutiveLaw::Parameters& rParameterValues,
273  const Variable<Matrix>& rThisVariable,
274  Matrix& rValue
275  ) override;
276 
285  int Check(
286  const Properties& rMaterialProperties,
287  const GeometryType& rElementGeometry,
288  const ProcessInfo& rCurrentProcessInfo
289  ) const override;
290 
291 protected:
292 
295 
299 
303 
307 
312  void CheckClearElasticMatrix(Matrix& rConstitutiveMatrix);
313 
319  virtual void CalculateElasticMatrix(
320  Matrix& rConstitutiveMatrix,
322  );
323 
330  virtual void CalculatePK2Stress(
331  const Vector& rStrainVector,
332  Vector& rStressVector,
334  );
335 
341  virtual void CalculateCauchyGreenStrain(
343  Vector& rStrainVector
344  );
345 
347 
348 private:
349 
352 
356 
360 
364 
369 
373  friend class Serializer;
374 
375  void save(Serializer& rSerializer) const override
376  {
378  }
379 
380  void load(Serializer& rSerializer) override
381  {
383  }
384 
385 
386 }; // Class ElasticIsotropic3DFEMDEM
387 } // namespace Kratos.
388 #endif // KRATOS_ELASTIC_ISOTROPIC_3D_LAW_H_INCLUDED defined
Definition: constitutive_law.h:47
StrainMeasure
Definition: constitutive_law.h:52
StressMeasure
Definition: constitutive_law.h:69
Definition: elastic_isotropic_3d.h:54
SizeType GetStrainSize() const override
Voigt tensor size:
Definition: elastic_isotropic_3d.h:127
StrainMeasure GetStrainMeasure() override
Returns the expected strain measure of this constitutive law (by default Green-Lagrange)
Definition: elastic_isotropic_3d.h:136
KRATOS_CLASS_POINTER_DEFINITION(ElasticIsotropic3DFEMDEM)
Counted pointer of ElasticIsotropic3DFEMDEM.
SizeType WorkingSpaceDimension() override
Dimension of the law:
Definition: elastic_isotropic_3d.h:119
std::size_t SizeType
The size type definition.
Definition: elastic_isotropic_3d.h:67
ProcessInfo ProcessInfoType
The process info type definition.
Definition: elastic_isotropic_3d.h:61
ConstitutiveLaw BaseType
The base class ConstitutiveLaw type definition.
Definition: elastic_isotropic_3d.h:64
StressMeasure GetStressMeasure() override
Returns the stress measure of this constitutive law (by default 2st Piola-Kirchhoff stress in voigt n...
Definition: elastic_isotropic_3d.h:145
Geometry base class.
Definition: geometry.h:71
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
#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: constitutive_law.h:137
Definition: constitutive_law.h:189