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.
axisymmetric_small_displacement_element.hpp
Go to the documentation of this file.
1 //
2 // Project Name: KratosSolidMechanicsApplication $
3 // Created by: $Author: JMCarbonell $
4 // Last modified by: $Co-Author: $
5 // Date: $Date: July 2013 $
6 // Revision: $Revision: 0.0 $
7 //
8 //
9 
10 #if !defined(KRATOS_AXISYMMETRIC_SMALL_DISPLACEMENT_ELEMENT_H_INCLUDED)
11 #define KRATOS_AXISYMMETRIC_SMALL_DISPLACEMENT_ELEMENT_H_INCLUDED
12 
13 // System includes
14 
15 // External includes
16 
17 // Project includes
19 
20 
21 namespace Kratos
22 {
37 
39 
45 class KRATOS_API(SOLID_MECHANICS_APPLICATION) AxisymmetricSmallDisplacementElement
47 {
48 public:
49 
55  typedef ConstitutiveLawType::Pointer ConstitutiveLawPointerType;
60 
63 
67 
69  AxisymmetricSmallDisplacementElement(IndexType NewId, GeometryType::Pointer pGeometry);
70 
71  AxisymmetricSmallDisplacementElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
72 
75 
78 
82 
85 
89 
100  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
101 
109  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
110 
111  //************* STARTING - ENDING METHODS
112 
113 
114  //************************************************************************************
115  //************************************************************************************
123  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
124 
125 
129 
140 
141 protected:
147 
152  {
153  }
154 
158 
159 
164  void CalculateAndAddLHS(LocalSystemComponents& rLocalSystem,
165  ElementDataType& rVariables,
166  double& rIntegrationWeight) override;
167 
172  void CalculateAndAddRHS(LocalSystemComponents& rLocalSystem,
173  ElementDataType& rVariables,
174  Vector& rVolumeForce,
175  double& rIntegrationWeight) override;
176 
180  double& CalculateTotalMass(double& rTotalMass, const ProcessInfo& rCurrentProcessInfo) override;
181 
182 
186  void InitializeElementData(ElementDataType & rVariables, const ProcessInfo& rCurrentProcessInfo) override;
187 
188 
189 
193  void CalculateKinematics(ElementDataType& rVariables,
194  const double& rPointNumber) override;
195 
196 
200  void CalculateRadius(double & rRadius,
201  const Vector& rN);
202 
207  const Matrix& rDN_DX,
208  const Matrix& rDeltaPosition,
209  const double & rCurrentRadius,
210  const double & rReferenceRadius);
211 
215  void CalculateDisplacementGradient(Matrix& rH,
216  const Matrix& rDN_DX,
217  const Vector & rN,
218  const double & rRadius);
219 
223  void CalculateDeformationMatrix(Matrix& rB,
224  const Matrix& rDN_DX,
225  const Vector& rN,
226  const double & rRadius);
227 
231  void CalculateInfinitesimalStrain(const Matrix& rH,
232  Vector& rStrainVector) override;
233 
234 
245 
246 private:
247 
253 
254 
258 
259 
263 
264 
269 
273  friend class Serializer;
274 
275  // A private default constructor necessary for serialization
276 
277  void save(Serializer& rSerializer) const override;
278 
279  void load(Serializer& rSerializer) override;
280 
281 
288 
289 }; // Class AxisymmetricSmallDisplacementElement
290 
298 
299 } // namespace Kratos.
300 #endif // KRATOS_AXISYMMETRIC_SMALL_DISPLACEMENT_ELEMENT_H_INCLUDED defined
Axisymmetric Small Displacements Element for 2D geometries.
Definition: axisymmetric_small_displacement_element.hpp:47
ConstitutiveLawType::StressMeasure StressMeasureType
StressMeasure from constitutive laws.
Definition: axisymmetric_small_displacement_element.hpp:57
AxisymmetricSmallDisplacementElement & operator=(AxisymmetricSmallDisplacementElement const &rOther)
Assignment operator.
AxisymmetricSmallDisplacementElement()
Definition: axisymmetric_small_displacement_element.hpp:151
ConstitutiveLaw ConstitutiveLawType
Definition: axisymmetric_small_displacement_element.hpp:53
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: axisymmetric_small_displacement_element.hpp:59
ConstitutiveLawType::Pointer ConstitutiveLawPointerType
Pointer type for constitutive laws.
Definition: axisymmetric_small_displacement_element.hpp:55
void CalculateDeformationGradient(Matrix &rF, const Matrix &rDN_DX, const Matrix &rDeltaPosition, const double &rCurrentRadius, const double &rReferenceRadius)
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(AxisymmetricSmallDisplacementElement)
Counted pointer of AxisymmetricSmallDisplacementElement.
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
Small Displacement Element for 3D and 2D geometries.
Definition: small_displacement_element.hpp:47
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