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.
symmetry_base.h
Go to the documentation of this file.
1 // ==============================================================================
2 // KratosShapeOptimizationApplication
3 //
4 // License: BSD License
5 // license: ShapeOptimizationApplication/license.txt
6 //
7 // Main authors: Armin Geiser, https://github.com/armingeiser
8 //
9 // ==============================================================================
10 
11 #ifndef SYMMETRY_BASE_H
12 #define SYMMETRY_BASE_H
13 
14 // ------------------------------------------------------------------------------
15 // System includes
16 // ------------------------------------------------------------------------------
17 #include <iostream>
18 #include <string>
19 #include <algorithm>
20 
21 // ------------------------------------------------------------------------------
22 // Project includes
23 // ------------------------------------------------------------------------------
24 #include "includes/define.h"
25 #include "includes/model_part.h"
26 
27 // ==============================================================================
28 
29 namespace Kratos
30 {
31 
33 {
34 public:
35 
37 
38  typedef Node NodeType;
39  typedef NodeType::Pointer NodeTypePointer;
40  typedef std::vector<NodeTypePointer> NodeVectorType;
42 
43  SymmetryBase(ModelPart& rOriginModelPart, ModelPart& rDestinationModelPart, Parameters Settings)
44  : mrOriginModelPart(rOriginModelPart), mrDestinationModelPart(rDestinationModelPart), mSettings(Settings)
45  {
46  }
47 
48  virtual ~SymmetryBase() {};
49 
51 
52  virtual std::vector<std::pair<array_3d, bool>> GetDestinationSearchNodes(const size_t MappingId) = 0;
53 
54  virtual void TransformationMatrix(const size_t DestinationMappingId, const size_t OriginMappingId, BoundedMatrix<double, 3, 3>& Matrix) const = 0;
55 
59 
60 }; // Class SymmetryBase
61 
62 } // namespace Kratos.
63 
64 #endif // SYMMETRY_BASE_H
Definition: amatrix_interface.h:41
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
This class defines the node.
Definition: node.h:65
This class provides to Kratos a data structure for I/O based on the standard of JSON.
Definition: kratos_parameters.h:59
Definition: symmetry_base.h:33
KRATOS_CLASS_POINTER_DEFINITION(SymmetryBase)
Node NodeType
Definition: symmetry_base.h:38
virtual ~SymmetryBase()
Definition: symmetry_base.h:48
std::vector< NodeTypePointer > NodeVectorType
Definition: symmetry_base.h:40
ModelPart & mrDestinationModelPart
Definition: symmetry_base.h:57
array_1d< double, 3 > array_3d
Definition: symmetry_base.h:41
virtual NodeVectorType & GetOriginSearchNodes()=0
NodeType::Pointer NodeTypePointer
Definition: symmetry_base.h:39
Parameters mSettings
Definition: symmetry_base.h:58
virtual std::vector< std::pair< array_3d, bool > > GetDestinationSearchNodes(const size_t MappingId)=0
ModelPart & mrOriginModelPart
Definition: symmetry_base.h:56
SymmetryBase(ModelPart &rOriginModelPart, ModelPart &rDestinationModelPart, Parameters Settings)
Definition: symmetry_base.h:43
virtual void TransformationMatrix(const size_t DestinationMappingId, const size_t OriginMappingId, BoundedMatrix< double, 3, 3 > &Matrix) const =0
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21