Static class to construct an element hp2D::Edge out of an hp2D::Quad. More...
#include <edge.hh>


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. | |
Protected Member Functions | |
| virtual std::ostream & | info (std::ostream &os) const |
| Returns information in an output stream. | |
| virtual Real | weight_ (bool first, bool rho) const =0 |
| Returns the weight of the contribution of this cell to the edge. | |
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. | |
| template<class F > | |
| void | transferDof_ (const ushort *p, const ushort k, const bool rho, const bool first, const concepts::TMatrix< F > &T, hp1D::Element< F > &edge) |
| Transfer the quad dof on the particular edge to edge dof. | |
Static class to construct an element hp2D::Edge 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.
| 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.
| emptyElm | Incorporate also empty elements (no dof). |
| edge | Element to which dof are added (adaptation of T-matrix) |
| 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.
| p | polynomial degrees of quad |
| k | number of edge, 0 - lower, 1 - right, 2 - upper, 3 - left |
| dofQuad | index of dof inside quad |
| dofEdge | index of dof in edge |
| virtual std::ostream& hp2D::QuadEdgeBase::info | ( | std::ostream & | os | ) | const [protected, virtual] |
Returns information in an output stream.
Reimplemented from concepts::OutputOperator.
Reimplemented in hp2D::QuadEdgeFirst, hp2D::QuadEdgeMean, and hp2D::QuadEdgeJump.
| void hp2D::QuadEdgeBase::transferDof_ | ( | const ushort * | p, |
| const ushort | k, | ||
| const bool | rho, | ||
| const bool | first, | ||
| const concepts::TMatrix< F > & | T, | ||
| hp1D::Element< F > & | edge | ||
| ) | [private] |
Transfer the quad dof on the particular edge to edge dof.
| p | polynomial degrees of quad |
| k | number of edge, 0 - lower, 1 - right, 2 - upper, 3 - left |
| rho | orientation of the edge inside the quad |
| first | flag if this is first contribution for this edge |
| T | T-matrix of quad |
| edge | the element |
| virtual Real hp2D::QuadEdgeBase::weight_ | ( | bool | first, |
| bool | rho | ||
| ) | const [protected, pure virtual] |
Returns the weight of the contribution of this cell to the edge.
| first | flag if this is first contribution for this edge |
| rho | orientation of the edge inside the quad (rho=1: clockwise) |
Note, that in neighbouring cells the orientation of the edge is opposite.
Implemented in hp2D::QuadEdgeFirst, hp2D::QuadEdgeMean, and hp2D::QuadEdgeJump.