DUNE PDELab (git)

Uniformly refined linear Lagrange shape functions on the 3D-simplex (tetrahedron). More...

#include <dune/localfunctions/refined/refinedp1/refinedp1localbasis.hh>

Public Types

typedef LocalBasisTraits< D, 3, Dune::FieldVector< D, 3 >, R, 1, Dune::FieldVector< R, 1 >, Dune::FieldMatrix< R, 1, 3 > > Traits
 export type traits for function signature
 

Public Member Functions

void evaluateFunction (const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
 Evaluate all shape functions.
 
void evaluateJacobian (const typename Traits::DomainType &in, std::vector< typename Traits::JacobianType > &out) const
 Evaluate Jacobian of all shape functions.
 
void partial (const std::array< unsigned int, 3 > &order, const typename Traits::DomainType &in, std::vector< typename Traits::RangeType > &out) const
 Evaluate partial derivatives of all shape functions.
 

Static Public Member Functions

static constexpr unsigned int size ()
 number of shape functions
 
static constexpr unsigned int order ()
 Polynomial order of the shape functions Doesn't really apply: these shape functions are only piecewise linear.
 

Static Protected Member Functions

static int getSubElement (const FieldVector< D, 3 > &global)
 Get the number of the subsimplex containing a given point in the reference element. More...
 
static void getSubElement (const FieldVector< D, 3 > &global, int &subElement, FieldVector< D, 3 > &local)
 Get local coordinates in the subsimplex. More...
 

Detailed Description

template<class D, class R>
class Dune::RefinedP1LocalBasis< D, R, 3 >

Uniformly refined linear Lagrange shape functions on the 3D-simplex (tetrahedron).

This shape function set mimics the P1 shape functions that you would get on a uniformly refined grid. Hence these shape functions are only piecewise linear! The data layout is identical to P2 shape functions.

Shape functions like these are necessary for hierarchical error estimators for certain nonlinear problems.

The functions are associated to points by:

f_0 ~ (0.0, 0.0, 0.0) f_1 ~ (1.0, 0.0, 0.0) f_2 ~ (0.0, 1.0, 0.0) f_3 ~ (0.0, 0.0, 1.0) f_4 ~ (0.5, 0.0, 0.0) f_5 ~ (0.5, 0.5, 0.0) f_6 ~ (0.0, 0.5, 0.0) f_7 ~ (0.0, 0.0, 0.5) f_8 ~ (0.5, 0.0, 0.5) f_9 ~ (0.0, 0.5, 0.5)

Template Parameters
DType to represent the field in the domain.
RType to represent the field in the range.

Member Function Documentation

◆ getSubElement() [1/2]

template<class D >
static int Dune::RefinedSimplexLocalBasis< D, 3 >::getSubElement ( const FieldVector< D, 3 > &  global)
inlinestaticprotectedinherited

Get the number of the subsimplex containing a given point in the reference element.

Defining the following points in the reference simplex

0: (0.0, 0.0, 0.0) 1: (1.0, 0.0, 0.0) 2: (0.0, 1.0, 0.0) 3: (0.0, 0.0, 1.0) 4: (0.5, 0.0, 0.0) 5: (0.5, 0.5, 0.0) 6: (0.0, 0.5, 0.0) 7: (0.0, 0.0, 0.5) 8: (0.5, 0.0, 0.5) 9: (0.0, 0.5, 0.5)

The subsimplices are numbered according to

0: 0467 - 1: 4158 |_ "cut off" vertices 2: 6529 | 3: 7893 -

4: 6487 - 5: 4568 |_ octahedron partition 6: 6897 | 7: 6895 -

Parameters
[in]globalCoordinates in the reference simplex
Returns
Number of the subsimplex containing global

References DUNE_THROW.

◆ getSubElement() [2/2]

template<class D >
static void Dune::RefinedSimplexLocalBasis< D, 3 >::getSubElement ( const FieldVector< D, 3 > &  global,
int &  subElement,
FieldVector< D, 3 > &  local 
)
inlinestaticprotectedinherited

Get local coordinates in the subsimplex.

Parameters
[in]globalCoordinates in the reference simplex
[out]subElementNumber of the subsimplex containing global
[out]localThe local coordinates in the subsimplex

References DUNE_THROW.


The documentation for this class was generated from the following file:
Creative Commons License   |  Legal Statements / Impressum  |  Hosted by TU Dresden  |  generated with Hugo v0.111.3 (Nov 23, 23:29, 2024)