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_grid_surface_load_condition_3d.h
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: Bodhinanda Chandra
11 //
12 
13 
14 #if !defined(KRATOS_MPM_GRID_SURFACE_LOAD_CONDITION_3D_H_INCLUDED )
15 #define KRATOS_MPM_GRID_SURFACE_LOAD_CONDITION_3D_H_INCLUDED
16 
17 // System includes
18 
19 // External includes
20 
21 // Project includes
22 #include "includes/define.h"
24 
25 namespace Kratos
26 {
27 
30 
34 
38 
42 
46 
49 {
50 public:
51 
54 
55  // Counted pointer of MPMGridSurfaceLoadCondition3D
57 
58  typedef Vector RowMatrix;
59 
63 
64  // Constructor void
66 
67  // Constructor using an array of nodes
69  IndexType NewId,
70  GeometryType::Pointer pGeometry
71  );
72 
73  // Constructor using an array of nodes with properties
75  IndexType NewId,
76  GeometryType::Pointer pGeometry,
77  PropertiesType::Pointer pProperties
78  );
79 
80  // Destructor
82 
86 
87 
91 
92  // Name Operations
93  Condition::Pointer Create(
94  IndexType NewId,
95  GeometryType::Pointer pGeometry,
96  PropertiesType::Pointer pProperties
97  ) const override;
98 
99  Condition::Pointer Create(
100  IndexType NewId,
101  NodesArrayType const& ThisNodes,
102  PropertiesType::Pointer pProperties
103  ) const override;
104 
108 
109 
113 
114 
118 
122 
123 protected:
124 
127 
131 
135 
139 
148  void CalculateAll(
149  MatrixType& rLeftHandSideMatrix,
150  VectorType& rRightHandSideVector,
151  const ProcessInfo& rCurrentProcessInfo,
152  const bool CalculateStiffnessMatrixFlag,
153  const bool CalculateResidualVectorFlag
154  ) override;
155 
156  void CalculateAndSubKp(
157  Matrix& rK,
158  const array_1d<double, 3>& rge,
159  const array_1d<double, 3>& rgn,
160  const Matrix& rDN_De,
161  const RowMatrix& rN,
162  const double Pressure,
163  const double Weight );
164 
165  void MakeCrossMatrix(
167  const array_1d<double, 3>& U
168  );
169 
171  VectorType& rResidualVector,
172  const RowMatrix& N,
173  const array_1d<double, 3 >& Normal,
174  const double Pressure,
175  const double Weight,
176  const ProcessInfo& rCurrentProcessInfo
177  );
178 
182 
186 
190 
191 private:
194 
198 
202 
206 
210 
214 
218 
222 
226 
227  friend class Serializer;
228 
229  void save( Serializer& rSerializer ) const override
230  {
232  }
233 
234  void load( Serializer& rSerializer ) override
235  {
237  }
238 
239 
240 }; // class MPMGridSurfaceLoadCondition3D.
241 
244 
248 
249 } // namespace Kratos.
250 
251 #endif // KRATOS_MPM_GRID_SURFACE_LOAD_CONDITION_3D_H_INCLUDED defined
std::size_t IndexType
Definition: flags.h:74
Definition: mpm_grid_base_load_condition.h:50
Definition: mpm_grid_surface_load_condition_3d.h:49
Condition::Pointer Create(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties) const override
It creates a new condition pointer.
Definition: mpm_grid_surface_load_condition_3d.cpp:59
void CalculateAndSubKp(Matrix &rK, const array_1d< double, 3 > &rge, const array_1d< double, 3 > &rgn, const Matrix &rDN_De, const RowMatrix &rN, const double Pressure, const double Weight)
Definition: mpm_grid_surface_load_condition_3d.cpp:90
Vector RowMatrix
Definition: mpm_grid_surface_load_condition_3d.h:58
void MakeCrossMatrix(BoundedMatrix< double, 3, 3 > &M, const array_1d< double, 3 > &U)
Definition: mpm_grid_surface_load_condition_3d.cpp:135
~MPMGridSurfaceLoadCondition3D() override
Definition: mpm_grid_surface_load_condition_3d.cpp:83
MPMGridSurfaceLoadCondition3D()
Definition: mpm_grid_surface_load_condition_3d.cpp:29
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(MPMGridSurfaceLoadCondition3D)
void CalculateAll(MatrixType &rLeftHandSideMatrix, VectorType &rRightHandSideVector, const ProcessInfo &rCurrentProcessInfo, const bool CalculateStiffnessMatrixFlag, const bool CalculateResidualVectorFlag) override
Definition: mpm_grid_surface_load_condition_3d.cpp:181
void CalculateAndAddPressureForce(VectorType &rResidualVector, const RowMatrix &N, const array_1d< double, 3 > &Normal, const double Pressure, const double Weight, const ProcessInfo &rCurrentProcessInfo)
Definition: mpm_grid_surface_load_condition_3d.cpp:153
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
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
N
Definition: sensitivityMatrix.py:29