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.
element_template.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: @{KRATOS_APP_AUTHOR}
11 //
12 
13 #pragma once
14 
15 // System includes
16 
17 
18 // External includes
19 
20 
21 // Project includes
22 #include "includes/element.h"
23 #include "@{APP_NAME_LOW}_application_variables.h"
24 
25 
26 namespace Kratos
27 {
28 
31 
35 
39 
43 
47 
48 @{KRATOS_CLASS_TEMPLATE}
49 class @{KRATOS_NAME_CAMEL} @{KRATOS_CLASS_BASE_HEADER}
50 {
51 public:
52 
53  @{KRATOS_CLASS_LOCAL_FLAGS}
54 
57 
58  typedef @{KRATOS_CLASS_BASE} BaseType;
59 
63  KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(@{KRATOS_NAME_CAMEL});
64 
68 
72  @{KRATOS_NAME_CAMEL}(IndexType NewId = 0);
73 
77  @{KRATOS_NAME_CAMEL}(IndexType NewId, const NodesArrayType& ThisNodes);
78 
82  @{KRATOS_NAME_CAMEL}(IndexType NewId, GeometryType::Pointer pGeometry);
83 
87  @{KRATOS_NAME_CAMEL}(IndexType NewId, GeometryType::Pointer pGeometry, PropertiesType::Pointer pProperties);
88 
92  @{KRATOS_NAME_CAMEL}(@{KRATOS_NAME_CAMEL} const& rOther);
93 
97  ~@{KRATOS_NAME_CAMEL}() override;
98 
102 
104  @{KRATOS_NAME_CAMEL} & operator=(@{KRATOS_NAME_CAMEL} const& rOther);
105 
109 
122  Element::Pointer Create(IndexType NewId, NodesArrayType const& ThisNodes, PropertiesType::Pointer pProperties) const override;
123 
131  Element::Pointer Create(IndexType NewId, GeometryType::Pointer pGeom, PropertiesType::Pointer pProperties) const override;
132 
140  Element::Pointer Clone(IndexType NewId, NodesArrayType const& ThisNodes) const override;
141 
148  void EquationIdVector(EquationIdVectorType& rResult, const ProcessInfo& CurrentProcessInfo) const override;
149 
155  void GetDofList(DofsVectorType& rElementalDofList, const ProcessInfo& CurrentProcessInfo) const override;
156 
172  void CalculateLocalSystem(
173  MatrixType& rLeftHandSideMatrix,
174  VectorType& rRightHandSideVector,
175  const ProcessInfo& rCurrentProcessInfo) override;
176 
183  void CalculateLeftHandSide(MatrixType& rLeftHandSideMatrix, const ProcessInfo& rCurrentProcessInfo) override;
184 
191  void CalculateRightHandSide(VectorType& rRightHandSideVector, const ProcessInfo& rCurrentProcessInfo) override;
192 
200  void CalculateFirstDerivativesContributions(
201  MatrixType& rLeftHandSideMatrix,
202  VectorType& rRightHandSideVector,
203  const ProcessInfo& rCurrentProcessInfo) override;
204 
211  void CalculateFirstDerivativesLHS(MatrixType& rLeftHandSideMatrix, const ProcessInfo& rCurrentProcessInfo) override;
212 
219  void CalculateFirstDerivativesRHS(VectorType& rRightHandSideVector, const ProcessInfo& rCurrentProcessInfo) override;
220 
238  void CalculateSecondDerivativesContributions(
239  MatrixType& rLeftHandSideMatrix,
240  VectorType& rRightHandSideVector,
241  const ProcessInfo& rCurrentProcessInfo) override;
242 
249  void CalculateSecondDerivativesLHS(
250  MatrixType& rLeftHandSideMatrix,
251  const ProcessInfo& rCurrentProcessInfo) override;
252 
259  void CalculateSecondDerivativesRHS(
260  VectorType& rRightHandSideVector,
261  const ProcessInfo& rCurrentProcessInfo) override;
262 
269  void CalculateMassMatrix(MatrixType& rMassMatrix, const ProcessInfo& rCurrentProcessInfo) override;
270 
277  void CalculateDampingMatrix(MatrixType& rDampingMatrix, const ProcessInfo& rCurrentProcessInfo) override;
278 
288  int Check(const ProcessInfo& rCurrentProcessInfo) const override;
289 
293 
294 
298 
299 
303 
305  std::string Info() const override;
306 
308  void PrintInfo(std::ostream& rOStream) const override;
309 
311  void PrintData(std::ostream& rOStream) const override;
312 
316 
318 
319 protected:
320 
323 
327 
331 
335 
339 
343 
347 
349 
350 private:
351 
354 
355  @{KRATOS_STATIC_MEMBERS_LIST}
356 
360 
361  @{KRATOS_MEMBERS_LIST}
362 
366 
370 
374 
375  friend class Serializer;
376 
377  void save(Serializer& rSerializer) const override;
378  void load(Serializer& rSerializer) override;
379 
383 
387 
391 
393 
394 }; // Class @{KRATOS_NAME_CAMEL}
395 
397 
400 
404 
406 
407 } // namespace Kratos.
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
std::size_t IndexType
The definition of the index type.
Definition: key_hash.h:35
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
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
array_1d< double, 3 > VectorType
Definition: solid_mechanics_application_variables.cpp:19
ModelPart::NodesContainerType NodesArrayType
Definition: gid_gauss_point_container.h:42
def load(f)
Definition: ode_solve.py:307
#define KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(a)
Definition: smart_pointers.h:78