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.
nodal_concentrated_element.hpp
Go to the documentation of this file.
1 // KRATOS ___| | | |
2 // \___ \ __| __| | | __| __| | | __| _` | |
3 // | | | | | ( | | | | ( | |
4 // _____/ \__|_| \__,_|\___|\__|\__,_|_| \__,_|_| MECHANICS
5 //
6 // License: BSD License
7 // license: StructuralMechanicsApplication/license.txt
8 //
9 // Main authors: Vicente Mataix Ferrandiz
10 //
11 
12 #pragma once
13 
14 // TODO: Add rotational stiffness
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
21 #include "includes/element.h"
22 
23 namespace Kratos
24 {
39 
41 
42 class KRATOS_API(STRUCTURAL_MECHANICS_APPLICATION) NodalConcentratedElement
43  : public Element
44 {
45 public:
46 
52 
53 public:
54 
57 
59  NodalConcentratedElement(IndexType NewId, GeometryType::Pointer pGeometry, bool UseRayleighDamping = false);
60 
61  NodalConcentratedElement(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties, bool UseRayleighDamping = false);
62 
65 
67  ~NodalConcentratedElement() override;
68 
72 
75 
79 
86  Element::Pointer Create(
87  IndexType NewId,
88  GeometryType::Pointer pGeom,
89  PropertiesType::Pointer pProperties
90  ) const override;
91 
99  Element::Pointer Create(
100  IndexType NewId,
101  NodesArrayType const& ThisNodes,
102  PropertiesType::Pointer pProperties
103  ) const override;
104 
112  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
113 
114  //************* GETTING METHODS
115 
119  void GetDofList(
120  DofsVectorType& rElementalDofList,
121  const ProcessInfo& rCurrentProcessInfo
122  ) const override;
123 
127  void EquationIdVector(
128  EquationIdVectorType& rResult,
129  const ProcessInfo& rCurrentProcessInfo
130  ) const override;
131 
135  void GetValuesVector(Vector& rValues, int Step = 0) const override;
136 
140  void GetFirstDerivativesVector(Vector& rValues, int Step = 0) const override;
141 
145  void GetSecondDerivativesVector(Vector& rValues, int Step = 0) const override;
146 
147 
148  //************* COMPUTING METHODS
149 
159  void CalculateLocalSystem(
160  MatrixType& rLeftHandSideMatrix,
161  VectorType& rRightHandSideVector,
162  const ProcessInfo& rCurrentProcessInfo
163  ) override;
164 
165 
173  void CalculateRightHandSide(
174  VectorType& rRightHandSideVector,
175  const ProcessInfo& rCurrentProcessInfo
176  ) override;
177 
185  void CalculateLeftHandSide(
186  MatrixType& rLeftHandSideMatrix,
187  const ProcessInfo& rCurrentProcessInfo
188  ) override;
189 
196  void CalculateMassMatrix(
197  MatrixType& rMassMatrix,
198  const ProcessInfo& rCurrentProcessInfo
199  ) override;
200 
207  void CalculateDampingMatrix(
208  MatrixType& rDampingMatrix,
209  const ProcessInfo& rCurrentProcessInfo
210  ) override;
211 
219  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
220 
230  void AddExplicitContribution(
231  const VectorType& rRHSVector,
232  const Variable<VectorType>& rRHSVariable,
233  const Variable<double >& rDestinationVariable,
234  const ProcessInfo& rCurrentProcessInfo) override;
235 
245  void AddExplicitContribution(
246  const VectorType& rRHSVector, const Variable<VectorType>& rRHSVariable,
247  const Variable<array_1d<double, 3>>& rDestinationVariable,
248  const ProcessInfo& rCurrentProcessInfo) override;
249 
263 
264 protected:
271 
273 
277  {
278  }
279 
283 
284 
288  Matrix& CalculateDeltaPosition(Matrix & rDeltaPosition);
289 
300 
301 private:
302 
321  friend class Serializer;
322 
323  // A private default constructor necessary for serialization
324 
325  void save(Serializer& rSerializer) const override;
326 
327  void load(Serializer& rSerializer) override;
328 
329 
336 
337 }; // Class NodalConcentratedElement
338 
346 
347 } // namespace Kratos.
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
Base class for all Elements.
Definition: element.h:60
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
Concentrated nodal for 3D and 2D points.
Definition: nodal_concentrated_element.hpp:44
bool mUseRayleighDamping
Definition: nodal_concentrated_element.hpp:272
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(NodalConcentratedElement)
NodalConcentratedElement()
Definition: nodal_concentrated_element.hpp:276
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
Variable class contains all information needed to store and retrive data from a data container.
Definition: variable.h:63
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