Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
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
23#include "rheolef/piola_fem.h"
24namespace rheolef {
25
26/*Class:piola_fem
27NAME: @code{piola_fem_lagrange} - maps a Lagrange finite element method
28@cindex piola transformation
29@cindex finite element method
30SYNOPSIS:
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.
58AUTHORS:
59 LMC-IMAG, 38041 Grenoble cedex 9, France
60 | Pierre.Saramito@imag.fr
61DATE: 26 january 2019
62End:
63*/
64template<class T>
66public:
68 typedef typename base::value_type value_type;
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
87#undef _RHEOLEF_transform
88};
89
90}// namespace rheolef
91#endif // _RHEOLEF_PIOLA_FEM_LAGRANGE_H
_RHEOLEF_transform(T, point_basic< T >) _RHEOLEF_transform(point_basic< T >
Expr1::float_type T
Definition field_expr.h:230
This file is part of Rheolef.