Rheolef  7.2
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
23 #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
piola_fem_rep< T > base
void inv_transform(const piola< T > &p, const point_basic< T > &u, point_basic< T > &hat_u) const
std::string name() const
base::value_type value_type
void transform(const piola< T > &p, const point_basic< T > &hat_u, point_basic< T > &u) const
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
This file is part of Rheolef.
Definition: sphere.icc:25
Definition: leveque.h:25