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.
integration_point_utilities.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 
11 
12 #if !defined(KRATOS_INTEGRATION_POINT_UTILITIES_INCLUDED )
13 #define KRATOS_INTEGRATION_POINT_UTILITIES_INCLUDED
14 
15 // System includes
16 
17 // External includes
18 
19 // Project includes
20 #include "includes/define.h"
22 #include "geometries/geometry.h"
23 
24 namespace Kratos
25 {
26 class KRATOS_API(KRATOS_CORE) IntegrationPointUtilities
27 {
28 
29 public:
32 
33  static const std::vector<std::vector<std::array<double, 2>>> s_gauss_legendre;
34  static const std::vector<std::vector<std::array<double, 3>>> s_gauss_triangle;
35 
37 public:
38 
41 
42  typedef std::size_t SizeType;
43  typedef std::size_t IndexType;
44 
46  typedef std::vector<IntegrationPointType> IntegrationPointsArrayType;
47 
52  static void CreateIntegrationPoints1D(
53  IntegrationPointsArrayType & rIntegrationPoints,
54  const std::vector<double>&rSpansLocalSpace,
55  const IntegrationInfo& rIntegrationInfo);
56 
60 
61  static void CreateIntegrationPoints1DGauss(
62  IntegrationPointsArrayType& rIntegrationPoints,
63  const std::vector<double>& rSpanIntervals,
64  const SizeType IntegrationPointsPerSpan);
65 
66  static void CreateIntegrationPoints1DGrid(
67  IntegrationPointsArrayType & rIntegrationPoints,
68  const std::vector<double>& rSpanIntervals,
69  const SizeType IntegrationPointsPerSpan);
70 
74 
75  static void IntegrationPoints1D(
76  typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
77  SizeType PointsInU,
78  double U0, double U1);
79 
80  static void IntegrationPoints2D(
81  typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
82  SizeType PointsInU, SizeType PointsInV,
83  double U0, double U1, double V0, double V1);
84 
85  static void IntegrationPoints3D(
86  typename IntegrationPointsArrayType::iterator& rIntegrationPointsBegin,
87  SizeType PointsInU, SizeType PointsInV, SizeType PointsInW,
88  double U0, double U1, double V0, double V1, double W0, double W1);
89 
91  static void IntegrationPointsTriangle2D(
92  typename IntegrationPointsArrayType::iterator & rIntegrationPointsBegin,
93  SizeType PointsIndex,
94  double U0, double U1, double U2, double V0, double V1, double V2);
95 
97 };
98 
99 }
100 #endif // KRATOS_INTEGRATION_POINT_UTILITIES_INCLUDED defined
Integration information for the creation of integration points.
Definition: integration_info.h:35
Short class definition.
Definition: integration_point.h:52
Definition: integration_point_utilities.h:27
IntegrationPoint< 3 > IntegrationPointType
Definition: integration_point_utilities.h:45
static const std::vector< std::vector< std::array< double, 3 > > > s_gauss_triangle
Definition: integration_point_utilities.h:34
std::vector< IntegrationPointType > IntegrationPointsArrayType
Definition: integration_point_utilities.h:46
std::size_t IndexType
Definition: integration_point_utilities.h:43
std::size_t SizeType
Definition: integration_point_utilities.h:42
static const std::vector< std::vector< std::array< double, 2 > > > s_gauss_legendre
Definition: integration_point_utilities.h:33
REF: G. R. Cowper, GAUSSIAN QUADRATURE FORMULAS FOR TRIANGLES.
Definition: mesh_condition.cpp:21