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.
triangle_2d_3_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_TRIANGLE_2D_3_AUSAS_INCISED_SHAPE_FUNCTIONS)
14 #define KRATOS_TRIANGLE_2D_3_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 Vector& rNodalDistancesWithExtrapolated, const Vector& rExtrapolatedEdgeRatios);
61 
64 
68 
72 
76 
78  std::string Info() const override;
79 
81  void PrintInfo(std::ostream& rOStream) const override;
82 
84  void PrintData(std::ostream& rOStream) const override;
85 
89 
93 
97  const Vector& GetExtrapolatedEdgeRatios() const ;
98 
100 
101 protected:
104 
108 
109  // Arrays to get edge and node IDs of geometry from edge ID of splitting utility
110  const std::array<size_t, 3> edge_id_for_geometry {{2, 0, 1}};
111  const std::array<std::array<size_t,2>, 3> node_ids_for_geometry {{{{0,1}}, {{1,2}}, {{2,0}}}};
112 
116 
120 
121  void SetPositiveSideCondensationMatrix(Matrix& rPosSideCondMatrix) override;
122 
123  void SetNegativeSideCondensationMatrix(Matrix& rNegSideCondMatrix) override;
124 
135  void SetPositiveSideCondensationMatrix(
136  Matrix& rPosSideCondMatrix,
137  const std::vector<int>& rEdgeNodeI,
138  const std::vector<int>& rEdgeNodeJ,
139  const std::vector<int>& rSplitEdges);
140 
151  void SetNegativeSideCondensationMatrix(
152  Matrix& rNegSideCondMatrix,
153  const std::vector<int>& rEdgeNodeI,
154  const std::vector<int>& rEdgeNodeJ,
155  const std::vector<int>& rSplitEdges);
156 
160 
164 
168 
170 
171 private:
174 
178 
179  const Vector mExtraEdgeRatios;
180 
184 
188 
192 
196 
200 
204 
207 
210  Triangle2D3AusasModifiedShapeFunctions(rOther.GetInputGeometry(), rOther.GetNodalDistances()),
211  mExtraEdgeRatios(rOther.mExtraEdgeRatios) {
212  };
213 
215 
216 };// class Triangle2D3AusasIncisedShapeFunctions
217 
218 }
219 #endif /* KRATOS_TRIANGLE_2D_3_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: triangle_2d_3_ausas_incised_shape_functions.h:41
BaseType::GeometryPointerType GeometryPointerType
Definition: triangle_2d_3_ausas_incised_shape_functions.h:52
KRATOS_CLASS_POINTER_DEFINITION(Triangle2D3AusasIncisedShapeFunctions)
Pointer definition of Triangle2D3AusasIncisedShapeFunctions.
AusasModifiedShapeFunctions BaseType
Definition: triangle_2d_3_ausas_incised_shape_functions.h:51
Definition: triangle_2d_3_ausas_modified_shape_functions.h:42
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21