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
Branches
Tags
No related merge requests found
Showing
with 145 additions and 24 deletions
......@@ -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
......@@ -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
......@@ -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;
......
......@@ -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;
......
......@@ -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();
......
......@@ -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
......@@ -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;
......
......@@ -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();
......
......@@ -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;
......
......@@ -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();
......
......@@ -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
......@@ -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);
......
......@@ -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;
}
......
......@@ -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();
......
......@@ -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();
......
......@@ -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
......@@ -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();
......
......@@ -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();
......
......@@ -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();
......
......@@ -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
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment