Public Member Functions | Private Member Functions | Static Private Member Functions | Private Attributes

FE_BDM< dim > Class Template Reference

Inheritance diagram for FE_BDM< dim >:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 FE_BDM (const unsigned int p)
virtual std::string get_name () const
virtual FiniteElement< dim > * clone () const
virtual void interpolate (std::vector< double > &local_dofs, const std::vector< double > &values) const
virtual void interpolate (std::vector< double > &local_dofs, const std::vector< Vector< double > > &values, unsigned int offset=0) const
virtual void interpolate (std::vector< double > &local_dofs, const VectorSlice< const std::vector< std::vector< double > > > &values) const

Private Member Functions

void initialize_support_points (const unsigned int rt_degree)

Static Private Member Functions

static std::vector< unsigned int > get_dpo_vector (const unsigned int degree)
static std::vector< boolget_ria_vector (const unsigned int degree)

Private Attributes

std::vector< std::vector
< double > > 
test_values

Detailed Description

template<int dim>
class FE_BDM< dim >

The Brezzi-Douglas-Marini element.

Degrees of freedom

Todo:
This is for 2D only.
Todo:
Transformation works only for uniform, Cartesian meshes

The matching pressure psace for FE_BDM of order k is the element FE_DGP of order k.

The BDM element of order p has p+1 degrees of freedom on each face. These are implemented as the function values in the p+1 Gauss points on each face.

Additionally, for order greater or equal 2, we have additional p(p-1), the number of vector valued polynomials in Pp, interior degrees of freedom. These are the vector function values in the first p(p-1)/2 of the p2 Gauss points in the cell.

Definition at line 52 of file fe_bdm.h.


Constructor & Destructor Documentation

template<int dim>
FE_BDM< dim >::FE_BDM ( const unsigned int  p )

Constructor for the BDM element of degree p.


Member Function Documentation

template<int dim>
virtual std::string FE_BDM< dim >::get_name (  ) const [virtual]

Return a string that uniquely identifies a finite element. This class returns FE_BDM<dim>(degree), with dim and degree replaced by appropriate values.

Implements FiniteElement< dim, dim >.

template<int dim>
virtual FiniteElement<dim>* FE_BDM< dim >::clone (  ) const [virtual]

A sort of virtual copy constructor. Some places in the library, for example the constructors of FESystem as well as the hp::FECollection class, need to make copied of finite elements without knowing their exact type. They do so through this function.

Implements FiniteElement< dim, dim >.

template<int dim>
virtual void FE_BDM< dim >::interpolate ( std::vector< double > &  local_dofs,
const std::vector< double > &  values 
) const [virtual]

Interpolate a set of scalar values, computed in the generalized support points.

Note:
This function is implemented in FiniteElement for the case that the element has support points. In this case, the resulting coefficients are just the values in the suport points. All other elements must reimplement it.

Reimplemented from FiniteElement< dim, dim >.

template<int dim>
virtual void FE_BDM< dim >::interpolate ( std::vector< double > &  local_dofs,
const std::vector< Vector< double > > &  values,
unsigned int  offset = 0 
) const [virtual]

Interpolate a set of vector values, computed in the generalized support points.

Since a finite element often only interpolates part of a vector, offset is used to determine the first component of the vector to be interpolated. Maybe consider changing your data structures to use the next function.

Reimplemented from FiniteElement< dim, dim >.

template<int dim>
virtual void FE_BDM< dim >::interpolate ( std::vector< double > &  local_dofs,
const VectorSlice< const std::vector< std::vector< double > > > &  values 
) const [virtual]

Interpolate a set of vector values, computed in the generalized support points.

Reimplemented from FiniteElement< dim, dim >.

template<int dim>
static std::vector<unsigned int> FE_BDM< dim >::get_dpo_vector ( const unsigned int  degree ) [static, private]

Only for internal use. Its full name is get_dofs_per_object_vector function and it creates the dofs_per_object vector that is needed within the constructor to be passed to the constructor of FiniteElementData.

template<int dim>
static std::vector<bool> FE_BDM< dim >::get_ria_vector ( const unsigned int  degree ) [static, private]

Compute the vector used for the restriction_is_additive field passed to the base class's constructor.

template<int dim>
void FE_BDM< dim >::initialize_support_points ( const unsigned int  rt_degree ) [private]

Member Data Documentation

template<int dim>
std::vector<std::vector<double> > FE_BDM< dim >::test_values [private]

The values in the interior support points of the polynomials needed as test functions. The outer vector is indexed by quadrature points, the inner by the test function.

Definition at line 124 of file fe_bdm.h.


The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines

deal.II documentation generated on Fri Feb 3 2012 06:04:07 by doxygen 1.7.2