Class xlifepp::RefElement#
-
class RefElement#
-
A RefElement object represents the standard FE reference element.
Subclassed by xlifepp::RefHexahedron, xlifepp::RefPoint, xlifepp::RefPrism, xlifepp::RefPyramid, xlifepp::RefQuadrangle, xlifepp::RefSegment, xlifepp::RefTetrahedron, xlifepp::RefTriangle
Public Functions
-
RefElement()#
-
default constructor
-
RefElement(ShapeType, const Interpolation*)#
-
constructor by shape & interpolation
-
virtual ~RefElement()#
-
destructor
-
inline const RefElement *actualRefElement(const number_t sideNum = 0, const dimen_t sideDim = 0) const#
-
returns this if sideNum = 0 or reference element of sideDim side sideNum(sideNum = 1, …)
-
void buildPolynomialTree()#
-
build tree representation of polynomial shape functions
-
inline virtual void computeShapeFunctions()#
-
compute shape functions
-
inline virtual std::vector<number_t> dofsMap(const number_t &i, const number_t &j, const number_t &k = 0) const#
-
< dofs permutation (NO LONGER USED)
-
inline virtual Value evalEdgeDof(const Point &S1, const Point &S2, number_t e, number_t i, const Function &f, const Function &gradf, const Function &grad2f) const#
-
eval edge dof
-
inline virtual Value evalEltDof(const FeDof &dof, const Function &f, const Function &gradf, const Function &grad2f) const#
-
eval element dof
-
inline virtual Value evalFaceDof(const FeDof &dof, const GeomElement &selt, const Function &f, const Function &gradf, const Function &grad2f) const#
-
eval face dof
-
inline const GeomRefElement *geomRefElement(number_t sideNum = 0) const#
-
return associated Geometric Reference Element (i=0) or GeomRefElement of its side i
-
virtual const splitvec_t &getO1splitting() const = 0#
-
returns reference to splitting scheme computed by splitO1
-
inline const Interpolation &interpolation() const#
-
returns associated Geometric Reference Element
-
inline bool isSimplex() const#
-
returns true for a segment or triangle or tetrahedron
-
inline string_t name() const#
-
returns (protected) reference element name
-
number_t nbDofs(const number_t sideNum = 0, const dimen_t sideDim = 0) const#
-
returns number of element D.o.F’s (sideNum = 0) number of D.o.F’s on a given sideDim side sideNum (sideNum = 1, …)
number of D.o.F’s on sideDim side sideNum ( sideNum = 1, …)
-
inline number_t nbDofsInSideOfSides() const#
-
returns (protected) number of D.o.F supported by edges excluding D.o.F support by vertices
-
inline number_t nbDofsInSides() const#
-
returns (protected) number of D.o.F supported by faces excluding D.o.F supported by vertices or edges
-
number_t nbInternalDofs(const number_t sideNum = 0, const dimen_t sideDim = 0) const#
-
returns number of element internal D.o.F (sideNum = 0 ) or number of internal D.o.F’s on sideDim side sideNum (sideNum = 1, …)
number of internal D.o.F’s on sideDim side sideNum ( sideNum = 1, …)
-
inline virtual void print(CoutStream &os, bool withDerivative = false) const#
-
print RefElement
-
inline virtual void print(PrintStream &os, bool withDerivative = false) const#
-
print RefElement
-
virtual void print(std::ostream&, bool withDerivative = false) const#
-
print RefElement
prints RefElement object to ostream if withDerivative is true, print derivatives of shape functions (only if formal representations exist)
-
inline void printShapeValues(CoutStream &os, std::vector<real_t>::const_iterator it_pt, const ShapeValues &shv) const#
-
print RefElement shape functions
-
inline void printShapeValues(PrintStream &os, std::vector<real_t>::const_iterator it_pt, const ShapeValues &shv) const#
-
print RefElement shape functions
-
void printShapeValues(std::ostream&, std::vector<real_t>::const_iterator it_pt, const ShapeValues &shv) const#
-
print RefElement shape functions
-
void printShapeValues(std::vector<real_t>::const_iterator it_pt, const ShapeValues &shv) const#
-
print RefElement shape functions print reference element as P1 reference
-
inline RefElement *refElement(number_t sideNum = 0)#
-
returns this if sideNum = 0 or reference element of side sideNum (sideNum = 1, …) non const version, to avoid a forbidden const to non const cast in Space class
-
inline const RefElement *refElement(number_t sideNum = 0) const#
-
returns this if sideNum = 0 or reference element of side sideNum (sideNum = 1, …)
-
inline virtual void rotateDofs(const std::vector<number_t>&, ShapeValues &shv, bool der1 = false, bool der2 = false) const#
-
apply rotation to some shapevalues (rotation given by children)
-
size_t shapeValueSize() const#
-
length of shape function storage computed from set of D.o.Fs
length of shape function storage
-
std::vector<std::vector<number_t>> splitLagrange1DToP1() const#
-
creates the list of nodes numbers of first order segment elements when splitting Lagrange element
general splitting algorithm for Lagrange element (expansive method) based on an exhaustive analysis of all n-simplexes build from closed nodes i.e |N1_x-N2.x|<=1/k & |N1_y-N2.y|<=1/k & |N1_z-N2.z|<=1/k (k order of the element) and check if simplexes do not intersect together partial tests for segment, triangle and tetrahedron, seems to work
-
std::vector<std::vector<number_t>> splitLagrange2DToP1() const#
-
creates the list of nodes numbers of first order triangle elements when splitting Lagrange element
-
std::vector<std::vector<number_t>> splitLagrange3DToP1() const#
-
creates the list of nodes numbers of first order tetrahedron elements when splitting Lagrange element
-
splitvec_t splitLagrange3DToPrismO1() const#
-
creates the list of nodes numbers of first order prism elements when splitting Lagrange element
-
splitvec_t splitLagrange3DToQ1() const#
-
creates the list of nodes numbers of first order hexahedron elements when splitting Lagrange element
-
virtual splitvec_t splitO1() const#
-
return nodes numbers of first order elements of same shape when splitting current element (virtual function) a void vector is returned when splitting is not handled
-
virtual std::vector<std::vector<number_t>> splitP1() const#
-
return nodes numbers of first order elements (P1) when splitting current element return nodes numbers of first order elements of same shape when splitting current element
return nodes numbers of first order elements (P1) when splitting current element (virtual function) a void vector is returned when spliting is not handled
-
virtual std::vector<std::pair<number_t, number_t>> splitP1Side(number_t s) const#
-
return side numbers of first order elements (P1) when splitting current element
return side numbers of first order elements (P1) when splitting current element (virtual function) a void vector is returned when spliting is not handled
Public Members
-
DofCompatibility dofCompatibility#
-
compatibility rule to applied to side dofs (_noDofCompatibility,_signDofCompatibility)
-
std::vector<PolynomialsBasis> dWk#
-
derivatives of shape functions basis
-
PolynomialsBasis Ek#
-
auxiliary edge polynomial basis
-
PolynomialsBasis Fk#
-
auxiliary face polynomial basis
-
GeomRefElement *geomRefElem_p#
-
geometric data is gathered from geometric reference element
-
bool hasShapeValues#
-
tell that ref element has shapevalues, generally true
-
const Interpolation *interpolation_p#
-
interpolation parameters
-
PolynomialsBasis Kk#
-
auxiliary element polynomial basis
-
mutable std::map<Quadrature*, std::vector<ShapeValues>> qshvs_#
-
temporary structure to store shape values at some points of quadrature
-
mutable std::map<Quadrature*, std::vector<ShapeValues>> qshvs_aux#
-
temporary structure to store auxiliary shape values at some points of quadrature
-
bool reverseEdge#
-
reverse edge orientation when evaluating dof (default = false)
-
bool rotateDof#
-
if true, apply rotation (given by childs) to shape values in order to insure correct matching on shared side
-
std::vector<std::vector<number_t>> sideOfSideDofNumbers_#
-
list of dof numbers for each side of side (edge in 3D)
-
PolynomialsBasis Wk#
-
shape functions basis
Public Static Functions
-
static void clearGlobalVector()#
-
delete all RefElement objects
-
static void printAllRefElements(std::ostream&)#
-
print the list of RefElement objects in memory
Public Static Attributes
-
static std::vector<RefElement*> theRefElements#
-
vector to store run-time RefElement pointers
list of pointers of all reference elements
Friends
-
friend std::ostream &operator<<(std::ostream&, const RefElement&)#
-
output operator
-
RefElement()#