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.
non_linear_hencky_plastic_U_P_3D_law.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_NON_LINEAR_HENCKY_PLASTIC_U_P_3D_LAW_H_INCLUDED)
11 #define KRATOS_NON_LINEAR_HENCKY_PLASTIC_U_P_3D_LAW_H_INCLUDED
12 
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
20 
21 
22 namespace Kratos
23 {
30 class KRATOS_API(PFEM_SOLID_MECHANICS_APPLICATION) NonLinearHenckyElasticPlasticUP3DLaw: public NonLinearHenckyElasticPlastic3DLaw
31 {
32 
33 public:
39  typedef std::size_t SizeType;
40 
41  typedef FlowRule::Pointer FlowRulePointer;
42  typedef YieldCriterion::Pointer YieldCriterionPointer;
43  typedef HardeningLaw::Pointer HardeningLawPointer;
44  typedef Properties::Pointer PropertiesPointer;
45 
51 
60 
61 
63 
68 
69 
74  //HyperElasticPlastic3DLaw& operator=(const HyperElasticPlastic3DLaw& rOther);
75 
80  ConstitutiveLaw::Pointer Clone() const override;
81 
86 
99  {
100  return 3;
101  };
102 
106  SizeType GetStrainSize() const override
107  {
108  return 6;
109  };
110 
111  void GetLawFeatures(Features& rFeatures) override;
112 
113  Matrix& GetValue( const Variable<Matrix>& rThisVariable, Matrix& rValue ) override;
114 
115  void SetValue( const Variable<Vector>& rThisVariable,
116  const Vector& rValue,
117  const ProcessInfo& rCurrentProcessInfo ) override;
118 
119 /* bool Has( const Variable<double>& rThisVariable );
120  bool Has( const Variable<Vector>& rThisVariable );
121  bool Has( const Variable<Matrix>& rThisVariable );
122 
123  double& GetValue( const Variable<double>& rThisVariable, double& rValue );
124  Vector& GetValue( const Variable<Vector>& rThisVariable, Vector& rValue );
125  Matrix& GetValue( const Variable<Matrix>& rThisVariable, Matrix& rValue );
126 
127 
128  void SetValue( const Variable<double>& rVariable,
129  const double& Value,
130  const ProcessInfo& rCurrentProcessInfo );
131  void SetValue( const Variable<Vector>& rThisVariable,
132  const Vector& rValue,
133  const ProcessInfo& rCurrentProcessInfo );
134  void SetValue( const Variable<Matrix>& rThisVariable,
135  const Matrix& rValue,
136  const ProcessInfo& rCurrentProcessInfo );
137 */
146 // void CalculateMaterialResponsePK1 (Parameters & rValues);
147 // Esta función sirve como está definida en la clase madre
148 
155 // void CalculateMaterialResponsePK2 (Parameters & rValues);
156 // Esta función sirve como está definida en la clase madre
157 
164 // void CalculateMaterialResponseKirchhoff (Parameters & rValues);
165 
166 
173 // void CalculateMaterialResponseCauchy (Parameters & rValues);
174 // Esta función sirve como está definida
175 
182 // void FinalizeMaterialResponsePK1 (Parameters & rValues);
183 
190 // void FinalizeMaterialResponsePK2 (Parameters & rValues);
191 
205 // void FinalizeMaterialResponseCauchy (Parameters & rValues);
206 
216 // int Check(const Properties& rProperties, const GeometryType& rGeometry, const ProcessInfo& rCurrentProcessInfo);
217 
218 
219 
226  //String Info() const override;
230  //void PrintInfo(std::ostream& rOStream) const override;
234  //void PrintData(std::ostream& rOStream) const override;
235 
236 protected:
237 
243 
244 // Matrix mElasticLeftCauchyGreen;
245 
246 // FlowRulePointer mpFlowRule;
247 
248 // YieldCriterionPointer mpYieldCriterion;
249 
250 // HardeningLawPointer mpHardeningLaw;
251 
258 
259  void CorrectDomainPressure( Matrix& rStressMatrix, const MaterialResponseVariables& rElasticVariables) override;
260 
261  void GetDomainPressure( double& rPressure, const MaterialResponseVariables& rElasticVariables);
262 
263 
264  void CalculateElastoPlasticTangentMatrix( const FlowRule::RadialReturnVariables & rReturnMappingVariables, const Matrix& rNewElasticLeftCauchyGreen,const double& rAlpha, Matrix& rElastoPlasticTangentMatrix, const MaterialResponseVariables& rElasticVariables) override;
265 
266  void CalculateOnlyDeviatoricPart( Matrix& rIncrementalDeformationGradient ) override;
267 
268  //Matrix SetConstitutiveMatrixToAppropiateDimension(const Matrix& rElastoPlasticTangentMatrix);
269  // NOT NEDEED, the base class is ok
270 
274 // Matrix& DeformationGradient3D (Matrix & Matrix2D);
275 
281  void CalculateGreenLagrangeStrain( const Matrix & rRightCauchyGreen,
282  Vector& rStrainVector ) override;
283 
284 
290  void CalculateAlmansiStrain( const Matrix & rLeftCauchyGreen,
291  Vector& rStrainVector ) override;
318 /* virtual void CalculateIsochoricConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
319  const Matrix & rInverseDeformationGradientF,
320  const Vector & rIsoStressVector,
321  Matrix& rConstitutiveMatrix);
322 */
323 
328 /* double& IsochoricConstitutiveComponent( double & rCabcd,
329  const MaterialResponseVariables& rElasticVariables,
330  const Matrix & rIsoStressMatrix,
331  const unsigned int& a, const unsigned int& b,
332  const unsigned int& c, const unsigned int& d);
333 */
338 /* double& IsochoricConstitutiveComponent( double & rCabcd,
339  const MaterialResponseVariables& rElasticVariables,
340  const Matrix & rInverseDeformationGradientF,
341  const Matrix & rIsoStressMatrix,
342  const unsigned int& a, const unsigned int& b,
343  const unsigned int& c, const unsigned int& d);
344 
345 */
346 
353 /* virtual void CalculateVolumetricConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
354  Matrix& rConstitutiveMatrix);
355 
356 */
366 /* virtual void CalculateVolumetricConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
367  const Matrix & rInverseDeformationGradientF,
368  Matrix& rConstitutiveMatrix);
369 */
370 
375 /* double& VolumetricConstitutiveComponent( double & rCabcd,
376  const MaterialResponseVariables& rElasticVariables,
377  const Vector& rFactors,
378  const unsigned int& a, const unsigned int& b,
379  const unsigned int& c, const unsigned int& d);
380 */
385 /* double& VolumetricConstitutiveComponent( double & rCabcd,
386  const MaterialResponseVariables& rElasticVariables,
387  const Matrix & rInverseDeformationGradientF,
388  const Vector & rFactors,
389  const unsigned int& a, const unsigned int& b,
390  const unsigned int& c, const unsigned int& d);
391 
392 */
400 /* virtual void CalculatePlasticConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
401  FlowRule::RadialReturnVariables & rReturnMappingVariables,
402  Matrix& rConstitutiveMatrix);
403 */
404 
413 /* virtual void CalculatePlasticConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
414  const Matrix & rInverseDeformationGradientF,
415  FlowRule::RadialReturnVariables & rReturnMappingVariables,
416  Matrix& rConstitutiveMatrix);
417 */
418 
423 /* double& PlasticConstitutiveComponent( double & rCabcd,
424  const MaterialResponseVariables& rElasticVariables,
425  const Matrix & rIsoStressMatrix,
426  const FlowRule::PlasticFactors & rScalingFactors,
427  const unsigned int& a, const unsigned int& b,
428  const unsigned int& c, const unsigned int& d);
429 */
434 /* double& PlasticConstitutiveComponent( double & rCabcd,
435  const MaterialResponseVariables& rElasticVariables,
436  const Matrix & rInverseDeformationGradientF,
437  const Matrix & rIsoStressMatrix,
438  const FlowRule::PlasticFactors & rScalingFactors,
439  const unsigned int& a, const unsigned int& b,
440  const unsigned int& c, const unsigned int& d);
441 */
442 
450 /* virtual void CalculatePlasticIsochoricStress( MaterialResponseVariables & rElasticVariables,
451  FlowRule::RadialReturnVariables & rReturnMappingVariables,
452  StressMeasure rStressMeasure,
453  Matrix& rIsoStressMatrix,
454  Vector& rIsoStressVector);
455 */
463 /* virtual void CalculateVolumetricStress( const MaterialResponseVariables & rElasticVariables,
464  Vector& rVolStressVector );
465 */
466 
467 
474 // virtual double& CalculateDomainPressure (const MaterialResponseVariables & rElasticVariables,
475 // double & rPressure);
476 
482 // virtual Vector& CalculateDomainPressureFactors (const MaterialResponseVariables & rElasticVariables,
483 // Vector & rFactors);
484 
485 
492 // virtual bool CheckParameters(Parameters& rValues);
493 //Ll: a pensar què s'ha de fer amb els constructors, els CheckParameters i alguna altra funció virtual
494 private:
495 
498 
499 
503 
504 
508 
509 
513 
514 
519 
520 
524  friend class Serializer;
525 
526  void save(Serializer& rSerializer) const override
527  {
529  }
530 
531  void load(Serializer& rSerializer) override
532  {
534  }
535 
536 
537 
538 
539 }; // Class HenckyElasticPlastic3DLaw
540 
541 } //namespace Kratos
542 
543 #endif // KRATOS_NON_LINEAR_HENCKY_PLASTIC_U_P_3D_LAW_H_INCLUDED
Definition: constitutive_law.h:47
std::size_t SizeType
Definition: constitutive_law.h:82
Definition: non_linear_hencky_plastic_3D_law.hpp:32
HardeningLaw::Pointer HardeningLawPointer
Definition: non_linear_hencky_plastic_3D_law.hpp:44
FlowRule::Pointer FlowRulePointer
Definition: non_linear_hencky_plastic_3D_law.hpp:42
YieldCriterion::Pointer YieldCriterionPointer
Definition: non_linear_hencky_plastic_3D_law.hpp:43
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:31
FlowRule::Pointer FlowRulePointer
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:41
ProcessInfo ProcessInfoType
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:37
HardeningLaw::Pointer HardeningLawPointer
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:43
SizeType WorkingSpaceDimension() override
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:98
KRATOS_CLASS_POINTER_DEFINITION(NonLinearHenckyElasticPlasticUP3DLaw)
SizeType GetStrainSize() const override
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:106
ConstitutiveLaw BaseType
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:38
YieldCriterion::Pointer YieldCriterionPointer
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:42
std::size_t SizeType
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:39
Properties::Pointer PropertiesPointer
Definition: non_linear_hencky_plastic_U_P_3D_law.hpp:44
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
The serialization consists in storing the state of an object into a storage format like data file or ...
Definition: serializer.h:123
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
Parameters GetValue(Parameters &rParameters, const std::string &rEntry)
Definition: add_kratos_parameters_to_python.cpp:53
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def SetValue(entity, variable, value)
Definition: coupling_interface_data.py:256
def load(f)
Definition: ode_solve.py:307
Definition: flow_rule.hpp:121