GetFEM++  5.3
getfem::virtual_fem Class Referenceabstract

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 $ \varphi_i(\textrm{node\_of\_dof(j)}) = \delta_{ij} $
 
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...
 

Detailed Description

Base class for finite element description.

Definition at line 250 of file getfem_fem.h.

Member Function Documentation

virtual size_type getfem::virtual_fem::nb_dof ( size_type  ) const
inlinevirtual

Number of degrees of freedom.

Parameters
cvthe 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.

const base_node& getfem::virtual_fem::node_of_dof ( size_type  cv,
size_type  i 
) const
inline

Gives the node corresponding to the dof i.

Parameters
cvthe convex number for this FEM. This information is rarely used, by is needed by some "special" FEMs, such as getfem::interpolated_fem.
ithe local dof number (i < nb_dof(cv))

Definition at line 340 of file getfem_fem.h.

virtual void getfem::virtual_fem::base_value ( const base_node &  x,
base_tensor &  t 
) const
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.

virtual void getfem::virtual_fem::grad_base_value ( const base_node &  x,
base_tensor &  t 
) const
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.

virtual void getfem::virtual_fem::hess_base_value ( const base_node &  x,
base_tensor &  t 
) const
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.

void getfem::virtual_fem::real_base_value ( const fem_interpolation_context c,
base_tensor &  t,
bool  withM = true 
) const
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.

void getfem::virtual_fem::real_grad_base_value ( const fem_interpolation_context c,
base_tensor &  t,
bool  withM = true 
) const
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.

void getfem::virtual_fem::real_hess_base_value ( const fem_interpolation_context c,
base_tensor &  t,
bool  withM = true 
) const
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.


The documentation for this class was generated from the following files: