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_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_3D_LAW_H_INCLUDED)
11 #define KRATOS_NON_LINEAR_HENCKY_PLASTIC_3D_LAW_H_INCLUDED
12 
13 
14 // System includes
15 
16 // External includes
17 
18 // Project includes
19 #include "custom_constitutive/hyperelastic_plastic_3D_law.hpp"
20 
22 
23 namespace Kratos
24 {
31 class KRATOS_API(PFEM_SOLID_MECHANICS_APPLICATION) NonLinearHenckyElasticPlastic3DLaw: public HyperElasticPlastic3DLaw
32 {
33 
34 public:
40  typedef std::size_t SizeType;
41 
42  typedef FlowRule::Pointer FlowRulePointer;
43  typedef YieldCriterion::Pointer YieldCriterionPointer;
44  typedef HardeningLaw::Pointer HardeningLawPointer;
45  typedef Properties::Pointer PropertiesPointer;
46 
52 
61 
62 
64 
69 
70 
75  //HyperElasticPlastic3DLaw& operator=(const HyperElasticPlastic3DLaw& rOther);
76 
81  ConstitutiveLaw::Pointer Clone() const override;
82 
87 
100  {
101  return 3;
102  };
103 
107  SizeType GetStrainSize() const override
108  {
109  return 6;
110  };
111 
112  void GetLawFeatures(Features& rFeatures) override;
113 
114  double& GetValue( const Variable<double>& rThisVariable, double& rValue ) override;
115 
116  Matrix& GetValue( const Variable<Matrix>& rThisVariable, Matrix& rValue ) override;
117 
118 
119  void SetValue( const Variable<Vector>& rThisVariable,
120  const Vector& rValue,
121  const ProcessInfo& rCurrentProcessInfo ) override;
122 
123  void SetValue( const Variable<double>& rThisVariable,
124  const double& rValue,
125  const ProcessInfo& rCurrentProcessInfo ) override;
126 
127 /* bool Has( const Variable<double>& rThisVariable );
128  bool Has( const Variable<Vector>& rThisVariable );
129  bool Has( const Variable<Matrix>& rThisVariable );
130 
131  double& GetValue( const Variable<double>& rThisVariable, double& rValue );
132  Vector& GetValue( const Variable<Vector>& rThisVariable, Vector& rValue );
133  Matrix& GetValue( const Variable<Matrix>& rThisVariable, Matrix& rValue );
134 
135 
136  void SetValue( const Variable<double>& rVariable,
137  const double& Value,
138  const ProcessInfo& rCurrentProcessInfo );
139  void SetValue( const Variable<Vector>& rThisVariable,
140  const Vector& rValue,
141  const ProcessInfo& rCurrentProcessInfo );
142  void SetValue( const Variable<Matrix>& rThisVariable,
143  const Matrix& rValue,
144  const ProcessInfo& rCurrentProcessInfo );
145 */
148  void InitializeMaterial( const Properties& rProps,
149  const GeometryType& rGeom,
150  const Vector& rShapeFunctionsValues ) override;
151 
152  int Check( const Properties& rMaterialProperties, const GeometryType& rElementGeometry, const ProcessInfo& rCurrentProcessInfo) override;
153 
160 // void CalculateMaterialResponsePK1 (Parameters & rValues);
161 // Esta función sirve como está definida en la clase madre
162 
169 // void CalculateMaterialResponsePK2 (Parameters & rValues);
170 // Esta función sirve como está definida en la clase madre
171 
178  void CalculateMaterialResponseKirchhoff (Parameters & rValues) override;
179 
180 
187 // void CalculateMaterialResponseCauchy (Parameters & rValues);
188 // Esta función sirve como está definida
189 
196 // void FinalizeMaterialResponsePK1 (Parameters & rValues);
197 
204 // void FinalizeMaterialResponsePK2 (Parameters & rValues);
205 
219 // void FinalizeMaterialResponseCauchy (Parameters & rValues);
220 
230 // int Check(const Properties& rProperties, const GeometryType& rGeometry, const ProcessInfo& rCurrentProcessInfo);
231 
232 
233 
240  //String Info() const override;
244  //void PrintInfo(std::ostream& rOStream) const override;
248  //void PrintData(std::ostream& rOStream) const override;
249 
250 protected:
251 
257 
258 // Matrix mElasticLeftCauchyGreen;
259 
260 // FlowRulePointer mpFlowRule;
261 
262 // YieldCriterionPointer mpYieldCriterion;
263 
264 // HardeningLawPointer mpHardeningLaw;
265 
272 
273  virtual Matrix SetConstitutiveMatrixToAppropiateDimension(const Matrix& rElastoPlasticTangentMatrix);
274 
275 
276  virtual void CorrectDomainPressure( Matrix& rStressMatrix, const MaterialResponseVariables& rElasticVariables);
277 
278  virtual void CalculateElastoPlasticTangentMatrix( const FlowRule::RadialReturnVariables & rReturnMappingVariables, const Matrix& rNewElasticLeftCauchyGreen,const double& rAlpha, Matrix& rElastoPlasticMatrix, const MaterialResponseVariables& rElasticVariables);
279 
280  virtual void CalculateOnlyDeviatoricPart( Matrix& rIncrementalDeformationGradient );
281 
282  virtual Matrix CalculateExtraMatrix( const Matrix& rStressMatrix);
283 
287 // Matrix& DeformationGradient3D (Matrix & Matrix2D);
288 
294 // virtual void CalculateGreenLagrangeStrain( const Matrix & rRightCauchyGreen,
295 // Vector& rStrainVector );
296 
297 
303 // virtual void CalculateAlmansiStrain( const Matrix & rLeftCauchyGreen,
304 // Vector& rStrainVector );
331 /* virtual void CalculateIsochoricConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
332  const Matrix & rInverseDeformationGradientF,
333  const Vector & rIsoStressVector,
334  Matrix& rConstitutiveMatrix);
335 */
336 
341 /* double& IsochoricConstitutiveComponent( double & rCabcd,
342  const MaterialResponseVariables& rElasticVariables,
343  const Matrix & rIsoStressMatrix,
344  const unsigned int& a, const unsigned int& b,
345  const unsigned int& c, const unsigned int& d);
346 */
351 /* double& IsochoricConstitutiveComponent( double & rCabcd,
352  const MaterialResponseVariables& rElasticVariables,
353  const Matrix & rInverseDeformationGradientF,
354  const Matrix & rIsoStressMatrix,
355  const unsigned int& a, const unsigned int& b,
356  const unsigned int& c, const unsigned int& d);
357 
358 */
359 
366 /* virtual void CalculateVolumetricConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
367  Matrix& rConstitutiveMatrix);
368 
369 */
379 /* virtual void CalculateVolumetricConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
380  const Matrix & rInverseDeformationGradientF,
381  Matrix& rConstitutiveMatrix);
382 */
383 
388 /* double& VolumetricConstitutiveComponent( double & rCabcd,
389  const MaterialResponseVariables& rElasticVariables,
390  const Vector& rFactors,
391  const unsigned int& a, const unsigned int& b,
392  const unsigned int& c, const unsigned int& d);
393 */
398 /* double& VolumetricConstitutiveComponent( double & rCabcd,
399  const MaterialResponseVariables& rElasticVariables,
400  const Matrix & rInverseDeformationGradientF,
401  const Vector & rFactors,
402  const unsigned int& a, const unsigned int& b,
403  const unsigned int& c, const unsigned int& d);
404 
405 */
413 /* virtual void CalculatePlasticConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
414  FlowRule::RadialReturnVariables & rReturnMappingVariables,
415  Matrix& rConstitutiveMatrix);
416 */
417 
426 /* virtual void CalculatePlasticConstitutiveMatrix (const MaterialResponseVariables& rElasticVariables,
427  const Matrix & rInverseDeformationGradientF,
428  FlowRule::RadialReturnVariables & rReturnMappingVariables,
429  Matrix& rConstitutiveMatrix);
430 */
431 
436 /* double& PlasticConstitutiveComponent( double & rCabcd,
437  const MaterialResponseVariables& rElasticVariables,
438  const Matrix & rIsoStressMatrix,
439  const FlowRule::PlasticFactors & rScalingFactors,
440  const unsigned int& a, const unsigned int& b,
441  const unsigned int& c, const unsigned int& d);
442 */
447 /* double& PlasticConstitutiveComponent( double & rCabcd,
448  const MaterialResponseVariables& rElasticVariables,
449  const Matrix & rInverseDeformationGradientF,
450  const Matrix & rIsoStressMatrix,
451  const FlowRule::PlasticFactors & rScalingFactors,
452  const unsigned int& a, const unsigned int& b,
453  const unsigned int& c, const unsigned int& d);
454 */
455 
463 /* virtual void CalculatePlasticIsochoricStress( MaterialResponseVariables & rElasticVariables,
464  FlowRule::RadialReturnVariables & rReturnMappingVariables,
465  StressMeasure rStressMeasure,
466  Matrix& rIsoStressMatrix,
467  Vector& rIsoStressVector);
468 */
476 /* virtual void CalculateVolumetricStress( const MaterialResponseVariables & rElasticVariables,
477  Vector& rVolStressVector );
478 */
479 
480 
487 // virtual double& CalculateDomainPressure (const MaterialResponseVariables & rElasticVariables,
488 // double & rPressure);
489 
495 // virtual Vector& CalculateDomainPressureFactors (const MaterialResponseVariables & rElasticVariables,
496 // Vector & rFactors);
497 
498 
505 // virtual bool CheckParameters(Parameters& rValues);
506 //Ll: a pensar què s'ha de fer amb els constructors, els CheckParameters i alguna altra funció virtual
507 private:
508 
511 
512 
516 
517 
521 
522 
526 
527 
532 
533 
537  friend class Serializer;
538 
539  void save(Serializer& rSerializer) const override
540  {
542  }
543 
544  void load(Serializer& rSerializer) override
545  {
547  }
548 
549 
550 
551 
552 }; // Class HenckyElasticPlastic3DLaw
553 
554 } //namespace Kratos
555 
556 #endif //KRATOS_HENCKY_PLASTIC_3D_LAW_H_INCLUDED
Definition: constitutive_law.h:47
std::size_t SizeType
Definition: constitutive_law.h:82
Geometry base class.
Definition: geometry.h:71
Definition: hyperelastic_plastic_3D_law.hpp:33
Definition: non_linear_hencky_plastic_3D_law.hpp:32
std::size_t SizeType
Definition: non_linear_hencky_plastic_3D_law.hpp:40
SizeType WorkingSpaceDimension() override
Definition: non_linear_hencky_plastic_3D_law.hpp:99
ConstitutiveLaw BaseType
Definition: non_linear_hencky_plastic_3D_law.hpp:39
Properties::Pointer PropertiesPointer
Definition: non_linear_hencky_plastic_3D_law.hpp:45
HardeningLaw::Pointer HardeningLawPointer
Definition: non_linear_hencky_plastic_3D_law.hpp:44
ProcessInfo ProcessInfoType
Definition: non_linear_hencky_plastic_3D_law.hpp:38
SizeType GetStrainSize() const override
Definition: non_linear_hencky_plastic_3D_law.hpp:107
KRATOS_CLASS_POINTER_DEFINITION(NonLinearHenckyElasticPlastic3DLaw)
FlowRule::Pointer FlowRulePointer
Definition: non_linear_hencky_plastic_3D_law.hpp:42
YieldCriterion::Pointer YieldCriterionPointer
Definition: non_linear_hencky_plastic_3D_law.hpp:43
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
ProcessInfo holds the current value of different solution parameters.
Definition: process_info.h:59
Properties encapsulates data shared by different Elements or Conditions. It can store any type of dat...
Definition: properties.h:69
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_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