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.
large_strain_axisymmetric_2D_law.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosConstitutiveModelsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: April 2017 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 
11 #if !defined(KRATOS_LARGE_STRAIN_AXISYMMETRIC_2D_LAW_H_INCLUDED)
12 #define KRATOS_LARGE_STRAIN_AXISYMMETRIC_2D_LAW_H_INCLUDED
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
20 
21 namespace Kratos
22 {
25 
28 
32 
36 
40 
44 
46 
48  class KRATOS_API(CONSTITUTIVE_MODELS_APPLICATION) LargeStrainAxisymmetric2DLaw : public LargeStrain3DLaw
49  {
50  public:
53 
56 
60 
63 
65  LargeStrainAxisymmetric2DLaw(ModelType::Pointer pModel) : LargeStrain3DLaw(pModel) {}
66 
69 
72  {
74  return *this;
75  }
76 
78  ConstitutiveLaw::Pointer Clone() const override
79  {
80  return Kratos::make_shared<LargeStrainAxisymmetric2DLaw>(*this);
81  }
82 
85 
86 
90 
92  SizeType WorkingSpaceDimension() override { return 2; }
93 
95  SizeType GetStrainSize() const override { return 4; }
96 
98  void GetLawFeatures(Features& rFeatures) override
99  {
100  KRATOS_TRY
101 
102  //Set the type of law
103  rFeatures.mOptions.Set( AXISYMMETRIC_LAW );
104  rFeatures.mOptions.Set( FINITE_STRAINS );
105  rFeatures.mOptions.Set( ISOTROPIC );
106 
107  //Get model features
108  GetModelFeatures(rFeatures);
109 
110  //Set strain measure required by the consitutive law
111  rFeatures.mStrainMeasures.push_back(StrainMeasure_Deformation_Gradient);
112 
113  //Set the strain size
114  rFeatures.mStrainSize = GetStrainSize();
115 
116  //Set the spacedimension
117  rFeatures.mSpaceDimension = WorkingSpaceDimension();
118 
119  KRATOS_CATCH(" ")
120  }
121 
122 
126 
127 
131 
132 
136 
137 
141 
143  std::string Info() const override
144  {
145  std::stringstream buffer;
146  buffer << "LargeStrainAxisymmetric2DLaw" ;
147  return buffer.str();
148  }
149 
151  void PrintInfo(std::ostream& rOStream) const override {rOStream << "LargeStrainAxisymmetric2DLaw";}
152 
154  void PrintData(std::ostream& rOStream) const override {}
155 
156 
160 
161 
163 
164  protected:
165 
168 
169 
173 
174 
178 
179 
183 
184 
188 
193  {
194  return this->msIndexVoigt2D4C;
195  }
196 
200 
201 
205 
206 
208 
209  private:
212 
213 
217 
218 
222 
223 
227 
228 
232 
233 
237 
238 
242  friend class Serializer;
243 
244  void save(Serializer& rSerializer) const override
245  {
247  }
248 
249  void load(Serializer& rSerializer) override
250  {
252  }
253 
254 
258 
260 
261  }; // Class LargeStrainAxisymmetric2DLaw
262 
264 
267 
268 
272 
274 
276 
277 } // namespace Kratos.
278 
279 #endif // KRATOS_LARGE_STRAIN_AXISYMMETRIC_2D_LAW_H_INCLUDED defined
const unsigned int(*)[2] VoigtIndexType
Definition: constitutive_3D_law.hpp:33
std::size_t SizeType
Definition: constitutive_law.h:82
void Set(const Flags ThisFlag)
Definition: flags.cpp:33
Definition: large_strain_3D_law.hpp:28
LargeStrain3DLaw & operator=(LargeStrain3DLaw const &rOther)
Assignment operator.
Definition: large_strain_3D_law.cpp:72
Short class definition.
Definition: large_strain_axisymmetric_2D_law.hpp:49
SizeType GetStrainSize() const override
Law Voigt Strain Size.
Definition: large_strain_axisymmetric_2D_law.hpp:95
KRATOS_CLASS_POINTER_DEFINITION(LargeStrainAxisymmetric2DLaw)
Pointer definition of LargeStrainAxisymmetric2DLaw.
LargeStrainAxisymmetric2DLaw()
Default constructor.
Definition: large_strain_axisymmetric_2D_law.hpp:62
~LargeStrainAxisymmetric2DLaw() override
Destructor.
Definition: large_strain_axisymmetric_2D_law.hpp:84
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: large_strain_axisymmetric_2D_law.hpp:154
LargeStrainAxisymmetric2DLaw & operator=(LargeStrainAxisymmetric2DLaw const &rOther)
Assignment operator.
Definition: large_strain_axisymmetric_2D_law.hpp:71
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: large_strain_axisymmetric_2D_law.hpp:151
ConstitutiveLaw::Pointer Clone() const override
Clone.
Definition: large_strain_axisymmetric_2D_law.hpp:78
void GetLawFeatures(Features &rFeatures) override
Law Features.
Definition: large_strain_axisymmetric_2D_law.hpp:98
VoigtIndexType GetVoigtIndexTensor() override
Definition: large_strain_axisymmetric_2D_law.hpp:192
std::string Info() const override
Turn back information as a string.
Definition: large_strain_axisymmetric_2D_law.hpp:143
SizeType WorkingSpaceDimension() override
Law Dimension.
Definition: large_strain_axisymmetric_2D_law.hpp:92
LargeStrainAxisymmetric2DLaw(ModelType::Pointer pModel)
Constructor.
Definition: large_strain_axisymmetric_2D_law.hpp:65
LargeStrainAxisymmetric2DLaw(const LargeStrainAxisymmetric2DLaw &rOther)
Copy constructor.
Definition: large_strain_axisymmetric_2D_law.hpp:68
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_CATCH(MoreInfo)
Definition: define.h:110
#define KRATOS_TRY
Definition: define.h:109
#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
SizeType mStrainSize
Definition: constitutive_law.h:152
std::vector< StrainMeasure > mStrainMeasures
Definition: constitutive_law.h:154
SizeType mSpaceDimension
Definition: constitutive_law.h:153
Flags mOptions
Definition: constitutive_law.h:151