LifeV
RefHybridFE Class Reference

Class for Hybrid functions, i.e. defined on the boundary of an element. More...

#include <ReferenceFEHybrid.hpp>

Detailed Description

Class for Hybrid functions, i.e. defined on the boundary of an element.

Author
V. Martin
Date
08/2002

This is an enrichment of ReferenceFE in order to implement mixed hybrid finite elements, which are based on a (RT0 - Q0) like discretization of $ H(div, \Omega) - L^2(\Omega) $.

This class contains a list of boundary elements; thanks to the Piola transform, the computations are performed on the boundary of the reference element. But in general, the boundary of a 3D reference element is not a 2D reference element.
Example:
REFERENCE TETRA -> 3 REFERENCE TRIA + 1 EQUILATERAL TRIANGLE...
REFERENCE PRISM -> 2 TRIA + 3 QUAD...?
REFERENCE HEXA -> 6 REFERENCE QUAD.

How to add a new finite element ?
  • In refFE.h: you add a new finite element flag in FE_TYPE enum with a command like:
    FE_PIPO = a_new_number
  • In refHybridFE.h: you declare the functions you need (fct1_Pipo_2D, derfct1_1_Pipo_2D, etc...), the static arrays containing these functions and the coordinates of the nodes on the reference element.
  • In defQuadRuleFE.cc: you define these functions (fct1_Pipo_2D, etc...)
  • In refFE.h you declare your finite element:
    extern const RefHybridFE fePipo;
  • In defQuadRuleFE.cc: you define a list of CurrentFEManifold with a command like:
    #define NB_BDFE_PIPO
    static const CurrentFEManifold BdFE_PIPO_1( feTriaP0, geoLinearTria, quadRuleTria4pt, refcoor_PIPOstd::placeholders::_1, 0 );
    ...
  • In defQuadRuleFE.cc: you define a static array containing all the CurrentFEManifold with a command like
    static const CurrentFEManifold HybPIPOList[ NB_BDFE_PIPO ] =
    {
    BdFE_PIPOstd::placeholders::_1, BdFE_PIPOstd::placeholders::_2,
    ...
    };
  • In defQuadRuleFE.cc: you define your new element with a command like:
    const ReferenceFEHybrid feTriaPipo("Pipo elements on a tetrahedron", FE_PIPO, TETRA,
    0, 0, 1, 0, 4, 3, NB_BDFE_PIPO, HybPIPOList, refcoor_PIPO, STANDARD_PATTERN );
    See documentation of ReferenceFEHybrid::ReferenceFEHybrid(...) for a precise description of all arguments.

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