OGS
Toggle main menu visibility
Main Page
Related Pages
Namespaces
Namespace List
Namespace Members
All
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Functions
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
x
y
z
Variables
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
u
v
w
Typedefs
a
b
c
d
e
f
g
h
i
j
k
l
m
n
o
p
q
r
s
t
v
w
x
z
Enumerations
b
c
d
e
f
g
i
l
m
n
o
p
s
t
u
v
Enumerator
a
b
c
d
e
f
g
h
l
m
n
p
r
s
t
v
y
Classes
Class List
Class Index
Class Hierarchy
Files
File List
File Members
All
a
b
c
d
e
f
g
i
k
m
n
o
p
r
s
t
v
w
x
Functions
a
c
d
e
f
g
i
m
o
p
r
s
t
v
w
Variables
Typedefs
Enumerations
Macros
b
c
g
m
n
o
p
r
s
t
▼
OGS
►
OpenGeoSys 6.5.4-313-g117c23c1cd source code documentation
►
OGS CTests—Project Files
►
OGS Input File Parameters—Quality Assurance
►
OGS Input File Parameters
BulkMappingDocuPage
Todo List
OGS Input File Parameters—List of incomplete documentation pages
Bibliography
►
Namespaces
►
Classes
▼
Files
▼
File List
►
Applications
►
BaseLib
►
build
►
ChemistryLib
Documentation
►
GeoLib
►
InfoLib
►
MaterialLib
►
MathLib
►
MeshGeoToolsLib
►
MeshLib
►
MeshToolsLib
▼
NumLib
►
Assembler
►
DOF
►
Extrapolation
▼
Fem
►
CoordinatesMapping
▼
FiniteElement
►
C0IsoparametricElements.h
►
ElementTraitsLagrange.h
►
LowerDimShapeTable.h
►
TemplateIsoparametric.h
►
Integration
►
ShapeFunction
►
AverageGradShapeFunction.h
►
InitShapeMatrices.h
►
Interpolation.h
►
ReferenceElement.h
►
ShapeMatrixCache.cpp
►
ShapeMatrixCache.h
►
ShapeMatrixPolicy.h
►
NumericalStability
►
ODESolver
►
StaggeredCoupling
►
TimeStepping
►
CreateNewtonRaphsonSolverParameters.cpp
►
CreateNewtonRaphsonSolverParameters.h
►
Exceptions.h
►
IndexValueVector.h
►
NewtonRaphson.h
►
NumericalDifferentiation.h
►
NumericsConfig.h
►
ParameterLib
►
ProcessLib
►
File Members
ElementTraitsLagrange.h
Go to the documentation of this file.
1
11
#pragma once
12
13
#include "
BaseLib/TMP.h
"
14
#include "
MeshLib/Elements/Elements.h
"
15
#include "
NumLib/Fem/FiniteElement/LowerDimShapeTable.h
"
16
#include "
NumLib/Fem/ShapeFunction/ShapeHex20.h
"
17
#include "
NumLib/Fem/ShapeFunction/ShapeHex8.h
"
18
#include "
NumLib/Fem/ShapeFunction/ShapeLine2.h
"
19
#include "
NumLib/Fem/ShapeFunction/ShapeLine3.h
"
20
#include "
NumLib/Fem/ShapeFunction/ShapePoint1.h
"
21
#include "
NumLib/Fem/ShapeFunction/ShapePrism15.h
"
22
#include "
NumLib/Fem/ShapeFunction/ShapePrism6.h
"
23
#include "
NumLib/Fem/ShapeFunction/ShapePyra13.h
"
24
#include "
NumLib/Fem/ShapeFunction/ShapePyra5.h
"
25
#include "
NumLib/Fem/ShapeFunction/ShapeQuad4.h
"
26
#include "
NumLib/Fem/ShapeFunction/ShapeQuad8.h
"
27
#include "
NumLib/Fem/ShapeFunction/ShapeQuad9.h
"
28
#include "
NumLib/Fem/ShapeFunction/ShapeTet10.h
"
29
#include "
NumLib/Fem/ShapeFunction/ShapeTet4.h
"
30
#include "
NumLib/Fem/ShapeFunction/ShapeTri3.h
"
31
#include "
NumLib/Fem/ShapeFunction/ShapeTri6.h
"
32
33
namespace
NumLib
34
{
35
namespace
detail
36
{
37
template
<
typename
ShapeFunction,
typename
Enabled =
void
>
38
struct
LowerOrderShapeFunctionOrSame
39
{
40
static_assert
(ShapeFunction::ORDER < 2,
41
"Only shape functions of order 1 should use this fallback. "
42
"Order 0 is a special case for 0D elements."
);
43
using
type
= ShapeFunction;
44
};
38
struct
LowerOrderShapeFunctionOrSame
{
…
};
45
46
template
<
typename
ShapeFunction>
47
struct
LowerOrderShapeFunctionOrSame
<
48
ShapeFunction,
49
std::void_t<typename NumLib::LowerDim<ShapeFunction>::type>>
50
{
51
using
type
=
typename
NumLib::LowerDim<ShapeFunction>::type
;
52
};
47
struct
LowerOrderShapeFunctionOrSame
< {
…
};
53
54
template
<
typename
ShapeFunction_>
55
struct
ShapeFunctionTraits
56
{
57
using
ShapeFunction
= ShapeFunction_;
58
using
LowerOrderShapeFunction
=
59
typename
LowerOrderShapeFunctionOrSame<ShapeFunction>::type
;
60
};
55
struct
ShapeFunctionTraits
{
…
};
61
}
// namespace detail
62
63
template
<
typename
Element>
64
struct
ElementTraitsLagrange
;
65
66
#define OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE(ELEMENT, SHAPE_FUNCTION) \
67
template <> \
68
struct ElementTraitsLagrange<MeshLib::ELEMENT> \
69
: detail::ShapeFunctionTraits<NumLib::SHAPE_FUNCTION> \
70
{ \
71
using Element = MeshLib::ELEMENT; \
72
static_assert( \
73
std::is_same_v<Element, typename ShapeFunction::MeshElement>); \
74
}
66
#define OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE(ELEMENT, SHAPE_FUNCTION) \
…
75
76
// points and lines
77
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Point,
ShapePoint1
);
78
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(
Line
,
ShapeLine2
);
79
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Line3,
ShapeLine3
);
80
// quads and hexahedra
81
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Quad,
ShapeQuad4
);
82
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Quad8,
ShapeQuad8
);
83
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Quad9,
ShapeQuad9
);
84
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Hex,
ShapeHex8
);
85
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Hex20,
ShapeHex20
);
86
// simplices
87
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Tri,
ShapeTri3
);
88
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Tri6,
ShapeTri6
);
89
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Tet,
ShapeTet4
);
90
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Tet10,
ShapeTet10
);
91
// prisms
92
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Prism,
ShapePrism6
);
93
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Prism15,
ShapePrism15
);
94
// pyramids
95
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Pyramid,
ShapePyra5
);
96
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
(Pyramid13,
ShapePyra13
);
97
98
#undef OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
99
100
using
AllElementTraitsLagrange
=
101
BaseLib::TMP::Map_t<ElementTraitsLagrange, MeshLib::AllElementTypes>
;
102
}
// namespace NumLib
OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE
#define OGS_SPECIALIZE_ELEMENT_TRAITS_LAGRANGE(ELEMENT, SHAPE_FUNCTION)
Definition
ElementTraitsLagrange.h:66
Elements.h
LowerDimShapeTable.h
ShapeHex20.h
ShapeHex8.h
ShapeLine2.h
ShapeLine3.h
ShapePoint1.h
ShapePrism15.h
ShapePrism6.h
ShapePyra13.h
ShapePyra5.h
ShapeQuad4.h
ShapeQuad8.h
ShapeQuad9.h
ShapeTet10.h
ShapeTet4.h
ShapeTri3.h
ShapeTri6.h
TMP.h
NumLib::ShapeHex20
Definition
ShapeHex20.h:24
NumLib::ShapeHex8
Definition
ShapeHex8.h:42
NumLib::ShapeLine2
Definition
ShapeLine2.h:27
NumLib::ShapeLine3
Definition
ShapeLine3.h:22
NumLib::ShapePoint1
Shape function for a point element in natural coordinates.
Definition
ShapePoint1.h:20
NumLib::ShapePrism15
Definition
ShapePrism15.h:23
NumLib::ShapePrism6
Definition
ShapePrism6.h:23
NumLib::ShapePyra13
Definition
ShapePyra13.h:23
NumLib::ShapePyra5
Definition
ShapePyra5.h:23
NumLib::ShapeQuad4
Definition
ShapeQuad4.h:35
NumLib::ShapeQuad8
Definition
ShapeQuad8.h:22
NumLib::ShapeQuad9
Definition
ShapeQuad9.h:22
NumLib::ShapeTet10
Definition
ShapeTet10.h:22
NumLib::ShapeTet4
Definition
ShapeTet4.h:22
NumLib::ShapeTri3
Definition
ShapeTri3.h:35
NumLib::ShapeTri6
Definition
ShapeTri6.h:23
BaseLib::TMP::Map_t
typename Map< MapFromTypeToType, List >::type Map_t
Definition
TMP.h:102
NumLib
Definition
ProjectData.h:46
NumLib::AllElementTraitsLagrange
BaseLib::TMP::Map_t< ElementTraitsLagrange, MeshLib::AllElementTypes > AllElementTraitsLagrange
Definition
ElementTraitsLagrange.h:100
detail
Definition
ElementCoordinatesMappingLocal.cpp:22
NumLib::ElementTraitsLagrange
Definition
ElementTraitsLagrange.h:64
NumLib::LowerDim
Definition
LowerDimShapeTable.h:32
NumLib::detail::Line
Definition
ComponentGlobalIndexDict.h:31
NumLib::detail::LowerOrderShapeFunctionOrSame< ShapeFunction, std::void_t< typename NumLib::LowerDim< ShapeFunction >::type > >::type
typename NumLib::LowerDim< ShapeFunction >::type type
Definition
ElementTraitsLagrange.h:51
NumLib::detail::LowerOrderShapeFunctionOrSame
Definition
ElementTraitsLagrange.h:39
NumLib::detail::LowerOrderShapeFunctionOrSame::type
ShapeFunction type
Definition
ElementTraitsLagrange.h:43
NumLib::detail::ShapeFunctionTraits
Definition
ElementTraitsLagrange.h:56
NumLib::detail::ShapeFunctionTraits::ShapeFunction
ShapeFunction_ ShapeFunction
Definition
ElementTraitsLagrange.h:57
NumLib::detail::ShapeFunctionTraits::LowerOrderShapeFunction
typename LowerOrderShapeFunctionOrSame< ShapeFunction >::type LowerOrderShapeFunction
Definition
ElementTraitsLagrange.h:58
NumLib
Fem
FiniteElement
ElementTraitsLagrange.h
Generated by
1.11.0