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.
mpm_updated_lagrangian.hpp
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // Kratos default license: kratos/license.txt
9 //
10 // Main authors: Ilaria Iaconeta, Bodhinanda Chandra
11 //
12 
13 
14 #if !defined(KRATOS_UPDATED_LAGRANGIAN_H_INCLUDED )
15 #define KRATOS_UPDATED_LAGRANGIAN_H_INCLUDED
16 
17 // System includes
18 
19 // External includes
20 
21 // Project includes
22 #include "includes/define.h"
23 #include "includes/element.h"
24 #include "includes/serializer.h"
26 #include "includes/variables.h"
28 
29 namespace Kratos
30 {
45 
47 
54  : public Element
55 {
56 public:
57 
63  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
68 
70 
74 
75 protected:
76 
81  KRATOS_DEFINE_LOCAL_FLAG( COMPUTE_RHS_VECTOR );
82  KRATOS_DEFINE_LOCAL_FLAG( COMPUTE_LHS_MATRIX );
83  KRATOS_DEFINE_LOCAL_FLAG( COMPUTE_RHS_VECTOR_WITH_COMPONENTS );
84  KRATOS_DEFINE_LOCAL_FLAG( COMPUTE_LHS_MATRIX_WITH_COMPONENTS );
85 
87  {
88  public:
89  // Particle Position
91  // MP_MASS
92  double mass;
93  // MP_DENSITY
94  double density;
95  // MP_VOLUME
96  double volume;
97 
98  // MP_DISPLACEMENT
100  // MP_VELOCITY
102  // MP_ACCELERATION
104 
105  // MP_VOLUME_ACCELERATION
107 
108  // MP_CAUCHY_STRESS_VECTOR
110  // MP_ALMANSI_STRAIN_VECTOR
112 
113  // MP_DELTA_PLASTIC_STRAIN
115  // MP_DELTA_PLASTIC_VOLUMETRIC_STRAIN
117  // MP_DELTA_PLASTIC_DEVIATORIC_STRAIN
119  // MP_EQUIVALENT_PLASTIC_STRAIN
121  // MP_ACCUMULATED_PLASTIC_VOLUMETRIC_STRAIN
123  // MP_ACCUMULATED_PLASTIC_DEVIATORIC_STRAIN
125 
127  {
128  // MP_MASS
129  mass = 1.0;
130  // MP_DENSITY
131  density = 1.0;
132  // MP_VOLUME
133  volume = 1.0;
134 
135  // MP_DELTA_PLASTIC_STRAIN
136  delta_plastic_strain = 1.0;
137  // MP_DELTA_PLASTIC_VOLUMETRIC_STRAIN
139  // MP_DELTA_PLASTIC_DEVIATORIC_STRAIN
141  // MP_EQUIVALENT_PLASTIC_STRAIN
143  // MP_ACCUMULATED_PLASTIC_VOLUMETRIC_STRAIN
145  // MP_ACCUMULATED_PLASTIC_DEVIATORIC_STRAIN
147  }
148 
149  private:
150 
154  friend class Serializer;
155 
156  void save( Serializer& rSerializer ) const
157  {
158  rSerializer.save("xg",xg);
159  rSerializer.save("mass",mass);
160  rSerializer.save("density",density);
161  rSerializer.save("volume",volume);
162  rSerializer.save("displacement",displacement);
163  rSerializer.save("velocity",velocity);
164  rSerializer.save("acceleration",acceleration);
165  rSerializer.save("volume_acceleration",volume_acceleration);
166  rSerializer.save("cauchy_stress_vector",cauchy_stress_vector);
167  rSerializer.save("almansi_strain_vector",almansi_strain_vector);
168  rSerializer.save("delta_plastic_strain",delta_plastic_strain);
169  rSerializer.save("delta_plastic_volumetric_strain",delta_plastic_volumetric_strain);
170  rSerializer.save("delta_plastic_deviatoric_strain",delta_plastic_deviatoric_strain);
171  rSerializer.save("equivalent_plastic_strain",equivalent_plastic_strain);
172  rSerializer.save("accumulated_plastic_volumetric_strain",accumulated_plastic_volumetric_strain);
173  rSerializer.save("accumulated_plastic_deviatoric_strain",accumulated_plastic_deviatoric_strain);
174  }
175 
176  void load( Serializer& rSerializer )
177  {
178  rSerializer.load("xg",xg);
179  rSerializer.load("mass",mass);
180  rSerializer.load("density",density);
181  rSerializer.load("volume",volume);
182  rSerializer.load("displacement",displacement);
183  rSerializer.load("velocity",velocity);
184  rSerializer.load("acceleration",acceleration);
185  rSerializer.load("volume_acceleration",volume_acceleration);
186  rSerializer.load("cauchy_stress_vector",cauchy_stress_vector);
187  rSerializer.load("almansi_strain_vector",almansi_strain_vector);
188  rSerializer.load("delta_plastic_strain",delta_plastic_strain);
189  rSerializer.load("delta_plastic_volumetric_strain",delta_plastic_volumetric_strain);
190  rSerializer.load("delta_plastic_deviatoric_strain",delta_plastic_deviatoric_strain);
191  rSerializer.load("equivalent_plastic_strain",equivalent_plastic_strain);
192  rSerializer.load("accumulated_plastic_volumetric_strain",accumulated_plastic_volumetric_strain);
193  rSerializer.load("accumulated_plastic_deviatoric_strain",accumulated_plastic_deviatoric_strain);
194  }
196  };
197 
203  {
204  public:
205 
207 
208  // For axisymmetric use only
211 
212  // General variables for large displacement use
213  double detF;
214  double detF0;
215  double detFT;
224 
225  // Variables including all integration points
227  };
228 
229 public:
230 
231 
234 
237 
238 
240  MPMUpdatedLagrangian(IndexType NewId, GeometryType::Pointer pGeometry);
241 
242  MPMUpdatedLagrangian(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
243 
246 
248  ~MPMUpdatedLagrangian() override;
249 
253 
256 
260 
268  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
269 
270  Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override;
271 
279  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
280 
281 
282  //************* GETTING METHODS
283 
287  void GetDofList(DofsVectorType& rElementalDofList, const ProcessInfo& rCurrentProcessInfo) const override;
288 
292  void EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo& rCurrentProcessInfo) const override;
293 
297  void GetValuesVector(Vector& rValues, int Step = 0) const override;
298 
302  void GetFirstDerivativesVector(Vector& rValues, int Step = 0) const override;
303 
307  void GetSecondDerivativesVector(Vector& rValues, int Step = 0) const override;
308 
309  //************* STARTING - ENDING METHODS
310 
315  void Initialize(const ProcessInfo& rCurrentProcessInfo) override;
316 
320  virtual void InitializeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
321 
325  void FinalizeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
326 
327 
328  //************* COMPUTING METHODS
329 
330 
340  void CalculateLocalSystem(MatrixType& rLeftHandSideMatrix,
341  VectorType& rRightHandSideVector,
342  const ProcessInfo& rCurrentProcessInfo) override;
343 
350  void CalculateRightHandSide(VectorType& rRightHandSideVector,
351  const ProcessInfo& rCurrentProcessInfo) override;
352 
359  void CalculateLeftHandSide (MatrixType& rLeftHandSideMatrix,
360  const ProcessInfo& rCurrentProcessInfo) override;
361 
368  void CalculateMassMatrix(MatrixType& rMassMatrix,
369  const ProcessInfo& rCurrentProcessInfo) override;
370 
377  void CalculateDampingMatrix(MatrixType& rDampingMatrix,
378  const ProcessInfo& rCurrentProcessInfo) override;
379 
380 
381  void AddExplicitContribution(const VectorType& rRHSVector,
382  const Variable<VectorType>& rRHSVariable,
383  const Variable<array_1d<double, 3> >& rDestinationVariable,
384  const ProcessInfo& rCurrentProcessInfo) override;
385 
386  //************************************************************************************
387  //************************************************************************************
395  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
396 
397 
401 
409  std::string Info() const override
410  {
411  std::stringstream buffer;
412  buffer << "MPM Element #" << Id();
413  return buffer.str();
414  }
415 
417  void PrintInfo(std::ostream& rOStream) const override
418  {
419  rOStream << "MPM Element #" << Id();
420  }
421 
423  void PrintData(std::ostream& rOStream) const override
424  {
425  GetGeometry().PrintData(rOStream);
426  }
427 
431 
432  void CalculateOnIntegrationPoints(const Variable<bool>& rVariable,
433  std::vector<bool>& rValues,
434  const ProcessInfo& rCurrentProcessInfo) override;
435 
436  void CalculateOnIntegrationPoints(const Variable<int>& rVariable,
437  std::vector<int>& rValues,
438  const ProcessInfo& rCurrentProcessInfo) override;
439 
440  void CalculateOnIntegrationPoints(const Variable<double>& rVariable,
441  std::vector<double>& rValues,
442  const ProcessInfo& rCurrentProcessInfo) override;
443 
445  std::vector<array_1d<double, 3 > >& rValues,
446  const ProcessInfo& rCurrentProcessInfo) override;
447 
448  void CalculateOnIntegrationPoints(const Variable<Vector>& rVariable,
449  std::vector<Vector>& rValues,
450  const ProcessInfo& rCurrentProcessInfo) override;
451 
455 
456  void SetValuesOnIntegrationPoints(const Variable<int>& rVariable,
457  const std::vector<int>& rValues,
458  const ProcessInfo& rCurrentProcessInfo) override;
459 
460  void SetValuesOnIntegrationPoints(const Variable<double>& rVariable,
461  const std::vector<double>& rValues,
462  const ProcessInfo& rCurrentProcessInfo) override;
463 
465  const std::vector<array_1d<double, 3 > >& rValues,
466  const ProcessInfo& rCurrentProcessInfo) override;
467 
468  void SetValuesOnIntegrationPoints(const Variable<Vector>& rVariable,
469  const std::vector<Vector>& rValues,
470  const ProcessInfo& rCurrentProcessInfo) override;
471 
473 
474 protected:
480 
482 
491 
495  ConstitutiveLaw::Pointer mConstitutiveLawVector;
496 
497 
502 
506 
509  }
510 
516  virtual void CalculateElementalSystem(
517  MatrixType& rLeftHandSideMatrix,
518  VectorType& rRightHandSideVector,
519  const ProcessInfo& rCurrentProcessInfo,
520  const bool CalculateStiffnessMatrixFlag,
521  const bool CalculateResidualVectorFlag);
522 
526 
527 
532  virtual void CalculateAndAddLHS(
533  MatrixType& rLeftHandSideMatrix,
534  GeneralVariables& rVariables,
535  const double& rIntegrationWeight,
536  const ProcessInfo& rCurrentProcessInfo);
537 
542  virtual void CalculateAndAddRHS(
543  VectorType& rRightHandSideVector,
544  GeneralVariables& rVariables,
545  Vector& rVolumeForce,
546  const double& rIntegrationWeight,
547  const ProcessInfo& rCurrentProcessInfo);
548 
549 
554  virtual void CalculateAndAddKuum(MatrixType& rLeftHandSideMatrix,
555  GeneralVariables& rVariables,
556  const double& rIntegrationWeight);
557 
561  virtual void CalculateAndAddKuug(MatrixType& rLeftHandSideMatrix,
562  GeneralVariables& rVariables,
563  const double& rIntegrationWeight,
564  const bool IsAxisymmetric = false);
565 
566 
570  virtual void CalculateAndAddExternalForces(VectorType& rRightHandSideVector,
571  GeneralVariables& rVariables,
572  Vector& rVolumeForce,
573  const double& rIntegrationWeight);
574 
575 
579  virtual void CalculateAndAddInternalForces(VectorType& rRightHandSideVector,
580  GeneralVariables & rVariables,
581  const double& rIntegrationWeight);
582 
584  virtual void CalculateExplicitStresses(const ProcessInfo& rCurrentProcessInfo,
585  GeneralVariables& rVariables);
586 
587 
591  virtual void SetGeneralVariables(GeneralVariables& rVariables,
592  ConstitutiveLaw::Parameters& rValues, const Vector& rN);
593 
594 
598  virtual void InitializeMaterial (const ProcessInfo& rCurrentProcessInfo);
599 
600 
604  void ResetConstitutiveLaw() override;
605 
606 
611 
615  virtual void CalculateKinematics(GeneralVariables& rVariables, const ProcessInfo& rCurrentProcessInfo);
616 
617 
621  Matrix& CalculateCurrentDisp(Matrix & rCurrentDisp, const ProcessInfo& rCurrentProcessInfo);
622 
626  void DecimalCorrection(Vector& rVector);
627 
628 
632  virtual void InitializeGeneralVariables(GeneralVariables & rVariables, const ProcessInfo& rCurrentProcessInfo);
633 
634 
638  virtual void FinalizeStepVariables(GeneralVariables & rVariables, const ProcessInfo& rCurrentProcessInfo);
639 
644  virtual void UpdateGaussPoint(GeneralVariables & rVariables, const ProcessInfo& rCurrentProcessInfo);
645 
649  virtual void GetHistoricalVariables( GeneralVariables& rVariables);
650 
651 
655  virtual void CalculateGreenLagrangeStrain(const Matrix& rF,
656  Vector& rStrainVector);
657 
661  virtual void CalculateAlmansiStrain(const Matrix& rF,
662  Vector& rStrainVector);
663 
664 
668  virtual void CalculateDeformationMatrix(Matrix& rB,
669  const Matrix& rDN_DX,
670  const Matrix& rN,
671  const bool IsAxisymmetric = false);
672 
676  virtual double& CalculateIntegrationWeight(double& rIntegrationWeight);
677 
678 
682  virtual double& CalculateVolumeChange(double& rVolumeChange, GeneralVariables& rVariables);
683 
684 
686  void CalculateDeformationGradient(const Matrix& rDN_DX, Matrix& rF, Matrix& rDeltaPosition,
687  const bool IsAxisymmetric = false);
688 
692 
693 private:
694 
700 
701 
705 
706 
710 
711 
716 
720  friend class Serializer;
721 
722  // A private default constructor necessary for serialization
723 
724  void save(Serializer& rSerializer) const override;
725 
726  void load(Serializer& rSerializer) override;
727 
728 
735 
736 }; // Class MPMUpdatedLagrangian
737 
745 
746 } // namespace Kratos.
747 #endif // KRATOS_UPDATED_LAGRANGIAN_H_INCLUDED defined
Definition: constitutive_law.h:47
StressMeasure
Definition: constitutive_law.h:69
Base class for all Elements.
Definition: element.h:60
std::size_t SizeType
Definition: element.h:94
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
Matrix MatrixType
Definition: element.h:90
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: flags.h:74
GeometryType & GetGeometry()
Returns the reference of the geometry.
Definition: geometrical_object.h:158
IntegrationMethod
Definition: geometry_data.h:76
virtual void PrintData(std::ostream &rOStream) const
Print object's data.
Definition: geometry.h:3834
SizeType WorkingSpaceDimension() const
Definition: geometry.h:1287
IndexType Id() const
Definition: indexed_object.h:107
Large Displacement Lagrangian Element for 3D and 2D geometries. (base class)
Definition: mpm_updated_lagrangian.hpp:55
void GetValuesVector(Vector &rValues, int Step=0) const override
Definition: mpm_updated_lagrangian.cpp:1386
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_LHS_MATRIX)
ConstitutiveLaw::Pointer mConstitutiveLawVector
Definition: mpm_updated_lagrangian.hpp:495
virtual void CalculateGreenLagrangeStrain(const Matrix &rF, Vector &rStrainVector)
Definition: mpm_updated_lagrangian.cpp:1147
virtual void CalculateAndAddLHS(MatrixType &rLeftHandSideMatrix, GeneralVariables &rVariables, const double &rIntegrationWeight, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:604
void CalculateDampingMatrix(MatrixType &rDampingMatrix, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:1252
virtual double & CalculateIntegrationWeight(double &rIntegrationWeight)
Definition: mpm_updated_lagrangian.cpp:1191
virtual void UpdateGaussPoint(GeneralVariables &rVariables, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:957
void SetValuesOnIntegrationPoints(const Variable< int > &rVariable, const std::vector< int > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:1626
virtual void CalculateAndAddKuum(MatrixType &rLeftHandSideMatrix, GeneralVariables &rVariables, const double &rIntegrationWeight)
Definition: mpm_updated_lagrangian.cpp:629
virtual void InitializeMaterial(const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:1024
~MPMUpdatedLagrangian() override
Destructor.
Definition: mpm_updated_lagrangian.cpp:135
virtual void FinalizeStepVariables(GeneralVariables &rVariables, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:920
virtual void CalculateElementalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo, const bool CalculateStiffnessMatrixFlag, const bool CalculateResidualVectorFlag)
Definition: mpm_updated_lagrangian.cpp:266
virtual void CalculateAndAddInternalForces(VectorType &rRightHandSideVector, GeneralVariables &rVariables, const double &rIntegrationWeight)
Definition: mpm_updated_lagrangian.cpp:522
void GetFirstDerivativesVector(Vector &rValues, int Step=0) const override
Definition: mpm_updated_lagrangian.cpp:1409
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(MPMUpdatedLagrangian)
Counted pointer of LargeDisplacementElement.
MPMUpdatedLagrangian & operator=(MPMUpdatedLagrangian const &rOther)
Assignment operator.
Definition: mpm_updated_lagrangian.cpp:87
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_RHS_VECTOR_WITH_COMPONENTS)
void Initialize(const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:143
virtual SizeType GetNumberOfDofs()
Definition: mpm_updated_lagrangian.hpp:507
int Check(const ProcessInfo &rCurrentProcessInfo) const override
Definition: mpm_updated_lagrangian.cpp:1713
void PrintData(std::ostream &rOStream) const override
Print object's data.
Definition: mpm_updated_lagrangian.hpp:423
void AddExplicitContribution(const VectorType &rRHSVector, const Variable< VectorType > &rRHSVariable, const Variable< array_1d< double, 3 > > &rDestinationVariable, const ProcessInfo &rCurrentProcessInfo) override
This function is designed to make the element to assemble an rRHS vector identified by a variable rRH...
Definition: mpm_updated_lagrangian.cpp:1316
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_RHS_VECTOR)
virtual void CalculateAndAddRHS(VectorType &rRightHandSideVector, GeneralVariables &rVariables, Vector &rVolumeForce, const double &rIntegrationWeight, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:465
virtual void CalculateAlmansiStrain(const Matrix &rF, Vector &rStrainVector)
Definition: mpm_updated_lagrangian.cpp:1103
KRATOS_DEFINE_LOCAL_FLAG(COMPUTE_LHS_MATRIX_WITH_COMPONENTS)
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: mpm_updated_lagrangian.hpp:65
std::string Info() const override
Turn back information as a string.
Definition: mpm_updated_lagrangian.hpp:409
virtual double & CalculateVolumeChange(double &rVolumeChange, GeneralVariables &rVariables)
Definition: mpm_updated_lagrangian.cpp:695
void CalculateLeftHandSide(MatrixType &rLeftHandSideMatrix, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:781
virtual void CalculateExplicitStresses(const ProcessInfo &rCurrentProcessInfo, GeneralVariables &rVariables)
Calculation of the Explicit Stresses from velocity gradient.
Definition: mpm_updated_lagrangian.cpp:536
ConstitutiveLaw ConstitutiveLawType
Definition: mpm_updated_lagrangian.hpp:61
double mDeterminantF0
Definition: mpm_updated_lagrangian.hpp:490
bool mFinalizedStep
Definition: mpm_updated_lagrangian.hpp:501
void CalculateRightHandSide(VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:761
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: mpm_updated_lagrangian.hpp:63
void ResetConstitutiveLaw() override
Definition: mpm_updated_lagrangian.cpp:1052
virtual void CalculateKinematics(GeneralVariables &rVariables, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:345
void CalculateDeformationGradient(const Matrix &rDN_DX, Matrix &rF, Matrix &rDeltaPosition, const bool IsAxisymmetric=false)
Calculation of the Deformation Gradient F.
Definition: mpm_updated_lagrangian.cpp:706
void FinalizeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:874
virtual void InitializeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:824
Matrix mDeformationGradientF0
Definition: mpm_updated_lagrangian.hpp:486
void PrintInfo(std::ostream &rOStream) const override
Print information about this object.
Definition: mpm_updated_lagrangian.hpp:417
GeometryType::CoordinatesArrayType CoordinatesArrayType
Definition: mpm_updated_lagrangian.hpp:69
void EquationIdVector(EquationIdVectorType &rResult, const ProcessInfo &rCurrentProcessInfo) const override
Definition: mpm_updated_lagrangian.cpp:1205
Matrix & CalculateCurrentDisp(Matrix &rCurrentDisp, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:1074
virtual void CalculateAndAddKuug(MatrixType &rLeftHandSideMatrix, GeneralVariables &rVariables, const double &rIntegrationWeight, const bool IsAxisymmetric=false)
Definition: mpm_updated_lagrangian.cpp:644
void GetSecondDerivativesVector(Vector &rValues, int Step=0) const override
Definition: mpm_updated_lagrangian.cpp:1432
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: mpm_updated_lagrangian.hpp:67
virtual void CalculateDeformationMatrix(Matrix &rB, const Matrix &rDN_DX, const Matrix &rN, const bool IsAxisymmetric=false)
Definition: mpm_updated_lagrangian.cpp:399
virtual void InitializeGeneralVariables(GeneralVariables &rVariables, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_updated_lagrangian.cpp:164
void CalculateOnIntegrationPoints(const Variable< bool > &rVariable, std::vector< bool > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:1489
void DecimalCorrection(Vector &rVector)
Definition: mpm_updated_lagrangian.cpp:1469
Element::Pointer Clone(IndexType NewId, NodesArrayType const &ThisNodes) const override
Definition: mpm_updated_lagrangian.cpp:118
void CalculateMassMatrix(MatrixType &rMassMatrix, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:1340
void CalculateLocalSystem(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian.cpp:801
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Definition: mpm_updated_lagrangian.cpp:105
virtual void GetHistoricalVariables(GeneralVariables &rVariables)
Definition: mpm_updated_lagrangian.cpp:1454
virtual void CalculateAndAddExternalForces(VectorType &rRightHandSideVector, GeneralVariables &rVariables, Vector &rVolumeForce, const double &rIntegrationWeight)
Definition: mpm_updated_lagrangian.cpp:494
virtual void SetGeneralVariables(GeneralVariables &rVariables, ConstitutiveLaw::Parameters &rValues, const Vector &rN)
Definition: mpm_updated_lagrangian.cpp:204
MaterialPointVariables mMP
Definition: mpm_updated_lagrangian.hpp:481
MPMUpdatedLagrangian()
Empty constructor needed for serialization.
Definition: mpm_updated_lagrangian.cpp:45
void GetDofList(DofsVectorType &rElementalDofList, const ProcessInfo &rCurrentProcessInfo) const override
Definition: mpm_updated_lagrangian.cpp:1230
PointerVector is a container like stl vector but using a vector to store pointers to its data.
Definition: pointer_vector.h:72
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
void load(std::string const &rTag, TDataType &rObject)
Definition: serializer.h:207
void save(std::string const &rTag, std::array< TDataType, TDataSize > const &rObject)
Definition: serializer.h:545
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
Short class definition.
Definition: array_1d.h:61
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: constitutive_law.h:189
Definition: mpm_updated_lagrangian.hpp:203
double detFT
Definition: mpm_updated_lagrangian.hpp:215
double CurrentRadius
Definition: mpm_updated_lagrangian.hpp:209
Vector StressVector
Definition: mpm_updated_lagrangian.hpp:217
Matrix DN_DX
Definition: mpm_updated_lagrangian.hpp:222
Vector StrainVector
Definition: mpm_updated_lagrangian.hpp:216
double detF0
Definition: mpm_updated_lagrangian.hpp:214
StressMeasureType StressMeasure
Definition: mpm_updated_lagrangian.hpp:206
Matrix B
Definition: mpm_updated_lagrangian.hpp:218
double ReferenceRadius
Definition: mpm_updated_lagrangian.hpp:210
Matrix CurrentDisp
Definition: mpm_updated_lagrangian.hpp:226
Matrix F0
Definition: mpm_updated_lagrangian.hpp:221
Matrix F
Definition: mpm_updated_lagrangian.hpp:219
Matrix FT
Definition: mpm_updated_lagrangian.hpp:220
double detF
Definition: mpm_updated_lagrangian.hpp:213
Matrix ConstitutiveMatrix
Definition: mpm_updated_lagrangian.hpp:223
Definition: mpm_updated_lagrangian.hpp:87
double volume
Definition: mpm_updated_lagrangian.hpp:96
CoordinatesArrayType xg
Definition: mpm_updated_lagrangian.hpp:90
array_1d< double, 3 > acceleration
Definition: mpm_updated_lagrangian.hpp:103
double density
Definition: mpm_updated_lagrangian.hpp:94
array_1d< double, 3 > velocity
Definition: mpm_updated_lagrangian.hpp:101
double equivalent_plastic_strain
Definition: mpm_updated_lagrangian.hpp:120
double delta_plastic_strain
Definition: mpm_updated_lagrangian.hpp:114
double accumulated_plastic_volumetric_strain
Definition: mpm_updated_lagrangian.hpp:122
double mass
Definition: mpm_updated_lagrangian.hpp:92
array_1d< double, 3 > displacement
Definition: mpm_updated_lagrangian.hpp:99
array_1d< double, 3 > volume_acceleration
Definition: mpm_updated_lagrangian.hpp:106
Vector almansi_strain_vector
Definition: mpm_updated_lagrangian.hpp:111
double delta_plastic_deviatoric_strain
Definition: mpm_updated_lagrangian.hpp:118
double delta_plastic_volumetric_strain
Definition: mpm_updated_lagrangian.hpp:116
Vector cauchy_stress_vector
Definition: mpm_updated_lagrangian.hpp:109
MaterialPointVariables()
Definition: mpm_updated_lagrangian.hpp:126
double accumulated_plastic_deviatoric_strain
Definition: mpm_updated_lagrangian.hpp:124