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.
tetrahedra_3d_4_modified_shape_functions.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: Ruben Zorrilla
11 //
12 
13 #if !defined(KRATOS_TETRAHEDRA_3D_4_MODIFIED_SHAPE_FUNCTIONS)
14 #define KRATOS_TETRAHEDRA_3D_4_MODIFIED_SHAPE_FUNCTIONS
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
23 
24 namespace Kratos
25 {
28 
32 
36 
40 
41 class KRATOS_API(KRATOS_CORE) Tetrahedra3D4ModifiedShapeFunctions : public ModifiedShapeFunctions
42 {
43 public:
44 
47 
50 
51  // General type definitions
57 
60 
64 
68 
70  Tetrahedra3D4ModifiedShapeFunctions(const GeometryPointerType rpInputGeometry, const Vector& rNodalDistances);
71 
74 
78 
82 
86 
88  std::string Info() const override;
89 
91  void PrintInfo(std::ostream& rOStream) const override;
92 
94  void PrintData(std::ostream& rOStream) const override;
95 
99 
103 
107  const DivideGeometry<Node>::Pointer pGetSplittingUtil() const override;
108 
110 
111 protected:
114 
118 
122 
126 
127  void SetCondensationMatrix(Matrix& rIntPointCondMatrix) override;
128 
129  void SetPositiveSideCondensationMatrix(Matrix& rPosSideCondMatrix) override;
130 
131  void SetNegativeSideCondensationMatrix(Matrix& rNegSideCondMatrix) override;
132 
136 
140 
144 
146 
147 private:
150 
154 
155  DivideTetrahedra3D4<Node>::Pointer mpTetrahedraSplitter;
156 
160 
164 
168 
172 
176 
180 
183 
186  ModifiedShapeFunctions(rOther.GetInputGeometry(), rOther.GetNodalDistances()),
187  mpTetrahedraSplitter(new DivideTetrahedra3D4<Node>(*rOther.GetInputGeometry(), rOther.GetNodalDistances())) {
188 
189  // Perform the element splitting
190  mpTetrahedraSplitter->GenerateDivision();
191  mpTetrahedraSplitter->GenerateIntersectionsSkin();
192  };
193 
195 
196 };// class Tetrahedra3D4ModifiedShapeFunctions
197 
198 }
199 #endif /* KRATOS_TETRAHEDRA_3D_4_MODIFIED_SHAPE_FUNCTIONS defined */
PeriodicInterfaceProcess & operator=(const PeriodicInterfaceProcess &)=delete
std::string Info() const override
Turn back information as a string.
Definition: periodic_interface_process.hpp:93
Definition: divide_geometry.h:167
Definition: divide_tetrahedra_3d_4.h:45
void GenerateIntersectionsSkin() override
Definition: divide_tetrahedra_3d_4.cpp:189
void GenerateDivision() override
Definition: divide_tetrahedra_3d_4.cpp:81
IntegrationMethod
Definition: geometry_data.h:76
Geometry base class.
Definition: geometry.h:71
Short class definition.
Definition: integration_point.h:52
Definition: amatrix_interface.h:41
Definition: modified_shape_functions.h:45
std::vector< IntegrationPointType > IntegrationPointsArrayType
Definition: modified_shape_functions.h:66
GeometryType::Pointer GeometryPointerType
Definition: modified_shape_functions.h:56
DivideGeometry< Node >::IndexedPointGeometryPointerType IndexedPointGeometryPointerType
Definition: modified_shape_functions.h:63
std::array< IntegrationPointsArrayType, static_cast< int >GeometryData::IntegrationMethod::NumberOfIntegrationMethods)> IntegrationPointsContainerType
Definition: modified_shape_functions.h:67
This class defines the node.
Definition: node.h:65
Definition: tetrahedra_3d_4_modified_shape_functions.h:42
BaseType::IndexedPointGeometryType IndexedPointGeometryType
Definition: tetrahedra_3d_4_modified_shape_functions.h:58
BaseType::ShapeFunctionsGradientsType ShapeFunctionsGradientsType
Definition: tetrahedra_3d_4_modified_shape_functions.h:56
BaseType::IndexedPointGeometryPointerType IndexedPointGeometryPointerType
Definition: tetrahedra_3d_4_modified_shape_functions.h:59
ModifiedShapeFunctions BaseType
Definition: tetrahedra_3d_4_modified_shape_functions.h:52
KRATOS_CLASS_POINTER_DEFINITION(Tetrahedra3D4ModifiedShapeFunctions)
Pointer definition of Tetrahedra3D4ModifiedShapeFunctions.
BaseType::IntegrationPointType IntegrationPointType
Definition: tetrahedra_3d_4_modified_shape_functions.h:61
BaseType::IntegrationMethodType IntegrationMethodType
Definition: tetrahedra_3d_4_modified_shape_functions.h:55
BaseType::GeometryType GeometryType
Definition: tetrahedra_3d_4_modified_shape_functions.h:53
BaseType::GeometryPointerType GeometryPointerType
Definition: tetrahedra_3d_4_modified_shape_functions.h:54
BaseType::IntegrationPointsArrayType IntegrationPointsArrayType
Definition: tetrahedra_3d_4_modified_shape_functions.h:62
BaseType::IntegrationPointsContainerType IntegrationPointsContainerType
Definition: tetrahedra_3d_4_modified_shape_functions.h:63
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21