Mesh Oriented datABase
(version 5.5.1)
An array-based unstructured mesh library
LinearTet.hpp
Go to the documentation of this file.
1
#ifndef LINEAR_TET_HPP
2
#define LINEAR_TET_HPP
3
/**\brief Shape function space for trilinear tetrahedron, obtained by a pushforward of the canonical
4
* linear (affine) functions. */
5
6
#include "
moab/ElemEvaluator.hpp
"
7
#include "
moab/CN.hpp
"
8
9
namespace
moab
10
{
11
12
class
LinearTet
13
{
14
public
:
15
/** \brief Forward-evaluation of field at parametric coordinates */
16
static
ErrorCode
evalFcn
(
const
double
* params,
17
const
double
* field,
18
const
int
ndim,
19
const
int
num_tuples,
20
double
* work,
21
double
* result );
22
23
/** \brief Reverse-evaluation of parametric coordinates at physical space position */
24
static
ErrorCode
reverseEvalFcn
(
EvalFcn
eval,
25
JacobianFcn
jacob,
26
InsideFcn
ins,
27
const
double
* posn,
28
const
double
* verts,
29
const
int
nverts,
30
const
int
ndim,
31
const
double
iter_tol,
32
const
double
inside_tol,
33
double
* work,
34
double
* params,
35
int
* is_inside );
36
37
/** \brief Evaluate the normal at a specified facet*/
38
static
ErrorCode
normalFcn
(
const
int
ientDim,
39
const
int
facet,
40
const
int
nverts,
41
const
double
* verts,
42
double
normal[3] );
43
44
/** \brief Evaluate the jacobian at a specified parametric position */
45
static
ErrorCode
jacobianFcn
(
const
double
* params,
46
const
double
* verts,
47
const
int
nverts,
48
const
int
ndim,
49
double
* work,
50
double
* result );
51
52
/** \brief Forward-evaluation of field at parametric coordinates */
53
static
ErrorCode
integrateFcn
(
const
double
* field,
54
const
double
* verts,
55
const
int
nverts,
56
const
int
ndim,
57
const
int
num_tuples,
58
double
* work,
59
double
* result );
60
61
/** \brief Initialize this EvalSet */
62
static
ErrorCode
initFcn
(
const
double
* verts,
const
int
nverts,
double
*& work );
63
64
/** \brief Function that returns whether or not the parameters are inside the natural space of
65
* the element */
66
static
int
insideFcn
(
const
double
* params,
const
int
ndim,
const
double
tol );
67
68
static
ErrorCode
evaluate_reverse
(
EvalFcn
eval,
69
JacobianFcn
jacob,
70
InsideFcn
inside_f,
71
const
double
* posn,
72
const
double
* verts,
73
const
int
nverts,
74
const
int
ndim,
75
const
double
iter_tol,
76
const
double
inside_tol,
77
double
* work,
78
double
* params,
79
int
* inside );
80
81
static
EvalSet
eval_set
()
82
{
83
return
EvalSet
(
evalFcn
,
reverseEvalFcn
,
normalFcn
,
jacobianFcn
,
integrateFcn
,
initFcn
,
insideFcn
);
84
}
85
86
static
bool
compatible
( EntityType tp,
int
numv,
EvalSet
& eset )
87
{
88
if
( tp ==
MBTET
&& numv >= 4 )
89
{
90
eset =
eval_set
();
91
return
true
;
92
}
93
else
94
return
false
;
95
}
96
97
protected
:
98
static
const
double
corner
[4][3];
99
};
// class LinearTet
100
101
}
// namespace moab
102
103
#endif
src
moab
LocalDiscretization
LinearTet.hpp
Generated on Tue Oct 29 2024 02:05:43 for Mesh Oriented datABase by
1.9.1.