Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)

Public Member Functions | Protected Member Functions | Protected Attributes
hp2D::BuildInnerDofs Class Reference

Responsible to build the inner degrees of freedom in a space. More...

#include <buildInnerDofs.hh>

Inheritance diagram for hp2D::BuildInnerDofs:
Inheritance graph
[legend]
Collaboration diagram for hp2D::BuildInnerDofs:
Collaboration graph
[legend]

List of all members.

Public Member Functions

 BuildInnerDofs ()
 Default constructor.
 BuildInnerDofs (Space &spc)
 Constructor.
virtual BuildInnerDofsclone (Space *spc=0) const
 Virtual copy constructor with a twist.
virtual void operator() (concepts::Quad &cntr, concepts::TColumn< Real > *&T1, const uint nn[2])
 Builds the degrees of freedom.
Spacespace ()
 Returns the space.
virtual bool trunk (uint p, uint q, const ushort P[2])
 Trunk space indicator function.

Protected Member Functions

void computePmax_ (const concepts::Quad &cntr, ushort Pmax[2]) const
 Computes maximal polynomial Pmax degree in cntr in tensor form.
concepts::AdaptiveControlctrl0_ (uint idx)
 Returns vertex tag of vertex with key idx.
concepts::AdaptiveControlP< 1 > & ctrl1_ (uint idx)
 Returns edge tag of edge with key idx.
concepts::AdaptiveControlP< 2 > & ctrl2_ (uint idx)
 Returns face tag of face with key idx.
void deactivate_ (const concepts::Vertex &vtx)
 Deactivates the children of the vertex vtx.
void deactivate_ (const concepts::Edge &edg)
 Deactivates the children of the edge edg (including the middle vertex).
uint & dim_ ()
 Returns a reference to the dimension of the space.
std::map< uint,
concepts::EdgeData >
::const_iterator 
edgeListEnd () const
 Returns the end of the list with edge data.
std::map< uint,
concepts::EdgeData >
::const_iterator 
edgeListFind (uint idx) const
 Returns the iterator to the edge data of the edge with key idx.
std::map< uint,
concepts::VertexData >
::const_iterator 
vertexListEnd () const
 Returns the end of the list with vertex data.
std::map< uint,
concepts::VertexData >
::const_iterator 
vertexListFind (uint idx) const
 Returns the iterator to the vertex data of the vertex with key idx.

Protected Attributes

Spacespc_
 Space to build the vertex degrees of freedom from.

Detailed Description

Responsible to build the inner degrees of freedom in a space.

A call to the application operator builds the T columns for the inner modes of a given quad.

If you want to change the way this is done, derive from this class and overwrite the application operator. The access to the internal data of the space (which is needed) is provided through the protected member functions of BuildDofsBase (it is a friend of Space).

Trunk Polynomial Spaces
Using this class, all degrees of freedom of the face are built (full tensor product space). It is very simply to change this behaviour in a derived class as the truncation function for the degrees of freedom is separated into trunk(). BuildInnerDofsLinTrunk is an example for a truncated local polynomial space (it is the default for building internal degrees of freedom).
BuildInnerDofsHypTrunk is another example. The plot below compares the relative energy error versus degrees of freedom for three different internal degrees of freedom polynomial spaces. The plot was done with the hpFEM2d tutorial program by exchanging the strategy for the internal degrees of freedom right after creating the Space. The result at an error of 1.7e-6 needs the following number of degrees of freedom:
SpaceDegrees of Freedom Relative Energy Error
Full tensor product49551.76e-6
Linear trunk25701.77e-6
Hyperbolic trunk18411.79e-6
hp2D-trunk.png
Author:
Philipp Frauenfelder, 2004

Definition at line 55 of file buildInnerDofs.hh.


Constructor & Destructor Documentation

hp2D::BuildInnerDofs::BuildInnerDofs ( ) [inline]

Default constructor.

Definition at line 58 of file buildInnerDofs.hh.

hp2D::BuildInnerDofs::BuildInnerDofs ( Space spc) [inline]

Constructor.

Parameters:
spcSpace to build the inner degrees of freedom from

Definition at line 62 of file buildInnerDofs.hh.


Member Function Documentation

virtual BuildInnerDofs* hp2D::BuildInnerDofs::clone ( Space spc = 0) const [virtual]

Virtual copy constructor with a twist.

If a copy of a space is created, the strategies to build the degrees of freedom of the copy should also reference the copy and not the initial space. This is done by giving the argument spc to clone.

Parameters:
spcSpace to work on for the return value. If set to 0, spc_ is used.

