Static class to construct an element hp1D::Element out of an hp2D::Quad. More...

#include <edge.hh>

Inheritance diagram for hp2D::QuadEdgeBase:
concepts::OutputOperator hp2D::QuadEdgeFirst hp2D::QuadEdgeJump hp2D::QuadEdgeMean

Public Member Functions

template<class F >
std::pair< hp1D::Element< F > *, concepts::Edge2d * > edge (const Quad< F > &elm, const ushort k, bool emptyElm=true, hp1D::Element< F > *edge=0)
 Returns the element and the geometrical cell as pair belonging to the k th edge in the quadrilateral element elm. More...
 
 QuadEdgeBase (const concepts::EdgeNormalVectorRule &normalVectorRule=concepts::EdgeNormalVectorRule())
 Constructor. More...
 

Protected Member Functions

virtual std::ostream & info (std::ostream &os) const
 Returns information in an output stream. More...
 
virtual Real weight_ (bool first, Z2 dir) const =0
 Returns the weight of the contribution of this cell to the edge. More...
 

Protected Attributes

std::unique_ptr< const concepts::EdgeNormalVectorRulenormalVectorRule_
 Rule for defining the direction of the normal vector for new edges. More...
 

Private Member Functions

bool edgeDof_ (const ushort *p, const ushort k, const bool rho, const uint dofQuad, uint &dofEdge)
 Compute the index of a dof on an edge. More...
 
template<class F >
void transferDof_ (const ushort *p, const ushort k, const bool rho, const bool first, const Z2 dir, const concepts::TMatrix< F > &T, hp1D::Element< F > &edge)
 Transfer the quad dof on the particular edge to edge dof. More...
 

Detailed Description

Static class to construct an element hp1D::Element out of an hp2D::Quad.

The basis functions over the edge might be discontinuous. In derived classes the actual action can be specified, like taken the mean or the jump between the right and left side w.r.t. to the direction of the edge.

Author
Kersten Schmidt, 2006

Definition at line 48 of file edge.hh.

Constructor & Destructor Documentation

◆ QuadEdgeBase()

hp2D::QuadEdgeBase::QuadEdgeBase ( const concepts::EdgeNormalVectorRule normalVectorRule = concepts::EdgeNormalVectorRule())
inline

Constructor.

Parameters
normalVectorRuleRule for defining the direction of the normal vector for new edges

Definition at line 55 of file edge.hh.

Member Function Documentation

◆ edge()

template<class F >
std::pair<hp1D::Element<F>*,concepts::Edge2d*> hp2D::QuadEdgeBase::edge ( const Quad< F > &  elm,
const ushort  k,
bool  emptyElm = true,
hp1D::Element< F > *  edge = 0 
)

Returns the element and the geometrical cell as pair belonging to the k th edge in the quadrilateral element elm.

The polynomial degree and the T matrix are set properly.

The geometrical cell is included in the element as reference, so it has to be deleted after deletion of the element.

If edge is given than degrees of freedom are added by adapting the T-matrix. This is the case when taking trace from both sides of an edge (e.g., mean or jump). In that case the cell is not returned in the pair, i.e., the returned pointer to the cell (Edge2d) is 0.

Parameters
emptyElmIncorporate also empty elements (no dof).
edgeElement to which dof are added (adaptation of T-matrix)

◆ edgeDof_()

bool hp2D::QuadEdgeBase::edgeDof_ ( const ushort *  p,
const ushort  k,
const bool  rho,
const uint  dofQuad,
uint &  dofEdge 
)
private

Compute the index of a dof on an edge.

Parameters
ppolynomial degrees of quad
knumber of edge, 0 - lower, 1 - right, 2 - upper, 3 - left
dofQuadindex of dof inside quad
dofEdgeindex of dof on edge (in local coordinate system of the edge)
Returns
true, if dof is on the particular edge

◆ info()

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

Returns information in an output stream.

Reimplemented from concepts::OutputOperator.

Reimplemented in hp2D::QuadEdgeJump, hp2D::QuadEdgeMean, and hp2D::QuadEdgeFirst.

◆ transferDof_()

template<class F >
void hp2D::QuadEdgeBase::transferDof_ ( const ushort *  p,
const ushort  k,
const bool  rho,
const bool  first,
const Z2  dir,
const concepts::TMatrix< F > &  T,
hp1D::Element< F > &  edge 
)
private

Transfer the quad dof on the particular edge to edge dof.

Parameters
ppolynomial degrees of quad
knumber of edge, 0 - lower, 1 - right, 2 - upper, 3 - left
rhoorientation of the edge inside the quad
dirdirection of the normal vector looking from the cell dir = 0 : outwards pointing dir = 1 : inwards pointing
firstflag if this is first contribution for this edge
TT-matrix of quad
edgethe element

◆ weight_()

virtual Real hp2D::QuadEdgeBase::weight_ ( bool  first,
Z2  dir 
) const
protectedpure virtual

Returns the weight of the contribution of this cell to the edge.

Parameters
firstflag if this is first contribution for this edge
dirdirection of the normal vector looking from the cell dir = 0 : outwards pointing dir = 1 : inwards pointing

Note, that in neighbouring cells the orientation of the edge is opposite.

Implemented in hp2D::QuadEdgeJump, hp2D::QuadEdgeMean, and hp2D::QuadEdgeFirst.

Member Data Documentation

◆ normalVectorRule_

std::unique_ptr<const concepts::EdgeNormalVectorRule> hp2D::QuadEdgeBase::normalVectorRule_
protected

Rule for defining the direction of the normal vector for new edges.

Definition at line 85 of file edge.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