Class xlifepp::FeSubSpace#

class FeSubSpace : public xlifepp::SubSpace#

Inheritence diagram for xlifepp::FeSubSpace:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "1" [label="xlifepp::FeSubSpace" tooltip="xlifepp::FeSubSpace" fillcolor="#BFBFBF"] "3" [label="xlifepp::Space" tooltip="xlifepp::Space"] "2" [label="xlifepp::SubSpace" tooltip="xlifepp::SubSpace"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "2" -> "3" [dir=forward tooltip="public-inheritance"] }

Collaboration diagram for xlifepp::FeSubSpace:

digraph { graph [bgcolor="#00000000"] node [shape=rectangle style=filled fillcolor="#FFFFFF" font=Helvetica padding=2] edge [color="#1414CE"] "27" [label="xlifepp::Collection< string_t >" tooltip="xlifepp::Collection< string_t >"] "20" [label="xlifepp::Matrix< real_t >" tooltip="xlifepp::Matrix< real_t >"] "24" [label="xlifepp::Vector< real_t >" tooltip="xlifepp::Vector< real_t >"] "35" [label="xlifepp::Vector< xlifepp::Vector< real_t > >" tooltip="xlifepp::Vector< xlifepp::Vector< real_t > >"] "40" [label="std::list< std::pair< number_t, real_t > >" tooltip="std::list< std::pair< number_t, real_t > >"] "48" [label="std::map< number_t, number_t >" tooltip="std::map< number_t, number_t >"] "16" [label="std::map< number_t, std::vector< number_t > >" tooltip="std::map< number_t, std::vector< number_t > >"] "14" [label="std::map< number_t, xlifepp::Geometry * >" tooltip="std::map< number_t, xlifepp::Geometry * >"] "39" [label="std::map< string_t, number_t >" tooltip="std::map< string_t, number_t >"] "51" [label="std::map< xlifepp::Element *, number_t >" tooltip="std::map< xlifepp::Element *, number_t >"] "52" [label="std::map< xlifepp::GeomElement *, number_t >" tooltip="std::map< xlifepp::GeomElement *, number_t >"] "54" [label="std::set< xlifepp::RefElement * >" tooltip="std::set< xlifepp::RefElement * >"] "41" [label="std::list< T >" tooltip="std::list< T >"] "15" [label="std::map< K, T >" tooltip="std::map< K, T >"] "55" [label="std::set< K >" tooltip="std::set< K >"] "11" [label="std::vector< T >" tooltip="std::vector< T >"] "30" [label="std::vector< T >" tooltip="std::vector< T >"] "23" [label="std::vector< K >" tooltip="std::vector< K >"] "10" [label="std::vector< RealPair >" tooltip="std::vector< RealPair >"] "46" [label="std::vector< const xlifepp::GeomDomain * >" tooltip="std::vector< const xlifepp::GeomDomain * >"] "26" [label="std::vector< const xlifepp::Transformation * >" tooltip="std::vector< const xlifepp::Transformation * >"] "31" [label="std::vector< number_t >" tooltip="std::vector< number_t >"] "21" [label="std::vector< real_t >" tooltip="std::vector< real_t >"] "45" [label="std::vector< std::vector< GeoNumPair > >" tooltip="std::vector< std::vector< GeoNumPair > >"] "17" [label="std::vector< std::vector< int_t > >" tooltip="std::vector< std::vector< int_t > >"] "50" [label="std::vector< std::vector< number_t > >" tooltip="std::vector< std::vector< number_t > >"] "28" [label="std::vector< string_t >" tooltip="std::vector< string_t >"] "49" [label="std::vector< xlifepp::Element * >" tooltip="std::vector< xlifepp::Element * >"] "53" [label="std::vector< xlifepp::FeDof >" tooltip="std::vector< xlifepp::FeDof >"] "44" [label="std::vector< xlifepp::GeomDomain * >" tooltip="std::vector< xlifepp::GeomDomain * >"] "43" [label="std::vector< xlifepp::GeomElement * >" tooltip="std::vector< xlifepp::GeomElement * >"] "38" [label="std::vector< xlifepp::Parameter * >" tooltip="std::vector< xlifepp::Parameter * >"] "13" [label="std::vector< xlifepp::Point >" tooltip="std::vector< xlifepp::Point >"] "47" [label="std::vector< xlifepp::Space * >" tooltip="std::vector< xlifepp::Space * >"] "32" [label="std::vector< xlifepp::Transformation * >" tooltip="std::vector< xlifepp::Transformation * >"] "36" [label="std::vector< xlifepp::Vector< real_t > >" tooltip="std::vector< xlifepp::Vector< real_t > >"] "9" [label="xlifepp::BoundingBox" tooltip="xlifepp::BoundingBox"] "29" [label="xlifepp::Collection< T >" tooltip="xlifepp::Collection< T >"] "6" [label="xlifepp::DomainInfo" tooltip="xlifepp::DomainInfo"] "18" [label="xlifepp::ExtrusionData" tooltip="xlifepp::ExtrusionData"] "1" [label="xlifepp::FeSubSpace" tooltip="xlifepp::FeSubSpace" fillcolor="#BFBFBF"] "42" [label="xlifepp::GeoNode" tooltip="xlifepp::GeoNode"] "5" [label="xlifepp::GeomDomain" tooltip="xlifepp::GeomDomain"] "8" [label="xlifepp::Geometry" tooltip="xlifepp::Geometry"] "22" [label="xlifepp::Matrix< K >" tooltip="xlifepp::Matrix< K >"] "7" [label="xlifepp::Mesh" tooltip="xlifepp::Mesh"] "12" [label="xlifepp::MinimalBox" tooltip="xlifepp::MinimalBox"] "37" [label="xlifepp::Parameters" tooltip="xlifepp::Parameters"] "34" [label="xlifepp::Parametrization" tooltip="xlifepp::Parametrization"] "33" [label="xlifepp::Point" tooltip="xlifepp::Point"] "3" [label="xlifepp::Space" tooltip="xlifepp::Space"] "4" [label="xlifepp::SpaceInfo" tooltip="xlifepp::SpaceInfo"] "2" [label="xlifepp::SubSpace" tooltip="xlifepp::SubSpace"] "19" [label="xlifepp::Transformation" tooltip="xlifepp::Transformation"] "25" [label="xlifepp::Vector< K >" tooltip="xlifepp::Vector< K >"] "27" -> "28" [dir=forward tooltip="public-inheritance"] "27" -> "29" [dir=forward tooltip="template-instance"] "20" -> "21" [dir=forward tooltip="public-inheritance"] "20" -> "22" [dir=forward tooltip="template-instance"] "24" -> "21" [dir=forward tooltip="public-inheritance"] "24" -> "25" [dir=forward tooltip="template-instance"] "35" -> "36" [dir=forward tooltip="public-inheritance"] "35" -> "25" [dir=forward tooltip="template-instance"] "40" -> "41" [dir=forward tooltip="template-instance"] "48" -> "15" [dir=forward tooltip="template-instance"] "16" -> "15" [dir=forward tooltip="template-instance"] "14" -> "15" [dir=forward tooltip="template-instance"] "39" -> "15" [dir=forward tooltip="template-instance"] "51" -> "15" [dir=forward tooltip="template-instance"] "52" -> "15" [dir=forward tooltip="template-instance"] "54" -> "55" [dir=forward tooltip="template-instance"] "23" -> "11" [dir=forward tooltip="template-instance"] "10" -> "11" [dir=forward tooltip="template-instance"] "46" -> "11" [dir=forward tooltip="template-instance"] "26" -> "11" [dir=forward tooltip="template-instance"] "31" -> "11" [dir=forward tooltip="template-instance"] "21" -> "11" [dir=forward tooltip="template-instance"] "45" -> "11" [dir=forward tooltip="template-instance"] "17" -> "11" [dir=forward tooltip="template-instance"] "50" -> "11" [dir=forward tooltip="template-instance"] "28" -> "11" [dir=forward tooltip="template-instance"] "49" -> "11" [dir=forward tooltip="template-instance"] "53" -> "11" [dir=forward tooltip="template-instance"] "44" -> "11" [dir=forward tooltip="template-instance"] "43" -> "11" [dir=forward tooltip="template-instance"] "38" -> "11" [dir=forward tooltip="template-instance"] "13" -> "11" [dir=forward tooltip="template-instance"] "47" -> "11" [dir=forward tooltip="template-instance"] "32" -> "11" [dir=forward tooltip="template-instance"] "36" -> "11" [dir=forward tooltip="template-instance"] "9" -> "10" [dir=forward tooltip="usage"] "29" -> "30" [dir=forward tooltip="public-inheritance"] "6" -> "7" [dir=forward tooltip="usage"] "18" -> "19" [dir=forward tooltip="usage"] "18" -> "27" [dir=forward tooltip="usage"] "18" -> "31" [dir=forward tooltip="usage"] "18" -> "21" [dir=forward tooltip="usage"] "18" -> "24" [dir=forward tooltip="usage"] "18" -> "32" [dir=forward tooltip="usage"] "18" -> "33" [dir=forward tooltip="usage"] "1" -> "2" [dir=forward tooltip="public-inheritance"] "1" -> "49" [dir=forward tooltip="usage"] "1" -> "50" [dir=forward tooltip="usage"] "1" -> "51" [dir=forward tooltip="usage"] "1" -> "52" [dir=forward tooltip="usage"] "1" -> "53" [dir=forward tooltip="usage"] "1" -> "54" [dir=forward tooltip="usage"] "42" -> "42" [dir=forward tooltip="usage"] "42" -> "8" [dir=forward tooltip="usage"] "5" -> "6" [dir=forward tooltip="usage"] "5" -> "5" [dir=forward tooltip="usage"] "5" -> "8" [dir=forward tooltip="usage"] "5" -> "46" [dir=forward tooltip="usage"] "8" -> "9" [dir=forward tooltip="usage"] "8" -> "12" [dir=forward tooltip="usage"] "8" -> "14" [dir=forward tooltip="usage"] "8" -> "16" [dir=forward tooltip="usage"] "8" -> "17" [dir=forward tooltip="usage"] "8" -> "18" [dir=forward tooltip="usage"] "8" -> "34" [dir=forward tooltip="usage"] "8" -> "8" [dir=forward tooltip="usage"] "8" -> "42" [dir=forward tooltip="usage"] "22" -> "23" [dir=forward tooltip="public-inheritance"] "7" -> "8" [dir=forward tooltip="usage"] "7" -> "13" [dir=forward tooltip="usage"] "7" -> "43" [dir=forward tooltip="usage"] "7" -> "44" [dir=forward tooltip="usage"] "7" -> "31" [dir=forward tooltip="usage"] "7" -> "45" [dir=forward tooltip="usage"] "7" -> "7" [dir=forward tooltip="usage"] "12" -> "13" [dir=forward tooltip="usage"] "37" -> "38" [dir=forward tooltip="usage"] "37" -> "39" [dir=forward tooltip="usage"] "34" -> "8" [dir=forward tooltip="usage"] "34" -> "24" [dir=forward tooltip="usage"] "34" -> "35" [dir=forward tooltip="usage"] "34" -> "7" [dir=forward tooltip="usage"] "34" -> "37" [dir=forward tooltip="usage"] "34" -> "40" [dir=forward tooltip="usage"] "33" -> "21" [dir=forward tooltip="public-inheritance"] "3" -> "3" [dir=forward tooltip="usage"] "3" -> "4" [dir=forward tooltip="usage"] "3" -> "47" [dir=forward tooltip="usage"] "4" -> "5" [dir=forward tooltip="usage"] "2" -> "3" [dir=forward tooltip="public-inheritance"] "2" -> "3" [dir=forward tooltip="usage"] "2" -> "31" [dir=forward tooltip="usage"] "2" -> "48" [dir=forward tooltip="usage"] "19" -> "20" [dir=forward tooltip="usage"] "19" -> "24" [dir=forward tooltip="usage"] "19" -> "26" [dir=forward tooltip="usage"] "25" -> "23" [dir=forward tooltip="public-inheritance"] }