Implements hp2D::BuildDofsBase.

Reimplemented in hp2D::BuildInnerDofsError, hp2D::BuildInnerDofsLinTrunk, and hp2D::BuildInnerDofsHypTrunk.

void hp2D::BuildDofsBase::computePmax_ ( const concepts::Quad cntr,
ushort  Pmax[2] 
) const [inline, protected, inherited]

Computes maximal polynomial Pmax degree in cntr in tensor form.

Definition at line 140 of file buildDofsBase.hh.

Here is the call graph for this function:

concepts::AdaptiveControl & hp2D::BuildDofsBase::ctrl0_ ( uint  idx) [inline, protected, inherited]

Returns vertex tag of vertex with key idx.

Definition at line 91 of file buildDofsBase.hh.

concepts::AdaptiveControlP< 1 > & hp2D::BuildDofsBase::ctrl1_ ( uint  idx) [inline, protected, inherited]

Returns edge tag of edge with key idx.

Definition at line 96 of file buildDofsBase.hh.

concepts::AdaptiveControlP< 2 > & hp2D::BuildDofsBase::ctrl2_ ( uint  idx) [inline, protected, inherited]

Returns face tag of face with key idx.

Definition at line 101 of file buildDofsBase.hh.

void hp2D::BuildDofsBase::deactivate_ ( const concepts::Edge edg) [inline, protected, inherited]

Deactivates the children of the edge edg (including the middle vertex).

Definition at line 135 of file buildDofsBase.hh.

Here is the call graph for this function:

void hp2D::BuildDofsBase::deactivate_ ( const concepts::Vertex vtx) [inline, protected, inherited]

Deactivates the children of the vertex vtx.

Definition at line 130 of file buildDofsBase.hh.

Here is the call graph for this function:

uint& hp2D::BuildDofsBase::dim_ ( ) [inline, protected, inherited]

Returns a reference to the dimension of the space.

Definition at line 79 of file buildDofsBase.hh.

std::map< uint, concepts::EdgeData >::const_iterator hp2D::BuildDofsBase::edgeListEnd ( ) const [inline, protected, inherited]

Returns the end of the list with edge data.

Definition at line 125 of file buildDofsBase.hh.

std::map< uint, concepts::EdgeData >::const_iterator hp2D::BuildDofsBase::edgeListFind ( uint  idx) const [inline, protected, inherited]

Returns the iterator to the edge data of the edge with key idx.

Definition at line 119 of file buildDofsBase.hh.

virtual void hp2D::BuildInnerDofs::operator() ( concepts::Quad cntr,
concepts::TColumn< Real > *&  T1,
const uint  nn[2] 
) [virtual]

Builds the degrees of freedom.

Parameters:
cntrHex which vertices should be considered
T1New T columns created for the degrees of freedom in the vertices

Implements hp2D::BuildDofsBase.

Space* hp2D::BuildDofsBase::space ( ) [inline, inherited]

Returns the space.

Definition at line 58 of file buildDofsBase.hh.

virtual bool hp2D::BuildInnerDofs::trunk ( uint  p,
uint  q,
const ushort  P[2] 
) [virtual]

Trunk space indicator function.

For each degree of freedom, this function is called to find out if it should be built or not. If the return value is true, the degree of freedom is built, otherwise it is not.

The default behaviour of this function is to return true. Overwrite it if you want to have a trunk space (e.g. as in BuildInnerDofsLinTrunk).

Parameters:
pPolynomial degree in first direction of current degree of freedom
qPolynomial degree in second direction of current degree of freedom
PMaximal polynomial degree in the interior

Reimplemented in hp2D::BuildInnerDofsLinTrunk, and hp2D::BuildInnerDofsHypTrunk.

std::map< uint, concepts::VertexData >::const_iterator hp2D::BuildDofsBase::vertexListEnd ( ) const [inline, protected, inherited]

Returns the end of the list with vertex data.

Definition at line 113 of file buildDofsBase.hh.

std::map< uint, concepts::VertexData >::const_iterator hp2D::BuildDofsBase::vertexListFind ( uint  idx) const [inline, protected, inherited]

Returns the iterator to the vertex data of the vertex with key idx.

Definition at line 107 of file buildDofsBase.hh.


Member Data Documentation

Space* hp2D::BuildDofsBase::spc_ [protected, inherited]

Space to build the vertex degrees of freedom from.

Definition at line 88 of file buildDofsBase.hh.


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

Home | Doxygen Documentation | Tutorials | Developer Tools (restricted)