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.
generic_yield_surface.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: Alejandro Cornejo & Lucia Barbu & Vicente Mataix
10 //
11 
12 #pragma once
13 
14 // System includes
15 
16 // Project includes
17 #include "includes/define.h"
18 #include "includes/checks.h"
19 #include "includes/serializer.h"
20 #include "includes/properties.h"
22 #include "utilities/math_utils.h"
23 #include "custom_utilities/constitutive_law_utilities.h"
25 
26 namespace Kratos
27 {
30 
34 
35  // The size type definition
36  typedef std::size_t SizeType;
37 
41 
45 
49 
58 template <class TPlasticPotentialType>
60 {
61 public:
64 
66  typedef TPlasticPotentialType PlasticPotentialType;
67 
69  static constexpr SizeType Dimension = PlasticPotentialType::Dimension;
70 
72  static constexpr SizeType VoigtSize = PlasticPotentialType::VoigtSize;
73 
76 
80 
84 
87  {
88  }
89 
92  {
93  }
94 
97  {
98  return *this;
99  }
100 
102  virtual ~GenericYieldSurface(){};
103 
107 
111 
120  const array_1d<double, VoigtSize>& rPredictiveStressVector,
121  const Vector& rStrainVector,
122  double& rEquivalentStress,
124  )
125  {
126  }
127 
135  double& rThreshold
136  )
137  {
138  }
139 
148  double& rAParameter,
149  const double CharacteristicLength
150  )
151  {
152  }
153 
163  const array_1d<double, VoigtSize>& rPredictiveStressVector,
164  const array_1d<double, VoigtSize>& rDeviator,
165  const double& J2,
166  array_1d<double, VoigtSize>& rDerivativePlasticPotential,
168  )
169  {
170  TPlasticPotentialType::CalculatePlasticPotentialDerivative(rPredictiveStressVector, rDeviator, J2, rDerivativePlasticPotential, rValues);
171  }
172 
185  const array_1d<double, VoigtSize>& StressVector,
187  const double J2,
190  {
191  }
192 
197  static int Check(const Properties& rMaterialProperties)
198  {
199  return TPlasticPotentialType::Check(rMaterialProperties);
200  }
201 
205 
209 
213 
217 
219 
220 protected:
223 
227 
231 
235 
239 
243 
247 
249 private:
252 
256 
260 
264 
268 
272 
276 
278 
279 }; // Class GenericYieldSurface
280 
282 
285 
289 
291 
292 } // namespace Kratos.
This class defines a generic yield surface.
Definition: generic_yield_surface.h:60
static int Check(const Properties &rMaterialProperties)
This method defines the check to be performed in the yield surface.
Definition: generic_yield_surface.h:197
GenericYieldSurface()
Initialization constructor.
Definition: generic_yield_surface.h:86
static constexpr SizeType VoigtSize
The Plastic potential already defines the Voigt size.
Definition: generic_yield_surface.h:72
GenericYieldSurface(GenericYieldSurface const &rOther)
Copy constructor.
Definition: generic_yield_surface.h:91
static void CalculatePlasticPotentialDerivative(const array_1d< double, VoigtSize > &rPredictiveStressVector, const array_1d< double, VoigtSize > &rDeviator, const double &J2, array_1d< double, VoigtSize > &rDerivativePlasticPotential, ConstitutiveLaw::Parameters &rValues)
This method calculates the derivative of the plastic potential DG/DS.
Definition: generic_yield_surface.h:162
GenericYieldSurface & operator=(GenericYieldSurface const &rOther)
Assignment operator.
Definition: generic_yield_surface.h:96
static void CalculateEquivalentStress(const array_1d< double, VoigtSize > &rPredictiveStressVector, const Vector &rStrainVector, double &rEquivalentStress, ConstitutiveLaw::Parameters &rValues)
This method the uniaxial equivalent stress.
Definition: generic_yield_surface.h:119
virtual ~GenericYieldSurface()
Destructor.
Definition: generic_yield_surface.h:102
TPlasticPotentialType PlasticPotentialType
The type of potential plasticity.
Definition: generic_yield_surface.h:66
KRATOS_CLASS_POINTER_DEFINITION(GenericYieldSurface)
Counted pointer of GenericYieldSurface.
static constexpr SizeType Dimension
The Plastic potential already defines the working simension size.
Definition: generic_yield_surface.h:69
static void CalculateYieldSurfaceDerivative(const array_1d< double, VoigtSize > &StressVector, const array_1d< double, VoigtSize > &Deviator, const double J2, array_1d< double, VoigtSize > &rFFlux, ConstitutiveLaw::Parameters &rValues)
This script calculates the derivatives of the Yield Surf according to NAYAK-ZIENKIEWICZ paper Interna...
Definition: generic_yield_surface.h:184
static void CalculateDamageParameter(ConstitutiveLaw::Parameters &rValues, double &rAParameter, const double CharacteristicLength)
This method returns the damage parameter needed in the exp/linear expressions of damage.
Definition: generic_yield_surface.h:146
static void GetInitialUniaxialThreshold(ConstitutiveLaw::Parameters &rValues, double &rThreshold)
This method returns the initial uniaxial stress threshold.
Definition: generic_yield_surface.h:133
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
std::size_t SizeType
The definition of the size type.
Definition: mortar_classes.h:43
float J2
Definition: isotropic_damage_automatic_differentiation.py:133
Deviator
Definition: isotropic_damage_automatic_differentiation.py:135
Definition: constitutive_law.h:189