LehrFEM++ 1.0.0
A simple Finite Element Library for teaching
|
Abstract interface class for encoding topological local refinement More...
#include <lf/geometry/refinement_pattern.h>
Public Member Functions | |
RefinementPattern (lf::base::RefEl ref_el) | |
Constructor setting reference element = topological type of entity. | |
RefinementPattern (lf::base::RefEl ref_el, lf::base::size_type lattice_const) | |
Constructor fixing reference element and refinement resolution. | |
lf::base::RefEl | RefEl () const |
Returns topological type of entity for which the current object is set up. | |
lf::base::size_type | LatticeConst () const |
Provides information about lattice constant used. | |
virtual lf::base::size_type | NumChildren (lf::base::dim_t codim) const =0 |
provide number of child entities of a given co-dimension to be created by refinement | |
virtual std::vector< Eigen::Matrix< int, Eigen::Dynamic, Eigen::Dynamic > > | ChildPolygons (lf::base::dim_t codim) const =0 |
provide lattice reference coordinates of vertices of child polygons | |
virtual | ~RefinementPattern ()=default |
Protected Member Functions | |
RefinementPattern (const RefinementPattern &)=default | |
RefinementPattern (RefinementPattern &&)=default | |
RefinementPattern & | operator= (const RefinementPattern &)=default |
RefinementPattern & | operator= (RefinementPattern &&)=default |
Protected Attributes | |
lf::base::RefEl | ref_el_ |
lf::base::size_type | lattice_const_ |
Abstract interface class for encoding topological local refinement
This class defines a local topological refinement pattern by convex polygons on an integer lattice covering the reference element. The main method is lf::geometry::RefinementPattern::ChildPolygons().
The rationale for using an integer lattice is the possibility of exact arithmetic. It also emphasizes the hybrid character of refinement in between topological and geometric operations.
Example: fundamental lattice with constant 6 (default setting) for a triangle: every lattice point has integer coordinates \((i,j)\), \(0\leq i,j \leq 6\), \(i+j\leq 6\).
Definition at line 33 of file refinement_pattern.h.
|
protecteddefault |
|
protecteddefault |
|
inlineexplicit |
Constructor setting reference element = topological type of entity.
ref_el | topological reference element |
The lattice constant is set to 6.
Definition at line 47 of file refinement_pattern.h.
|
inline |
Constructor fixing reference element and refinement resolution.
ref_el | topological reference element |
lattice_const | lattice constant, see class documentation for description The lattice constant must be a multiple of 6. |
Definition at line 56 of file refinement_pattern.h.
|
virtualdefault |
|
pure virtual |
provide lattice reference coordinates of vertices of child polygons
codim | relative codimension of the children whose lattice polygons are requested. |
The shaoe of the children of relative co-dimension 0 of a cell is defined through a convex lattice polygon in the reference element. The children of co-dimension 1 are interior edges. Their shape is described by lattice segments. Children of relative co-dimension 2 are interior points. Their position is given by a single lattice point.
The shape of children with relative co-dimension 0 is given by lattice intervals. Children with relative co-dimension 1 are interior points and their location is given by single lattice points.
NumChildren()
The integer entries of the matrices must be non-negative and the column sums must be <= the lattice constant. Implemented in lf::refinement::Hybrid2DRefinementPattern.
Referenced by lf::geometry::test_utils::checkChildGeometry(), lf::geometry::SegmentO1::ChildGeometry(), lf::geometry::SegmentO2::ChildGeometry(), lf::geometry::QuadO1::ChildGeometry(), lf::geometry::Parallelogram::ChildGeometry(), lf::geometry::QuadO2::ChildGeometry(), lf::geometry::TriaO1::ChildGeometry(), and lf::geometry::TriaO2::ChildGeometry().
|
inline |
Provides information about lattice constant used.
Definition at line 70 of file refinement_pattern.h.
References lattice_const_.
Referenced by lf::geometry::test_utils::checkChildGeometry(), lf::geometry::SegmentO1::ChildGeometry(), lf::geometry::SegmentO2::ChildGeometry(), lf::geometry::QuadO1::ChildGeometry(), lf::geometry::Parallelogram::ChildGeometry(), lf::geometry::QuadO2::ChildGeometry(), lf::geometry::TriaO1::ChildGeometry(), and lf::geometry::TriaO2::ChildGeometry().
|
pure virtual |
provide number of child entities of a given co-dimension to be created by refinement
Implemented in lf::refinement::Hybrid2DRefinementPattern.
Referenced by lf::geometry::test_utils::checkChildGeometry(), lf::geometry::SegmentO1::ChildGeometry(), lf::geometry::SegmentO2::ChildGeometry(), lf::geometry::QuadO1::ChildGeometry(), lf::geometry::Parallelogram::ChildGeometry(), lf::geometry::QuadO2::ChildGeometry(), lf::geometry::TriaO1::ChildGeometry(), lf::geometry::TriaO2::ChildGeometry(), and lf::geometry::Point::ChildGeometry().
|
protecteddefault |
|
protecteddefault |
|
inline |
Returns topological type of entity for which the current object is set up.
Definition at line 68 of file refinement_pattern.h.
References ref_el_.
Referenced by lf::geometry::test_utils::checkChildGeometry(), lf::geometry::SegmentO1::ChildGeometry(), lf::geometry::SegmentO2::ChildGeometry(), lf::geometry::QuadO1::ChildGeometry(), lf::geometry::Parallelogram::ChildGeometry(), lf::geometry::QuadO2::ChildGeometry(), lf::geometry::TriaO1::ChildGeometry(), lf::geometry::TriaO2::ChildGeometry(), and lf::geometry::Point::ChildGeometry().
|
protected |
defines spacing of integer lattice
Definition at line 120 of file refinement_pattern.h.
Referenced by lf::refinement::Hybrid2DRefinementPattern::ChildPolygons(), and LatticeConst().
|
protected |
cell type
Definition at line 118 of file refinement_pattern.h.
Referenced by lf::refinement::Hybrid2DRefinementPattern::ChildPolygons(), lf::refinement::Hybrid2DRefinementPattern::Hybrid2DRefinementPattern(), lf::refinement::Hybrid2DRefinementPattern::NumChildren(), RefEl(), and lf::refinement::Hybrid2DRefinementPattern::setAnchor().