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.
weak_coupling_slide.hpp
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: Klaus B. Sautter
11 //
12 //
13 //
14 
15 #if !defined(KRATOS_WEAK_SLIDING_ELEMENT_H_INCLUDED )
16 #define KRATOS_WEAK_SLIDING_ELEMENT_H_INCLUDED
17 
18 // System includes
19 
20 // External includes
21 
22 // Project includes
23 #include "includes/element.h"
24 #include "includes/define.h"
25 
26 namespace Kratos
27 {
36  class KRATOS_API(CABLE_NET_APPLICATION) WeakSlidingElement3D3N : public Element
37  {
38  protected:
39  //const values
40  static constexpr int msNumberOfNodes = 3;
41  static constexpr int msDimension = 3;
42  static constexpr unsigned int msLocalSize = msNumberOfNodes * msDimension;
43 
44  public:
46 
47 
48  typedef Element BaseType;
56  typedef BaseType::EquationIdVectorType EquationIdVectorType;
57  typedef BaseType::DofsVectorType DofsVectorType;
58 
59 
62  GeometryType::Pointer pGeometry);
64  GeometryType::Pointer pGeometry,
65  PropertiesType::Pointer pProperties);
66 
67 
68  ~WeakSlidingElement3D3N() override;
69 
77  Element::Pointer Create(
78  IndexType NewId,
79  GeometryType::Pointer pGeom,
80  PropertiesType::Pointer pProperties
81  ) const override;
82 
90  Element::Pointer Create(
91  IndexType NewId,
92  NodesArrayType const& ThisNodes,
93  PropertiesType::Pointer pProperties
94  ) const override;
95 
96  void EquationIdVector(
97  EquationIdVectorType& rResult,
98  const ProcessInfo& rCurrentProcessInfo) const override;
99 
100  void GetDofList(
101  DofsVectorType& rElementalDofList,
102  const ProcessInfo& rCurrentProcessInfo) const override;
103 
108  CreateElementStiffnessMatrix(const ProcessInfo& rCurrentProcessInfo);
109 
110 
111  void CalculateLocalSystem(
112  MatrixType& rLeftHandSideMatrix,
113  VectorType& rRightHandSideVector,
114  const ProcessInfo& rCurrentProcessInfo) override;
115 
116 
117  void CalculateRightHandSide(
118  VectorType& rRightHandSideVector,
119  const ProcessInfo& rCurrentProcessInfo) override;
120 
121  void CalculateLeftHandSide(
122  MatrixType& rLeftHandSideMatrix,
123  const ProcessInfo& rCurrentProcessInfo) override;
124 
125  void AddExplicitContribution(
126  const VectorType& rRHSVector, const Variable<VectorType>& rRHSVariable,
127  const Variable<array_1d<double, 3>>& rDestinationVariable,
128  const ProcessInfo& rCurrentProcessInfo) override;
129 
130  void AddExplicitContribution(
131  const VectorType& rRHSVector,
132  const Variable<VectorType>& rRHSVariable,
133  const Variable<double >& rDestinationVariable,
134  const ProcessInfo& rCurrentProcessInfo) override;
135 
136 
137  void GetValuesVector(
138  Vector& rValues,
139  int Step = 0) const override;
140 
141  void GetSecondDerivativesVector(
142  Vector& rValues,
143  int Step = 0) const override;
144 
145  void GetFirstDerivativesVector(
146  Vector& rValues,
147  int Step = 0) const override;
148 
149  int Check(
150  const ProcessInfo& rCurrentProcessInfo) const override;
151 
152 private:
153 
154  friend class Serializer;
155  void save(Serializer& rSerializer) const override;
156  void load(Serializer& rSerializer) override;
157  };
158 
159 
160 }
161 
162 
163 #endif
Base class for all Elements.
Definition: element.h:60
std::size_t IndexType
Defines the index type.
Definition: geometrical_object.h:73
Geometry base class.
Definition: geometry.h:71
Definition: amatrix_interface.h:41
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
This is a penalty element to realize sliding nodes element with 3 translational dofs per node.
Definition: weak_coupling_slide.hpp:37
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(WeakSlidingElement3D3N)
BaseType::VectorType VectorType
Definition: weak_coupling_slide.hpp:55
Element BaseType
Definition: weak_coupling_slide.hpp:48
BaseType::EquationIdVectorType EquationIdVectorType
Definition: weak_coupling_slide.hpp:56
BaseType::SizeType SizeType
Definition: weak_coupling_slide.hpp:53
BaseType::MatrixType MatrixType
Definition: weak_coupling_slide.hpp:54
BaseType::IndexType IndexType
Definition: weak_coupling_slide.hpp:52
WeakSlidingElement3D3N()
Definition: weak_coupling_slide.hpp:60
BaseType::DofsVectorType DofsVectorType
Definition: weak_coupling_slide.hpp:57
BaseType::NodesArrayType NodesArrayType
Definition: weak_coupling_slide.hpp:50
BaseType::PropertiesType PropertiesType
Definition: weak_coupling_slide.hpp:51
BaseType::GeometryType GeometryType
Definition: weak_coupling_slide.hpp:49
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
Vector VectorType
Definition: geometrical_transformation_utilities.h:56
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
std::size_t SizeType
Definition: nurbs_utilities.h:41
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
Properties PropertiesType
Definition: regenerate_pfem_pressure_conditions_process.h:26
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
def load(f)
Definition: ode_solve.py:307