Loading...
Searching...
No Matches
piola_fem_lagrange.h
Go to the documentation of this file.
#ifndef _RHEOLEF_PIOLA_FEM_LAGRANGE_H
#define _RHEOLEF_PIOLA_FEM_LAGRANGE_H
#include "rheolef/piola_fem.h"
namespace rheolef {
/*Class:piola_fem
NAME: @code{piola_fem_lagrange} - maps a Lagrange finite element method
@cindex piola transformation
@cindex finite element method
SYNOPSIS:
@noindent
The @code{piola_fem_lagrange} defines how a finite element
method of Lagrange type maps from a corresponding method defined on a reference element:
@iftex
@tex
$$
u(F(\widehat{\boldsymbol{x}})) = \widehat{u}(\widehat{\boldsymbol{x}})
$$
for all $\widehat{\boldsymbol{x}}$ in the reference element $\widehat{K}$
and where $F$ denotes the Piola transformation that maps the
the reference element $\widehat{K}$
into the element $\widehat{K}$.
@end tex
@end iftex
@ifnottex
@example
u(F(hat_x)) = hat_u(hat_x)
@end example
for all hat_x in the reference element hat_K
and where F denotes the Piola transformation that maps the
the reference element hat_K
into the element K.
@end ifnottex
See also the
@code{piola_fem} abstract class
and the @code{basis} class for finite element methods definied on a
reference element.
AUTHORS:
LMC-IMAG, 38041 Grenoble cedex 9, France
| Pierre.Saramito@imag.fr
DATE: 26 january 2019
End:
*/
template<class T>
class piola_fem_lagrange: public piola_fem_rep<T> {
public:
typedef piola_fem_rep<T> base;
typedef typename base::value_type value_type;
piola_fem_lagrange() : base() {}
std::string name() const { return "Lagrange"; }
bool transform_need_piola() const { return false; }
#define _RHEOLEF_transform(Value,GradValue) \
void transform (const piola<T>& p, const Value& hat_u, Value& u) const; \
void inv_transform (const piola<T>& p, const Value& u, Value& hat_u) const; \
void grad_transform ( \
const piola<T>& p, \
const Value& hat_u, \
const GradValue& hat_grad_u, \
const details::differentiate_option& gopt, \
GradValue& grad_u) const; \
_RHEOLEF_transform(T,point_basic<T>)
_RHEOLEF_transform(point_basic<T>,tensor_basic<T>)
_RHEOLEF_transform(tensor_basic<T>,tensor3_basic<T>)
#undef _RHEOLEF_transform
};
}// namespace rheolef
#endif // _RHEOLEF_PIOLA_FEM_LAGRANGE_H
rheolef::piola_fem_lagrange::base
piola_fem_rep< T > base
Definition piola_fem_lagrange.h:67
rheolef::piola_fem_lagrange::name
std::string name() const
Definition piola_fem_lagrange.h:70
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::piola_fem_lagrange::piola_fem_lagrange
piola_fem_lagrange()
Definition piola_fem_lagrange.h:69
rheolef::piola_fem_lagrange::_RHEOLEF_transform
_RHEOLEF_transform(T, point_basic< T >) _RHEOLEF_transform(point_basic< T >
rheolef::piola_fem_rep::value_type
T value_type
Definition piola_fem.h:53
rheolef::piola_fem_rep::piola_fem_rep
piola_fem_rep()
Definition piola_fem.h:55
rheolef::point_basic
Definition point.h:86
rheolef::tensor3_basic
Definition tensor3.h:73
rheolef::tensor_basic
Definition tensor.h:90
T
Expr1::float_type T
Definition field_expr.h:230
rheolef
This file is part of Rheolef.
Definition compiler_eigen.h:39