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:
77  typedef typename base::value_type value_type;
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