Class xlifepp::SubSpace#

class SubSpace : public xlifepp::Space#

Inheritence diagram for xlifepp::SubSpace:

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

Collaboration diagram for xlifepp::SubSpace:

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

defines data related to a ‘subspace’ of a space the subspace may be geometrically supported by a subset of geometrical domain or be a restriction to a boundary of the parent geometrical domain (trace space) or both The SubSpace class is mainly used as a dof numbering object in computation.

SubSpace class is not exposed to end users

Subclassed by xlifepp::FeSubSpace

Public Functions

inline SubSpace()#

default constructor

SubSpace(const GeomDomain&, const std::vector<number_t>&, Space&, const string_t &na = "")#

constructor specifying geom domain, dof ids list and parent space and name

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

constructor specifying geom domain, parent space and name

SubSpace(const std::vector<number_t>&, Space&, const string_t &na = "")#

constructor specifying dof ids list and parent space and name

~SubSpace()#

destructor

virtual void builddofid2rank() const#

construct the map dofid2rank from dofNumbers list

construct the map dofid2rank from dofs list, ranks start from 1

void createNumbering()#

create numbering of subspace DoFs

inline virtual number_t dimSpace() const#

dim of subspace (number of DoFs)

inline virtual const Dof &dof(number_t n) const#

return n-th fedof as dof (n=1,…)

inline virtual number_t dofId(number_t n) const#

return the DoF id of n-th space DoF (n=1,…)

inline virtual const std::map<number_t, number_t> &dofid2rank() const#

return the map dof to rank, built on fly

virtual std::vector<number_t> dofIds() const#

return the DoF ids on subspace

inline std::vector<number_t> &dofNumbers()#

access to dofNumbers list

inline const std::vector<number_t> &dofNumbers() const#

access to dofNumbers list (const)

number_t dofRootNumber(number_t k) const#

access to dof number in root space numbering

std::vector<number_t> dofRootNumbers() const#

access to dofNumbers list in root space numbering

access to dofNumbers list in root space numbering remind that dofNumbers vector in SubSpace is related to the numbering of parent which can be a subspace and not the root space

void dofsOfFeSubspace()#

build dofs numbering of Fe SubSpace

build dofs numbering of subspace when parent is a Fe space if domain is a composite domain (union or intersection of domains)

  • subspaces of each domain are created if they do not exist

  • dofNumbers numbering relative to parent space is computed if domain is a meshdomain, dofNumbers is computed by function

void dofsOfSpSubspace()#

build dofs numbering of Sp SubSpace

void dofsOfSubSubspace()#

build dofs numbering of Subspace of SubSpace

build dofs numbering of subspace when parent is a Subspace two cases are possible:

  • domain is a meshdomain and domain parent is a composite domain (e.g D1 and D1+D2)

  • domain and parent domains are composite domains (e. g D1+D2 and D1+D2+D3) we use a general algorithm based on root dof numbers comparison

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

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

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

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

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

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

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

return dofs vector

inline virtual const FeSubSpace *feSubSpace() const#

downcast to FESubSpace

virtual bool include(const Space*) const#

return true if space is included in current subspace

virtual bool isFE() const#

true if FE space or FeSubspace

inline virtual bool isFeSubspace() const#

returns false (a subspace is not a fesubspace)

virtual bool isSpectral() const#

true if spectral space

inline virtual number_t nbDofs() const#

number of dofs (a dof may be a vector dof)

inline virtual number_t nbOfElements() const#

number of elements for FESpace and FESubspace only

inline Space *parent() const#

returns parent space

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)

inline virtual void shiftDofs(number_t n)#

shift dofs numbering from n (special utility for SpSpace)

virtual StrucType strucType() const#

return structure type of basis function (scalar or vector)

inline virtual SubSpace *subSpace()#

access to SubSpace from Space class

inline virtual const SubSpace *subSpace() const#

access to SubSpace from Space class (const)

virtual ValueType valueType() const#

return value type of basis function (real or complex)

Public Members

mutable std::map<number_t, number_t> dofid2rank_#

map dof iD -> rank in dofs vector

Friends

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

print operator