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_plane.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_PLANE_H
12 #define SYMMETRY_PLANE_H
13 
14 // ------------------------------------------------------------------------------
15 // System includes
16 // ------------------------------------------------------------------------------
17 #include <iostream>
18 #include <string>
19 
20 // ------------------------------------------------------------------------------
21 // Project includes
22 // ------------------------------------------------------------------------------
23 #include "includes/define.h"
24 #include "includes/model_part.h"
25 #include "symmetry_base.h"
26 
27 // ==============================================================================
28 
29 namespace Kratos
30 {
31 
32 class KRATOS_API(SHAPE_OPTIMIZATION_APPLICATION) SymmetryPlane : public SymmetryBase
33 {
34 public:
35 
37 
38  SymmetryPlane(ModelPart& rOriginModelPart, ModelPart& rDestinationModelPart, Parameters Settings);
39 
40  NodeVectorType& GetOriginSearchNodes() override;
41 
42  std::vector<std::pair<array_3d, bool>> GetDestinationSearchNodes(const size_t MappingId) override;
43 
44  void TransformationMatrix(const size_t DestinationMappingId, const size_t OriginMappingId, BoundedMatrix<double, 3, 3>& Matrix) const override;
45 
46  array_3d ReflectPoint(const array_3d& Coords) const;
47 
50 
54 }; // Class SymmetryPlane
55 
56 } // namespace Kratos.
57 
58 #endif // SYMMETRY_PLANE_H
Definition: amatrix_interface.h:41
This class aims to manage meshes for multi-physics simulations.
Definition: model_part.h:77
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
std::vector< NodeTypePointer > NodeVectorType
Definition: symmetry_base.h:40
Definition: symmetry_plane.h:33
Matrix mReflectionMatrix
Definition: symmetry_plane.h:53
array_3d mPlanePoint
Definition: symmetry_plane.h:48
NodeVectorType mDestinationNodes
Definition: symmetry_plane.h:52
array_3d mPlaneNormal
Definition: symmetry_plane.h:49
KRATOS_CLASS_POINTER_DEFINITION(SymmetryPlane)
NodeVectorType mOriginNodes
Definition: symmetry_plane.h:51
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21