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.
cam_clay_yield_criterion.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosPfemSolidMechanicsApplication $
3 // Created by: $Author: LMonforte $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: July 2015 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_CAM_CLAY_YIELD_CRITERION_H_INCLUDED )
11 #define KRATOS_CAM_CLAY_YIELD_CRITERION_H_INCLUDED
12 
13 
14 
15 // System includes
16 
17 // External includes
18 
19 // Project includes
20 #include "custom_constitutive/custom_yield_criteria/yield_criterion.hpp"
22 namespace Kratos
23 {
26 
29 
33 
37 
41 
45 
47 
49 class KRATOS_API(PFEM_SOLID_MECHANICS_APPLICATION) CamClayYieldCriterion
50  : public YieldCriterion
51 {
52  public:
55 
58 
62 
65 
68 
71 
74 
75 
77  virtual ~CamClayYieldCriterion();
78 
79 
83 
84 
88 
89  double& CalculateYieldCondition(double & rStateFunction, const Vector& rStressVector, const double& rAlpha) override;
90 
91  void CalculateYieldFunctionDerivative(const Vector& rStressVector, Vector& rFirstDerivative, const double& rAlpha) override;
95 
96 
100 
101 
105 
106  // /// Turn back information as a string.
107  // std::string Info() const override;
108 
109  // /// Print information about this object.
110  // void PrintInfo(std::ostream& rOStream) const override;
111 
112  // /// Print object's data.
113  // void PrintData(std::ostream& rOStream) const override;
114 
115 
119 
120 
122 
123  protected:
126 
127 
131 
132 
136  //double EvaluateThirdInvariantEffect(const Vector& rStressVector);
137  double EvaluateThirdInvariantEffect( const double & rLodeAngle );
138 
139  void CalculateAndAddThirdInvDerivative(const Vector& rStressVector, Vector& rYieldFunctionD);
143 
144 
148 
149 
153 
154 
158 
159 
161 
162  private:
165 
166 
170 
171 
175 
176 
180 
181  double GetPI();
182 
183  double GetSmoothingLodeAngle();
184 
185  void GetSmoothingConstants(double& rA, double& rB, const double& rLode);
186 
190 
191 
195  friend class Serializer;
196 
197  // A private default constructor necessary for serialization
198 
199  void save(Serializer& rSerializer) const override;
200 
201  void load(Serializer& rSerializer) override;
202 
206 
207 
211 
213 
214  }; // Class MisesHuberYieldCriterion
215 
217 
220 
221 
225 
226 
227  // /// input stream function
228  // inline std::istream& operator >> (std::istream& rIStream,
229  // MisesHuberYieldCriterion& rThis);
230 
231  // /// output stream function
232  // inline std::ostream& operator << (std::ostream& rOStream,
233  // const MisesHuberYieldCriterion& rThis)
234  // {
235  // rThis.PrintInfo(rOStream);
236  // rOStream << std::endl;
237  // rThis.PrintData(rOStream);
238 
239  // return rOStream;
240  // }
242 
244 
245 } // namespace Kratos.
246 
247 #endif // KRATOS_CAM_CLAY_YIELD_CRITERION_H_INCLUDED defined
248 
249 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Short class definition.
Definition: cam_clay_yield_criterion.hpp:51
KRATOS_CLASS_POINTER_DEFINITION(CamClayYieldCriterion)
Pointer definition of MisesHuberYieldCriterion.
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Short class definition.
Definition: yield_criterion.hpp:49
HardeningLaw::Pointer HardeningLawPointer
Definition: yield_criterion.hpp:103
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307