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.
drained_U_Pw_small_strain_element.hpp
Go to the documentation of this file.
1 // KRATOS___
2 // // ) )
3 // // ___ ___
4 // // ____ //___) ) // ) )
5 // // / / // // / /
6 // ((____/ / ((____ ((___/ / MECHANICS
7 //
8 // License: geo_mechanics_application/license.txt
9 //
10 // Main authors: Vahid Galavi
11 //
12 
13 #if !defined(KRATOS_GEO_DRAINED_U_PW_SMALL_STRAIN_ELEMENT_H_INCLUDED)
14 #define KRATOS_GEO_DRAINED_U_PW_SMALL_STRAIN_ELEMENT_H_INCLUDED
15 
16 // Project includes
17 #include "includes/serializer.h"
18 
19 // Application includes
20 #include "custom_elements/U_Pw_small_strain_element.hpp"
21 #include "custom_utilities/element_utilities.hpp"
24 
25 namespace Kratos
26 {
27 
28 template <unsigned int TDim, unsigned int TNumNodes>
29 class KRATOS_API(GEO_MECHANICS_APPLICATION) DrainedUPwSmallStrainElement
30  : public UPwSmallStrainElement<TDim, TNumNodes>
31 {
32 public:
34 
35  using IndexType = std::size_t;
37  using NodeType = Node;
40  using VectorType = Vector;
41  using MatrixType = Matrix;
43  using SizeType = std::size_t;
50 
52 
55  : UPwSmallStrainElement<TDim, TNumNodes>(NewId)
56  {
57  }
58 
61  : UPwSmallStrainElement<TDim, TNumNodes>(NewId, ThisNodes)
62  {
63  }
64 
66  DrainedUPwSmallStrainElement(IndexType NewId, GeometryType::Pointer pGeometry)
67  : UPwSmallStrainElement<TDim, TNumNodes>(NewId, pGeometry)
68  {
69  }
70 
72  DrainedUPwSmallStrainElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
73  : UPwSmallStrainElement<TDim, TNumNodes>(NewId, pGeometry, pProperties)
74  {
75  }
76 
79 
81  Element::Pointer Create(IndexType NewId,
82  NodesArrayType const& ThisNodes,
83  PropertiesType::Pointer pProperties) const override;
84 
85  Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override;
86 
87  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
88 
90 
91  void InitializeSolutionStep(const ProcessInfo& rCurrentProcessInfo) override;
92 
94 
95 protected:
97  void CalculateAndAddLHS(MatrixType& rLeftHandSideMatrix, ElementVariables& rVariables) override;
98 
99  void CalculateAndAddRHS(VectorType& rRightHandSideVector, ElementVariables& rVariables, unsigned int GPoint) override;
100 
102 
103 private:
105 
107 
108  friend class Serializer;
109 
112 
115 
116 }; // Class DrainedUPwSmallStrainElement
117 
118 } // namespace Kratos
119 
120 #endif // KRATOS_GEO_DRAINED_U_PW_SMALL_STRAIN_ELEMENT_H_INCLUDED defined
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Definition: drained_U_Pw_small_strain_element.hpp:31
DrainedUPwSmallStrainElement(IndexType NewId, const NodesArrayType &ThisNodes)
Constructor using an array of nodes.
Definition: drained_U_Pw_small_strain_element.hpp:60
typename UPwSmallStrainElement< TDim, TNumNodes >::ElementVariables ElementVariables
Definition: drained_U_Pw_small_strain_element.hpp:47
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(DrainedUPwSmallStrainElement)
~DrainedUPwSmallStrainElement() override
Destructor.
Definition: drained_U_Pw_small_strain_element.hpp:78
DrainedUPwSmallStrainElement(IndexType NewId, GeometryType::Pointer pGeometry)
Constructor using Geometry.
Definition: drained_U_Pw_small_strain_element.hpp:66
DrainedUPwSmallStrainElement(IndexType NewId=0)
Default Constructor.
Definition: drained_U_Pw_small_strain_element.hpp:54
DrainedUPwSmallStrainElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties)
Constructor using Properties.
Definition: drained_U_Pw_small_strain_element.hpp:72
std::size_t SizeType
Definition: element.h:94
std::vector< DofType::Pointer > DofsVectorType
Definition: element.h:100
std::vector< std::size_t > EquationIdVectorType
Definition: element.h:98
std::size_t IndexType
Definition: flags.h:74
Geometry base class.
Definition: geometry.h:71
PointerVector< TPointType > PointsArrayType
Definition: geometry.h:118
This class defines the node.
Definition: node.h:65
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
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
Definition: U_Pw_small_strain_element.hpp:30
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
Matrix MatrixType
Definition: geometrical_transformation_utilities.h:55
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
void InitializeSolutionStep(ConstructionUtility &rThisUtil, std::string ThermalSubModelPartName, std::string MechanicalSubModelPartName, std::string HeatFluxSubModelPartName, std::string HydraulicPressureSubModelPartName, bool thermal_conditions, bool mechanical_conditions, int phase)
Definition: add_custom_utilities_to_python.cpp:45
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
Internals::Matrix< double, AMatrix::dynamic, 1 > Vector
Definition: amatrix_interface.h:472
Internals::Matrix< double, AMatrix::dynamic, AMatrix::dynamic > Matrix
Definition: amatrix_interface.h:470
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
Definition: U_Pw_small_strain_element.hpp:128