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_ausas_incised_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: Franziska Wahl
11 //
12 
13 #if !defined(KRATOS_TETRAHEDRA_3D_4_AUSAS_INCISED_SHAPE_FUNCTIONS)
14 #define KRATOS_TETRAHEDRA_3D_4_AUSAS_INCISED_SHAPE_FUNCTIONS
15 
16 // System includes
17 
18 // External includes
19 
20 // Project includes
22 
23 namespace Kratos
24 {
27 
31 
35 
39 
41 {
42 public:
43 
46 
49 
50  // General type definitions
53 
57 
60  const GeometryPointerType rpInputGeometry,
61  const Vector& rNodalDistancesWithExtrapolated,
62  const Vector& rExtrapolatedEdgeRatios);
63 
66 
70 
74 
78 
80  std::string Info() const override;
81 
83  void PrintInfo(std::ostream& rOStream) const override;
84 
86  void PrintData(std::ostream& rOStream) const override;
87 
91 
95 
99  const Vector& GetExtrapolatedEdgeRatios() const ;
100 
102 
103 protected:
106 
110 
111  // Arrays to get edge and node IDs of geometry from edge ID of splitting utility
112  const std::array<size_t, 6> edge_id_for_geometry {{0, 2, 3, 1, 4, 5}};
113  const std::array<std::array<size_t,2>, 6> node_ids_for_geometry {{{{0,1}}, {{2,0}}, {{0,3}}, {{1,2}}, {{1,3}}, {{2,3}}}};
114 
118 
122 
123  void SetPositiveSideCondensationMatrix(Matrix& rPosSideCondMatrix) override;
124 
125  void SetNegativeSideCondensationMatrix(Matrix& rNegSideCondMatrix) override;
126 
137  void SetPositiveSideCondensationMatrix(
138  Matrix& rPosSideCondMatrix,
139  const std::vector<int>& rEdgeNodeI,
140  const std::vector<int>& rEdgeNodeJ,
141  const std::vector<int>& rSplitEdges);
142 
153  void SetNegativeSideCondensationMatrix(
154  Matrix& rNegSideCondMatrix,
155  const std::vector<int>& rEdgeNodeI,
156  const std::vector<int>& rEdgeNodeJ,
157  const std::vector<int>& rSplitEdges);
158 
162 
166 
170 
172 
173 private:
176 
180 
181  const Vector mExtraEdgeRatios;
182 
186 
190 
194 
198 
202 
206 
209 
212  Tetrahedra3D4AusasModifiedShapeFunctions(rOther.GetInputGeometry(), rOther.GetNodalDistances()),
213  mExtraEdgeRatios(rOther.mExtraEdgeRatios) {
214  };
215 
217 
218 };// class Tetrahedra3D4AusasIncisedShapeFunctions
219 
220 }
221 #endif /* KRATOS_TETRAHEDRA_3D_4_AUSAS_INCISED_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: ausas_modified_shape_functions.h:41
BaseType::GeometryPointerType GeometryPointerType
Definition: ausas_modified_shape_functions.h:53
GeometryType::Pointer GeometryPointerType
Definition: modified_shape_functions.h:56
Definition: tetrahedra_3d_4_ausas_incised_shape_functions.h:41
KRATOS_CLASS_POINTER_DEFINITION(Tetrahedra3D4AusasIncisedShapeFunctions)
Pointer definition of Tetrahedra3D4AusasModifiedShapeFunctions.
BaseType::GeometryPointerType GeometryPointerType
Definition: tetrahedra_3d_4_ausas_incised_shape_functions.h:52
AusasModifiedShapeFunctions BaseType
Definition: tetrahedra_3d_4_ausas_incised_shape_functions.h:51
Definition: tetrahedra_3d_4_ausas_modified_shape_functions.h:42
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21