hp2D::BuildL2InnerTColumns< F > Class Template Referenceabstract
Responsible to build the T columns belonging to inner degrees of freedom in a L2 conforming space with shape functions in tensor product structure. More...
#include <buildL2TColumns.hh>
Public Types | |
typedef concepts::SpaceHelper< F, SpacePreBuilder > | SpaceHelper |
Public Member Functions | |
BuildL2InnerTColumns () | |
Default constructor. More... | |
BuildL2InnerTColumns (SpaceHelper &spc) | |
Constructor. More... | |
virtual BuildL2InnerTColumns< F > * | clone (SpaceHelper *spc=0) const |
virtual BuildTColumnsBase< concepts::Real > * | clone (SpaceHelper *spc=0) const=0 |
virtual BuildTColumnsBase< concepts::Real, SpacePreBuilder > * | clone (SpaceHelper< concepts::Real, SpacePreBuilder > *spc=0) const=0 |
Virtual copy constructor with a twist. More... | |
virtual void | operator() (const concepts::Connector2 &cntr, concepts::TColumn< concepts::Real > *&T1) const=0 |
Builds the degrees of freedom for a quad. More... | |
virtual void | operator() (const concepts::Connector2 &cntr, concepts::TColumn< F > *&T1) const |
Builds the degrees of freedom. More... | |
SpacePreBuilder & | prebuild () const |
Returns the space pre builder. More... | |
SpaceHelper< concepts::Real, SpacePreBuilder > & | spc () const |
Returns pointer to space helper class. More... | |
virtual bool | trunk (uint p, uint q, const ushort P[2]) const |
Trunk space indicator function. More... | |
virtual | ~BuildL2InnerTColumns () |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Protected Attributes | |
SpaceHelper< concepts::Real, SpacePreBuilder > * | spc_ |
Space to build the degrees of freedom from. More... | |
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:
Space Degrees of Freedom Relative Energy Error Full tensor product 4955 1.76e-6 Linear trunk 2570 1.77e-6 Hyperbolic trunk 1841 1.79e-6
Definition at line 58 of file buildL2TColumns.hh.
Member Typedef Documentation
◆ SpaceHelper
typedef concepts::SpaceHelper<F, SpacePreBuilder> hp2D::BuildL2InnerTColumns< F >::SpaceHelper |
Definition at line 60 of file buildL2TColumns.hh.
Constructor & Destructor Documentation
◆ BuildL2InnerTColumns() [1/2]
|
inline |
Default constructor.
Definition at line 62 of file buildL2TColumns.hh.
◆ BuildL2InnerTColumns() [2/2]
|
inline |
Constructor.
- Parameters
-
spc Space 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()
|
inlinevirtual |
Definition at line 71 of file buildL2TColumns.hh.
Member Function Documentation
◆ clone() [1/3]
|
virtual |
◆ clone() [2/3]
|
pure virtualinherited |
Implemented in hp2D::BuildL2InnerTColumns< concepts::Real >, and hp2D::BuildH1InnerTColumns< concepts::Real >.
◆ clone() [3/3]
|
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
-
spc Space helper class to work on for the return value. If set to 0, spc_
is used.
◆ info()
|
protectedvirtual |
Reimplemented from concepts::BuildTColumnsBase< concepts::Real, SpacePreBuilder >.
Reimplemented in hp2D::BuildL2InnerTColumnsHypTrunk< F >, and hp2D::BuildL2InnerTColumnsLinTrunk< F >.
◆ operator()() [1/2]
|
pure virtualinherited |
Builds the degrees of freedom for a quad.
- Parameters
-
cntr Quad which dofs should be considered T1 New T columns created for the degrees of freedom
Implemented in hp2D::BuildL2InnerTColumns< concepts::Real >, and hp2D::BuildH1InnerTColumns< concepts::Real >.
◆ operator()() [2/2]
|
virtual |
Builds the degrees of freedom.
- Parameters
-
cntr Quad which dofs should be considered T1 New T columns created for the degrees of freedom
◆ prebuild()
|
inlineinherited |
Returns the space pre builder.
Definition at line 258 of file spacePreBuilder.hh.
◆ spc()
|
inlineinherited |
Returns pointer to space helper class.
Definition at line 256 of file spacePreBuilder.hh.
◆ trunk()
|
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
-
p Polynomial degree in first direction of current degree of freedom q Polynomial degree in second direction of current degree of freedom P Maximal polynomial degree in the interior
Reimplemented in hp2D::BuildL2InnerTColumnsHypTrunk< F >, and hp2D::BuildL2InnerTColumnsLinTrunk< F >.
Member Data Documentation
◆ spc_
|
protectedinherited |
Space to build the degrees of freedom from.
Definition at line 273 of file spacePreBuilder.hh.
The documentation for this class was generated from the following file:
- hp2D/buildL2TColumns.hh