inheriting from SubSpace handles additionnal data for elementary Fe type subspace.

Elementary means a subspace based on a single mesh domain (not an union of mesh domains) This structure is useful for Fe computation on sub domains, when the subdomain is not of the same dim as parent domain, Elements are SubElements

Public Functions

FeSubSpace(const GeomDomain&, Space&, bool, const string_t &na = "")#

constructor specifying geom domain, parent subspace and name

FeSubSpace(const GeomDomain&, Space&, const string_t &na = "")#

constructor specifying geom domain, parent space and name

~FeSubSpace()#

destructor

virtual void buildgelt2elt() const#

construct the map get2elt from elements list

buildgelt2elt: construct the map gelt2elt from elements list and the map eltRanks thread safe because if not built, it is build only by the thread 0 other threads wait for the construction Note: it is better to build it outside a parallel region !

virtual const Element &element(GeomElement *gelt) const#

access to element associated to a geomelement

inline virtual const Element &element(number_t k) const#

access to k-th (k>=0) element (pointer) for FESpace and FESubspace only

virtual const Element *element_p(GeomElement *gelt) const#

access to element associated to a geomelement

return element linked to a given geom element used gelt2elt map; has to be already built

inline virtual const Element *element_p(number_t k) const#

access to k-th (k>=0) element (pointer) for FESpace and FESubspace only

virtual const std::vector<number_t> &elementDofs(number_t k) const#

access to dofs ranks (local numbering) of k-th (>=0) element for FESpace and FESubspace only

virtual std::vector<number_t> elementParentDofs(number_t k) const#

access to dofs ranks (parent numbering) of k-th (>=0) element for FESpace and FESubspace only

virtual const std::vector<FeDof> &feDofs() const#

return fedofs vector

inline virtual const FeSubSpace *feSubSpace() const#

autocast (see virtual function in parent)

template<typename T, typename K>
T &interpolate(const Vector<K>&, const Point&, const Element*, T&, DiffOpType = _id, bool useNearest = false) const#

compute interpolated value at P knowing Element

template<typename T, typename K>
T &interpolate(const Vector<K>&, const Point&, T&, DiffOpType = _id, bool useNearest = false) const#

compute interpolated value at P

inline virtual const Interpolation *interpolation() const#

return pointer to interpolation

inline virtual bool isFeSubspace() const#

returns true if FeSubSpace

const Element *locateElement(const Point &p, bool useNearest = false, bool errorOnDomainOut = true, real_t tol = theLocateToleranceFactor) const#

locate element of the FeSubspace containing P

inline virtual number_t nbOfElements() const#

number of elements for FESpace and FESubspace only

virtual number_t numElement(GeomElement *gelt) const#

access to element number associated to a geomelement

inline virtual void print(PrintStream &os) const#

print utility

virtual void print(std::ostream&) const#

print utility

inline virtual const std::set<RefElement*> &refElements() const#

access to set of pointer to RefElement (refElts) involved in FESpace

inline virtual Space *rootSpace()#

access to root space pointer

inline virtual const Space *rootSpace() const#

access to root space pointer (const)

Public Members

std::vector<std::vector<number_t>> dofRanks#

numbering of D.o.Fs of domain elements in domain D.o.Fs

std::vector<Element*> elements#

list of finite elements (or subelements)

mutable std::map<Element*, number_t> eltRanks#

map Element* -> element number (useful to interpolation tools)

mutable std::vector<FeDof> fedofs#

explicit list of FeDofs, built if required

mutable std::map<GeomElement*, number_t> gelt2elt#

map GeomElement -> element number (useful to interpolation tools)

std::set<RefElement*> refElts#

set of pointer to RefElement involved in FeSpace (usually one)

Friends

friend std::ostream &operator<<(std::ostream&, const FeSubSpace&)#

print operator