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_PQ.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: Peter Wilson
11 // Pull request: https://github.com/KratosMultiphysics/Kratos/pull/6927
12 
13 
14 
15 #if !defined(KRATOS_UPDATED_LAGRANGIAN_PQ_H_INCLUDED )
16 #define KRATOS_UPDATED_LAGRANGIAN_PQ_H_INCLUDED
17 
18 // System includes
19 
20 // External includes
21 
22 // Project includes
24 
25 namespace Kratos
26 {
28 
35  : public MPMUpdatedLagrangian
36 {
37 public:
38 
44  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
49 
51 
55 
56 public:
57 
60 
63 
64 
66  MPMUpdatedLagrangianPQ(IndexType NewId, GeometryType::Pointer pGeometry);
67 
68  MPMUpdatedLagrangianPQ(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
69 
72 
74  ~MPMUpdatedLagrangianPQ() override;
75 
79 
82 
86 
94  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
95 
96  Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override;
97 
105  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
106 
107  //************* STARTING - ENDING METHODS
108 
112  void InitializeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
113 
114 
118 
119  void CalculateOnIntegrationPoints(const Variable<int>& rVariable,
120  std::vector<int>& rValues,
121  const ProcessInfo& rCurrentProcessInfo) override;
122 
123 protected:
124 
126  void CalculateAndAddExternalForces(VectorType& rRightHandSideVector,
127  GeneralVariables& rVariables,
128  Vector& rVolumeForce,
129  const double& rIntegrationWeight) override;
130 
132  void InitializeMaterial(const ProcessInfo& rCurrentProcessInfo) override;
133 
134 private:
135 
139  friend class Serializer;
140 
141  // A private default constructor necessary for serialization
142  void save(Serializer& rSerializer) const override;
143 
144  void load(Serializer& rSerializer) override;
145 
146 }; // Class MPMUpdatedLagrangianPQ
147 } // namespace Kratos.
148 #endif // KRATOS_UPDATED_LAGRANGIAN_PQ_H_INCLUDED defined
Definition: constitutive_law.h:47
StressMeasure
Definition: constitutive_law.h:69
std::size_t IndexType
Definition: flags.h:74
IntegrationMethod
Definition: geometry_data.h:76
Large Displacement Lagrangian Element for 3D and 2D geometries. (base class)
Definition: mpm_updated_lagrangian.hpp:55
Partitioned Quadrature Large Displacement Lagrangian Element for 3D and 2D geometries....
Definition: mpm_updated_lagrangian_PQ.hpp:36
GeometryType::CoordinatesArrayType CoordinatesArrayType
Definition: mpm_updated_lagrangian_PQ.hpp:50
Element::Pointer Create(IndexType NewId, NodesArrayType const &ThisNodes, PropertiesType::Pointer pProperties) const override
Definition: mpm_updated_lagrangian_PQ.cpp:59
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: mpm_updated_lagrangian_PQ.hpp:46
~MPMUpdatedLagrangianPQ() override
Destructor.
Definition: mpm_updated_lagrangian_PQ.cpp:71
void InitializeSolutionStep(const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian_PQ.cpp:103
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(MPMUpdatedLagrangianPQ)
Counted pointer of LargeDisplacementElement.
Element::Pointer Clone(IndexType NewId, NodesArrayType const &ThisNodes) const override
Definition: mpm_updated_lagrangian_PQ.cpp:65
MPMUpdatedLagrangianPQ()
Empty constructor needed for serialization.
Definition: mpm_updated_lagrangian_PQ.cpp:37
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: mpm_updated_lagrangian_PQ.hpp:44
void InitializeMaterial(const ProcessInfo &rCurrentProcessInfo) override
Initialize Material Properties on the Constitutive Law.
Definition: mpm_updated_lagrangian_PQ.cpp:155
MPMUpdatedLagrangianPQ & operator=(MPMUpdatedLagrangianPQ const &rOther)
Assignment operator.
Definition: mpm_updated_lagrangian_PQ.cpp:53
void CalculateOnIntegrationPoints(const Variable< int > &rVariable, std::vector< int > &rValues, const ProcessInfo &rCurrentProcessInfo) override
Definition: mpm_updated_lagrangian_PQ.cpp:181
ConstitutiveLaw ConstitutiveLawType
Definition: mpm_updated_lagrangian_PQ.hpp:42
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: mpm_updated_lagrangian_PQ.hpp:48
void CalculateAndAddExternalForces(VectorType &rRightHandSideVector, GeneralVariables &rVariables, Vector &rVolumeForce, const double &rIntegrationWeight) override
Calculation of the External Forces Vector. Fe = N * t + N * b.
Definition: mpm_updated_lagrangian_PQ.cpp:74
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
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: mpm_updated_lagrangian.hpp:203