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.
helmholtz_surface_shape_condition.h
Go to the documentation of this file.
1 // | / |
2 // ' / __| _` | __| _ \ __|
3 // . \ | ( | | ( |\__ `
4 // _|\_\_| \__,_|\__|\___/ ____/
5 // Multi-Physics
6 //
7 // License: BSD License
8 // license: OptimizationApplication/license.txt
9 //
10 // Main authors: Reza Najian Asl
11 //
12 
13 #pragma once
14 
15 // System includes
16 
17 // External includes
18 
19 // Project includes
20 #include "includes/condition.h"
21 #include "includes/model_part.h"
23 #include "utilities/geometry_utilities.h"
25 
26 
27 namespace Kratos
28 {
29 
32 
34 
42 class KRATOS_API(OPTIMIZATION_APPLICATION) HelmholtzSurfaceShapeCondition
43  : public Condition
44 {
45 public:
48 
51 
55 
58  IndexType NewId,
59  GeometryType::Pointer pGeometry);
60 
62  IndexType NewId,
63  GeometryType::Pointer pGeometry,
64  PropertiesType::Pointer pProperties);
65 
68 
72 
80  Condition::Pointer Create(
81  IndexType NewId,
82  GeometryType::Pointer pGeom,
83  PropertiesType::Pointer pProperties
84  ) const override;
85 
93  Condition::Pointer Create(
94  IndexType NewId,
95  NodesArrayType const& ThisNodes,
96  PropertiesType::Pointer pProperties
97  ) const override;
98 
106  Condition::Pointer Clone (
107  IndexType NewId,
108  NodesArrayType const& rThisNodes
109  ) const override;
110 
116  void EquationIdVector(
117  EquationIdVectorType& rResult,
118  const ProcessInfo& rCurrentProcessInfo
119  ) const override;
120 
126  void GetDofList(
127  DofsVectorType& rConditionalDofList,
128  const ProcessInfo& rCurrentProcessInfo
129  ) const override;
130 
136  void GetValuesVector(
137  Vector& rValues,
138  int Step = 0
139  ) const override;
140 
148  void CalculateLocalSystem(
149  MatrixType& rLeftHandSideMatrix,
150  VectorType& rRightHandSideVector,
151  const ProcessInfo& rCurrentProcessInfo
152  ) override;
153 
159  void CalculateLeftHandSide(
160  MatrixType& rLeftHandSideMatrix,
161  const ProcessInfo& rCurrentProcessInfo
162  ) override;
163 
169  void CalculateRightHandSide(
170  VectorType& rRightHandSideVector,
171  const ProcessInfo& rCurrentProcessInfo
172  ) override;
173 
174 
180  void CalculateMassMatrix(
181  MatrixType& rMassMatrix,
182  const ProcessInfo& rCurrentProcessInfo
183  ) override;
184 
190  void Calculate(
191  const Variable<double>& rVariable,
192  double& rOutput,
193  const ProcessInfo& rCurrentProcessInfo
194  ) override;
195 
203  int Check( const ProcessInfo& rCurrentProcessInfo ) const override;
204 
206 
207 protected:
208  // Protected default constructor necessary for serialization
210  {
211  }
212 
213 private:
216  friend class Serializer;
217 
218  void save(Serializer& rSerializer) const override
219  {
221  }
222 
223  void load(Serializer& rSerializer) override
224  {
226  }
227 
229 
232 
237  void CalculateStiffnessMatrix(
238  MatrixType& rStiffnessMatrix,
239  const ProcessInfo& rCurrentProcessInfo) const;
240 
245  void CalculateNormal(
246  VectorType & rN) const;
247 
254  void GetParentElementShapeFunctionsValues(
255  MatrixType& rNMatrix,
256  const IntegrationMethod& rIntegrationMethod,
257  const ProcessInfo& rCurrentProcessInfo) const;
258 
265  void GetParentElementShapeFunctionsGlobalGradients(
266  MatrixType& rDN_DX,
267  const IndexType PointNumber,
268  const IntegrationMethod& rIntegrationMethod,
269  const ProcessInfo& rCurrentProcessInfo) const;
271 
272 }; // Class HelmholtzSurfaceShapeCondition
273 
275 
276 } // namespace Kratos.
277 
278 
279 
Base class for all Conditions.
Definition: condition.h:59
std::vector< std::size_t > EquationIdVectorType
Definition: condition.h:98
std::vector< DofType::Pointer > DofsVectorType
Definition: condition.h:100
std::size_t IndexType
Definition: flags.h:74
Short class definition.
Definition: helmholtz_surface_shape_condition.h:44
KRATOS_CLASS_INTRUSIVE_POINTER_DEFINITION(HelmholtzSurfaceShapeCondition)
Counted pointer of HelmholtzSurfaceShapeCondition.
HelmholtzSurfaceShapeCondition()
Definition: helmholtz_surface_shape_condition.h:209
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
#define KRATOS_SERIALIZE_SAVE_BASE_CLASS(Serializer, BaseType)
Definition: define.h:812
#define KRATOS_SERIALIZE_LOAD_BASE_CLASS(Serializer, BaseType)
Definition: define.h:815
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
TDataType Calculate(GeometryType &dummy, const Variable< TDataType > &rVariable)
Definition: add_geometries_to_python.cpp:103
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21
GeometryData::IntegrationMethod IntegrationMethod
Type definition for integration methods.
Definition: exact_mortar_segmentation_utility.h:57
array_1d< double, 3 > VectorType
Definition: solid_mechanics_application_variables.cpp:19
ProcessInfo
Definition: edgebased_PureConvection.py:116
def load(f)
Definition: ode_solve.py:307