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.
von_mises_plastic_potential.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: Alejandro Cornejo & Lucia Barbu
12 //
13 
14 #pragma once
15 
16 // System includes
17 
18 // Project includes
20 
21 namespace Kratos
22 {
25 
29 
30  // The size type definition
31  typedef std::size_t SizeType;
32 
36 
40 
44 
52 template <SizeType TVoigtSize = 6>
54 {
55 public:
58 
60  static constexpr SizeType Dimension = TVoigtSize == 6 ? 3 : 2;
61 
63  static constexpr SizeType VoigtSize = TVoigtSize;
64 
67 
71 
74  {
75  }
76 
79  {
80  }
81 
84  {
85  return *this;
86  }
87 
90 
94 
98 
111  const array_1d<double, VoigtSize>& rPredictiveStressVector,
112  const array_1d<double, VoigtSize>& rDeviator,
113  const double J2,
116  )
117  {
118  array_1d<double, VoigtSize> first_vector, second_vector, third_vector;
119 
123 
124  const double c1 = 0.0;
125  const double c2 = std::sqrt(3.0);
126  const double c3 = 0.0;
127 
128  noalias(rGFlux) = c1 * first_vector + c2 * second_vector + c3 * third_vector;
129  }
130 
135  static int Check(const Properties& rMaterialProperties)
136  {
137  return 0;
138  }
139 
143 
147 
151 
155 
157 
158 protected:
161 
165 
169 
173 
177 
181 
185 
187 
188 private:
191 
195 
199 
203 
207 
211 
215 
217 
218 }; // Class GenericYieldSurface
219 
221 
224 
228 
230 
231 } // namespace Kratos.
static void CalculateSecondVector(const BoundedVectorType &rDeviator, const double J2, BoundedVectorType &rSecondVector)
This method computes the first vector to be used in the derivative of the yield surface.
Definition: advanced_constitutive_law_utilities.cpp:100
static void CalculateFirstVector(BoundedVectorType &rFirstVector)
This method computes the first vector to be used in the derivative of the yield surface.
Definition: advanced_constitutive_law_utilities.cpp:80
static void CalculateThirdVector(const BoundedVectorType &rDeviator, const double J2, BoundedVectorType &rThirdVector)
This method computes the third vector to be used in the derivative of the yield surface.
Definition: advanced_constitutive_law_utilities.cpp:131
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
This class defines a plastic potential following the theory of Von Mises.
Definition: von_mises_plastic_potential.h:54
VonMisesPlasticPotential()
Initialization constructor.
Definition: von_mises_plastic_potential.h:73
virtual ~VonMisesPlasticPotential()
Destructor.
Definition: von_mises_plastic_potential.h:89
KRATOS_CLASS_POINTER_DEFINITION(VonMisesPlasticPotential)
Counted pointer of VonMisesPlasticPotential.
VonMisesPlasticPotential(VonMisesPlasticPotential const &rOther)
Copy constructor.
Definition: von_mises_plastic_potential.h:78
static constexpr SizeType VoigtSize
The define the Voigt size.
Definition: von_mises_plastic_potential.h:63
VonMisesPlasticPotential & operator=(VonMisesPlasticPotential const &rOther)
Assignment operator.
Definition: von_mises_plastic_potential.h:83
static int Check(const Properties &rMaterialProperties)
This method defines the check to be performed in the plastic potential.
Definition: von_mises_plastic_potential.h:135
static void CalculatePlasticPotentialDerivative(const array_1d< double, VoigtSize > &rPredictiveStressVector, const array_1d< double, VoigtSize > &rDeviator, const double J2, array_1d< double, VoigtSize > &rGFlux, ConstitutiveLaw::Parameters &rValues)
This script calculates the derivatives of the plastic potential according to NAYAK-ZIENKIEWICZ paper ...
Definition: von_mises_plastic_potential.h:110
static constexpr SizeType Dimension
We define the dimension.
Definition: von_mises_plastic_potential.h:60
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
T & noalias(T &TheMatrix)
Definition: amatrix_interface.h:484
float J2
Definition: isotropic_damage_automatic_differentiation.py:133
Definition: constitutive_law.h:189