From d3841df3ed94f3f804c0c56f2528cb809eb3c8f8 Mon Sep 17 00:00:00 2001 From: Nicolas Marsic <nicolas.marsic@gmail.com> Date: Wed, 9 Jan 2013 16:31:29 +0000 Subject: [PATCH] Doc + Name change: ReferenceSpace::getReferenceSpace() becomes ReferenceSpace::getPermutation() --- FunctionSpace/BasisScalar.h | 2 +- FunctionSpace/BasisVector.h | 2 +- FunctionSpace/CurlBasis.cpp | 2 +- FunctionSpace/DivBasis.cpp | 2 +- FunctionSpace/EvaluatedBasis.cpp | 4 +- FunctionSpace/EvaluatedBasis.h | 2 +- FunctionSpace/GradBasis.cpp | 2 +- FunctionSpace/LineEdgeBasis.cpp | 2 +- FunctionSpace/LineNedelecBasis.cpp | 2 +- FunctionSpace/LineNodeBasis.cpp | 2 +- FunctionSpace/LineReferenceSpace.h | 18 ++++++- FunctionSpace/ReferenceSpace.cpp | 2 +- FunctionSpace/ReferenceSpace.h | 81 ++++++++++++++++++++++++++++-- FunctionSpace/TetEdgeBasis.cpp | 2 +- FunctionSpace/TetNodeBasis.cpp | 2 +- FunctionSpace/TetReferenceSpace.h | 18 ++++++- FunctionSpace/TriEdgeBasis.cpp | 2 +- FunctionSpace/TriNedelecBasis.cpp | 2 +- FunctionSpace/TriNodeBasis.cpp | 2 +- FunctionSpace/TriReferenceSpace.h | 18 ++++++- 20 files changed, 145 insertions(+), 24 deletions(-) diff --git a/FunctionSpace/BasisScalar.h b/FunctionSpace/BasisScalar.h index 9b4b39f346..01e295baa0 100644 --- a/FunctionSpace/BasisScalar.h +++ b/FunctionSpace/BasisScalar.h @@ -76,7 +76,7 @@ BasisScalar::getFunction(unsigned int refSpace) const{ inline const std::vector<const Polynomial*>& BasisScalar::getFunction(const MElement& element) const{ - return *(*basis)[refSpace->getReferenceSpace(element)]; + return *(*basis)[refSpace->getPermutation(element)]; } #endif diff --git a/FunctionSpace/BasisVector.h b/FunctionSpace/BasisVector.h index d202662723..eefdead46c 100644 --- a/FunctionSpace/BasisVector.h +++ b/FunctionSpace/BasisVector.h @@ -76,7 +76,7 @@ BasisVector::getFunction(unsigned int refSpace) const{ inline const std::vector<const std::vector<Polynomial>*>& BasisVector::getFunction(const MElement& element) const{ - return *(*basis)[refSpace->getReferenceSpace(element)]; + return *(*basis)[refSpace->getPermutation(element)]; } #endif diff --git a/FunctionSpace/CurlBasis.cpp b/FunctionSpace/CurlBasis.cpp index dae7fd5c3c..ba2c320185 100644 --- a/FunctionSpace/CurlBasis.cpp +++ b/FunctionSpace/CurlBasis.cpp @@ -5,7 +5,7 @@ using namespace std; CurlBasis::CurlBasis(const BasisVector& other){ // Reference Space // refSpace = &other.getReferenceSpace(); - nRefSpace = other.getReferenceSpace().getNReferenceSpace(); + nRefSpace = other.getReferenceSpace().getNPermutation(); // Set Basis Type // order = other.getOrder() - 1; diff --git a/FunctionSpace/DivBasis.cpp b/FunctionSpace/DivBasis.cpp index 3467948196..774d411da5 100644 --- a/FunctionSpace/DivBasis.cpp +++ b/FunctionSpace/DivBasis.cpp @@ -5,7 +5,7 @@ using namespace std; DivBasis::DivBasis(const BasisVector& other){ // Reference Space // refSpace = &other.getReferenceSpace(); - nRefSpace = other.getReferenceSpace().getNReferenceSpace(); + nRefSpace = other.getReferenceSpace().getNPermutation(); // Set Basis Type // order = other.getOrder() - 1; diff --git a/FunctionSpace/EvaluatedBasis.cpp b/FunctionSpace/EvaluatedBasis.cpp index e2739d3ebd..4bc2debdda 100644 --- a/FunctionSpace/EvaluatedBasis.cpp +++ b/FunctionSpace/EvaluatedBasis.cpp @@ -8,7 +8,7 @@ EvaluatedBasis(const BasisScalar& basis, const fullMatrix<double>& point){ // Data // refSpace = &basis.getReferenceSpace(); - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); scalar = true; nFunction = basis.getNFunction(); nPoint = point.size1(); @@ -34,7 +34,7 @@ EvaluatedBasis(const BasisVector& basis, const fullMatrix<double>& point){ // Data // refSpace = &basis.getReferenceSpace(); - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); scalar = false; nFunction = basis.getNFunction(); nPoint = point.size1(); diff --git a/FunctionSpace/EvaluatedBasis.h b/FunctionSpace/EvaluatedBasis.h index a6e4b50de2..3ff8a8d2aa 100644 --- a/FunctionSpace/EvaluatedBasis.h +++ b/FunctionSpace/EvaluatedBasis.h @@ -100,7 +100,7 @@ EvaluatedBasis::getEvaluation(unsigned int refSpace) const{ inline const fullMatrix<double>& EvaluatedBasis::getEvaluation(const MElement& element) const{ - return *(*eBasis)[refSpace->getReferenceSpace(element)]; + return *(*eBasis)[refSpace->getPermutation(element)]; } #endif diff --git a/FunctionSpace/GradBasis.cpp b/FunctionSpace/GradBasis.cpp index 68830057e6..7507d11b92 100644 --- a/FunctionSpace/GradBasis.cpp +++ b/FunctionSpace/GradBasis.cpp @@ -5,7 +5,7 @@ using namespace std; GradBasis::GradBasis(const BasisScalar& other){ // Reference Space // refSpace = &other.getReferenceSpace(); - nRefSpace = other.getReferenceSpace().getNReferenceSpace(); + nRefSpace = other.getReferenceSpace().getNPermutation(); // Set Basis Type // order = other.getOrder() - 1; diff --git a/FunctionSpace/LineEdgeBasis.cpp b/FunctionSpace/LineEdgeBasis.cpp index 0dcf2c85b8..d822a81b84 100644 --- a/FunctionSpace/LineEdgeBasis.cpp +++ b/FunctionSpace/LineEdgeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; LineEdgeBasis::LineEdgeBasis(unsigned int order){ // Reference Space // refSpace = new LineReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/LineNedelecBasis.cpp b/FunctionSpace/LineNedelecBasis.cpp index f0d2f16bcb..3dd3545bb9 100644 --- a/FunctionSpace/LineNedelecBasis.cpp +++ b/FunctionSpace/LineNedelecBasis.cpp @@ -7,7 +7,7 @@ using namespace std; LineNedelecBasis::LineNedelecBasis(void){ // Reference Space // refSpace = new LineReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); // Set Basis Type // order = 1; diff --git a/FunctionSpace/LineNodeBasis.cpp b/FunctionSpace/LineNodeBasis.cpp index ec3bd6e41c..0c80278d59 100644 --- a/FunctionSpace/LineNodeBasis.cpp +++ b/FunctionSpace/LineNodeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; LineNodeBasis::LineNodeBasis(unsigned int order){ // Reference Space // refSpace = new LineReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/LineReferenceSpace.h b/FunctionSpace/LineReferenceSpace.h index 16f0cc5c6f..9059d23ff0 100644 --- a/FunctionSpace/LineReferenceSpace.h +++ b/FunctionSpace/LineReferenceSpace.h @@ -4,12 +4,28 @@ #include <string> #include "ReferenceSpace.h" +/** + @class LineReferenceSpace + @brief ReferenceSpace for a Line + + This class implements a ReferenceSpace for a Line. + */ + class LineReferenceSpace: public ReferenceSpace{ public: LineReferenceSpace(void); virtual ~LineReferenceSpace(void); - std::string toLatex(void) const; + virtual std::string toLatex(void) const; }; +/** + @fn LineReferenceSpace::LineReferenceSpace + Instatiate a new ReferenceSpace for a Line + ** + + @fn LineReferenceSpace::~LineReferenceSpace + Deletes this LineReferenceSpace +*/ + #endif diff --git a/FunctionSpace/ReferenceSpace.cpp b/FunctionSpace/ReferenceSpace.cpp index 5f09a4e099..a56ab022bd 100644 --- a/FunctionSpace/ReferenceSpace.cpp +++ b/FunctionSpace/ReferenceSpace.cpp @@ -222,7 +222,7 @@ inOrder(unsigned int permutation, return inorder; } -unsigned int ReferenceSpace::getReferenceSpace(const MElement& elem) const{ +unsigned int ReferenceSpace::getPermutation(const MElement& elem) const{ // Const_Cast // MElement& element = const_cast<MElement&>(elem); diff --git a/FunctionSpace/ReferenceSpace.h b/FunctionSpace/ReferenceSpace.h index c8f341cc3b..580d56239f 100644 --- a/FunctionSpace/ReferenceSpace.h +++ b/FunctionSpace/ReferenceSpace.h @@ -6,8 +6,18 @@ #include <string> #include "MElement.h" +/** + @interface ReferenceSpace + @brief Base interface for all ReferenceSpace%s + + This class represents the notion of Reference Space.@n + A Reference Space is the set of all the @em permutations + of the @em reference @em element of a @em particular + @em geometrical entity.@n + */ + class ReferenceSpace{ - protected: + private: // Permuation Tree Structure // struct node_s{ unsigned int depth; // Depth @@ -23,6 +33,7 @@ class ReferenceSpace{ typedef node_s node; + protected: // Permutation (Tree + Leaf) // unsigned int nextLeafId; unsigned int nVertex; @@ -45,9 +56,9 @@ class ReferenceSpace{ public: virtual ~ReferenceSpace(void); - unsigned int getNReferenceSpace(void) const; + unsigned int getNPermutation(void) const; - unsigned int getReferenceSpace(const MElement& element) const; + unsigned int getPermutation(const MElement& element) const; std::vector<const std::vector<const std::vector<unsigned int>*>*>& getAllEdge(void) const; @@ -57,6 +68,8 @@ class ReferenceSpace{ std::string toString(void) const; + virtual std::string toLatex(void) const = 0; + protected: ReferenceSpace(void); @@ -86,13 +99,73 @@ class ReferenceSpace{ std::string toString(const node* node) const; }; + +/** + @internal + @fn ReferenceSpace::ReferenceSpace + Instatiate a new ReferenceSpace + @endinternal + ** + + @fn ReferenceSpace::~ReferenceSpace + Deletes this ReferenceSpace + ** + + @fn ReferenceSpace::getNPermutation + @returns Returns the number of permutation of this + ReferenceSpace + ** + + @fn ReferenceSpace::getPermutation + @param element A MElement + @returns Returns the a natural number defining + the permutation of the given element + + @note If no permutation is found (e.g. the given + element does not belong the @em same @em geometrical + entity as this ReferenceSpace) an Exception is thrown + ** + + @fn ReferenceSpace::getAllEdge + @return Returns every Edge permutation of this ReferenceSpace + + @note + @li The fisrt vector represents a particular permutation + (see ReferenceSpace::getPermutation()) + @li The second vector represents a particular edge + (for a given permutation) + @li The last vector represents the Vertex @c IDs of + the given edge (in the @em geometrical reference space) + ** + + @fn ReferenceSpace::getAllFace + @return Returns every Face permutation of this ReferenceSpace + + @note + @li The fisrt vector represents a particular permutation + (see ReferenceSpace::getPermutation()) + @li The second vector represents a particular face + (for a given permutation) + @li The last vector represents the Vertex @c IDs of + the given face (in the @em geometrical reference space) + ** + + @fn ReferenceSpace::toString + @return Returns a string describing this ReferenceSpace + ** + + @fn ReferenceSpace::toLatex + @return Returns a string (of a Latex file) + describing this ReferenceSpace + */ + ////////////////////// // Inline Functions // ////////////////////// inline unsigned int -ReferenceSpace::getNReferenceSpace(void) const{ +ReferenceSpace::getNPermutation(void) const{ return nPerm; } diff --git a/FunctionSpace/TetEdgeBasis.cpp b/FunctionSpace/TetEdgeBasis.cpp index 176ddef8d1..6d51adbfd9 100644 --- a/FunctionSpace/TetEdgeBasis.cpp +++ b/FunctionSpace/TetEdgeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TetEdgeBasis::TetEdgeBasis(unsigned int order){ // Reference Space // refSpace = new TetReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/TetNodeBasis.cpp b/FunctionSpace/TetNodeBasis.cpp index de93f406b1..118c0bd5c2 100644 --- a/FunctionSpace/TetNodeBasis.cpp +++ b/FunctionSpace/TetNodeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TetNodeBasis::TetNodeBasis(unsigned int order){ // Reference Space // refSpace = new TetReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/TetReferenceSpace.h b/FunctionSpace/TetReferenceSpace.h index 53532863d4..4895fa8490 100644 --- a/FunctionSpace/TetReferenceSpace.h +++ b/FunctionSpace/TetReferenceSpace.h @@ -4,12 +4,28 @@ #include <string> #include "ReferenceSpace.h" +/** + @class TetReferenceSpace + @brief ReferenceSpace for Tetrahedron + + This class implements a ReferenceSpace for a Tetrahedron. + */ + class TetReferenceSpace: public ReferenceSpace{ public: TetReferenceSpace(void); virtual ~TetReferenceSpace(void); - std::string toLatex(void) const; + virtual std::string toLatex(void) const; }; +/** + @fn TetReferenceSpace::TetReferenceSpace + Instatiate a new ReferenceSpace for a Tetrahedron + ** + + @fn TetReferenceSpace::~TetReferenceSpace + Deletes this TetReferenceSpace +*/ + #endif diff --git a/FunctionSpace/TriEdgeBasis.cpp b/FunctionSpace/TriEdgeBasis.cpp index b0a705c52c..99b56254ae 100644 --- a/FunctionSpace/TriEdgeBasis.cpp +++ b/FunctionSpace/TriEdgeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TriEdgeBasis::TriEdgeBasis(unsigned int order){ // Reference Space // refSpace = new TriReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/TriNedelecBasis.cpp b/FunctionSpace/TriNedelecBasis.cpp index dab1f19c86..d88d0be855 100644 --- a/FunctionSpace/TriNedelecBasis.cpp +++ b/FunctionSpace/TriNedelecBasis.cpp @@ -6,7 +6,7 @@ using namespace std; TriNedelecBasis::TriNedelecBasis(void){ // Reference Space // refSpace = new TriReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/TriNodeBasis.cpp b/FunctionSpace/TriNodeBasis.cpp index ae3d6d8e5e..d4556c5575 100644 --- a/FunctionSpace/TriNodeBasis.cpp +++ b/FunctionSpace/TriNodeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TriNodeBasis::TriNodeBasis(unsigned int order){ // Reference Space // refSpace = new TriReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + nRefSpace = refSpace->getNPermutation(); const vector<const vector<const vector<unsigned int>*>*>& edgeV = refSpace->getAllEdge(); diff --git a/FunctionSpace/TriReferenceSpace.h b/FunctionSpace/TriReferenceSpace.h index 9866c8e48b..0ac863a416 100644 --- a/FunctionSpace/TriReferenceSpace.h +++ b/FunctionSpace/TriReferenceSpace.h @@ -4,12 +4,28 @@ #include <string> #include "ReferenceSpace.h" +/** + @class TriReferenceSpace + @brief ReferenceSpace for a Triangle + + This class implements a ReferenceSpace for a Triangle. + */ + class TriReferenceSpace: public ReferenceSpace{ public: TriReferenceSpace(void); virtual ~TriReferenceSpace(void); - std::string toLatex(void) const; + virtual std::string toLatex(void) const; }; +/** + @fn TriReferenceSpace::TriReferenceSpace + Instatiate a new ReferenceSpace for a Triangle + ** + + @fn TriReferenceSpace::~TriReferenceSpace + Deletes this TriReferenceSpace +*/ + #endif -- GitLab