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.
hyper_elastic_isotropic_kirchhoff_3d.h
Go to the documentation of this file.
1 // KRATOS ___ _ _ _ _ _ __ _
2 // / __\___ _ __ ___| |_(_) |_ _ _| |_(_)_ _____ / / __ ___ _____ /_\ _ __ _ __
3 // / / / _ \| '_ \/ __| __| | __| | | | __| \ \ / / _ \/ / / _` \ \ /\ / / __| //_\\| '_ \| '_ |
4 // / /__| (_) | | | \__ \ |_| | |_| |_| | |_| |\ V / __/ /__| (_| |\ V V /\__ \/ _ \ |_) | |_) |
5 // \____/\___/|_| |_|___/\__|_|\__|\__,_|\__|_| \_/ \___\____/\__,_| \_/\_/ |___/\_/ \_/ .__/| .__/
6 // |_| |_|
7 //
8 // License: BSD License
9 // license: structural_mechanics_application/license.txt
10 //
11 // Main authors: Malik Ali Dawi
12 // Ruben Zorrilla
13 //
14 
15 #pragma once
16 
17 // System includes
18 
19 // External includes
20 
21 // Project includes
23 
24 namespace Kratos
25 {
28 
32 
36 
40 
44 
53 class KRATOS_API(CONSTITUTIVE_LAWS_APPLICATION) HyperElasticIsotropicKirchhoff3D
54  : public ConstitutiveLaw
55 {
56 public:
57 
60 
63 
66 
68  typedef std::size_t SizeType;
69 
71  static constexpr SizeType Dimension = 3;
72 
74  static constexpr SizeType VoigtSize = 6;
75 
78 
81 
86 
87  ConstitutiveLaw::Pointer Clone() const override;
88 
93 
98 
102 
106 
111  void GetLawFeatures(Features& rFeatures) override;
112 
117  {
118  return Dimension;
119  };
120 
124  SizeType GetStrainSize() const override
125  {
126  return VoigtSize;
127  };
128 
134  {
135  return StrainMeasure_GreenLagrange;
136  }
137 
143  {
144  return StressMeasure_PK2;
145  }
146 
152  void CalculateMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override;
153 
159  void CalculateMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override;
160 
166  void CalculateMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override;
167 
173  void CalculateMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override;
174 
179  void InitializeMaterialResponsePK1 (ConstitutiveLaw::Parameters& rValues) override;
180 
185  void InitializeMaterialResponsePK2 (ConstitutiveLaw::Parameters& rValues) override;
186 
191  void InitializeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters& rValues) override;
192 
197  void InitializeMaterialResponseCauchy (ConstitutiveLaw::Parameters& rValues) override;
198 
204  void FinalizeMaterialResponsePK1 (ConstitutiveLaw::Parameters & rValues) override;
205 
211  void FinalizeMaterialResponsePK2 (ConstitutiveLaw::Parameters & rValues) override;
212 
218  void FinalizeMaterialResponseKirchhoff (ConstitutiveLaw::Parameters & rValues) override;
219 
225  void FinalizeMaterialResponseCauchy (ConstitutiveLaw::Parameters & rValues) override;
226 
231  {
232  return false;
233  }
234 
239  {
240  return false;
241  }
242 
250  double& CalculateValue(
251  ConstitutiveLaw::Parameters& rParameterValues,
252  const Variable<double>& rThisVariable,
253  double& rValue
254  ) override;
255 
263  Vector& CalculateValue(
264  ConstitutiveLaw::Parameters& rParameterValues,
265  const Variable<Vector>& rThisVariable,
266  Vector& rValue
267  ) override;
268 
276  Matrix& CalculateValue(
277  ConstitutiveLaw::Parameters& rParameterValues,
278  const Variable<Matrix>& rThisVariable,
279  Matrix& rValue
280  ) override;
281 
291  int Check(
292  const Properties& rMaterialProperties,
293  const GeometryType& rElementGeometry,
294  const ProcessInfo& rCurrentProcessInfo
295  ) const override;
296 
297 protected:
298 
301 
305 
309 
313 
320  virtual void CalculateConstitutiveMatrixPK2(
321  Matrix& rConstitutiveMatrix,
322  const double YoungModulus,
323  const double PoissonCoefficient
324  );
325 
333  virtual void CalculateConstitutiveMatrixKirchhoff(
334  Matrix& rConstitutiveMatrix,
335  const Matrix& rDeformationGradientF,
336  const double YoungModulus,
337  const double PoissonCoefficient
338  );
339 
347  virtual void CalculatePK2Stress(
348  const Vector& rStrainVector,
349  Vector& rStressVector,
350  const double YoungModulus,
351  const double PoissonCoefficient
352  );
353 
362  virtual void CalculateKirchhoffStress(
363  const Vector& rStrainVector,
364  Vector& rStressVector,
365  const Matrix& rDeformationGradientF,
366  const double YoungModulus,
367  const double PoissonCoefficient
368  );
369 
375  virtual void CalculateGreenLagrangianStrain(
377  Vector& rStrainVector
378  );
379 
385  virtual void CalculateAlmansiStrain(
387  Vector& rStrainVector
388  );
389 
391 
392 private:
393 
396 
400 
404 
409 
414 
418  friend class Serializer;
419 
420  void save(Serializer& rSerializer) const override
421  {
423  }
424 
425  void load(Serializer& rSerializer) override
426  {
428  }
429 
430 }; // Class HyperElasticIsotropicKirchhoff3D
431 } // namespace Kratos.
Definition: constitutive_law.h:47
StrainMeasure
Definition: constitutive_law.h:52
StressMeasure
Definition: constitutive_law.h:69
Geometry base class.
Definition: geometry.h:71
This law defines an hyperelastic material according to the Saint-Venant–Kirchhoff formulation for 3D ...
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:55
SizeType GetStrainSize() const override
Voigt tensor size:
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:124
ProcessInfo ProcessInfoType
The definition of the process info.
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:62
StressMeasure GetStressMeasure() override
Returns the stress measure of this constitutive law (by default 2st Piola-Kirchhoff stress in voigt n...
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:142
std::size_t SizeType
The definition of the size type.
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:68
StrainMeasure GetStrainMeasure() override
Returns the expected strain measure of this constitutive law (by default Green-Lagrange)
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:133
bool RequiresFinalizeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:238
SizeType WorkingSpaceDimension() override
Dimension of the law:
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:116
bool RequiresInitializeMaterialResponse() override
If the CL requires to initialize the material response, called by the element in InitializeSolutionSt...
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:230
ConstitutiveLaw BaseType
The definition of the base class.
Definition: hyper_elastic_isotropic_kirchhoff_3d.h:65
KRATOS_CLASS_POINTER_DEFINITION(HyperElasticIsotropicKirchhoff3D)
Pointer definition of HyperElasticIsotropicKirchhoff3D.
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