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.
axisym_updated_lagrangian_U_Pressure_element.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosSolidMechanicsApplication $
3 // Last modified by: $Author: LMonforte $
4 // Date: $Date: July 2013 $
5 // Revision: $Revision: -0.1 $
6 //
7 //
8 
9 #if !defined(KRATOS_AXISYM_UPDATED_LAGRANGIAN_UPRESSURE_ELEMENT_H_INCLUDED )
10 #define KRATOS_AXISYM_UPDATED_LAGRANGIAN_UPRESSURE_ELEMENT_H_INCLUDED
11 
12 // System includes
13 
14 // External includes
15 
16 // Project includes
18 
19 namespace Kratos
20 {
35 
36  // THIS IS THE SECOND VERSION OF THE UP-ELEMENT FOR ANY CONSTITUTIVE EQUATION.
37  // In this version, the pressure is the pressure and it is not some "2D" invented pressure,..
38  // the constitutive equation should NOT be the UP version
39 
40 
41  class KRATOS_API(PFEM_SOLID_MECHANICS_APPLICATION) AxisymUpdatedLagrangianUPressureElement
43  {
44 
45 
46  public:
47 
53  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
58 
62 
65 
68 
70  AxisymUpdatedLagrangianUPressureElement(IndexType NewId, GeometryType::Pointer pGeometry);
71 
72  AxisymUpdatedLagrangianUPressureElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
73 
76 
77 
80 
84 
87 
88 
92 
103  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
104 
112  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
113 
114 
115 
116 
117  //************************************************************************************
118  //************************************************************************************
126  int Check(const ProcessInfo& rCurrentProcessInfo) override;
127 
128 
133  virtual void Initialize() override;
134 
138 
142 
146 
150 
152  protected:
155 
159 
160 
164 
168 
173  virtual void CalculateAndAddLHS(LocalSystemComponents& rLocalSystem,
174  ElementDataType& rVariables,
175  double& rIntegrationWeight) override;
176 
181  virtual void CalculateAndAddRHS(LocalSystemComponents& rLocalSystem,
182  ElementDataType& rVariables,
183  Vector& rVolumeForce,
184  double& rIntegrationWeight) override;
185 
189  virtual void InitializeElementData(ElementDataType & rVariables,
190  const ProcessInfo& rCurrentProcessInfo) override;
191 
192 
196  virtual void CalculateAndAddKuumElemUP(MatrixType& rK,
197  ElementDataType & rVariables,
198  ThisElementData & rElementVariables,
199  double& rIntegrationWeight
200  ) override;
201 
205  virtual void CalculateAndAddKuugElemUP(MatrixType& rK,
206  ElementDataType & rVariables,
207  ThisElementData & rElementVariables,
208  double& rIntegrationWeight
209  ) override;
210 
214  virtual void CalculateAndAddKupElemUP (MatrixType& rK,
215  ElementDataType & rVariables,
216  ThisElementData & rElementVariables,
217  double& rIntegrationWeight
218  ) override;
219 
223  virtual void CalculateAndAddKpuElemUP(MatrixType& rK,
224  ElementDataType & rVariables,
225  ThisElementData & rElementVariables,
226  double& rIntegrationWeight
227  ) override;
228 
229 
233  virtual void CalculateAndAddKppElemUP(MatrixType& rK,
234  ElementDataType & rVariables,
235  ThisElementData & rElementVariables,
236  double& rIntegrationWeight
237  ) override;
238 
239 
243  virtual void CalculateAndAddKppStabElemUP(MatrixType& rK,
244  ElementDataType & rVariables,
245  ThisElementData & rElementVariables,
246  double& rIntegrationWeight
247  ) override;
248 
252  virtual void CalculateAndAddPressureForcesElemUP(VectorType& rRightHandSideVector,
253  ElementDataType & rVariables,
254  ThisElementData & rElementVariables,
255  double& rIntegrationWeight
256  ) override;
257 
258 
262  virtual void CalculateAndAddStabilizedPressureElemUP(VectorType& rRightHandSideVector,
263  ElementDataType & rVariables,
264  ThisElementData & rElementVariables,
265  double& rIntegrationWeight
266  ) override;
267 
271  virtual void CalculateThisElementData( ThisElementData& rElementVariables, const ElementDataType & rVariables) override;
272 
273 
274 
278  virtual void CalculateKinematics(ElementDataType& rVariables,
279  const double& rPointNumber) override;
280 
281 
285  void CalculateRadius(double & rCurrentRadius,
286  double & rReferenceRadius,
287  const Vector& rN);
288 
292  void CalculateDeformationGradient(const Matrix& rDN_DX,
293  Matrix& rF,
294  Matrix& rDeltaPosition,
295  double & rCurrentRadius,
296  double & rReferenceRadius);
297 
301  void CalculateDeformationMatrix(Matrix& rB,
302  Matrix& rDN_DX,
303  Vector& rN,
304  double & rCurrentRadius);
305 
306 
310  void CalculateGreenLagrangeStrain(const Matrix& rF,
311  Vector& rStrainVector) override;
312 
316  void CalculateAlmansiStrain(const Matrix& rF,
317  Vector& rStrainVector) override;
318 
319 
320 
331 
332  private:
333 
339 
340 
344 
345 
349 
350 
355 
359  friend class Serializer;
360 
361  // A private default constructor necessary for serialization
362 
363  virtual void save(Serializer& rSerializer) const override;
364 
365  virtual void load(Serializer& rSerializer) override;
366 
367 
374 
375 
376 }; // Class AxisymUpdatedLagrangianUPressureElement
377 
378 
379 
380 } // namespace Kratos
381 #endif // KRATOS_____
382 
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Definition: axisym_updated_lagrangian_U_Pressure_element.hpp:43
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(AxisymUpdatedLagrangianUPressureElement)
Counted pointer of LargeDisplacementUPElement.
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: axisym_updated_lagrangian_U_Pressure_element.hpp:57
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: axisym_updated_lagrangian_U_Pressure_element.hpp:53
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: axisym_updated_lagrangian_U_Pressure_element.hpp:55
ConstitutiveLaw ConstitutiveLawType
Definition: axisym_updated_lagrangian_U_Pressure_element.hpp:51
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
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
Large Displacement Lagrangian U-P Element for 3D and 2D geometries. Linear Triangles and Tetrahedra (...
Definition: updated_lagrangian_U_Pressure_element.hpp:46
double CalculateRadius(const PairedCondition *pCondition, const Vector &rNSlave)
Calculates the radius of axisymmetry.
Definition: mortar_explicit_contribution_utilities.cpp:675
Modeler::Pointer Create(const std::string &ModelerName, Model &rModel, const Parameters ModelParameters)
Checks if the modeler is registered.
Definition: modeler_factory.cpp:30
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
def load(f)
Definition: ode_solve.py:307
Definition: solid_element.hpp:83
Definition: solid_element.hpp:233
Definition: updated_lagrangian_U_Pressure_element.hpp:50