Class documentation of Concepts

Loading...
Searching...
No Matches
hp2D::BuildL2InnerTColumns< F > Class Template Referenceabstract

#include <buildL2TColumns.hh>

Inheritance diagram for hp2D::BuildL2InnerTColumns< F >:
hp2D::BuildTColumnsBase< F > concepts::BuildTColumnsBase< F, SpacePreBuilder > concepts::OutputOperator hp2D::BuildL2InnerTColumnsHypTrunk< F > hp2D::BuildL2InnerTColumnsLinTrunk< F >

Public Types

typedef concepts::SpaceHelper< F, SpacePreBuilderSpaceHelper
 

Public Member Functions

 BuildL2InnerTColumns ()
 Default constructor.
 
 BuildL2InnerTColumns (SpaceHelper &spc)
 
virtual void operator() (const concepts::Connector2 &cntr, concepts::TColumn< F > *&T1) const
 
virtual BuildL2InnerTColumns< F > * clone (SpaceHelper *spc=0) const
 
virtual bool trunk (uint p, uint q, const ushort P[2]) const
 
virtual BuildTColumnsBase< F, SpacePreBuilder > * clone (SpaceHelper< F, SpacePreBuilder > *spc=0) const=0
 
SpaceHelper< F, SpacePreBuilder > & spc () const
 Returns pointer to space helper class.
 
SpacePreBuilderprebuild () const
 Returns the space pre builder.
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream.
 

Protected Attributes

SpaceHelper< F, SpacePreBuilder > * spc_
 Space to build the degrees of freedom from.
 

Detailed Description

template<class F = concepts::Real>
class hp2D::BuildL2InnerTColumns< F >

Responsible to build the T columns belonging to inner degrees of freedom in a L2 conforming space with shape functions in tensor product structure.

A call to the application operator builds the T columns for a given 'member of space' quad. The appropiate polynomial degree are given by a space pre builder class, which is part of a space helper class.

If you want to change the way this is done, derive from this class and overwrite the application operator.

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 in hpAdaptiveSpaceL2).
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

Different polynomial
spaces for internal degrees of freedom: relative energy error vs. ndofs

Author
Kersten Schmidt, 2016

Definition at line 58 of file buildL2TColumns.hh.

Member Typedef Documentation

◆ SpaceHelper

template<class F = concepts::Real>
typedef concepts::SpaceHelper<F, SpacePreBuilder> hp2D::BuildL2InnerTColumns< F >::SpaceHelper

Definition at line 60 of file buildL2TColumns.hh.

Constructor & Destructor Documentation

◆ BuildL2InnerTColumns() [1/2]

template<class F = concepts::Real>
hp2D::BuildL2InnerTColumns< F >::BuildL2InnerTColumns ( )
inline

Default constructor.

Definition at line 62 of file buildL2TColumns.hh.

◆ BuildL2InnerTColumns() [2/2]

template<class F = concepts::Real>
hp2D::BuildL2InnerTColumns< F >::BuildL2InnerTColumns ( SpaceHelper spc)
inline

Constructor.

Parameters
spcSpace Helper with Space Pre Builder (mesh and distribution of degrees of freedom), boundary condition and the running index

Definition at line 69 of file buildL2TColumns.hh.

◆ ~BuildL2InnerTColumns()

template<class F = concepts::Real>
virtual hp2D::BuildL2InnerTColumns< F >::~BuildL2InnerTColumns ( )
inlinevirtual

Definition at line 71 of file buildL2TColumns.hh.

Member Function Documentation

◆ clone() [1/2]

template<class F = concepts::Real>
virtual BuildL2InnerTColumns< F > * hp2D::BuildL2InnerTColumns< F >::clone ( SpaceHelper spc = 0) const
virtual

◆ clone() [2/2]

virtual BuildTColumnsBase< F, SpacePreBuilder > * concepts::BuildTColumnsBase< F, SpacePreBuilder >::clone ( SpaceHelper< F, SpacePreBuilder > *  spc = 0) const
pure virtualinherited

Virtual copy constructor with a twist.

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

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

◆ info()

template<class F = concepts::Real>
virtual std::ostream & hp2D::BuildL2InnerTColumns< F >::info ( std::ostream &  os) const
protectedvirtual

Returns information in an output stream.

Reimplemented from concepts::BuildTColumnsBase< F, SpacePreBuilder >.

Reimplemented in hp2D::BuildL2InnerTColumnsLinTrunk< F >, and hp2D::BuildL2InnerTColumnsHypTrunk< F >.

◆ operator()()

template<class F = concepts::Real>
virtual void hp2D::BuildL2InnerTColumns< F >::operator() ( const concepts::Connector2 cntr,
concepts::TColumn< F > *&  T1 
) const
virtual

Builds the degrees of freedom.

Parameters
cntrQuad which dofs should be considered
T1New T columns created for the degrees of freedom

Implements hp2D::BuildTColumnsBase< F >.

◆ prebuild()

SpacePreBuilder & concepts::BuildTColumnsBase< F, SpacePreBuilder >::prebuild ( ) const
inlineinherited

Returns the space pre builder.

Definition at line 257 of file spacePreBuilder.hh.

◆ spc()

SpaceHelper< F, SpacePreBuilder > & concepts::BuildTColumnsBase< F, SpacePreBuilder >::spc ( ) const
inlineinherited

Returns pointer to space helper class.

Definition at line 255 of file spacePreBuilder.hh.

◆ trunk()

template<class F = concepts::Real>
virtual bool hp2D::BuildL2InnerTColumns< F >::trunk ( uint  p,
uint  q,
const ushort  P[2] 
) const
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::BuildL2InnerTColumnsLinTrunk< F >, and hp2D::BuildL2InnerTColumnsHypTrunk< F >.

Member Data Documentation

◆ spc_

Space to build the degrees of freedom from.

Definition at line 272 of file spacePreBuilder.hh.


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