A the NeumannTrace space of a given 2D - Finite Element space. More...

#include <neumannTraceSpace.hh>

Inheritance diagram for hp2D::NeumannTraceSpace:
concepts::SpaceOnCells< Real > concepts::Space< Real >

Public Types

typedef concepts::Scan< hp1D::BaseElement< Real > > Scan
 
typedef Scan< ElementWithCell< Real > > Scanner
 
typedef ElementWithCell< Real > type
 
typedef concepts::ElementAndFacette< concepts::EdgeUnderlyingEdge
 
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 Scanscan () const
 Returns a scanner to iterate over the elements of the space. More...
 
virtual Scannerscan () const=0
 Returns a scanner to iterate over the elements of the space. More...
 
const concepts::Sequence< UnderlyingElementuelm (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

Author
Gruhlke, Robert, 2013, 2016

Definition at line 51 of file neumannTraceSpace.hh.

Member Typedef Documentation

◆ Scan

◆ Scanner

typedef Scan<ElementWithCell<Real > > concepts::SpaceOnCells< Real >::Scanner
inherited

Definition at line 84 of file space.hh.

◆ type

typedef ElementWithCell<Real > concepts::SpaceOnCells< Real >::type
inherited

Definition at line 83 of file space.hh.

◆ UnderlyingEdge

◆ UnderlyingElement

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
spcunderlying Finite Element Space
edgeAttrset of requested edge attributes
traceTypesthe type of NeumannTrace, i.e. FIRST,MEAN,JUMP,PLUS,MINUS
normalVectorRuleGiven rule for the Normalvector behaviour
emptyElmFlag 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
gInfoExternal build grid Info, contains attribute data
sDimspace dimension of space on which gInfo is built
traceTypesthe type of NeumannTrace, i.e. FIRST,MEAN,JUMP,PLUS,MINUS
normalVectorRuleGiven 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
spcunderlying Finite Element Space
edgeAttrset of requested edge attributes
traceTypesthe type of NeumannTrace, i.e. FIRST,MEAN,JUMP,PLUS,MINUS
normalVectorRuleGiven rule for the Normalvector behaviour
emptyElmFlag to control build of empty Elements

◆ ~NeumannTraceSpace()

virtual hp2D::NeumannTraceSpace::~NeumannTraceSpace ( )
virtual

Deconstructor.

Member Function Documentation

◆ build_irregular_()

void hp2D::NeumannTraceSpace::build_irregular_ ( const hp2D::GridInfo< Real > &  gInfo)
private

◆ build_regular_()

void hp2D::NeumannTraceSpace::build_regular_ ( const hp2D::GridInfo< Real > &  gInfo)
private

◆ dim() [1/2]

virtual uint hp2D::NeumannTraceSpace::dim ( ) const
inlinevirtual

Returns the dimension of the underlying Finite Element Space.

Definition at line 129 of file neumannTraceSpace.hh.

◆ dim() [2/2]

virtual uint concepts::SpaceOnCells< Real >::dim ( ) const
pure virtualinherited

◆ getOutputDimension()

virtual uint concepts::Space< Real >::getOutputDimension ( ) const
inlinevirtualinherited

Returns the default output dimension, when we consider plotting a real-valued operator on this space.

Definition at line 50 of file space.hh.

◆ info()

virtual std::ostream& hp2D::NeumannTraceSpace::info ( std::ostream &  os) const
protectedvirtual

Reimplemented from concepts::SpaceOnCells< Real >.

◆ nelm() [1/2]

virtual uint hp2D::NeumannTraceSpace::nelm ( ) const
inlinevirtual

Returns the number of NeumannTraceElements in the Space.

Definition at line 136 of file neumannTraceSpace.hh.

◆ nelm() [2/2]

virtual uint concepts::SpaceOnCells< Real >::nelm ( ) const
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 void hp2D::NeumannTraceSpace::recomputeShapefunctions ( )
virtual

Recompute shape functions, e.g.

for other abscissas redefined through setIntegrationRule

◆ scan() [1/2]

virtual Scan* hp2D::NeumannTraceSpace::scan ( ) const
inlinevirtual

Returns a scanner to iterate over the elements of the space.

Definition at line 143 of file neumannTraceSpace.hh.

◆ scan() [2/2]

virtual Scanner* concepts::SpaceOnCells< Real >::scan ( ) const
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()

const concepts::Sequence<UnderlyingElement> hp2D::NeumannTraceSpace::uelm ( const concepts::Edge  edge) const
inline

Returns the underlying 2D elements of the given edge if existing.

Definition at line 150 of file neumannTraceSpace.hh.

◆ weight_()

Real hp2D::NeumannTraceSpace::weight_ ( bool  first,
const Z2  dir,
const uint  nUelm,
const concepts::Attribute  attrb 
) const
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
pos0 if first underlying element, 1 if second
dir0 if underlying element is K-, 1 if K+
nUelm
Precondition
nUelm is either 1 or 2. number of underlying elements
Parameters
attrbAttribute of the current cell, to access EdgeTraceType information.

Member Data Documentation

◆ coarseCells_

concepts::Sequence<concepts::Edge2d*> hp2D::NeumannTraceSpace::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_

const uint hp2D::NeumannTraceSpace::dim_
private

Dimension of the FE space.

Definition at line 168 of file neumannTraceSpace.hh.

◆ edges_

concepts::HashMap<hp2D::NeumannTraceElement<Real>*> hp2D::NeumannTraceSpace::edges_
private

Map from key of (topological) edge to the element.

Definition at line 201 of file neumannTraceSpace.hh.

◆ elm_

concepts::Joiner<hp1D::BaseElement<Real>*, 1>* hp2D::NeumannTraceSpace::elm_
private

Linked list of the elements.

Definition at line 174 of file neumannTraceSpace.hh.

◆ emptyElements_

bool hp2D::NeumannTraceSpace::emptyElements_
private

Definition at line 180 of file neumannTraceSpace.hh.

◆ mapCtS_

GridInfo<Real>::CoarseToSuccessor hp2D::NeumannTraceSpace::mapCtS_
private

Map from coarse cells by key to its successors that are in space.

Definition at line 198 of file neumannTraceSpace.hh.

◆ nelm_

uint hp2D::NeumannTraceSpace::nelm_
private

Number of elements currently active in the mesh.

Definition at line 171 of file neumannTraceSpace.hh.

◆ nIrrelm_

uint hp2D::NeumannTraceSpace::nIrrelm_
private

Definition at line 177 of file neumannTraceSpace.hh.

◆ trTypes_

concepts::EdgeTraceTypes hp2D::NeumannTraceSpace::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:
Page URL: http://wiki.math.ethz.ch/bin/view/Concepts/WebHome
21 August 2020
© 2020 Eidgenössische Technische Hochschule Zürich