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.
hencky_plastic_UP_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: Ilaria Iaconeta
11 //
12 
13 
14 #if !defined (KRATOS_HENCKY_PLASTIC_UP_3D_LAW_H_INCLUDED)
15 #define KRATOS_HENCKY_PLASTIC_UP_3D_LAW_H_INCLUDED
16 
17 // System includes
18 
19 // External includes
20 
21 // Project includes
24 
25 namespace Kratos
26 {
27 
34 class KRATOS_API(PARTICLE_MECHANICS_APPLICATION) HenckyElasticPlasticUP3DLaw : public HenckyElasticPlastic3DLaw
35 {
36 //protected:
37 
38  //struct MatrixSplit
39  //{
40  //Matrix EigenValues;
41  //Matrix EigenVectors;
42  //};
43 
44 
45 public:
51  typedef std::size_t SizeType;
52 
53  typedef ParticleFlowRule::Pointer MPMFlowRulePointer;
54  typedef ParticleYieldCriterion::Pointer YieldCriterionPointer;
55  typedef ParticleHardeningLaw::Pointer HardeningLawPointer;
56  typedef Properties::Pointer PropertiesPointer;
57 
63 
72 
73 
75 
80 
81 
86  //HenckyElasticPlastic3DLaw& operator=(const HenckyElasticPlastic3DLaw& rOther);
87 
92  ConstitutiveLaw::Pointer Clone() const override;
93 
97  ~HenckyElasticPlasticUP3DLaw() override;
98 
111  {
112  return 3;
113  };
114 
118  SizeType GetStrainSize() const override
119  {
120  return 6;
121  };
122 
123  void GetLawFeatures(Features& rFeatures) override;
124 
131  //virtual String Info() const;
135  //virtual void PrintInfo(std::ostream& rOStream) const;
139  //virtual void PrintData(std::ostream& rOStream) const;
140 
141 protected:
142 
148 
155 
156 
157 
158  void CorrectDomainPressure( Matrix& rStressMatrix, const MaterialResponseVariables& rElasticVariables) override;
159 
160  void GetDomainPressure( double& rPressure, const MaterialResponseVariables& rElasticVariables);
161 
162  void CalculateElastoPlasticTangentMatrix( const ParticleFlowRule::RadialReturnVariables & rReturnMappingVariables, const Matrix& rNewElasticLeftCauchyGreen,const double& rAlpha, Matrix& rElastoPlasticTangentMatrix, const MaterialResponseVariables& rElasticVariables, const Properties& rProperties) override;
163 
169  void CalculateGreenLagrangeStrain( const Matrix & rRightCauchyGreen,
170  Vector& rStrainVector ) override;
171 
172 
178  void CalculateAlmansiStrain( const Matrix & rLeftCauchyGreen,
179  Vector& rStrainVector ) override;
180 
181  void CalculatePrincipalStressTrial(const MaterialResponseVariables & rElasticVariables,Parameters & rValues,
182  const ParticleFlowRule::RadialReturnVariables& rReturnMappingVariables,
183  Matrix& rNewElasticLeftCauchyGreen, Matrix& rStressMatrix) override;
184 
185 private:
186 
189 
190 
194 
195 
199 
200 
204 
205 
210 
211 
215  friend class Serializer;
216 
217  void save(Serializer& rSerializer) const override
218  {
220  }
221 
222  void load(Serializer& rSerializer) override
223  {
225  }
226 
227 
228 
229 
230 }; // Class HenckyElasticPlasticUP3DLaw
231 
232 } //namespace Kratos
233 
234 #endif //KRATOS_HENCKY_PLASTIC_3D_LAW_H_INCLUDED
235 
Definition: constitutive_law.h:47
std::size_t SizeType
Definition: constitutive_law.h:82
Definition: hencky_plastic_3D_law.hpp:36
ParticleHardeningLaw::Pointer HardeningLawPointer
Definition: hencky_plastic_3D_law.hpp:74
ParticleFlowRule::Pointer MPMFlowRulePointer
Definition: hencky_plastic_3D_law.hpp:72
ParticleYieldCriterion::Pointer YieldCriterionPointer
Definition: hencky_plastic_3D_law.hpp:73
Definition: hencky_plastic_UP_3D_law.hpp:35
Properties::Pointer PropertiesPointer
Definition: hencky_plastic_UP_3D_law.hpp:56
ParticleYieldCriterion::Pointer YieldCriterionPointer
Definition: hencky_plastic_UP_3D_law.hpp:54
std::size_t SizeType
Definition: hencky_plastic_UP_3D_law.hpp:51
ProcessInfo ProcessInfoType
Definition: hencky_plastic_UP_3D_law.hpp:49
ConstitutiveLaw BaseType
Definition: hencky_plastic_UP_3D_law.hpp:50
KRATOS_CLASS_POINTER_DEFINITION(HenckyElasticPlasticUP3DLaw)
ParticleFlowRule::Pointer MPMFlowRulePointer
Definition: hencky_plastic_UP_3D_law.hpp:53
ParticleHardeningLaw::Pointer HardeningLawPointer
Definition: hencky_plastic_UP_3D_law.hpp:55
SizeType WorkingSpaceDimension() override
Definition: hencky_plastic_UP_3D_law.hpp:110
SizeType GetStrainSize() const override
Definition: hencky_plastic_UP_3D_law.hpp:118
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
#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: particle_flow_rule.hpp:130