Rheolef  7.2
an efficient C++ finite element environment
 
Loading...
Searching...
No Matches
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"
24namespace rheolef {
25/*Class:piola_fem_hdiv
26NAME: @code{piola_fem_hdiv} - maps a H(div) finite element method
27@cindex piola transformation
28@cindex finite element method
29SYNOPSIS:
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.
66AUTHORS:
67 LMC-IMAG, 38041 Grenoble cedex 9, France
68 | Pierre.Saramito@imag.fr
69DATE: 26 january 2019
70End:
71*/
72
73template<class T>
74class piola_fem_hdiv: public piola_fem_rep<T> {
75public:
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