Rheolef
7.1
an efficient C++ finite element environment
piola_fem_hdiv.h
Go to the documentation of this file.
1
#ifndef _RHEOLEF_PIOLA_FEM_HDIV_H
2
#define _RHEOLEF_PIOLA_FEM_HDIV_H
3
#include "rheolef/piola_fem.h"
24
namespace
rheolef
{
25
/*Class:piola_fem_hdiv
26
NAME: @code{piola_fem_hdiv} - maps a H(div) finite element method
27
@cindex piola transformation
28
@cindex finite element method
29
SYNOPSIS:
30
@noindent
31
The @code{piola_fem_hdiv} defines how a vector-valued finite element
32
method of H(div) type maps from a corresponding method defined on a reference element:
33
@iftex
34
@tex
35
$$
36
\boldsymbol{u}(F(\widehat{\boldsymbol{x}}))
37
=
38
\mathrm{det}(DF)^{-1}
39
(\widehat{\boldsymbol{x}})
40
DF
41
(\widehat{\boldsymbol{x}})
42
\widehat{\boldsymbol{u}}
43
(\widehat{\boldsymbol{x}})
44
$$
45
for all $\widehat{\boldsymbol{x}}$ in the reference element $\widehat{K}$.
46
here, $F$ denotes the Piola transformation that maps the
47
the reference element $\widehat{K}$
48
into the element $\widehat{K}$
49
and $DF$ its Jacobian matrix.
50
@end tex
51
@end iftex
52
@ifnottex
53
@example
54
u = (1/det(DF))*(DF*hat_u);
55
@end example
56
for all hat_x in the reference element hat_K.
57
Here, F denotes the Piola transformation that maps the
58
the reference element hat_K
59
into the element K
60
and DF its Jacobian matrix.
61
@end ifnottex
62
See also the
63
@code{piola_fem} abstract class
64
and the @code{basis_fem_RTk} class for a vector-valued
65
finite element methods definied on a reference element.
66
AUTHORS:
67
LMC-IMAG, 38041 Grenoble cedex 9, France
68
| Pierre.Saramito@imag.fr
69
DATE: 26 january 2019
70
End:
71
*/
72
73
template
<
class
T>
74
class
piola_fem_hdiv
:
public
piola_fem_rep
<T> {
75
public
:
76
typedef
piola_fem_rep<T>
base
;
77
typedef
typename
base::value_type
value_type
;
78
piola_fem_hdiv
() :
base
() {}
79
std::string
name
()
const
{
return
"Hdiv"
; }
80
void
transform
(
const
piola<T>
&
p
,
const
point_basic<T>
& hat_u,
point_basic<T>
&
u
)
const
;
81
void
inv_transform
(
const
piola<T>
&
p
,
const
point_basic<T>
&
u
,
point_basic<T>
& hat_u)
const
;
82
void
grad_transform
(
83
const
piola<T>
&
p
,
84
const
point_basic<T>
& hat_u,
85
const
tensor_basic<T>
& hat_grad_u,
86
const
details::differentiate_option
& gopt,
87
tensor_basic<T>
&
grad_u
)
const
;
88
};
89
90
}
// namespace rheolef
91
#endif // _RHEOLEF_PIOLA_FEM_HDIV_H
rheolef::point_basic
Definition:
point.h:87
rheolef::tensor_basic
Definition:
tensor.h:90
rheolef::piola_fem_hdiv::transform
void transform(const piola< T > &p, const point_basic< T > &hat_u, point_basic< T > &u) const
Definition:
piola_fem_hdiv.cc:46
p
Definition:
sphere.icc:25
rheolef::piola_fem_hdiv::base
piola_fem_rep< T > base
Definition:
piola_fem_hdiv.h:76
rheolef::details::differentiate_option
Definition:
piola.h:41
rheolef::piola_fem_hdiv::grad_transform
void grad_transform(const piola< T > &p, const point_basic< T > &hat_u, const tensor_basic< T > &hat_grad_u, const details::differentiate_option &gopt, tensor_basic< T > &grad_u) const
Definition:
piola_fem_hdiv.cc:66
rheolef
This file is part of Rheolef.
Definition:
compiler_eigen.h:37
u
Definition:
leveque.h:25
rheolef::piola_fem_hdiv::name
std::string name() const
Definition:
piola_fem_hdiv.h:79
rheolef::piola_fem_hdiv::piola_fem_hdiv
piola_fem_hdiv()
Definition:
piola_fem_hdiv.h:78
rheolef::piola_fem_hdiv::inv_transform
void inv_transform(const piola< T > &p, const point_basic< T > &u, point_basic< T > &hat_u) const
Definition:
piola_fem_hdiv.cc:56
rheolef::piola_fem_hdiv::value_type
base::value_type value_type
Definition:
piola_fem_hdiv.h:77
rheolef::piola_fem_rep
Definition:
piola_fem.h:51
rheolef::piola_fem_hdiv
Definition:
piola_fem_hdiv.h:74
grad_u
Definition:
combustion_exact.icc:34
rheolef::piola_fem_rep::value_type
T value_type
Definition:
piola_fem.h:53
rheolef::piola
Definition:
piola.h:67