diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp index 9fa2b50bd81d05ac0a31f4a72bcde8d6163d4e4b..ea38989248cde6e218e375ca66a39d0d5b4b9f56 100644 --- a/FunctionSpace/FunctionSpace.cpp +++ b/FunctionSpace/FunctionSpace.cpp @@ -144,23 +144,6 @@ void FunctionSpace::insertDof(Dof& d, } } */ - -const Basis& FunctionSpace::getBasis(const MElement& element) const{ - return *(*basis)[0]; -} - -const Basis& FunctionSpace::getBasis(size_t i) const{ - return *(*basis)[0]; -} - -GroupOfElement& FunctionSpace::getSupport(void) const{ - return *goe; -} - -bool FunctionSpace::isScalar(void) const{ - return scalar; -} - vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{ // Const_Cast // MElement& element = const_cast<MElement&>(elem); @@ -179,7 +162,8 @@ vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{ // New Element MElementFactory factory; - int lowOrderTag = ElementType::getTag(elem.getType(), 1, false); + int parentTag = ElementType::ParentTypeFromTag(elem.getTypeForMSH()); + int lowOrderTag = ElementType::getTag(parentTag, 1, false); MElement* permElement = factory.create(lowOrderTag, vertex); @@ -242,14 +226,6 @@ vector<Dof> FunctionSpace::getKeys(const MElement& elem) const{ return myDof; } -const vector<Dof> FunctionSpace::getAllDofs(void) const{ - return vector<Dof>(dof->begin(), dof->end()); -} - -const vector<GroupOfDof*>& FunctionSpace::getAllGroups(void) const{ - return *group; -} - const GroupOfDof& FunctionSpace:: getGoDFromElement(const MElement& element) const{ @@ -264,11 +240,3 @@ getGoDFromElement(const MElement& element) const{ else return *(it->second); } - -size_t FunctionSpace::dofNumber(void) const{ - return dof->size(); -} - -size_t FunctionSpace::groupNumber(void) const{ - return group->size(); -} diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h index 9305cc1fdb620bcd4808fed4685230ce95cbf73c..75f6b3eb7d4ff7a94b45155a4491bf132284da48 100644 --- a/FunctionSpace/FunctionSpace.h +++ b/FunctionSpace/FunctionSpace.h @@ -22,7 +22,8 @@ @interface FunctionSpace @brief Common Interface of all Function Spaces - This is the common interface of all Function Spaces. + This is the common interface of + all Function Spaces. A FunctionSpace is defined on a support, which is a collection of MElement%s (GroupOfElement). @@ -67,8 +68,9 @@ class FunctionSpace{ public: virtual ~FunctionSpace(void); - const Basis& getBasis(const MElement& element) const; - const Basis& getBasis(size_t i) const; + const std::vector<const Basis*>& getBasis(const MElement& element) const; + const Basis& getBasis(size_t i) const; + size_t getNBasis(void) const; GroupOfElement& getSupport(void) const; bool isScalar(void) const; @@ -112,12 +114,9 @@ class FunctionSpace{ Deletes this FunctionSpace ** - @fn FunctionSpace::getBasis - @param element A MElement - @return Returns the Basis associated to the given MElement - @fn FunctionSpace::getSupport - @return Returns the support of this FunctionSpace + @return Returns the support of this + FunctionSpace ** @fn FunctionSpace::isScalar @@ -158,14 +157,16 @@ class FunctionSpace{ @fn FunctionSpace::getGoDFromElement @param element An Element of the FunctionSpace Support - @return Returns the GroupOfDof%s associated to the given Element + @return Returns the GroupOfDof%s associated to + the given Element If the given Element is not in the FunctionSpace Support, an Exception is thrown ** @fn FunctionSpace::dofNumber - @return Returns the number of Dof%s given by FunctionSpace::getAllDofs() + @return Returns the number of Dof%s + given by FunctionSpace::getAllDofs() ** @fn FunctionSpace::groupNumber @@ -174,4 +175,46 @@ class FunctionSpace{ ** */ + +////////////////////// +// Inline Functions // +////////////////////// + +inline const std::vector<const Basis*>& +FunctionSpace::getBasis(const MElement& element) const{ + return *basis; +} + +inline const Basis& FunctionSpace::getBasis(size_t i) const{ + return *(*basis)[i]; +} + +inline size_t FunctionSpace::getNBasis(void) const{ + return nBasis; +} + +inline GroupOfElement& FunctionSpace::getSupport(void) const{ + return *goe; +} + +inline bool FunctionSpace::isScalar(void) const{ + return scalar; +} + +inline size_t FunctionSpace::dofNumber(void) const{ + return dof->size(); +} + +inline size_t FunctionSpace::groupNumber(void) const{ + return group->size(); +} + +inline const std::vector<Dof> FunctionSpace::getAllDofs(void) const{ + return std::vector<Dof>(dof->begin(), dof->end()); +} + +inline const std::vector<GroupOfDof*>& FunctionSpace::getAllGroups(void) const{ + return *group; +} + #endif