Skip to content
Snippets Groups Projects
Commit d3841df3 authored by Nicolas Marsic's avatar Nicolas Marsic
Browse files

Doc + Name change: ReferenceSpace::getReferenceSpace() becomes ReferenceSpace::getPermutation()

parent 3c28f8f3
No related branches found
No related tags found
No related merge requests found
Showing
with 145 additions and 24 deletions
...@@ -76,7 +76,7 @@ BasisScalar::getFunction(unsigned int refSpace) const{ ...@@ -76,7 +76,7 @@ BasisScalar::getFunction(unsigned int refSpace) const{
inline inline
const std::vector<const Polynomial*>& const std::vector<const Polynomial*>&
BasisScalar::getFunction(const MElement& element) const{ BasisScalar::getFunction(const MElement& element) const{
return *(*basis)[refSpace->getReferenceSpace(element)]; return *(*basis)[refSpace->getPermutation(element)];
} }
#endif #endif
...@@ -76,7 +76,7 @@ BasisVector::getFunction(unsigned int refSpace) const{ ...@@ -76,7 +76,7 @@ BasisVector::getFunction(unsigned int refSpace) const{
inline inline
const std::vector<const std::vector<Polynomial>*>& const std::vector<const std::vector<Polynomial>*>&
BasisVector::getFunction(const MElement& element) const{ BasisVector::getFunction(const MElement& element) const{
return *(*basis)[refSpace->getReferenceSpace(element)]; return *(*basis)[refSpace->getPermutation(element)];
} }
#endif #endif
...@@ -5,7 +5,7 @@ using namespace std; ...@@ -5,7 +5,7 @@ using namespace std;
CurlBasis::CurlBasis(const BasisVector& other){ CurlBasis::CurlBasis(const BasisVector& other){
// Reference Space // // Reference Space //
refSpace = &other.getReferenceSpace(); refSpace = &other.getReferenceSpace();
nRefSpace = other.getReferenceSpace().getNReferenceSpace(); nRefSpace = other.getReferenceSpace().getNPermutation();
// Set Basis Type // // Set Basis Type //
order = other.getOrder() - 1; order = other.getOrder() - 1;
......
...@@ -5,7 +5,7 @@ using namespace std; ...@@ -5,7 +5,7 @@ using namespace std;
DivBasis::DivBasis(const BasisVector& other){ DivBasis::DivBasis(const BasisVector& other){
// Reference Space // // Reference Space //
refSpace = &other.getReferenceSpace(); refSpace = &other.getReferenceSpace();
nRefSpace = other.getReferenceSpace().getNReferenceSpace(); nRefSpace = other.getReferenceSpace().getNPermutation();
// Set Basis Type // // Set Basis Type //
order = other.getOrder() - 1; order = other.getOrder() - 1;
......
...@@ -8,7 +8,7 @@ EvaluatedBasis(const BasisScalar& basis, ...@@ -8,7 +8,7 @@ EvaluatedBasis(const BasisScalar& basis,
const fullMatrix<double>& point){ const fullMatrix<double>& point){
// Data // // Data //
refSpace = &basis.getReferenceSpace(); refSpace = &basis.getReferenceSpace();
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
scalar = true; scalar = true;
nFunction = basis.getNFunction(); nFunction = basis.getNFunction();
nPoint = point.size1(); nPoint = point.size1();
...@@ -34,7 +34,7 @@ EvaluatedBasis(const BasisVector& basis, ...@@ -34,7 +34,7 @@ EvaluatedBasis(const BasisVector& basis,
const fullMatrix<double>& point){ const fullMatrix<double>& point){
// Data // // Data //
refSpace = &basis.getReferenceSpace(); refSpace = &basis.getReferenceSpace();
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
scalar = false; scalar = false;
nFunction = basis.getNFunction(); nFunction = basis.getNFunction();
nPoint = point.size1(); nPoint = point.size1();
......
...@@ -100,7 +100,7 @@ EvaluatedBasis::getEvaluation(unsigned int refSpace) const{ ...@@ -100,7 +100,7 @@ EvaluatedBasis::getEvaluation(unsigned int refSpace) const{
inline const fullMatrix<double>& inline const fullMatrix<double>&
EvaluatedBasis::getEvaluation(const MElement& element) const{ EvaluatedBasis::getEvaluation(const MElement& element) const{
return *(*eBasis)[refSpace->getReferenceSpace(element)]; return *(*eBasis)[refSpace->getPermutation(element)];
} }
#endif #endif
...@@ -5,7 +5,7 @@ using namespace std; ...@@ -5,7 +5,7 @@ using namespace std;
GradBasis::GradBasis(const BasisScalar& other){ GradBasis::GradBasis(const BasisScalar& other){
// Reference Space // // Reference Space //
refSpace = &other.getReferenceSpace(); refSpace = &other.getReferenceSpace();
nRefSpace = other.getReferenceSpace().getNReferenceSpace(); nRefSpace = other.getReferenceSpace().getNPermutation();
// Set Basis Type // // Set Basis Type //
order = other.getOrder() - 1; order = other.getOrder() - 1;
......
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
LineEdgeBasis::LineEdgeBasis(unsigned int order){ LineEdgeBasis::LineEdgeBasis(unsigned int order){
// Reference Space // // Reference Space //
refSpace = new LineReferenceSpace; refSpace = new LineReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
LineNedelecBasis::LineNedelecBasis(void){ LineNedelecBasis::LineNedelecBasis(void){
// Reference Space // // Reference Space //
refSpace = new LineReferenceSpace; refSpace = new LineReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
// Set Basis Type // // Set Basis Type //
order = 1; order = 1;
......
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
LineNodeBasis::LineNodeBasis(unsigned int order){ LineNodeBasis::LineNodeBasis(unsigned int order){
// Reference Space // // Reference Space //
refSpace = new LineReferenceSpace; refSpace = new LineReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -4,12 +4,28 @@ ...@@ -4,12 +4,28 @@
#include <string> #include <string>
#include "ReferenceSpace.h" #include "ReferenceSpace.h"
/**
@class LineReferenceSpace
@brief ReferenceSpace for a Line
This class implements a ReferenceSpace for a Line.
*/
class LineReferenceSpace: public ReferenceSpace{ class LineReferenceSpace: public ReferenceSpace{
public: public:
LineReferenceSpace(void); LineReferenceSpace(void);
virtual ~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 #endif
...@@ -222,7 +222,7 @@ inOrder(unsigned int permutation, ...@@ -222,7 +222,7 @@ inOrder(unsigned int permutation,
return inorder; return inorder;
} }
unsigned int ReferenceSpace::getReferenceSpace(const MElement& elem) const{ unsigned int ReferenceSpace::getPermutation(const MElement& elem) const{
// Const_Cast // // Const_Cast //
MElement& element = const_cast<MElement&>(elem); MElement& element = const_cast<MElement&>(elem);
......
...@@ -6,8 +6,18 @@ ...@@ -6,8 +6,18 @@
#include <string> #include <string>
#include "MElement.h" #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{ class ReferenceSpace{
protected: private:
// Permuation Tree Structure // // Permuation Tree Structure //
struct node_s{ struct node_s{
unsigned int depth; // Depth unsigned int depth; // Depth
...@@ -23,6 +33,7 @@ class ReferenceSpace{ ...@@ -23,6 +33,7 @@ class ReferenceSpace{
typedef node_s node; typedef node_s node;
protected:
// Permutation (Tree + Leaf) // // Permutation (Tree + Leaf) //
unsigned int nextLeafId; unsigned int nextLeafId;
unsigned int nVertex; unsigned int nVertex;
...@@ -45,9 +56,9 @@ class ReferenceSpace{ ...@@ -45,9 +56,9 @@ class ReferenceSpace{
public: public:
virtual ~ReferenceSpace(void); 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>*>*>& std::vector<const std::vector<const std::vector<unsigned int>*>*>&
getAllEdge(void) const; getAllEdge(void) const;
...@@ -57,6 +68,8 @@ class ReferenceSpace{ ...@@ -57,6 +68,8 @@ class ReferenceSpace{
std::string toString(void) const; std::string toString(void) const;
virtual std::string toLatex(void) const = 0;
protected: protected:
ReferenceSpace(void); ReferenceSpace(void);
...@@ -86,13 +99,73 @@ class ReferenceSpace{ ...@@ -86,13 +99,73 @@ class ReferenceSpace{
std::string toString(const node* node) const; 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 Functions //
////////////////////// //////////////////////
inline inline
unsigned int unsigned int
ReferenceSpace::getNReferenceSpace(void) const{ ReferenceSpace::getNPermutation(void) const{
return nPerm; return nPerm;
} }
......
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
TetEdgeBasis::TetEdgeBasis(unsigned int order){ TetEdgeBasis::TetEdgeBasis(unsigned int order){
// Reference Space // // Reference Space //
refSpace = new TetReferenceSpace; refSpace = new TetReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
TetNodeBasis::TetNodeBasis(unsigned int order){ TetNodeBasis::TetNodeBasis(unsigned int order){
// Reference Space // // Reference Space //
refSpace = new TetReferenceSpace; refSpace = new TetReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -4,12 +4,28 @@ ...@@ -4,12 +4,28 @@
#include <string> #include <string>
#include "ReferenceSpace.h" #include "ReferenceSpace.h"
/**
@class TetReferenceSpace
@brief ReferenceSpace for Tetrahedron
This class implements a ReferenceSpace for a Tetrahedron.
*/
class TetReferenceSpace: public ReferenceSpace{ class TetReferenceSpace: public ReferenceSpace{
public: public:
TetReferenceSpace(void); TetReferenceSpace(void);
virtual ~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 #endif
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
TriEdgeBasis::TriEdgeBasis(unsigned int order){ TriEdgeBasis::TriEdgeBasis(unsigned int order){
// Reference Space // // Reference Space //
refSpace = new TriReferenceSpace; refSpace = new TriReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -6,7 +6,7 @@ using namespace std; ...@@ -6,7 +6,7 @@ using namespace std;
TriNedelecBasis::TriNedelecBasis(void){ TriNedelecBasis::TriNedelecBasis(void){
// Reference Space // // Reference Space //
refSpace = new TriReferenceSpace; refSpace = new TriReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -7,7 +7,7 @@ using namespace std; ...@@ -7,7 +7,7 @@ using namespace std;
TriNodeBasis::TriNodeBasis(unsigned int order){ TriNodeBasis::TriNodeBasis(unsigned int order){
// Reference Space // // Reference Space //
refSpace = new TriReferenceSpace; refSpace = new TriReferenceSpace;
nRefSpace = refSpace->getNReferenceSpace(); nRefSpace = refSpace->getNPermutation();
const vector<const vector<const vector<unsigned int>*>*>& const vector<const vector<const vector<unsigned int>*>*>&
edgeV = refSpace->getAllEdge(); edgeV = refSpace->getAllEdge();
......
...@@ -4,12 +4,28 @@ ...@@ -4,12 +4,28 @@
#include <string> #include <string>
#include "ReferenceSpace.h" #include "ReferenceSpace.h"
/**
@class TriReferenceSpace
@brief ReferenceSpace for a Triangle
This class implements a ReferenceSpace for a Triangle.
*/
class TriReferenceSpace: public ReferenceSpace{ class TriReferenceSpace: public ReferenceSpace{
public: public:
TriReferenceSpace(void); TriReferenceSpace(void);
virtual ~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 #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment