GetFEM++
5.3
|
Base class for finite element description. More...
#include <getfem_fem.h>
Inherits dal::static_stored_object, and enable_shared_from_this< const virtual_fem >.
Inherited by getfem::fem< base_poly >, getfem::fem< bgeot::polynomial_composite >, getfem::fem< FUNC >, getfem::fem_global_function, getfem::fem_level_set, getfem::fem_product, getfem::fem_sum, getfem::interpolated_fem, getfem::projected_fem, and getfem::torus_fem.
Public Member Functions | |
virtual size_type | nb_dof (size_type) const |
Number of degrees of freedom. More... | |
virtual size_type | nb_base (size_type cv) const |
Number of basis functions. | |
size_type | nb_base_components (size_type cv) const |
Number of components (nb_dof() * dimension of the target space). | |
const std::vector< pdof_description > & | dof_types () const |
Get the array of pointer on dof description. | |
dim_type | dim () const |
dimension of the reference element. | |
dim_type | target_dim () const |
dimension of the target space. | |
vec_type | vectorial_type () const |
Type of vectorial element. | |
virtual bgeot::pconvex_ref | ref_convex (size_type) const |
Return the convex of the reference element. | |
bgeot::pconvex_structure | basic_structure (size_type cv) const |
Gives the convex of the reference element. | |
virtual const bgeot::convex< base_node > & | node_convex (size_type) const |
Gives the convex representing the nodes on the reference element. | |
bgeot::pconvex_structure | structure (size_type cv) const |
Gives the convex structure of the reference element nodes. | |
const base_node & | node_of_dof (size_type cv, size_type i) const |
Gives the node corresponding to the dof i. More... | |
bool | is_lagrange () const |
true if the base functions are such that | |
bool | is_polynomial () const |
true if the base functions are polynomials | |
template<typename CVEC , typename VVEC > | |
void | interpolation (const fem_interpolation_context &c, const CVEC &coeff, VVEC &val, dim_type Qdim) const |
Interpolate at an arbitrary point x given on the reference element. More... | |
template<typename MAT > | |
void | interpolation (const fem_interpolation_context &c, MAT &M, dim_type Qdim) const |
Build the interpolation matrix for the interpolation at a fixed point x, given on the reference element. More... | |
template<typename CVEC , typename VMAT > | |
void | interpolation_grad (const fem_interpolation_context &c, const CVEC &coeff, VMAT &val, dim_type Qdim=1) const |
Interpolation of the gradient. More... | |
template<typename CVEC , typename VMAT > | |
void | interpolation_hess (const fem_interpolation_context &c, const CVEC &coeff, VMAT &val, dim_type Qdim) const |
Interpolation of the hessian. More... | |
template<typename CVEC > | |
void | interpolation_diverg (const fem_interpolation_context &c, const CVEC &coeff, typename gmm::linalg_traits< CVEC >::value_type &val) const |
Interpolation of the divergence. More... | |
virtual void | base_value (const base_node &x, base_tensor &t) const =0 |
Give the value of all components of the base functions at the point x of the reference element. More... | |
virtual void | grad_base_value (const base_node &x, base_tensor &t) const =0 |
Give the value of all gradients (on ref. More... | |
virtual void | hess_base_value (const base_node &x, base_tensor &t) const =0 |
Give the value of all hessians (on ref. More... | |
virtual void | real_base_value (const fem_interpolation_context &c, base_tensor &t, bool withM=true) const |
Give the value of all components of the base functions at the current point of the fem_interpolation_context. More... | |
virtual void | real_grad_base_value (const fem_interpolation_context &c, base_tensor &t, bool withM=true) const |
Give the gradient of all components of the base functions at the current point of the fem_interpolation_context. More... | |
virtual void | real_hess_base_value (const fem_interpolation_context &c, base_tensor &t, bool withM=true) const |
Give the hessian of all components of the base functions at the current point of the fem_interpolation_context. More... | |
void | add_node (const pdof_description &d, const base_node &pt, const dal::bit_vector &faces) |
internal function adding a node to an element for the creation of a finite element method. More... | |
Base class for finite element description.
Definition at line 250 of file getfem_fem.h.
|
inlinevirtual |
Number of degrees of freedom.
cv | the convex number for this FEM. This information is rarely used, but is needed by some "special" FEMs, such as getfem::interpolated_fem. |
Reimplemented in getfem::interpolated_fem, getfem::projected_fem, and getfem::fem_global_function.
Definition at line 291 of file getfem_fem.h.
|
inline |
Gives the node corresponding to the dof i.
cv | the convex number for this FEM. This information is rarely used, by is needed by some "special" FEMs, such as getfem::interpolated_fem. |
i | the local dof number (i < nb_dof(cv) ) |
Definition at line 340 of file getfem_fem.h.
|
pure virtual |
Give the value of all components of the base functions at the point x of the reference element.
Basic function used essentially by fem_precomp.
Implemented in getfem::fem< FUNC >, getfem::fem< base_poly >, getfem::fem< bgeot::polynomial_composite >, getfem::interpolated_fem, getfem::projected_fem, getfem::fem_level_set, getfem::fem_global_function, and getfem::torus_fem.
|
pure virtual |
Give the value of all gradients (on ref.
element) of the components of the base functions at the point x of the reference element. Basic function used essentially by fem_precomp.
Implemented in getfem::fem< FUNC >, getfem::fem< base_poly >, getfem::fem< bgeot::polynomial_composite >, getfem::interpolated_fem, getfem::projected_fem, getfem::fem_level_set, getfem::fem_global_function, and getfem::torus_fem.
|
pure virtual |
Give the value of all hessians (on ref.
element) of the components of the base functions at the point x of the reference element. Basic function used essentially by fem_precomp.
Implemented in getfem::fem< FUNC >, getfem::fem< base_poly >, getfem::fem< bgeot::polynomial_composite >, getfem::interpolated_fem, getfem::projected_fem, getfem::fem_level_set, getfem::fem_global_function, and getfem::torus_fem.
|
virtual |
Give the value of all components of the base functions at the current point of the fem_interpolation_context.
Used by elementary computations. if withM is false the matrix M for non tau-equivalent elements is not taken into account.
Reimplemented in getfem::interpolated_fem, getfem::projected_fem, getfem::fem_level_set, getfem::fem_global_function, and getfem::torus_fem.
Definition at line 309 of file getfem_fem.cc.
|
virtual |
Give the gradient of all components of the base functions at the current point of the fem_interpolation_context.
Used by elementary computations. if withM is false the matrix M for non tau-equivalent elements is not taken into account.
Reimplemented in getfem::interpolated_fem, getfem::projected_fem, getfem::fem_level_set, getfem::fem_global_function, and getfem::torus_fem.
Definition at line 313 of file getfem_fem.cc.
|
virtual |
Give the hessian of all components of the base functions at the current point of the fem_interpolation_context.
Used by elementary computations. if withM is false the matrix M for non tau-equivalent elements is not taken into account.
Reimplemented in getfem::interpolated_fem, getfem::projected_fem, getfem::fem_level_set, getfem::fem_global_function, and getfem::torus_fem.
Definition at line 317 of file getfem_fem.cc.
void getfem::virtual_fem::add_node | ( | const pdof_description & | d, |
const base_node & | pt, | ||
const dal::bit_vector & | faces | ||
) |
internal function adding a node to an element for the creation of a finite element method.
Important : the faces should be the faces on which the corresponding base function is non zero.
Definition at line 627 of file getfem_fem.cc.