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