hp2D::NeumannTraceSpace Class Referenceabstract
A the NeumannTrace space of a given 2D - Finite Element space. More...
#include <neumannTraceSpace.hh>
Public Types | |
typedef concepts::Scan< hp1D::BaseElement< Real > > | Scan |
typedef Scan< ElementWithCell< Real > > | Scanner |
typedef ElementWithCell< Real > | type |
typedef concepts::ElementAndFacette< concepts::Edge > | UnderlyingEdge |
typedef concepts::ElementAndFacette< hp2D::Element< Real > > | UnderlyingElement |
Public Member Functions | |
virtual uint | dim () const |
Returns the dimension of the underlying Finite Element Space. More... | |
virtual uint | dim () const=0 |
Returns the dimension of the space. More... | |
virtual uint | getOutputDimension () const |
Returns the default output dimension, when we consider plotting a real-valued operator on this space. More... | |
virtual uint | nelm () const |
Returns the number of NeumannTraceElements in the Space. More... | |
virtual uint | nelm () const=0 |
Returns the number of elements in the space. More... | |
NeumannTraceSpace (concepts::SpaceOnCells< Real > &spc, const concepts::EdgeTraceTypes &ettypes, bool emptyElm=true) | |
Constructor. More... | |
NeumannTraceSpace (const concepts::SpaceOnCells< Real > &spc, const concepts::Set< uint > edgeAttr, enum concepts::EdgeTraceType::traceTypes type=concepts::EdgeTraceType::FIRST, const concepts::EdgeNormalVectorRule &normalVectorRule=concepts::EdgeNormalVectorRule(), bool emptyElm=true) | |
Constructor. More... | |
NeumannTraceSpace (const GridInfo< Real > &gInfo, uint sDim, enum concepts::EdgeTraceType::traceTypes type=concepts::EdgeTraceType::FIRST, const concepts::EdgeNormalVectorRule &normalVectorRule=concepts::EdgeNormalVectorRule(), bool emptyElm=true) | |
Constructor. More... | |
virtual void | recomputeShapefunctions () |
Recompute shape functions, e.g. More... | |
virtual Scan * | scan () const |
Returns a scanner to iterate over the elements of the space. More... | |
virtual Scanner * | scan () const=0 |
Returns a scanner to iterate over the elements of the space. More... | |
const concepts::Sequence< UnderlyingElement > | uelm (const concepts::Edge edge) const |
Returns the underlying 2D elements of the given edge if existing. More... | |
virtual | ~NeumannTraceSpace () |
Deconstructor. More... | |
Protected Member Functions | |
virtual std::ostream & | info (std::ostream &os) const |
Private Member Functions | |
void | build_irregular_ (const hp2D::GridInfo< Real > &gInfo) |
void | build_regular_ (const hp2D::GridInfo< Real > &gInfo) |
Real | weight_ (bool first, const Z2 dir, const uint nUelm, const concepts::Attribute attrb) const |
Consider the outwards pointing normalvector evaluations of a neumantrace basis function u. More... | |
Private Attributes | |
concepts::Sequence< concepts::Edge2d * > | coarseCells_ |
Collection of coarse edges, i.e. More... | |
const uint | dim_ |
Dimension of the FE space. More... | |
concepts::HashMap< hp2D::NeumannTraceElement< Real > * > | edges_ |
Map from key of (topological) edge to the element. More... | |
concepts::Joiner< hp1D::BaseElement< Real > *, 1 > * | elm_ |
Linked list of the elements. More... | |
bool | emptyElements_ |
GridInfo< Real >::CoarseToSuccessor | mapCtS_ |
Map from coarse cells by key to its successors that are in space. More... | |
uint | nelm_ |
Number of elements currently active in the mesh. More... | |
uint | nIrrelm_ |
concepts::EdgeTraceTypes | trTypes_ |
Mapping from Attributes to a given EdgeTracetype. More... | |
Detailed Description
A the NeumannTrace space of a given 2D - Finite Element space.
The elements are from type hp2D::Edge. One can restrict the trace operation by EdgeTraceTypes or via Attributes and a EdgeNormalVectorRule. If the FE space is rebuild, one has to construct the NeumannTraceSpace again. Additonally a map from the topological edge to the set of the underlying elements is stored.
Space can be builded on irregular spaces, i.e. with k-irregular mesh with hanging nodes.
Caution: Coarse irregular elements are currently not space members, that must be taken into account when using the space in ElementFormulaVector, Linearforms, Bilinearforms or integration
Definition at line 51 of file neumannTraceSpace.hh.
Member Typedef Documentation
◆ Scan
typedef concepts::Scan<hp1D::BaseElement<Real> > hp2D::NeumannTraceSpace::Scan |
Definition at line 53 of file neumannTraceSpace.hh.
◆ Scanner
|
inherited |
◆ type
|
inherited |
◆ UnderlyingEdge
Definition at line 55 of file neumannTraceSpace.hh.
◆ UnderlyingElement
typedef concepts::ElementAndFacette<hp2D::Element<Real> > hp2D::NeumannTraceSpace::UnderlyingElement |
Definition at line 54 of file neumannTraceSpace.hh.
Constructor & Destructor Documentation
◆ NeumannTraceSpace() [1/3]
hp2D::NeumannTraceSpace::NeumannTraceSpace | ( | const concepts::SpaceOnCells< Real > & | spc, |
const concepts::Set< uint > | edgeAttr, | ||
enum concepts::EdgeTraceType::traceTypes | type = concepts::EdgeTraceType::FIRST , |
||
const concepts::EdgeNormalVectorRule & | normalVectorRule = concepts::EdgeNormalVectorRule() , |
||
bool | emptyElm = true |
||
) |
Constructor.
This builds a NeumannTraceSpace only for edges with attributes that are requested.
The EdgeTraceType can be FIRST, MEAN, JUMP or PLUS and MINUS. Since the EdgeNormalVectorRule in a sense is constant for all requested edges, you have to think about the Meaning of these Traces then, since they are also defined with the help of the first underlying Element. Alternativly one uses the second Constructor.
This Constructor may easy applicate for Boundary Elements with a FIRST neumanntrace, since these elements only have up to one underlying Element.
Additional a Flag for empty Elements is given, that controls the build up of Elements with no degrees of freedoms on it. This might be used for graphical Output.
- Parameters
-
spc underlying Finite Element Space edgeAttr set of requested edge attributes traceTypes the type of NeumannTrace, i.e. FIRST,MEAN,JUMP,PLUS,MINUS normalVectorRule Given rule for the Normalvector behaviour emptyElm Flag to control build of empty Elements
◆ NeumannTraceSpace() [2/3]
hp2D::NeumannTraceSpace::NeumannTraceSpace | ( | const GridInfo< Real > & | gInfo, |
uint | sDim, | ||
enum concepts::EdgeTraceType::traceTypes | type = concepts::EdgeTraceType::FIRST , |
||
const concepts::EdgeNormalVectorRule & | normalVectorRule = concepts::EdgeNormalVectorRule() , |
||
bool | emptyElm = true |
||
) |
Constructor.
- Parameters
-
gInfo External build grid Info, contains attribute data sDim space dimension of space on which gInfo
is builttraceTypes the type of NeumannTrace, i.e. FIRST,MEAN,JUMP,PLUS,MINUS normalVectorRule Given rule for the Normalvector behaviour
◆ NeumannTraceSpace() [3/3]
hp2D::NeumannTraceSpace::NeumannTraceSpace | ( | concepts::SpaceOnCells< Real > & | spc, |
const concepts::EdgeTraceTypes & | ettypes, | ||
bool | emptyElm = true |
||
) |
Constructor.
This builds a NeumannTraceSpace for edges that are requested in the EdgeTraceTypes semantic.
The EdgeTraceType can be FIRST, MEAN, JUMP or PLUS and MINUS for different edges with different attributes. In opposite to the first constructor the EdgeNormalVectorRule is not constant, since they can vary for each Attribute. This is controlled with the EdgeTraceTypes variable.
This constructor may is the choice when building a NeumannTraceSpace on a Finite Element Space with different material attributes.
Additional a Flag for empty Elements is given, that controls the build up of Elements with no degrees of freedoms on it. This might be used for graphical Output.
- Parameters
-
spc underlying Finite Element Space edgeAttr set of requested edge attributes traceTypes the type of NeumannTrace, i.e. FIRST,MEAN,JUMP,PLUS,MINUS normalVectorRule Given rule for the Normalvector behaviour emptyElm Flag to control build of empty Elements
◆ ~NeumannTraceSpace()
|
virtual |
Deconstructor.
Member Function Documentation
◆ build_irregular_()
|
private |
◆ build_regular_()
|
private |
◆ dim() [1/2]
|
inlinevirtual |
Returns the dimension of the underlying Finite Element Space.
Definition at line 129 of file neumannTraceSpace.hh.
◆ dim() [2/2]
|
pure virtualinherited |
Returns the dimension of the space.
Implements concepts::Space< Real >.
Implemented in hp2D::hpAdaptiveSpace< Real >, hp3D::Space, hp2Dedge::Space, hp2D::Space, hp2D::hpAdaptiveSpace< Real >, and hp1D::Space.
◆ getOutputDimension()
|
inlinevirtualinherited |
◆ info()
|
protectedvirtual |
Reimplemented from concepts::SpaceOnCells< Real >.
◆ nelm() [1/2]
|
inlinevirtual |
Returns the number of NeumannTraceElements in the Space.
Definition at line 136 of file neumannTraceSpace.hh.
◆ nelm() [2/2]
|
pure virtualinherited |
Returns the number of elements in the space.
Implements concepts::Space< Real >.
Implemented in hp2D::hpAdaptiveSpace< Real >, hp3D::Space, hp2Dedge::Space, hp2D::Space, hp2D::hpAdaptiveSpace< Real >, and hp1D::Space.
◆ recomputeShapefunctions()
|
virtual |
Recompute shape functions, e.g.
for other abscissas redefined through setIntegrationRule
◆ scan() [1/2]
|
inlinevirtual |
Returns a scanner to iterate over the elements of the space.
Definition at line 143 of file neumannTraceSpace.hh.
◆ scan() [2/2]
|
pure virtualinherited |
Returns a scanner to iterate over the elements of the space.
Implements concepts::Space< Real >.
Implemented in hp2D::hpAdaptiveSpace< Real >, hp3D::Space, hp2Dedge::Space, hp2D::Space, hp2D::hpAdaptiveSpace< Real >, and hp1D::Space.
◆ uelm()
|
inline |
Returns the underlying 2D elements of the given edge if existing.
Definition at line 150 of file neumannTraceSpace.hh.
◆ weight_()
|
private |
Consider the outwards pointing normalvector evaluations of a neumantrace basis function u.
The defintion of the normalvector n above, introduce K+ and K- and therefore normal traces: n * grad(u+) and n * grad(u-)
- Parameters
-
pos 0 if first underlying element, 1 if second dir 0 if underlying element is K-, 1 if K+ nUelm
- Precondition
- nUelm is either 1 or 2. number of underlying elements
- Parameters
-
attrb Attribute of the current cell, to access EdgeTraceType information.
Member Data Documentation
◆ coarseCells_
|
private |
Collection of coarse edges, i.e.
having successors that are element edges in the space
Definition at line 193 of file neumannTraceSpace.hh.
◆ dim_
|
private |
Dimension of the FE space.
Definition at line 168 of file neumannTraceSpace.hh.
◆ edges_
|
private |
Map from key of (topological) edge to the element.
Definition at line 201 of file neumannTraceSpace.hh.
◆ elm_
|
private |
Linked list of the elements.
Definition at line 174 of file neumannTraceSpace.hh.
◆ emptyElements_
|
private |
Definition at line 180 of file neumannTraceSpace.hh.
◆ mapCtS_
|
private |
Map from coarse cells by key to its successors that are in space.
Definition at line 198 of file neumannTraceSpace.hh.
◆ nelm_
|
private |
Number of elements currently active in the mesh.
Definition at line 171 of file neumannTraceSpace.hh.
◆ nIrrelm_
|
private |
Definition at line 177 of file neumannTraceSpace.hh.
◆ trTypes_
|
private |
Mapping from Attributes to a given EdgeTracetype.
This controlls the NeumannTraces indeed.
Definition at line 187 of file neumannTraceSpace.hh.
The documentation for this class was generated from the following file:
- hp2D/neumannTraceSpace.hh