diff --git a/FunctionSpace/Basis.h b/FunctionSpace/Basis.h index 9c0ceb0e98e85f5c9b100725cc071336def3fafe..8cbd05deea20eb26a8971886779d669a080ca1b9 100644 --- a/FunctionSpace/Basis.h +++ b/FunctionSpace/Basis.h @@ -1,6 +1,7 @@ #ifndef _BASIS_H_ #define _BASIS_H_ +#include <string> #include "MElement.h" #include "ReferenceSpace.h" @@ -49,16 +50,16 @@ class Basis{ bool scalar; bool local; - unsigned int order; - unsigned int type; - unsigned int dim; + size_t order; + size_t type; + size_t dim; - unsigned int nVertex; - unsigned int nEdge; - unsigned int nFace; - unsigned int nCell; + size_t nVertex; + size_t nEdge; + size_t nFace; + size_t nCell; - unsigned int nFunction; + size_t nFunction; public: // Destructor // @@ -69,30 +70,27 @@ class Basis{ bool isLocal(void) const; // Type of Basis // - unsigned int getOrder(void) const; - unsigned int getType(void) const; - unsigned int getDim(void) const; + size_t getOrder(void) const; + size_t getType(void) const; + size_t getDim(void) const; // Number of Functions // - unsigned int getNVertexBased(void) const; - unsigned int getNEdgeBased(void) const; - unsigned int getNFaceBased(void) const; - unsigned int getNCellBased(void) const; - unsigned int getNFunction(void) const; + size_t getNVertexBased(void) const; + size_t getNEdgeBased(void) const; + size_t getNFaceBased(void) const; + size_t getNCellBased(void) const; + size_t getNFunction(void) const; // Reference Element // const ReferenceSpace& getReferenceSpace(void) const; - virtual unsigned int getNOrientation(void) const = 0; - virtual unsigned int getOrientation(const MElement& element) const = 0; - // Direct Access to Evaluated Functions // virtual void getFunctions(fullMatrix<double>& retValues, const MElement& element, double u, double v, double w) const = 0; virtual void getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const = 0; // Precompute Functions // @@ -107,10 +105,10 @@ class Basis{ getPreEvaluatedDerivatives(const MElement& element) const = 0; virtual const fullMatrix<double>& - getPreEvaluatedFunctions(unsigned int orientation) const = 0; + getPreEvaluatedFunctions(size_t orientation) const = 0; virtual const fullMatrix<double>& - getPreEvaluatedDerivatives(unsigned int orientation) const = 0; + getPreEvaluatedDerivatives(size_t orientation) const = 0; virtual std::string toString(void) const = 0; @@ -212,7 +210,7 @@ class Basis{ of the given element ** - @fn Basis::getFunctions(unsigned int, double, double, double) const + @fn Basis::getFunctions(size_t, double, double, double) const @param orientation A natural number defining the reference space @em orientation @param u A @c u coordinate in the reference space of this Basis @param v A @c v coordinate in the reference space of this Basis @@ -254,7 +252,7 @@ class Basis{ (does it exists -- discontinous field nope ?) ? ** - @fn Basis::getPreEvaluatedFunctions(unsigned int) const + @fn Basis::getPreEvaluatedFunctions(size_t) const @param orientation A natural number defining the reference space @em orientation @return Returns a Matrix with the PreEvaluated basis functions (see Basis::preEvaluateFunctions()), with the given @em orientation @@ -264,7 +262,7 @@ class Basis{ an Exception is thrown ** - @fn Basis::getPreEvaluatedDerivatives(unsigned int) const + @fn Basis::getPreEvaluatedDerivatives(size_t) const @param orientation A natural number defining the reference space @em orientation @return Returns a Matrix with the PreEvaluated basis functions @em derivatives (see Basis::preEvaluateDerivatives()), with the given @em orientation @@ -294,35 +292,35 @@ inline bool Basis::isLocal(void) const{ return local; } -inline unsigned int Basis::getOrder(void) const{ +inline size_t Basis::getOrder(void) const{ return order; } -inline unsigned int Basis::getType(void) const{ +inline size_t Basis::getType(void) const{ return type; } -inline unsigned int Basis::getDim(void) const{ +inline size_t Basis::getDim(void) const{ return dim; } -inline unsigned int Basis::getNVertexBased(void) const{ +inline size_t Basis::getNVertexBased(void) const{ return nVertex; } -inline unsigned int Basis::getNEdgeBased(void) const{ +inline size_t Basis::getNEdgeBased(void) const{ return nEdge; } -inline unsigned int Basis::getNFaceBased(void) const{ +inline size_t Basis::getNFaceBased(void) const{ return nFace; } -inline unsigned int Basis::getNCellBased(void) const{ +inline size_t Basis::getNCellBased(void) const{ return nCell; } -inline unsigned int Basis::getNFunction(void) const{ +inline size_t Basis::getNFunction(void) const{ return nFunction; } diff --git a/FunctionSpace/BasisGenerator.cpp b/FunctionSpace/BasisGenerator.cpp index 90eda2048f1742c42811cc0cb3f8243c9da78ccf..75f7f2c0747a02dad1ca7558a14568c3c01b1f6f 100644 --- a/FunctionSpace/BasisGenerator.cpp +++ b/FunctionSpace/BasisGenerator.cpp @@ -32,9 +32,9 @@ BasisGenerator::BasisGenerator(void){ BasisGenerator::~BasisGenerator(void){ } -BasisLocal* BasisGenerator::generate(unsigned int elementType, - unsigned int basisType, - unsigned int order, +BasisLocal* BasisGenerator::generate(size_t elementType, + size_t basisType, + size_t order, std::string family){ if(!family.compare(std::string("hierarchical"))) @@ -47,9 +47,9 @@ BasisLocal* BasisGenerator::generate(unsigned int elementType, throw Exception("Unknwown Basis Family: %s", family.c_str()); } -BasisLocal* BasisGenerator::generateHierarchical(unsigned int elementType, - unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::generateHierarchical(size_t elementType, + size_t basisType, + size_t order){ switch(elementType){ case TYPE_LIN: return linHierarchicalGen(basisType, order); case TYPE_TRI: return triHierarchicalGen(basisType, order); @@ -62,9 +62,9 @@ BasisLocal* BasisGenerator::generateHierarchical(unsigned int elementType, } } -BasisLocal* BasisGenerator::generateLagrange(unsigned int elementType, - unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::generateLagrange(size_t elementType, + size_t basisType, + size_t order){ if(basisType != 0) throw Exception("Cannot Have a %d-Form Lagrange Basis (0-Form only)", @@ -82,75 +82,75 @@ BasisLocal* BasisGenerator::generateLagrange(unsigned int elementType, } } -BasisLocal* BasisGenerator::linHierarchicalGen(unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::linHierarchicalGen(size_t basisType, + size_t order){ switch(basisType){ - case 0: return new LineNodeBasis(order); - case 1: + case 0: return new LineNodeBasis(order); + case 1: if (order == 0) return new LineNedelecBasis(); else return new LineEdgeBasis(order); - case 2: throw Exception("2-form not implemented on Lines"); - case 3: throw Exception("3-form not implemented on Lines"); + case 2: throw Exception("2-form not implemented on Lines"); + case 3: throw Exception("3-form not implemented on Lines"); default: throw Exception("There is no %d-form", basisType); } } -BasisLocal* BasisGenerator::triHierarchicalGen(unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::triHierarchicalGen(size_t basisType, + size_t order){ switch(basisType){ - case 0: return new TriNodeBasis(order); - case 1: + case 0: return new TriNodeBasis(order); + case 1: if (order == 0) return new TriNedelecBasis(); else return new TriEdgeBasis(order); - case 2: throw Exception("2-form not implemented on Triangles"); - case 3: throw Exception("3-form not implemented on Triangles"); + case 2: throw Exception("2-form not implemented on Triangles"); + case 3: throw Exception("3-form not implemented on Triangles"); default: throw Exception("There is no %d-form", basisType); } } -BasisLocal* BasisGenerator::quaHierarchicalGen(unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::quaHierarchicalGen(size_t basisType, + size_t order){ switch(basisType){ - case 0: return new QuadNodeBasis(order); - case 1: + case 0: return new QuadNodeBasis(order); + case 1: if (order == 0) return new QuadNedelecBasis(); else return new QuadEdgeBasis(order); - case 2: throw Exception("2-form not implemented on Quads"); - case 3: throw Exception("3-form not implemented on Quads"); + case 2: throw Exception("2-form not implemented on Quads"); + case 3: throw Exception("3-form not implemented on Quads"); default: throw Exception("There is no %d-form", basisType); } } -BasisLocal* BasisGenerator::tetHierarchicalGen(unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::tetHierarchicalGen(size_t basisType, + size_t order){ switch(basisType){ - case 0: return new TetNodeBasis(order); - case 1: + case 0: return new TetNodeBasis(order); + case 1: if (order == 0) return new TetNedelecBasis(); else return new TetEdgeBasis(order); - case 2: throw Exception("2-form not implemented on Tetrahedrons"); - case 3: throw Exception("3-form not implemented on Tetrahedrons"); + case 2: throw Exception("2-form not implemented on Tetrahedrons"); + case 3: throw Exception("3-form not implemented on Tetrahedrons"); default: throw Exception("There is no %d-form", basisType); } } -BasisLocal* BasisGenerator::hexHierarchicalGen(unsigned int basisType, - unsigned int order){ +BasisLocal* BasisGenerator::hexHierarchicalGen(size_t basisType, + size_t order){ switch(basisType){ - //case 0: return new HexNodeBasis(order); - //case 1: return new HexEdgeBasis(order); - case 0: throw Exception("0-form not implemented on Hexs"); - case 1: throw Exception("1-form not implemented on Hexs"); - case 2: throw Exception("2-form not implemented on Hexs"); - case 3: throw Exception("3-form not implemented on Hexs"); + //case 0: return new HexNodeBasis(order); + //case 1: return new HexEdgeBasis(order); + case 0: throw Exception("0-form not implemented on Hexs"); + case 1: throw Exception("1-form not implemented on Hexs"); + case 2: throw Exception("2-form not implemented on Hexs"); + case 3: throw Exception("3-form not implemented on Hexs"); default: throw Exception("There is no %d-form", basisType); } diff --git a/FunctionSpace/BasisGenerator.h b/FunctionSpace/BasisGenerator.h index 84508593340d23b106e32067c67d89443a3f4054..fc1e4d986fe5b854cfc629e52f2b3ef7a0d0d91f 100644 --- a/FunctionSpace/BasisGenerator.h +++ b/FunctionSpace/BasisGenerator.h @@ -21,29 +21,29 @@ class BasisGenerator{ BasisGenerator(void); ~BasisGenerator(void); - static BasisLocal* generate(unsigned int elementType, - unsigned int basisType, - unsigned int order, - std::string family); + static BasisLocal* generate(size_t elementType, + size_t basisType, + size_t order, + std::string family); - static BasisLocal* generate(unsigned int elementType, - unsigned int basisType, - unsigned int order); + static BasisLocal* generate(size_t elementType, + size_t basisType, + size_t order); - static BasisLocal* linHierarchicalGen(unsigned int basisType, unsigned int order); - static BasisLocal* triHierarchicalGen(unsigned int basisType, unsigned int order); - static BasisLocal* quaHierarchicalGen(unsigned int basisType, unsigned int order); - static BasisLocal* tetHierarchicalGen(unsigned int basisType, unsigned int order); - static BasisLocal* hexHierarchicalGen(unsigned int basisType, unsigned int order); + static BasisLocal* linHierarchicalGen(size_t basisType, size_t order); + static BasisLocal* triHierarchicalGen(size_t basisType, size_t order); + static BasisLocal* quaHierarchicalGen(size_t basisType, size_t order); + static BasisLocal* tetHierarchicalGen(size_t basisType, size_t order); + static BasisLocal* hexHierarchicalGen(size_t basisType, size_t order); private: - static BasisLocal* generateHierarchical(unsigned int elementType, - unsigned int basisType, - unsigned int order); + static BasisLocal* generateHierarchical(size_t elementType, + size_t basisType, + size_t order); - static BasisLocal* generateLagrange(unsigned int elementType, - unsigned int basisType, - unsigned int order); + static BasisLocal* generateLagrange(size_t elementType, + size_t basisType, + size_t order); }; @@ -60,7 +60,7 @@ class BasisGenerator{ Deletes this BasisGenerator ** - @fn BasisGenerator::generate(unsigned int, unsigned int, unsigned int, std::string) + @fn BasisGenerator::generate(size_t, size_t, size_t, std::string) @param elementType The type of the element, on which the requested Basis will be created @param basisType The Basis type @@ -93,7 +93,7 @@ class BasisGenerator{ @li @c lagrange for Lagrange's Basis Functions ** - @fn BasisGenerator::generate(unsigned int, unsigned int, unsigned int) + @fn BasisGenerator::generate(size_t, size_t, size_t) @param elementType The type of the element, on which the requested Basis will be created @param basisType The Basis type @@ -206,14 +206,14 @@ class BasisGenerator{ // Inline Functions // ////////////////////// -inline BasisLocal* BasisGenerator::generate(unsigned int elementType, - unsigned int basisType, - unsigned int order){ +inline BasisLocal* BasisGenerator::generate(size_t elementType, + size_t basisType, + size_t order){ return BasisGenerator::generate(elementType, - basisType, - order, - "hierarchical"); + basisType, + order, + "hierarchical"); } #endif diff --git a/FunctionSpace/BasisHierarchical0From.cpp b/FunctionSpace/BasisHierarchical0Form.cpp similarity index 66% rename from FunctionSpace/BasisHierarchical0From.cpp rename to FunctionSpace/BasisHierarchical0Form.cpp index 7f5a1597f5b5f5e17aa1890f13edd99cae3e178e..e387b3a318da8b24c0c32c985866ec01470b0fb2 100644 --- a/FunctionSpace/BasisHierarchical0From.cpp +++ b/FunctionSpace/BasisHierarchical0Form.cpp @@ -1,10 +1,10 @@ #include <sstream> #include "Exception.h" -#include "BasisHierarchical0From.h" +#include "BasisHierarchical0Form.h" using namespace std; -BasisHierarchical0From::BasisHierarchical0From(void){ +BasisHierarchical0Form::BasisHierarchical0Form(void){ // Scalar Basis ? // scalar = true; @@ -20,11 +20,13 @@ BasisHierarchical0From::BasisHierarchical0From(void){ preEvaluatedGradFunction = NULL; } -BasisHierarchical0From::~BasisHierarchical0From(void){ +BasisHierarchical0Form::~BasisHierarchical0Form(void){ // Grad Basis // + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + if(hasGrad){ - for(unsigned int i = 0; i < nRefSpace; i++){ - for(unsigned int j = 0; j < nFunction; j++) + for(size_t i = 0; i < nRefSpace; i++){ + for(size_t j = 0; j < nFunction; j++) delete grad[i][j]; delete[] grad[i]; @@ -35,75 +37,67 @@ BasisHierarchical0From::~BasisHierarchical0From(void){ // PreEvaluation // if(preEvaluated){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedFunction[i]; delete[] preEvaluatedFunction; } if(preEvaluatedGrad){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedGradFunction[i]; delete[] preEvaluatedGradFunction; } } -unsigned int BasisHierarchical0From:: -getNOrientation(void) const{ - return refSpace->getNReferenceSpace(); -} - -unsigned int BasisHierarchical0From:: -getOrientation(const MElement& element) const{ - return refSpace->getReferenceSpace(element); -} - -void BasisHierarchical0From:: +void BasisHierarchical0Form:: getFunctions(fullMatrix<double>& retValues, const MElement& element, double u, double v, double w) const{ // Define Orientation // - unsigned int orientation = refSpace->getReferenceSpace(element); + const size_t orientation = refSpace->getReferenceSpace(element); // Fill Matrix // - for(unsigned int i = 0; i < nFunction; i++) + for(size_t i = 0; i < nFunction; i++) retValues(i, 0) = basis[orientation][i]->at(u, v, w); } -void BasisHierarchical0From:: +void BasisHierarchical0Form:: getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const{ // Fill Matrix // - for(unsigned int i = 0; i < nFunction; i++) + for(size_t i = 0; i < nFunction; i++) retValues(i, 0) = basis[orientation][i]->at(u, v, w); } -void BasisHierarchical0From:: +void BasisHierarchical0Form:: preEvaluateFunctions(const fullMatrix<double>& point) const{ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Delete if older // if(preEvaluated){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedFunction[i]; delete[] preEvaluatedFunction; } // Alloc // - const unsigned int nPoint = point.size1(); + const size_t nPoint = point.size1(); preEvaluatedFunction = new fullMatrix<double>*[nRefSpace]; - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) preEvaluatedFunction[i] = new fullMatrix<double>(nFunction, nPoint); // Fill Matrix // - for(unsigned int i = 0; i < nRefSpace; i++) - for(unsigned int j = 0; j < nFunction; j++) - for(unsigned int k = 0; k < nPoint; k++) + for(size_t i = 0; i < nRefSpace; i++) + for(size_t j = 0; j < nFunction; j++) + for(size_t k = 0; k < nPoint; k++) (*preEvaluatedFunction[i])(j, k) = basis[i][j]->at(point(k, 0), point(k, 1), @@ -113,35 +107,37 @@ preEvaluateFunctions(const fullMatrix<double>& point) const{ preEvaluated = true; } -void BasisHierarchical0From:: +void BasisHierarchical0Form:: preEvaluateDerivatives(const fullMatrix<double>& point) const{ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Build Grad // if(!hasGrad) getGrad(); // Delete if older // if(preEvaluatedGrad){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedGradFunction[i]; delete[] preEvaluatedGradFunction; } // Alloc // - const unsigned int nPoint = point.size1(); - const unsigned int nPoint3 = nPoint * 3; + const size_t nPoint = point.size1(); + const size_t nPoint3 = nPoint * 3; preEvaluatedGradFunction = new fullMatrix<double>*[nRefSpace]; - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) preEvaluatedGradFunction[i] = new fullMatrix<double>(nFunction, nPoint3); // Fill Matrix // fullVector<double> tmp(3); - for(unsigned int i = 0; i < nRefSpace; i++){ - for(unsigned int j = 0; j < nFunction; j++){ - for(unsigned int k = 0; k < nPoint; k++){ + for(size_t i = 0; i < nRefSpace; i++){ + for(size_t j = 0; j < nFunction; j++){ + for(size_t k = 0; k < nPoint; k++){ tmp = Polynomial::at(*grad[i][j], point(k, 0), point(k, 1), @@ -158,42 +154,44 @@ preEvaluateDerivatives(const fullMatrix<double>& point) const{ preEvaluatedGrad = true; } -const fullMatrix<double>& BasisHierarchical0From:: +const fullMatrix<double>& BasisHierarchical0Form:: getPreEvaluatedFunctions(const MElement& element) const{ return getPreEvaluatedFunctions(refSpace->getReferenceSpace(element)); } -const fullMatrix<double>& BasisHierarchical0From:: +const fullMatrix<double>& BasisHierarchical0Form:: getPreEvaluatedDerivatives(const MElement& element) const{ return getPreEvaluatedDerivatives(refSpace->getReferenceSpace(element)); } -const fullMatrix<double>& BasisHierarchical0From:: -getPreEvaluatedFunctions(unsigned int orientation) const{ +const fullMatrix<double>& BasisHierarchical0Form:: +getPreEvaluatedFunctions(size_t orientation) const{ if(!preEvaluated) throw Exception("getPreEvaluatedFunction: function has not been preEvaluated"); return *preEvaluatedFunction[orientation]; } -const fullMatrix<double>& BasisHierarchical0From:: -getPreEvaluatedDerivatives(unsigned int orientation) const{ +const fullMatrix<double>& BasisHierarchical0Form:: +getPreEvaluatedDerivatives(size_t orientation) const{ if(!preEvaluatedGrad) throw Exception("getPreEvaluatedDerivative: gradient has not been preEvaluated"); return *preEvaluatedGradFunction[orientation]; } -void BasisHierarchical0From::getGrad(void) const{ +void BasisHierarchical0Form::getGrad(void) const{ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Alloc // grad = new vector<Polynomial>**[nRefSpace]; - for(unsigned int s = 0; s < nRefSpace; s++) + for(size_t s = 0; s < nRefSpace; s++) grad[s] = new vector<Polynomial>*[nFunction]; // Grad // - for(unsigned int s = 0; s < nRefSpace; s++) - for(unsigned int f = 0 ; f < nFunction; f++) + for(size_t s = 0; s < nRefSpace; s++) + for(size_t f = 0 ; f < nFunction; f++) grad[s][f] = new vector<Polynomial>(basis[s][f]->gradient()); @@ -201,10 +199,10 @@ void BasisHierarchical0From::getGrad(void) const{ hasGrad = true; } -string BasisHierarchical0From::toString(void) const{ +string BasisHierarchical0Form::toString(void) const{ stringstream stream; - unsigned int i = 0; - const unsigned int refSpace = 0; + size_t i = 0; + const size_t refSpace = 0; stream << "Vertex Based:" << endl; for(; i < nVertex; i++) diff --git a/FunctionSpace/BasisHierarchical0From.h b/FunctionSpace/BasisHierarchical0Form.h similarity index 56% rename from FunctionSpace/BasisHierarchical0From.h rename to FunctionSpace/BasisHierarchical0Form.h index b2ee85c0edf9fbfdb6d05a87cfc33421ba41c763..ecdc6627a7cb1490dc1ec6cde8d8faec7431c71a 100644 --- a/FunctionSpace/BasisHierarchical0From.h +++ b/FunctionSpace/BasisHierarchical0Form.h @@ -1,23 +1,18 @@ -#ifndef _BASISHIERARCHICAL0FROM_H_ -#define _BASISHIERARCHICAL0FROM_H_ +#ifndef _BASISHIERARCHICAL0FORM_H_ +#define _BASISHIERARCHICAL0FORM_H_ -#include <string> #include "BasisLocal.h" #include "Polynomial.h" -#include "ReferenceSpace.h" /** - @interface BasisHierarchical0From - @brief Interface for Hierarchical 0-From Local Basis + @interface BasisHierarchical0Form + @brief Interface for Hierarchical 0-Form Local Basis - This is an interface for Hierarchical 0-From Local Basis.@n + This is an interface for Hierarchical 0-Form Local Basis.@n */ -class BasisHierarchical0From: public BasisLocal{ +class BasisHierarchical0Form: public BasisLocal{ protected: - // Orientation // - unsigned int nRefSpace; - // Basis // Polynomial*** basis; @@ -33,17 +28,14 @@ class BasisHierarchical0From: public BasisLocal{ mutable fullMatrix<double>** preEvaluatedGradFunction; public: - virtual ~BasisHierarchical0From(void); - - virtual unsigned int getNOrientation(void) const; - virtual unsigned int getOrientation(const MElement& element) const; + virtual ~BasisHierarchical0Form(void); virtual void getFunctions(fullMatrix<double>& retValues, const MElement& element, double u, double v, double w) const; virtual void getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const; virtual void preEvaluateFunctions(const fullMatrix<double>& point) const; @@ -56,15 +48,15 @@ class BasisHierarchical0From: public BasisLocal{ getPreEvaluatedDerivatives(const MElement& element) const; virtual const fullMatrix<double>& - getPreEvaluatedFunctions(unsigned int orientation) const; + getPreEvaluatedFunctions(size_t orientation) const; virtual const fullMatrix<double>& - getPreEvaluatedDerivatives(unsigned int orientation) const; + getPreEvaluatedDerivatives(size_t orientation) const; std::string toString(void) const; protected: - BasisHierarchical0From(void); + BasisHierarchical0Form(void); private: void getGrad(void) const; @@ -72,20 +64,20 @@ class BasisHierarchical0From: public BasisLocal{ /** @internal - @fn BasisHierarchical0From::BasisHierarchical0From + @fn BasisHierarchical0Form::BasisHierarchical0Form - Instanciates an new BasisHierarchical0From + Instanciates an new BasisHierarchical0Form @endinternal ** - @fn BasisHierarchical0From::~BasisHierarchical0From + @fn BasisHierarchical0Form::~BasisHierarchical0Form - Deletes this BasisHierarchical0From + Deletes this BasisHierarchical0Form ** - @fn BasisHierarchical0From::toString + @fn BasisHierarchical0Form::toString @return Returns a string describing this - BasisHierarchical0From + BasisHierarchical0Form */ #endif diff --git a/FunctionSpace/BasisHierarchical1From.cpp b/FunctionSpace/BasisHierarchical1Form.cpp similarity index 71% rename from FunctionSpace/BasisHierarchical1From.cpp rename to FunctionSpace/BasisHierarchical1Form.cpp index ea8e5442e1659fdb1cf4b9ab6bc710ddead33ffa..8c197e826b5013878ae7407927678294ccfc4e1d 100644 --- a/FunctionSpace/BasisHierarchical1From.cpp +++ b/FunctionSpace/BasisHierarchical1Form.cpp @@ -1,10 +1,10 @@ #include <sstream> #include "Exception.h" -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" using namespace std; -BasisHierarchical1From::BasisHierarchical1From(void){ +BasisHierarchical1Form::BasisHierarchical1Form(void){ // Scalar Basis ?// scalar = false; @@ -20,11 +20,13 @@ BasisHierarchical1From::BasisHierarchical1From(void){ preEvaluatedCurlFunction = NULL; } -BasisHierarchical1From::~BasisHierarchical1From(void){ +BasisHierarchical1Form::~BasisHierarchical1Form(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Curl Basis // if(hasCurl){ - for(unsigned int i = 0; i < nRefSpace; i++){ - for(unsigned int j = 0; j < nFunction; j++) + for(size_t i = 0; i < nRefSpace; i++){ + for(size_t j = 0; j < nFunction; j++) delete curl[i][j]; delete[] curl[i]; @@ -35,40 +37,30 @@ BasisHierarchical1From::~BasisHierarchical1From(void){ // PreEvaluation // if(preEvaluated){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedFunction[i]; delete[] preEvaluatedFunction; } if(preEvaluatedCurl){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedCurlFunction[i]; delete[] preEvaluatedCurlFunction; } } -unsigned int BasisHierarchical1From:: -getNOrientation(void) const{ - return refSpace->getNReferenceSpace(); -} - -unsigned int BasisHierarchical1From:: -getOrientation(const MElement& element) const{ - return refSpace->getReferenceSpace(element); -} - -void BasisHierarchical1From:: +void BasisHierarchical1Form:: getFunctions(fullMatrix<double>& retValues, const MElement& element, double u, double v, double w) const{ // Define Orientation // - unsigned int orientation = refSpace->getReferenceSpace(element); + size_t orientation = refSpace->getReferenceSpace(element); // Fill Vector // - for(unsigned int i = 0; i < nFunction; i++){ + for(size_t i = 0; i < nFunction; i++){ fullVector<double> eval = Polynomial::at(*basis[orientation][i], u, v, w); @@ -78,13 +70,13 @@ getFunctions(fullMatrix<double>& retValues, } } -void BasisHierarchical1From:: +void BasisHierarchical1Form:: getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const{ // Fill Vector // - for(unsigned int i = 0; i < nFunction; i++){ + for(size_t i = 0; i < nFunction; i++){ fullVector<double> eval = Polynomial::at(*basis[orientation][i], u, v, w); @@ -94,31 +86,33 @@ getFunctions(fullMatrix<double>& retValues, } } -void BasisHierarchical1From:: +void BasisHierarchical1Form:: preEvaluateFunctions(const fullMatrix<double>& point) const{ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Delete if older // if(preEvaluated){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedFunction[i]; delete[] preEvaluatedFunction; } // Alloc // - const unsigned int nPoint = point.size1(); - const unsigned int nPoint3 = nPoint * 3; + const size_t nPoint = point.size1(); + const size_t nPoint3 = nPoint * 3; preEvaluatedFunction = new fullMatrix<double>*[nRefSpace]; - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) preEvaluatedFunction[i] = new fullMatrix<double>(nFunction, nPoint3); // Fill Matrix // fullVector<double> tmp(3); - for(unsigned int i = 0; i < nRefSpace; i++){ - for(unsigned int j = 0; j < nFunction; j++){ - for(unsigned int k = 0; k < nPoint; k++){ + for(size_t i = 0; i < nRefSpace; i++){ + for(size_t j = 0; j < nFunction; j++){ + for(size_t k = 0; k < nPoint; k++){ tmp = Polynomial::at(*basis[i][j], point(k, 0), point(k, 1), @@ -135,35 +129,37 @@ preEvaluateFunctions(const fullMatrix<double>& point) const{ preEvaluated = true; } -void BasisHierarchical1From:: +void BasisHierarchical1Form:: preEvaluateDerivatives(const fullMatrix<double>& point) const{ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Build Curl // if(!hasCurl) getCurl(); // Delete if older // if(preEvaluatedCurl){ - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) delete preEvaluatedCurlFunction[i]; delete[] preEvaluatedCurlFunction; } // Alloc // - const unsigned int nPoint = point.size1(); - const unsigned int nPoint3 = nPoint * 3; + const size_t nPoint = point.size1(); + const size_t nPoint3 = nPoint * 3; preEvaluatedCurlFunction = new fullMatrix<double>*[nRefSpace]; - for(unsigned int i = 0; i < nRefSpace; i++) + for(size_t i = 0; i < nRefSpace; i++) preEvaluatedCurlFunction[i] = new fullMatrix<double>(nFunction, nPoint3); // Fill Matrix // fullVector<double> tmp(3); - for(unsigned int i = 0; i < nRefSpace; i++){ - for(unsigned int j = 0; j < nFunction; j++){ - for(unsigned int k = 0; k < nPoint; k++){ + for(size_t i = 0; i < nRefSpace; i++){ + for(size_t j = 0; j < nFunction; j++){ + for(size_t k = 0; k < nPoint; k++){ tmp = Polynomial::at(*curl[i][j], point(k, 0), point(k, 1), @@ -180,42 +176,44 @@ preEvaluateDerivatives(const fullMatrix<double>& point) const{ preEvaluatedCurl = true; } -const fullMatrix<double>& BasisHierarchical1From:: +const fullMatrix<double>& BasisHierarchical1Form:: getPreEvaluatedFunctions(const MElement& element) const{ return getPreEvaluatedFunctions(refSpace->getReferenceSpace(element)); } -const fullMatrix<double>& BasisHierarchical1From:: +const fullMatrix<double>& BasisHierarchical1Form:: getPreEvaluatedDerivatives(const MElement& element) const{ return getPreEvaluatedDerivatives(refSpace->getReferenceSpace(element)); } -const fullMatrix<double>& BasisHierarchical1From:: -getPreEvaluatedFunctions(unsigned int orientation) const{ +const fullMatrix<double>& BasisHierarchical1Form:: +getPreEvaluatedFunctions(size_t orientation) const{ if(!preEvaluated) throw Exception("getPreEvaluatedFunction: function has not been preEvaluated"); return *preEvaluatedFunction[orientation]; } -const fullMatrix<double>& BasisHierarchical1From:: -getPreEvaluatedDerivatives(unsigned int orientation) const{ +const fullMatrix<double>& BasisHierarchical1Form:: +getPreEvaluatedDerivatives(size_t orientation) const{ if(!preEvaluatedCurl) throw Exception("getPreEvaluatedDerivative: curl has not been preEvaluated"); return *preEvaluatedCurlFunction[orientation]; } -void BasisHierarchical1From::getCurl(void) const{ +void BasisHierarchical1Form::getCurl(void) const{ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // Alloc // curl = new vector<Polynomial>**[nRefSpace]; - for(unsigned int s = 0; s < nRefSpace; s++) + for(size_t s = 0; s < nRefSpace; s++) curl[s] = new vector<Polynomial>*[nFunction]; // Curl // - for(unsigned int s = 0; s < nRefSpace; s++) - for(unsigned int f = 0 ; f < nFunction; f++) + for(size_t s = 0; s < nRefSpace; s++) + for(size_t f = 0 ; f < nFunction; f++) curl[s][f] = new vector<Polynomial>(Polynomial::curl(*basis[s][f])); @@ -223,10 +221,10 @@ void BasisHierarchical1From::getCurl(void) const{ hasCurl = true; } -string BasisHierarchical1From::toString(void) const{ +string BasisHierarchical1Form::toString(void) const{ stringstream stream; - unsigned int i = 0; - const unsigned int refSpace = 0; + size_t i = 0; + const size_t refSpace = 0; stream << "Vertex Based:" << endl; for(; i < nVertex; i++) diff --git a/FunctionSpace/BasisHierarchical1From.h b/FunctionSpace/BasisHierarchical1Form.h similarity index 57% rename from FunctionSpace/BasisHierarchical1From.h rename to FunctionSpace/BasisHierarchical1Form.h index 9c67fca2c4931723fac29193c5d11151361ef5c9..48e32d892d1f381037532e87bb479145e075d828 100644 --- a/FunctionSpace/BasisHierarchical1From.h +++ b/FunctionSpace/BasisHierarchical1Form.h @@ -1,23 +1,18 @@ -#ifndef _BASISHIERARCHICAL1FROM_H_ -#define _BASISHIERARCHICAL1FROM_H_ +#ifndef _BASISHIERARCHICAL1FORM_H_ +#define _BASISHIERARCHICAL1FORM_H_ -#include <string> #include "BasisLocal.h" #include "Polynomial.h" -#include "ReferenceSpace.h" /** - @interface BasisHierarchical1From - @brief Interface for Hierarchical 1-Froml Local Basis + @interface BasisHierarchical1Form + @brief Interface for Hierarchical 1-Form Local Basis - This is an interface for Hierarchical 1-Froml Local Basis.@n + This is an interface for Hierarchical 1-Form Local Basis.@n */ -class BasisHierarchical1From: public BasisLocal{ +class BasisHierarchical1Form: public BasisLocal{ protected: - // Orientation // - unsigned int nRefSpace; - // Basis // std::vector<Polynomial>*** basis; @@ -33,17 +28,14 @@ class BasisHierarchical1From: public BasisLocal{ mutable fullMatrix<double>** preEvaluatedCurlFunction; public: - virtual ~BasisHierarchical1From(void); - - virtual unsigned int getNOrientation(void) const; - virtual unsigned int getOrientation(const MElement& element) const; + virtual ~BasisHierarchical1Form(void); virtual void getFunctions(fullMatrix<double>& retValues, const MElement& element, double u, double v, double w) const; virtual void getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const; virtual void preEvaluateFunctions(const fullMatrix<double>& point) const; @@ -56,15 +48,15 @@ class BasisHierarchical1From: public BasisLocal{ getPreEvaluatedDerivatives(const MElement& element) const; virtual const fullMatrix<double>& - getPreEvaluatedFunctions(unsigned int orientation) const; + getPreEvaluatedFunctions(size_t orientation) const; virtual const fullMatrix<double>& - getPreEvaluatedDerivatives(unsigned int orientation) const; + getPreEvaluatedDerivatives(size_t orientation) const; std::string toString(void) const; protected: - BasisHierarchical1From(void); + BasisHierarchical1Form(void); private: void getCurl(void) const; @@ -72,20 +64,20 @@ class BasisHierarchical1From: public BasisLocal{ /** @internal - @fn BasisHierarchical1From::BasisHierarchical1From + @fn BasisHierarchical1Form::BasisHierarchical1Form - Instanciates an new BasisHierarchical1From + Instanciates an new BasisHierarchical1Form @endinternal ** - @fn BasisHierarchical1From::~BasisHierarchical1From + @fn BasisHierarchical1Form::~BasisHierarchical1Form - Deletes this BasisHierarchical1From + Deletes this BasisHierarchical1Form ** - @fn BasisHierarchical1From::toString + @fn BasisHierarchical1Form::toString @return Returns a string describing this - BasisHierarchical1From + BasisHierarchical1Form */ #endif diff --git a/FunctionSpace/BasisLagrange.cpp b/FunctionSpace/BasisLagrange.cpp index 7e5584cd16160cac62a7e3124e7a18e83d0801a9..df435aab1bbb4431e1331b0c0e744c25a0350f27 100644 --- a/FunctionSpace/BasisLagrange.cpp +++ b/FunctionSpace/BasisLagrange.cpp @@ -20,15 +20,6 @@ BasisLagrange::~BasisLagrange(void){ delete preEvaluatedGradFunction; } -unsigned int BasisLagrange:: -getNOrientation(void) const{ - return 1; -} - -unsigned int BasisLagrange:: -getOrientation(const MElement& element) const{ - return 0; -} /* static bool sortPredicate(const std::pair<size_t, size_t>& a, @@ -164,7 +155,7 @@ getFunctions(fullMatrix<double>& retValues, void BasisLagrange:: getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const{ // Fill Matrix // @@ -223,12 +214,12 @@ BasisLagrange::getPreEvaluatedDerivatives(const MElement& element) const{ } const fullMatrix<double>& -BasisLagrange::getPreEvaluatedFunctions(unsigned int orientation) const{ +BasisLagrange::getPreEvaluatedFunctions(size_t orientation) const{ return *preEvaluatedFunction; } const fullMatrix<double>& -BasisLagrange::getPreEvaluatedDerivatives(unsigned int orientation) const{ +BasisLagrange::getPreEvaluatedDerivatives(size_t orientation) const{ return *preEvaluatedGradFunction; } @@ -238,13 +229,13 @@ project(const MElement& element, const FunctionSpaceScalar& fSpace){ // Init New Coefs // - const unsigned int size = lPoint->size1(); - const unsigned int dim = lPoint->size2(); + const size_t size = lPoint->size1(); + const size_t dim = lPoint->size2(); vector<double> newCoef(size); // Interpolation at Lagrange Points // - for(unsigned int i = 0; i < size; i++){ + for(size_t i = 0; i < size; i++){ fullVector<double> uvw(3); if(dim > 0) @@ -277,11 +268,11 @@ project(const MElement& element, const FunctionSpaceVector& fSpace){ // Init New Coefs // - const unsigned int size = lPoint->size1(); + const size_t size = lPoint->size1(); vector<fullVector<double> > newCoef(size); // Interpolation at Lagrange Points // - for(unsigned int i = 0; i < size; i++){ + for(size_t i = 0; i < size; i++){ fullVector<double> uvw(3); if(dim > 0) diff --git a/FunctionSpace/BasisLagrange.h b/FunctionSpace/BasisLagrange.h index 913be52da98aa8d617ccc5f834350eb781869c98..4124edfab995ef9fb40926febe1320b7a6597ba5 100644 --- a/FunctionSpace/BasisLagrange.h +++ b/FunctionSpace/BasisLagrange.h @@ -6,7 +6,6 @@ #include "FunctionSpaceVector.h" #include "fullMatrix.h" #include "polynomialBasis.h" -// #include "ReferenceSpace.h" /** @interface BasisLagrange @@ -28,7 +27,6 @@ class BasisLagrange: public BasisLocal{ protected: polynomialBasis* lBasis; // Lagrange Basis fullMatrix<double>* lPoint; // Lagrange Points - // ReferenceSpace* refSpace; // RefSpace // PreEvaluation // mutable bool preEvaluated; @@ -40,15 +38,12 @@ class BasisLagrange: public BasisLocal{ public: virtual ~BasisLagrange(void); - virtual unsigned int getNOrientation(void) const; - virtual unsigned int getOrientation(const MElement& element) const; - virtual void getFunctions(fullMatrix<double>& retValues, const MElement& element, double u, double v, double w) const; virtual void getFunctions(fullMatrix<double>& retValues, - unsigned int orientation, + size_t orientation, double u, double v, double w) const; virtual void preEvaluateFunctions(const fullMatrix<double>& point) const; @@ -61,10 +56,10 @@ class BasisLagrange: public BasisLocal{ getPreEvaluatedDerivatives(const MElement& element) const; virtual const fullMatrix<double>& - getPreEvaluatedFunctions(unsigned int orientation) const; + getPreEvaluatedFunctions(size_t orientation) const; virtual const fullMatrix<double>& - getPreEvaluatedDerivatives(unsigned int orientation) const; + getPreEvaluatedDerivatives(size_t orientation) const; const fullMatrix<double>& getCoefficient(void) const; const fullMatrix<double>& getMonomial(void) const; diff --git a/FunctionSpace/CMakeLists.txt b/FunctionSpace/CMakeLists.txt index e59333de60c3aacab885f9f70e3cb8162c4259c4..44ea8b673811a84a41320009ea07aba30f09d83e 100644 --- a/FunctionSpace/CMakeLists.txt +++ b/FunctionSpace/CMakeLists.txt @@ -23,8 +23,8 @@ set(SRC BasisGenerator.cpp BasisLagrange.cpp - BasisHierarchical0From.cpp - BasisHierarchical1From.cpp + BasisHierarchical0Form.cpp + BasisHierarchical1Form.cpp LineNodeBasis.cpp LineEdgeBasis.cpp @@ -46,8 +46,8 @@ set(SRC TetNedelecBasis.cpp TetLagrangeBasis.cpp -# HexNodeBasis.cpp -# HexEdgeBasis.cpp + HexNodeBasis.cpp + HexEdgeBasis.cpp FunctionSpace.cpp FunctionSpaceScalar.cpp diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp index ef98d9eae5c8fa0d40f98f71e3b4fc20c42dede9..fd3e2501bfde178f0fb1d6606f56932399bff76c 100644 --- a/FunctionSpace/FunctionSpace.cpp +++ b/FunctionSpace/FunctionSpace.cpp @@ -30,9 +30,9 @@ FunctionSpace::~FunctionSpace(void){ // Group // if(group){ - unsigned int nElement = group->size(); + size_t nElement = group->size(); - for(unsigned int i = 0; i < nElement; i++) + for(size_t i = 0; i < nElement; i++) delete (*group)[i]; delete group; } @@ -92,7 +92,7 @@ void FunctionSpace::build(GroupOfElement& goe, void FunctionSpace::buildDof(void){ // Get Elements // - const unsigned int nElement = goe->getNumber(); + const size_t nElement = goe->getNumber(); const vector<const MElement*>& element = goe->getAll(); // Init Struct // @@ -103,15 +103,15 @@ void FunctionSpace::buildDof(void){ ElementComparator>; // Create Dofs // - for(unsigned int i = 0; i < nElement; i++){ + for(size_t i = 0; i < nElement; i++){ // Get Dof for this Element vector<Dof> myDof = getKeys(*(element[i])); - unsigned int nDof = myDof.size(); + size_t nDof = myDof.size(); // Add Dof vector<const Dof*> trueDof(nDof); - for(unsigned int j = 0; j < nDof; j++) + for(size_t j = 0; j < nDof; j++) insertDof(myDof[j], trueDof, j); // Create new GroupOfDof diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h index 2c9881eda1bd1b6730b6552dd142468c5bb5459c..98ee56d6955f220776befbaef63536755dfdd4fb 100644 --- a/FunctionSpace/FunctionSpace.h +++ b/FunctionSpace/FunctionSpace.h @@ -49,11 +49,11 @@ class FunctionSpace{ // Basis // std::vector<const Basis*>* basis; - unsigned int nBasis; - unsigned int fPerVertex; - unsigned int fPerEdge; - unsigned int fPerFace; - unsigned int fPerCell; + size_t nBasis; + size_t fPerVertex; + size_t fPerEdge; + size_t fPerFace; + size_t fPerCell; // Scalar Field ? // bool scalar; @@ -69,8 +69,8 @@ class FunctionSpace{ virtual ~FunctionSpace(void); const std::vector<const Basis*>& getBasis(const MElement& element) const; - const Basis& getBasis(unsigned int i) const; - unsigned int getNBasis(void) const; + const Basis& getBasis(size_t i) const; + size_t getNBasis(void) const; GroupOfElement& getSupport(void) const; bool isScalar(void) const; @@ -85,8 +85,8 @@ class FunctionSpace{ const GroupOfDof& getGoDFromElement(const MElement& element) const; - unsigned int dofNumber(void) const; - unsigned int groupNumber(void) const; + size_t dofNumber(void) const; + size_t groupNumber(void) const; protected: // Init @@ -185,11 +185,11 @@ FunctionSpace::getBasis(const MElement& element) const{ return *basis; } -inline const Basis& FunctionSpace::getBasis(unsigned int i) const{ +inline const Basis& FunctionSpace::getBasis(size_t i) const{ return *(*basis)[i]; } -inline unsigned int FunctionSpace::getNBasis(void) const{ +inline size_t FunctionSpace::getNBasis(void) const{ return nBasis; } @@ -201,11 +201,11 @@ inline bool FunctionSpace::isScalar(void) const{ return scalar; } -inline unsigned int FunctionSpace::dofNumber(void) const{ +inline size_t FunctionSpace::dofNumber(void) const{ return dof->size(); } -inline unsigned int FunctionSpace::groupNumber(void) const{ +inline size_t FunctionSpace::groupNumber(void) const{ return group->size(); } diff --git a/FunctionSpace/FunctionSpaceScalar.cpp b/FunctionSpace/FunctionSpaceScalar.cpp index b1e9e1eaa1f35accf8ad458379bc568f4a671819..c4e96462cfce57a45c564b89db381c1978787966 100644 --- a/FunctionSpace/FunctionSpaceScalar.cpp +++ b/FunctionSpace/FunctionSpaceScalar.cpp @@ -16,15 +16,15 @@ interpolateInABC(const MElement& element, double abc[3]) const{ // Get Basis Functions // - const unsigned int nFun = (*basis)[0]->getNFunction(); - fullMatrix<double> fun(nFun, 1); + const size_t nFun = (*basis)[0]->getNFunction(); + fullMatrix<double> fun(nFun, 1); (*basis)[0]->getFunctions(fun, element, abc[0], abc[1], abc[2]); // Interpolate (in Reference Place) // double val = 0; - for(unsigned int i = 0; i < nFun; i++) + for(size_t i = 0; i < nFun; i++) val += fun(i, 0) * coef[i]; // Return Interpolated Value // diff --git a/FunctionSpace/FunctionSpaceVector.cpp b/FunctionSpace/FunctionSpaceVector.cpp index 412d206e3bd53469d57f61a0c7634a58845d826b..3f1e5b69ae1636642c74c8f7d77035b415346687 100644 --- a/FunctionSpace/FunctionSpaceVector.cpp +++ b/FunctionSpace/FunctionSpaceVector.cpp @@ -24,8 +24,8 @@ interpolateInABC(const MElement& element, invJac.invertInPlace(); // Get Basis Functions // - const unsigned int nFun = (*basis)[0]->getNFunction(); - fullMatrix<double> fun(nFun, 3); + const size_t nFun = (*basis)[0]->getNFunction(); + fullMatrix<double> fun(nFun, 3); (*basis)[0]->getFunctions(fun, element, abc[0], abc[1], abc[2]); @@ -35,7 +35,7 @@ interpolateInABC(const MElement& element, val(0, 1) = 0; val(0, 2) = 0; - for(unsigned int i = 0; i < nFun; i++){ + for(size_t i = 0; i < nFun; i++){ val(0, 0) += fun(i, 0) * coef[i]; val(0, 1) += fun(i, 1) * coef[i]; val(0, 2) += fun(i, 2) * coef[i]; diff --git a/FunctionSpace/HexEdgeBasis.cpp b/FunctionSpace/HexEdgeBasis.cpp index 34f607aab48f4e01ba67df137da5507220448ab6..84383203a7eba4d28f04c0cb2c4edfc2102fbf37 100644 --- a/FunctionSpace/HexEdgeBasis.cpp +++ b/FunctionSpace/HexEdgeBasis.cpp @@ -4,7 +4,7 @@ using namespace std; -HexEdgeBasis::HexEdgeBasis(int order){ +HexEdgeBasis::HexEdgeBasis(size_t order){ /* // Set Basis Type // this->order = order; @@ -180,7 +180,7 @@ HexEdgeBasis::HexEdgeBasis(int order){ for(int l = 1; l < orderPlus; l++){ for(int e = 0; e < 12; e++){ basis[i] = - new std::vector<Polynomial>((intLegendre[l].compose(liftingSub[e]) * lagrangeSum[e]).gradient()); + new std::vector<Polynomial>((intLegendre[l].compose(liftingSub[e]) * lagrangeSum[e]).gradient()); i++; } @@ -238,11 +238,10 @@ HexEdgeBasis::HexEdgeBasis(int order){ for(int l1 = 1; l1 < orderPlus; l1++){ for(int l2 = 1; l2 < orderPlus; l2++){ for(int f = 0; f < 6; f++){ - basis[i] = new std::vector<Polynomial>((iLegendreXi[l1][f] * - iLegendreEta[l2][f] * - lambda[f]).gradient()); - - i++; + basis[i] = new std::vector<Polynomial>((iLegendreXi[l1][f] * + iLegendreEta[l2][f] * + lambda[f]).gradient()); + i++; } } } @@ -252,31 +251,31 @@ HexEdgeBasis::HexEdgeBasis(int order){ for(int l1 = 1; l1 < orderPlus; l1++){ for(int l2 = 1; l2 < orderPlus; l2++){ for(int f = 0; f < 6; f++){ - basis[i] = new std::vector<Polynomial>(3); + basis[i] = new std::vector<Polynomial>(3); - Polynomial tmp1 = - legendreXi[l1][f] * - iLegendreEta[l2][f]; + Polynomial tmp1 = + legendreXi[l1][f] * + iLegendreEta[l2][f]; - Polynomial tmp2 = - iLegendreXi[l1][f] * - legendreEta[l2][f]; + Polynomial tmp2 = + iLegendreXi[l1][f] * + legendreEta[l2][f]; - vector<Polynomial> gr1 = grXi[f]; - gr1[0].mul(tmp1); - gr1[1].mul(tmp1); - gr1[2].mul(tmp1); + vector<Polynomial> gr1 = grXi[f]; + gr1[0].mul(tmp1); + gr1[1].mul(tmp1); + gr1[2].mul(tmp1); - vector<Polynomial> gr2 = grEta[f]; - gr2[0].mul(tmp2); - gr2[1].mul(tmp2); - gr2[2].mul(tmp2); + vector<Polynomial> gr2 = grEta[f]; + gr2[0].mul(tmp2); + gr2[1].mul(tmp2); + gr2[2].mul(tmp2); - basis[i]->at(0) = (gr1[0] - gr2[0]) * lambda[f]; - basis[i]->at(1) = (gr1[1] - gr2[1]) * lambda[f]; - basis[i]->at(2) = (gr1[2] - gr2[2]) * lambda[f]; + basis[i]->at(0) = (gr1[0] - gr2[0]) * lambda[f]; + basis[i]->at(1) = (gr1[1] - gr2[1]) * lambda[f]; + basis[i]->at(2) = (gr1[2] - gr2[2]) * lambda[f]; - i++; + i++; } } } @@ -338,12 +337,12 @@ HexEdgeBasis::HexEdgeBasis(int order){ for(int l1 = 1; l1 < orderPlus; l1++){ for(int l2 = 1; l2 < orderPlus; l2++){ for(int l3 = 1; l3 < orderPlus; l3++){ - basis[i] = new std::vector<Polynomial>((iLegendreX[l1] * - iLegendreY[l2] * - iLegendreZ[l3]).gradient()); + basis[i] = new std::vector<Polynomial>((iLegendreX[l1] * + iLegendreY[l2] * + iLegendreZ[l3]).gradient()); - i++; - cellNumber++; + i++; + cellNumber++; } } } diff --git a/FunctionSpace/HexEdgeBasis.h b/FunctionSpace/HexEdgeBasis.h index 4dd16a9d95e72b072e9710c5ee4af61700384c6b..469a1d824bd80601b50183dd7fd586a563e3c8c4 100644 --- a/FunctionSpace/HexEdgeBasis.h +++ b/FunctionSpace/HexEdgeBasis.h @@ -1,7 +1,7 @@ #ifndef _HEXEDGEBASIS_H_ #define _HEXEDGEBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class HexEdgeBasis @@ -15,12 +15,12 @@ Basis for @em high @em order Polynomial%s generation.@n */ -class HexEdgeBasis: public BasisHierarchical1From{ +class HexEdgeBasis: public BasisHierarchical1Form{ public: //! @param order The order of the Basis //! //! Returns a new Edge-Basis for Hexahedra of the given order - HexEdgeBasis(int order); + HexEdgeBasis(size_t order); //! Deletes this Basis //! diff --git a/FunctionSpace/HexNodeBasis.cpp b/FunctionSpace/HexNodeBasis.cpp index 6bb1691e6366aaad091b167b2366df5d362f39c4..5e418137dab6d07d1cd113b44a7c3c4d62664c2c 100644 --- a/FunctionSpace/HexNodeBasis.cpp +++ b/FunctionSpace/HexNodeBasis.cpp @@ -3,7 +3,7 @@ using namespace std; -HexNodeBasis::HexNodeBasis(int order){ +HexNodeBasis::HexNodeBasis(size_t order){ /* // Set Basis Type // this->order = order; @@ -36,10 +36,10 @@ HexNodeBasis::HexNodeBasis(int order){ const int edgeV[2][12][2] = { { {0, 1}, {0, 3}, {0, 4}, {1, 2}, {1, 5}, {2, 3}, - {2, 6}, {3, 7}, {4, 5}, {4, 7}, {5, 6}, {6, 7} }, + {2, 6}, {3, 7}, {4, 5}, {4, 7}, {5, 6}, {6, 7} }, { {1, 0}, {3, 0}, {4, 0}, {2, 1}, {5, 1}, {3, 2}, - {6, 2}, {7, 3}, {5, 4}, {7, 4}, {6, 5}, {7, 6} }, + {6, 2}, {7, 3}, {5, 4}, {7, 4}, {6, 5}, {7, 6} }, }; const int faceV[6][4] = @@ -102,43 +102,43 @@ HexNodeBasis::HexNodeBasis(int order){ // Vertex Based (Lagrange) // (*basis)[0] = new Polynomial((Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); (*basis)[1] = new Polynomial((Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); (*basis)[2] = new Polynomial((Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 1, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); + (Polynomial(1, 0, 1, 0)) * + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); (*basis)[3] = new Polynomial((Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 1, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); + (Polynomial(1, 0, 1, 0)) * + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 0, 1))); (*basis)[4] = new Polynomial((Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * - Polynomial(1, 0, 0, 1)); + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * + Polynomial(1, 0, 0, 1)); (*basis)[5] = new Polynomial((Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * - Polynomial(1, 0, 0, 1)); + (Polynomial(1, 0, 0, 0) - Polynomial(1, 0, 1, 0)) * + Polynomial(1, 0, 0, 1)); (*basis)[6] = new Polynomial((Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 1, 0)) * - Polynomial(1, 0, 0, 1)); + (Polynomial(1, 0, 1, 0)) * + Polynomial(1, 0, 0, 1)); (*basis)[7] = new Polynomial((Polynomial(1, 0, 0, 0) - Polynomial(1, 1, 0, 0)) * - (Polynomial(1, 0, 1, 0)) * - Polynomial(1, 0, 0, 1)); + (Polynomial(1, 0, 1, 0)) * + Polynomial(1, 0, 0, 1)); // Edge Based // @@ -152,8 +152,8 @@ HexNodeBasis::HexNodeBasis(int order){ for(int l = 1; l < order; l++){ for(int e = 0; e < 12; e++){ (*basis)[i] = new Polynomial( - legendre[l].compose(lifting[edge1[e]] - lifting[edge2[e]]) * - (*(*basis)[edge1[e]] + *(*basis)[edge2[e]])); + legendre[l].compose(lifting[edge1[e]] - lifting[edge2[e]]) * + (*(*basis)[edge1[e]] + *(*basis)[edge2[e]])); i++; } @@ -188,12 +188,12 @@ HexNodeBasis::HexNodeBasis(int order){ for(int l1 = 1; l1 < order; l1++){ for(int l2 = 1; l2 < order; l2++){ for(int f = 0; f < 6; f++){ - (*basis)[i] = new Polynomial( - legendre[l1].compose(xi[f]) * - legendre[l2].compose(eta[f]) * - lambda[f]); + (*basis)[i] = new Polynomial( + legendre[l1].compose(xi[f]) * + legendre[l2].compose(eta[f]) * + lambda[f]); - i++; + i++; } } } @@ -211,12 +211,12 @@ HexNodeBasis::HexNodeBasis(int order){ for(int l1 = 1; l1 < order; l1++){ for(int l2 = 1; l2 < order; l2++){ for(int l3 = 1; l3 < order; l3++){ - (*basis)[i] = - new Polynomial(legendre[l1].compose(px) * - legendre[l2].compose(py) * - legendre[l3].compose(pz)); + (*basis)[i] = + new Polynomial(legendre[l1].compose(px) * + legendre[l2].compose(py) * + legendre[l3].compose(pz)); - i++; + i++; } } } diff --git a/FunctionSpace/HexNodeBasis.h b/FunctionSpace/HexNodeBasis.h index 855e28729d97bdfa682c98a7aa9f83cf888f979e..eb8d9feaf7fbc5a3fa2b629412ce2b43a90fa535 100644 --- a/FunctionSpace/HexNodeBasis.h +++ b/FunctionSpace/HexNodeBasis.h @@ -1,7 +1,7 @@ #ifndef _HEXNODEBASIS_H_ #define _HEXNODEBASIS_H_ -#include "BasisHierarchical0From.h" +#include "BasisHierarchical0Form.h" /** @class HexNodeBasis @@ -15,12 +15,12 @@ Basis for @em high @em order Polynomial%s generation.@n */ -class HexNodeBasis: public BasisHierarchical0From{ +class HexNodeBasis: public BasisHierarchical0Form{ public: //! @param order The order of the Basis //! //! Returns a new Node-Basis for Hexahedra of the given order - HexNodeBasis(int order); + HexNodeBasis(size_t order); //! @return Deletes this Basis //! diff --git a/FunctionSpace/Legendre.cpp b/FunctionSpace/Legendre.cpp index a4e7f72620511fa1763bb3cd524548150e692abe..583a52b47b4506be476f3eae8caf04473c740958 100644 --- a/FunctionSpace/Legendre.cpp +++ b/FunctionSpace/Legendre.cpp @@ -1,15 +1,15 @@ #include "Legendre.h" -Polynomial Legendre::legendre(const int n, const Polynomial& l, - const Polynomial& lMinus){ +Polynomial Legendre::legendre(int n, const Polynomial& l, + const Polynomial& lMinus){ const double nPlus = n + 1; return l * Polynomial(1, 1, 0, 0) * ((2 * n + 1) / nPlus) - lMinus * (n / nPlus); } -Polynomial Legendre::scaled(const int n, const Polynomial& l, - const Polynomial& lMinus){ +Polynomial Legendre::scaled(int n, const Polynomial& l, + const Polynomial& lMinus){ const double nPlus = n + 1; return @@ -17,16 +17,17 @@ Polynomial Legendre::scaled(const int n, const Polynomial& l, lMinus * Polynomial(1, 0, 2, 0) * (( n ) / nPlus); } -Polynomial Legendre::integrated(const int n, const Polynomial& l, - const Polynomial& lMinus){ +Polynomial Legendre::integrated(int n, const Polynomial& l, + const Polynomial& lMinus){ const double nPlus = n + 1; return - l * Polynomial(1, 1, 0, 0) * ((2 * n - 1) / nPlus) - lMinus * ((n - 2) / nPlus); + l * Polynomial(1, 1, 0, 0) * ((2 * n - 1) / nPlus) - + lMinus * ((n - 2) / nPlus); } -Polynomial Legendre::intScaled(const int n, const Polynomial& l, - const Polynomial& lMinus){ +Polynomial Legendre::intScaled(int n, const Polynomial& l, + const Polynomial& lMinus){ const double nPlus = n + 1; return @@ -36,10 +37,11 @@ Polynomial Legendre::intScaled(const int n, const Polynomial& l, -void Legendre::legendre(Polynomial* polynomial, const int order){ +void Legendre::legendre(Polynomial* polynomial, int order){ int i, j, k; if(order >= 0) + polynomial[0] = Polynomial(1, 0, 0, 0); if(order >= 1) @@ -55,7 +57,7 @@ void Legendre::legendre(Polynomial* polynomial, const int order){ } } -void Legendre::integrated(Polynomial* polynomial, const int order){ +void Legendre::integrated(Polynomial* polynomial, int order){ int i, j, k; if(order >= 1) @@ -74,7 +76,7 @@ void Legendre::integrated(Polynomial* polynomial, const int order){ } } -void Legendre::scaled(Polynomial* polynomial, const int order){ +void Legendre::scaled(Polynomial* polynomial, int order){ int i, j, k; if(order >= 0) @@ -93,7 +95,7 @@ void Legendre::scaled(Polynomial* polynomial, const int order){ } } -void Legendre::intScaled(Polynomial* polynomial, const int order){ +void Legendre::intScaled(Polynomial* polynomial, int order){ int i, j, k; if(order >= 1) @@ -111,53 +113,3 @@ void Legendre::intScaled(Polynomial* polynomial, const int order){ } } } - -/* -#include <iostream> -int main(void){ - Polynomial p[13]; - Legendre::legendre(p, 12); - - for(int i = 0; i < 13; i++) - std::cout << "l(" << i << ")= " << (p[i]).toString() << std::endl; - - - std::cout << std::endl; - - Polynomial pi[12]; - Legendre::integrated(pi, 12); - - for(int i = 0; i < 12; i++) - std::cout << "L(" << i + 1 << ")= " << pi[i].toString() << std::endl; - - - std::cout << std::endl; - - Polynomial ps[13]; - Legendre::scaled(ps, 12); - - for(int i = 0; i < 13; i++) - std::cout << "ls(" << i << ")= " << (ps[i]).toString() << std::endl; - - - std::cout << std::endl; - - Polynomial pis[12]; - Legendre::intScaled(pis, 12); - - for(int i = 0; i < 12; i++) - std::cout << "Ls(" << i + 1<< ")= " << (pis[i]).toString() << std::endl; - - - Polynomial p1 = Polynomial(1, 1, 1, 0);// - Polynomial(1, 0, 0, 0); - Polynomial p2 = Polynomial(1, 0, 1, 1);// - Polynomial(1, 0, 0, 0); - - Polynomial p3 = pis[11].compose(p1, p2); - - std::cout << std::endl << "p1 = " << p1.toString() << std::endl; - std::cout << "p2 = " << p2.toString() << std::endl; - std::cout << "Ls(12, p1, p2) = " << p3.toString() << std::endl; - - return 0; -} -*/ diff --git a/FunctionSpace/Legendre.h b/FunctionSpace/Legendre.h index 25924558f094f6cc74e3e3dc9e218962f6286c86..be9b3f8f205edadd7067e52c730e2ad2c3113e38 100644 --- a/FunctionSpace/Legendre.h +++ b/FunctionSpace/Legendre.h @@ -22,52 +22,52 @@ class Legendre{ public: - static void legendre(Polynomial* polynomial, const int order); - static void integrated(Polynomial* polynomial, const int order); - static void scaled(Polynomial* polynomial, const int order); - static void intScaled(Polynomial* polynomial, const int order); + static void legendre(Polynomial* polynomial, int order); + static void integrated(Polynomial* polynomial, int order); + static void scaled(Polynomial* polynomial, int order); + static void intScaled(Polynomial* polynomial,int order); private: - static Polynomial legendre(const int n, - const Polynomial& l, - const Polynomial& lMinus); + static Polynomial legendre(int n, + const Polynomial& l, + const Polynomial& lMinus); - static Polynomial integrated(const int n, - const Polynomial& l, - const Polynomial& lMinus); + static Polynomial integrated(int n, + const Polynomial& l, + const Polynomial& lMinus); - static Polynomial scaled(const int n, - const Polynomial& l, - const Polynomial& lMinus); + static Polynomial scaled(int n, + const Polynomial& l, + const Polynomial& lMinus); - static Polynomial intScaled(const int n, - const Polynomial& l, - const Polynomial& lMinus); + static Polynomial intScaled(int n, + const Polynomial& l, + const Polynomial& lMinus); }; /** - @fn void Legendre::legendre(Polynomial*, const int) + @fn void Legendre::legendre(Polynomial*, int) @param polynomial An @em allocated array (of size @c 'order' @c + @c 1) for storing the requested legendre Polynomial%s @param order The @em maximal order of the requested Polynomial%s @return Stores in @c 'polynomial' all the @em classical legendre Polynomial%s of order [@c 0, @c 'order'] - @fn void Legendre::integrated(Polynomial*, const int) + @fn void Legendre::integrated(Polynomial*, int) @param polynomial An @em allocated array (of size @c 'order') for storing the requested legendre Polynomial%s @param order The @em maximal order of the requested Polynomial%s @return Stores in @c 'polynomial' all the @em integrated legendre Polynomial%s of order [@c 1, @c 'order'] - @fn void Legendre::scaled(Polynomial*, const int) + @fn void Legendre::scaled(Polynomial*, int) @param polynomial An @em allocated array (of size @c 'order' @c + @c 1) for storing the requested legendre Polynomial%s @param order The @em maximal order of the requested Polynomial%s @return Stores in @c 'polynomial' all the @em scaled legendre Polynomial%s of order [@c 0, @c 'order'] - @fn void Legendre::intScaled(Polynomial*, const int) + @fn void Legendre::intScaled(Polynomial*, int) @param polynomial An @em allocated array (of size @c 'order') for storing the requested legendre Polynomial%s @param order The @em maximal order of the requested Polynomial%s diff --git a/FunctionSpace/LineEdgeBasis.h b/FunctionSpace/LineEdgeBasis.h index 411730c509264a7b62dd390cbe606f1e84d5dadf..190c28857fbf840f5b5209c328d4778ae8eca860 100644 --- a/FunctionSpace/LineEdgeBasis.h +++ b/FunctionSpace/LineEdgeBasis.h @@ -1,7 +1,7 @@ #ifndef _LINEEDGEBASIS_H_ #define _LINEEDGEBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class LineEdgeBasis @@ -19,7 +19,7 @@ It also uses the following mapping: @f$x = \frac{u + 1}{2}@f$. */ -class LineEdgeBasis: public BasisHierarchical1From{ +class LineEdgeBasis: public BasisHierarchical1Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/LineNedelecBasis.h b/FunctionSpace/LineNedelecBasis.h index edb4a699e8633ff54335792b50f581b238b132df..91f5042a015b8544212a9a1594f9bf20272938d8 100644 --- a/FunctionSpace/LineNedelecBasis.h +++ b/FunctionSpace/LineNedelecBasis.h @@ -1,7 +1,7 @@ #ifndef _LINENEDELECBASIS_H_ #define _LINENEDELECBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class LineNedelecBasis @@ -11,7 +11,7 @@ for Lines.@n */ -class LineNedelecBasis: public BasisHierarchical1From{ +class LineNedelecBasis: public BasisHierarchical1Form{ public: //! Returns a new Nedelec Basis for Lines //! diff --git a/FunctionSpace/LineNodeBasis.h b/FunctionSpace/LineNodeBasis.h index 6da87b9d878acd36bc5ce223d42db3e55ebbbcd7..cd40b2e1024911a28be808310e66c65928660a4a 100644 --- a/FunctionSpace/LineNodeBasis.h +++ b/FunctionSpace/LineNodeBasis.h @@ -1,7 +1,7 @@ #ifndef _LINENODEBASIS_H_ #define _LINENODEBASIS_H_ -#include "BasisHierarchical0From.h" +#include "BasisHierarchical0Form.h" /** @class LineNodeBasis @@ -19,7 +19,7 @@ It also uses the following mapping: @f$x = \frac{u + 1}{2}@f$. */ -class LineNodeBasis: public BasisHierarchical0From{ +class LineNodeBasis: public BasisHierarchical0Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/Polynomial.cpp b/FunctionSpace/Polynomial.cpp index c5a3ca8ee24082007b80c26ecca10e752db41547..e120bf25182f5ce3c78e91dfdd8956b770cbed65 100644 --- a/FunctionSpace/Polynomial.cpp +++ b/FunctionSpace/Polynomial.cpp @@ -8,9 +8,10 @@ using namespace std; const char Polynomial::coefName[3] = {'x', 'y', 'z'}; -Polynomial::Polynomial(const double coef, const int powerX, - const int powerY, - const int powerZ){ +Polynomial::Polynomial(double coef, + int powerX, + int powerY, + int powerZ){ nMon = 1; mon = new monomial_t[1]; @@ -35,7 +36,7 @@ Polynomial::~Polynomial(void){ delete[] mon; } -void Polynomial::derivative(const int dim){ +void Polynomial::derivative(int dim){ // Take derivative // for(int i = 0; i < nMon; i++){ mon[i].coef *= mon[i].power[dim]; @@ -143,7 +144,7 @@ Polynomial Polynomial::divergence(const vector<Polynomial>& p){ } double Polynomial::at - (const double x, const double y, const double z) const{ + (double x, double y, double z) const{ double val = 0; for(int i = 0; i < nMon; i++){ @@ -156,9 +157,9 @@ double Polynomial::at } fullVector<double> Polynomial::at(const vector<Polynomial>& P, - const double x, - const double y, - const double z){ + double x, + double y, + double z){ fullVector<double> val(3); val(0) = P[0].at(x, y, z); @@ -198,7 +199,7 @@ Polynomial Polynomial::operator*(const Polynomial& other) const{ return newP; } -Polynomial Polynomial::operator*(const double alpha) const{ +Polynomial Polynomial::operator*(double alpha) const{ Polynomial newP; newP.mon = copyMonomial(mon, nMon); @@ -238,12 +239,12 @@ void Polynomial::mul(const Polynomial& other){ delete[] tmp; } -void Polynomial::mul(const double alpha){ +void Polynomial::mul(double alpha){ for(int i = 0; i < nMon; i++) mon[i].coef *= alpha; } -void Polynomial::power(const int n){ +void Polynomial::power(int n){ if (n < 0) return; @@ -279,7 +280,7 @@ Polynomial Polynomial::compose(const Polynomial& other) const{ } Polynomial Polynomial::compose(const Polynomial& otherA, - const Polynomial& otherB) const{ + const Polynomial& otherB) const{ stack<monomial_t> stk; for(int i = 0; i < nMon; i++) @@ -296,7 +297,8 @@ void Polynomial::operator=(const Polynomial& other){ mon = copyMonomial(other.mon, nMon); } -string Polynomial::toString(const Polynomial::monomial_t* mon, const bool isAbs){ +string Polynomial:: +toString(const Polynomial::monomial_t* mon, const bool isAbs){ stringstream stream; const bool minusOne = mon->coef == -1.0; const bool notUnitCoef = mon->coef != 1.0 && !minusOne; @@ -325,12 +327,12 @@ string Polynomial::toString(const Polynomial::monomial_t* mon, const bool isAbs) // If we have a non zero power, we display it if(mon->power[i]){ if(notUnitCoef || notOnce) - stream << " * "; + stream << " * "; stream << coefName[i]; if(mon->power[i] != 1) - stream << "^" << mon->power[i]; + stream << "^" << mon->power[i]; notOnce = true; } @@ -363,7 +365,7 @@ string Polynomial::toString(void) const{ } bool Polynomial::isSmaller(const Polynomial::monomial_t* a, - const Polynomial::monomial_t* b){ + const Polynomial::monomial_t* b){ // GRevLex order: // http://www.math.uiuc.edu/Macaulay2/doc/Macaulay2-1.4/share/doc/Macaulay2/Macaulay2Doc/html/___G__Rev__Lex.html @@ -379,7 +381,7 @@ bool Polynomial::isSmaller(const Polynomial::monomial_t* a, for(int i = 0; i < 3; i++) if(dif[i]) - last = dif[i]; + last = dif[i]; if(last < 0) return true; @@ -391,23 +393,23 @@ bool Polynomial::isSmaller(const Polynomial::monomial_t* a, return false; } -void Polynomial::sort(monomial_t* mon, const int size){ +void Polynomial::sort(monomial_t* mon, int size){ for(int i = 0; i < size; i++) for(int j = i; j < size; j++) if(isSmaller(&mon[j], &mon[i])) swap(mon, i, j); } -void Polynomial::swap(monomial_t* mon, const int i, const int j){ +void Polynomial::swap(monomial_t* mon, int i, int j){ monomial_t tmp = mon[i]; mon[i] = mon[j]; mon[j] = tmp; } -int Polynomial::mergeMon(monomial_t* sourceA, const int sizeA, - monomial_t* sourceB, const int sizeB, - monomial_t** dest){ +int Polynomial::mergeMon(monomial_t* sourceA, int sizeA, + monomial_t* sourceB, int sizeB, + monomial_t** dest){ stack<monomial_t> s; monomial_t tmp; @@ -427,8 +429,8 @@ int Polynomial::mergeMon(monomial_t* sourceA, const int sizeA, tmp.coef += sourceB[j].coef; if(tmp.coef != 0.0){ - s.push(tmp); - N++; + s.push(tmp); + N++; } i++; @@ -477,9 +479,9 @@ int Polynomial::mergeMon(monomial_t* sourceA, const int sizeA, return N; } -int Polynomial::mult(const monomial_t* sourceA, const int sizeA, - const monomial_t* sourceB, const int sizeB, - monomial_t** dest){ +int Polynomial::mult(const monomial_t* sourceA, int sizeA, + const monomial_t* sourceB, int sizeB, + monomial_t** dest){ const monomial_t* a; // smaller polynomial const monomial_t* b; // bigger polynomial @@ -524,8 +526,8 @@ int Polynomial::mult(const monomial_t* sourceA, const int sizeA, tmp[j] = dist[0]; finalSize = mergeMon(dist[0], finalSize, - dist[i], size, - &dist[0]); + dist[i], size, + &dist[0]); } // Keep distributed polynomial // @@ -543,13 +545,13 @@ int Polynomial::mult(const monomial_t* sourceA, const int sizeA, return finalSize; } -void Polynomial::mult(monomial_t* source, const int size, const double alpha){ +void Polynomial::mult(monomial_t* source, int size, double alpha){ for(int i = 0; i < size; i++) source[i].coef *= alpha; } -void Polynomial::distribute(monomial_t* src, const int size, const monomial_t* m){ +void Polynomial::distribute(monomial_t* src, int size, const monomial_t* m){ for(int i = 0; i < size; i++){ src[i].coef *= m->coef; @@ -560,8 +562,8 @@ void Polynomial::distribute(monomial_t* src, const int size, const monomial_t* m } void Polynomial::compose(const Polynomial::monomial_t* src, - Polynomial comp, - stack<Polynomial::monomial_t>* stk){ + Polynomial comp, + stack<Polynomial::monomial_t>* stk){ comp.power(src->power[0]); comp.mul(src->coef); @@ -580,8 +582,8 @@ void Polynomial::compose(const Polynomial::monomial_t* src, } void Polynomial::compose(const Polynomial::monomial_t* src, - Polynomial compA, Polynomial compB, - stack<Polynomial::monomial_t>* stk){ + Polynomial compA, Polynomial compB, + stack<Polynomial::monomial_t>* stk){ compA.power(src->power[0]); compB.power(src->power[1]); @@ -601,7 +603,8 @@ void Polynomial::compose(const Polynomial::monomial_t* src, } } -Polynomial Polynomial::polynomialFromStack(std::stack<Polynomial::monomial_t>& stk){ +Polynomial Polynomial:: +polynomialFromStack(std::stack<Polynomial::monomial_t>& stk){ Polynomial newP; monomial_t* tmp; monomial_t* newMon; @@ -633,7 +636,8 @@ Polynomial Polynomial::polynomialFromStack(std::stack<Polynomial::monomial_t>& s return newP; } -Polynomial::monomial_t* Polynomial::copyMonomial(const monomial_t* src, const int size){ +Polynomial::monomial_t* Polynomial::copyMonomial(const monomial_t* src, + int size){ monomial_t* dest = new monomial_t[size]; for(int i = 0; i < size; i++){ @@ -667,104 +671,3 @@ Polynomial::monomial_t* Polynomial::unitPolynomial(void){ return unit; } - - - - - - - -/* -#include <iostream> -int main(void){ - Polynomial m0(-1 , 0, 0, 0); - Polynomial m1(4.2, 1, 0, 0); - Polynomial m2(4.2, 1, 1, 0); - Polynomial m3(4.2, 1, 0, 1); - - cout << "m0 = " << m0.toString() << endl; - cout << "m1 = " << m1.toString() << endl; - cout << "m1(4, 5, 6) = " << m1.at(4, 5, 6) << endl; - cout << "m2 = " << m2.toString() << endl; - cout << "m3 = " << m3.toString() << endl; - - Polynomial p0 = m1 + m0; - Polynomial p1 = m3 + m3; - Polynomial p2 = p1 + p0; - - cout << "p0 = " << p0.toString() << endl; - cout << "p1 = " << p1.toString() << endl; - cout << "p2 = " << p2.toString() << endl; - cout << "p2(1.1, 2.2, 3.3) = " << p2.at(1.1, 2.2, 3.3) << endl; - - p2.add(p0); - cout << "p2 = " << p2.toString() << endl; - - - Polynomial p3 = p2 * p0; - Polynomial p4 = p3 * p3; - cout << "p3 = " << p3.toString() << endl; - cout << "p4 = " << p4.toString() << endl; - - p3.mul(p3); - cout << "p3 = " << p3.toString() << endl; - - Polynomial p5 = p2 - p3; - Polynomial p6 = p3 - p2; - Polynomial p7 = p6 - p6; - cout << "p5 = " << p5.toString() << endl; - cout << "p6 = " << p6.toString() << endl; - cout << "p7 = " << p7.toString() << endl; - - p6.sub(p6); - cout << "p6 = " << p6.toString() << endl; - - - Polynomial p8(p4); - Polynomial p9(p4); - Polynomial p10(p4); - - p8.derivative(0); - p9.derivative(1); - p10.derivative(2); - - cout << "p8 = " << p8.toString() << endl; - cout << "p9 = " << p9.toString() << endl; - cout << "p10 = " << p10.toString() << endl; - - Polynomial p11 = p8 * 4; - cout << "p11 = " << p11.toString() << endl; - cout << "p11(1, 2, 3) = " << p11.at(1, 2, 3.1) << endl; - - Polynomial m4(1, 1, 0, 0); - Polynomial m5(1, 0, 1, 0); - Polynomial m6(1, 0, 0, 1); - - Polynomial p12 = m4 + m5 + m6; - - cout << "p12 = " << p12.toString() << endl; - - p12.power(4); - cout << "p12^4 = " << p12.toString() << endl; - - Polynomial m7(1, 1, 0, 0); - Polynomial m8(2, 2, 0, 0); - Polynomial m9(3, 3, 0, 0); - - Polynomial p13 = m9 + m7; - cout << "p13 = " << p13.toString() << endl; - - Polynomial m10(1, 1, 1, 0); - Polynomial m11(2, 2, 1, 2); - Polynomial m12(1, 1, 3, 1); - - Polynomial p14 = m10 + m11 + m12; - cout << "p14 = " << p14.toString() << endl; - - Polynomial p15 = p14.compose(p13); - cout << "p15 = p14(p13) = " << p15.toString() << endl; - - return 0; -} - -*/ diff --git a/FunctionSpace/Polynomial.h b/FunctionSpace/Polynomial.h index ba52b8e75eef2cafb9ba259d7665884d151d69f2..b09500d2455e08fedd5a9ff9edd89d8e6e46a988 100644 --- a/FunctionSpace/Polynomial.h +++ b/FunctionSpace/Polynomial.h @@ -28,45 +28,46 @@ class Polynomial{ monomial_t* mon; public: - Polynomial(const double coef, const int powerX, - const int powerY, - const int powerZ); + Polynomial(double coef, + int powerX, + int powerY, + int powerZ); Polynomial(const Polynomial& other); Polynomial(void); ~Polynomial(void); - void derivative(const int dim); + void derivative(int dim); std::vector<Polynomial> gradient(void) const; static std::vector<Polynomial> curl(const std::vector<Polynomial>& p); static Polynomial divergence(const std::vector<Polynomial>& p); double operator() - (const double x, const double y, const double z) const; + (double x, double y, double z) const; double at - (const double x, const double y, const double z) const; + (double x, double y, double z) const; static fullVector<double> at(const std::vector<Polynomial>& P, - const double x, - const double y, - const double z); + double x, + double y, + double z); Polynomial operator+(const Polynomial& other) const; Polynomial operator-(const Polynomial& other) const; Polynomial operator*(const Polynomial& other) const; - Polynomial operator*(const double alpha) const; + Polynomial operator*(double alpha) const; void add(const Polynomial& other); void sub(const Polynomial& other); void mul(const Polynomial& other); - void mul(const double alpha); + void mul(double alpha); - void power(const int n); + void power(int n); Polynomial compose(const Polynomial& other) const; Polynomial compose(const Polynomial& otherA, - const Polynomial& otherB) const; + const Polynomial& otherB) const; void operator=(const Polynomial& other); @@ -80,39 +81,39 @@ class Polynomial{ static bool isSmallerPower(const monomial_t* a, const monomial_t* b); static bool isEqualPower(const monomial_t* a, const monomial_t* b); - static void sort(monomial_t* mon, const int size); - static void swap(monomial_t* mon, const int i, const int j); + static void sort(monomial_t* mon, int size); + static void swap(monomial_t* mon, int i, int j); - static int mergeMon(monomial_t* sourceA, const int sizeA, - monomial_t* sourceB, const int sizeB, - monomial_t** dest); + static int mergeMon(monomial_t* sourceA, int sizeA, + monomial_t* sourceB, int sizeB, + monomial_t** dest); - static int mult(const monomial_t* sourceA, const int sizeA, - const monomial_t* sourceB, const int sizeB, - monomial_t** dest); + static int mult(const monomial_t* sourceA, int sizeA, + const monomial_t* sourceB, int sizeB, + monomial_t** dest); - static void mult(monomial_t* source, const int size, const double alpha); + static void mult(monomial_t* source, int size, double alpha); - static void distribute(monomial_t* src, const int size, const monomial_t* m); + static void distribute(monomial_t* src, int size, const monomial_t* m); static void compose(const monomial_t* src, - Polynomial comp, - std::stack<monomial_t>* stk); + Polynomial comp, + std::stack<monomial_t>* stk); static void compose(const monomial_t* src, - Polynomial compA, Polynomial compB, - std::stack<monomial_t>* stk); + Polynomial compA, Polynomial compB, + std::stack<monomial_t>* stk); static Polynomial polynomialFromStack(std::stack<monomial_t>& stk); - static monomial_t* copyMonomial(const monomial_t* src, const int size); + static monomial_t* copyMonomial(const monomial_t* src, int size); static monomial_t* zeroPolynomial(void); static monomial_t* unitPolynomial(void); }; /** - @fn Polynomial::Polynomial(const double, const int, const int, const int) + @fn Polynomial::Polynomial(double, int, int, int) @param coef The coeficient of the futur monomial @param powerX The power of the '@c x' coordinate of the futur monomial @@ -177,7 +178,7 @@ class Polynomial{ vector of Polynomial%s ** - @fn double Polynomial::operator()(const double, const double, const double) + @fn double Polynomial::operator()(double, double, double) @param x A value @param y A value @param z A value @@ -185,7 +186,7 @@ class Polynomial{ Polynomial at (@c x, @c y, @c z) ** - @fn double Polynomial::at(const double, const double, const double) const + @fn double Polynomial::at(double, double, double) const @param x A value @param y A value @param z A value @@ -193,7 +194,7 @@ class Polynomial{ Polynomial at (@c x, @c y, @c z) ** - @fn fullVector<double> Polynomial::at(const std::vector<Polynomial>&, const double, const double, const double) + @fn fullVector<double> Polynomial::at(const std::vector<Polynomial>&, double, double, double) @param P A vector of Polynomial%s @param x A value @param y A value @@ -220,7 +221,7 @@ class Polynomial{ @em product of this Polynomial and the given one ** - @fn Polynomial Polynomial::operator*(const double) const + @fn Polynomial Polynomial::operator*(double) const @param alpha A value @return Returns a @em new Polynomial, which is this Polynomial @em multiplied by @c alpha @@ -253,7 +254,7 @@ class Polynomial{ this Polynomial ** - @fn void Polynomial::mul(const double) + @fn void Polynomial::mul(double) @param alpha A value @return This Polynomial is @em multiplied by the given value @@ -301,21 +302,21 @@ class Polynomial{ // Inline Functions // ////////////////////// -inline double Polynomial::operator() (const double x, - const double y, - const double z) const{ +inline double Polynomial::operator() (double x, + double y, + double z) const{ return at(x, y, z); } inline bool Polynomial::isEqual(const Polynomial::monomial_t* a, - const Polynomial::monomial_t* b){ + const Polynomial::monomial_t* b){ return a->power[0] == b->power[0] && a->power[1] == b->power[1] && a->power[2] == b->power[2]; } inline bool Polynomial::isSmallerPower(const Polynomial::monomial_t* a, - const Polynomial::monomial_t* b){ + const Polynomial::monomial_t* b){ return a->power[0] + a->power[1] + a->power[2] @@ -324,7 +325,7 @@ inline bool Polynomial::isSmallerPower(const Polynomial::monomial_t* a, } inline bool Polynomial::isEqualPower(const Polynomial::monomial_t* a, - const Polynomial::monomial_t* b){ + const Polynomial::monomial_t* b){ return a->power[0] + a->power[1] + a->power[2] diff --git a/FunctionSpace/QuadEdgeBasis.cpp b/FunctionSpace/QuadEdgeBasis.cpp index c4dc7d49295e01d9f2024119db36b32baa735514..8daf138f48d3fb0471cf4a348fedcf2c76e2cf5a 100644 --- a/FunctionSpace/QuadEdgeBasis.cpp +++ b/FunctionSpace/QuadEdgeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; QuadEdgeBasis::QuadEdgeBasis(size_t order){ // Reference Space // refSpace = new QuadReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -241,6 +241,8 @@ QuadEdgeBasis::QuadEdgeBasis(size_t order){ } QuadEdgeBasis::~QuadEdgeBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/QuadEdgeBasis.h b/FunctionSpace/QuadEdgeBasis.h index 95d6edb66df94702b9afc9bcc7f52cbdac62f566..280666d8ddafb5840d488c32eddd8c1e75127f49 100644 --- a/FunctionSpace/QuadEdgeBasis.h +++ b/FunctionSpace/QuadEdgeBasis.h @@ -1,7 +1,7 @@ #ifndef _QUADEDGEBASIS_H_ #define _QUADEDGEBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class QuadEdgeBasis @@ -19,7 +19,7 @@ @li @f$y = \frac{v + 1}{2}@f$ */ -class QuadEdgeBasis: public BasisHierarchical1From{ +class QuadEdgeBasis: public BasisHierarchical1Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/QuadNedelecBasis.cpp b/FunctionSpace/QuadNedelecBasis.cpp index a91c2e4de14f27e85afb6eae424f8c9010f504b9..f3b6c891465f54567c9eb1f6e3778d862d3f9c2b 100644 --- a/FunctionSpace/QuadNedelecBasis.cpp +++ b/FunctionSpace/QuadNedelecBasis.cpp @@ -7,7 +7,7 @@ using namespace std; QuadNedelecBasis::QuadNedelecBasis(void){ // Reference Space // refSpace = new QuadReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -108,6 +108,8 @@ QuadNedelecBasis::QuadNedelecBasis(void){ } QuadNedelecBasis::~QuadNedelecBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/QuadNedelecBasis.h b/FunctionSpace/QuadNedelecBasis.h index e429a895724d454ee2ebbb4a7394c26a16d9d7f9..77194bc45ff91279e049c47d71581332488bc239 100644 --- a/FunctionSpace/QuadNedelecBasis.h +++ b/FunctionSpace/QuadNedelecBasis.h @@ -1,7 +1,7 @@ #ifndef _QUADNEDELECBASIS_H_ #define _QUADNEDELECBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class QuadNedelecBasis @@ -11,7 +11,7 @@ for Quadrangles.@n */ -class QuadNedelecBasis: public BasisHierarchical1From{ +class QuadNedelecBasis: public BasisHierarchical1Form{ public: //! Returns a new Nedelec Basis for Quadrangles //! diff --git a/FunctionSpace/QuadNodeBasis.cpp b/FunctionSpace/QuadNodeBasis.cpp index f75cdb87f6058ce8bff258299f3f250b59aa7d37..009af96233c3d0bb55ee3a98788dc3532cc37aeb 100644 --- a/FunctionSpace/QuadNodeBasis.cpp +++ b/FunctionSpace/QuadNodeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; QuadNodeBasis::QuadNodeBasis(size_t order){ // Reference Space // refSpace = new QuadReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -145,6 +145,8 @@ QuadNodeBasis::QuadNodeBasis(size_t order){ } QuadNodeBasis::~QuadNodeBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/QuadNodeBasis.h b/FunctionSpace/QuadNodeBasis.h index 96c69c6d6e231a81d7b7093001d72bc0bea23a75..6122841ec4006a4cc71f61fc7229bcab1e7d820c 100644 --- a/FunctionSpace/QuadNodeBasis.h +++ b/FunctionSpace/QuadNodeBasis.h @@ -1,7 +1,7 @@ #ifndef _QUADNODEBASIS_H_ #define _QUADNODEBASIS_H_ -#include "BasisHierarchical0From.h" +#include "BasisHierarchical0Form.h" /** @class QuadNodeBasis @@ -19,7 +19,7 @@ @li @f$y = \frac{v + 1}{2}@f$ */ -class QuadNodeBasis: public BasisHierarchical0From{ +class QuadNodeBasis: public BasisHierarchical0Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/ReferenceSpaceLagrange.cpp b/FunctionSpace/ReferenceSpaceLagrange.cpp index 932ec9ce4cd35c52566a839cee7a434a0ef88056..6c088a3027ce3ba3c962881d35fa026f042fdc88 100644 --- a/FunctionSpace/ReferenceSpaceLagrange.cpp +++ b/FunctionSpace/ReferenceSpaceLagrange.cpp @@ -25,20 +25,20 @@ void ReferenceSpaceLagrange::getLagrangeNode(void){ const size_t nPerm = pTree->getNPermutation(); // Alloc // - vector<unsigned int>* tmp; - node = new vector<const vector<unsigned int>*>(nPerm); + vector<size_t>* tmp; + node = new vector<const vector<size_t>*>(nPerm); // Populate // - for(unsigned int p = 0; p < nPerm; p++){ + for(size_t p = 0; p < nPerm; p++){ // Alloc Temp // - tmp = new vector<unsigned int>(nNode); + tmp = new vector<size_t>(nNode); // Vertex based node - for(unsigned int i = 0; i < nVertex; i++) + for(size_t i = 0; i < nVertex; i++) (*tmp)[i] = i; // Edge based node - for(unsigned int e = 0; e < nEdge; e++) + for(size_t e = 0; e < nEdge; e++) edgeSeq(*tmp, nVertex + nNodePerEdge * e, nVertex + nNodePerEdge * e, @@ -47,7 +47,7 @@ void ReferenceSpaceLagrange::getLagrangeNode(void){ *(*(*edge)[p])[e]); // Face based node - for(unsigned int f = 0; f < nFace; f++) + for(size_t f = 0; f < nFace; f++) faceSeq(*tmp, nVertex + nNodePerEdge * nEdge + nNodePerFace * f, nVertex + nNodePerEdge * nEdge + nNodePerFace * f, @@ -62,19 +62,19 @@ void ReferenceSpaceLagrange::getLagrangeNode(void){ */ } -void ReferenceSpaceLagrange::edgeSeq(vector<unsigned int>& vec, - unsigned int startIdx, - unsigned int startVal, - unsigned int stopVal, +void ReferenceSpaceLagrange::edgeSeq(vector<size_t>& vec, + size_t startIdx, + size_t startVal, + size_t stopVal, size_t* refEdge, - const vector<unsigned int>& edge){ + const vector<size_t>& edge){ // Is reverted ? // const bool isRevert = (edge[0] != refEdge[0]); // Index // - unsigned int val = startVal; - unsigned int idx; + size_t val = startVal; + size_t idx; // Depending if edge is reverted ... if(isRevert) @@ -95,16 +95,16 @@ void ReferenceSpaceLagrange::edgeSeq(vector<unsigned int>& vec, } } -void ReferenceSpaceLagrange::faceSeq(vector<unsigned int>& vec, - unsigned int startIdx, - unsigned int startVal, - unsigned int stopVal, - size_t* refFace, - const vector<unsigned int>& face, - unsigned int nNodePerEdge){ +void ReferenceSpaceLagrange::faceSeq(vector<size_t>& vec, + size_t startIdx, + size_t startVal, + size_t stopVal, + size_t* refFace, + const vector<size_t>& face, + size_t nNodePerEdge){ // Index // - unsigned int val = startVal; - unsigned int idx = startIdx; + size_t val = startVal; + size_t idx = startIdx; // Populate // for(; val < stopVal; val++){ @@ -114,19 +114,19 @@ void ReferenceSpaceLagrange::faceSeq(vector<unsigned int>& vec, } string ReferenceSpaceLagrange::toString(void) const{ - const size_t nPerm = pTree->getNPermutation(); - const unsigned int nNodeMinus = nNode - 1; - stringstream stream; + const size_t nPerm = pTree->getNPermutation(); + const size_t nNodeMinus = nNode - 1; + stringstream stream; stream << ReferenceSpace::toString(); stream << "Lagrange Nodes Permutations:" << endl; - for(unsigned int i = 0; i < nPerm; i++){ + for(size_t i = 0; i < nPerm; i++){ stream << " * RefSpace #" << i + 1 << ":" << endl << " -- ["; - for(unsigned int j = 0; j < nNodeMinus; j++) + for(size_t j = 0; j < nNodeMinus; j++) stream << node->at(i)->at(j) << ", "; stream << node->at(i)->at(nNodeMinus) << "]" << endl; diff --git a/FunctionSpace/ReferenceSpaceLagrange.h b/FunctionSpace/ReferenceSpaceLagrange.h index 92c088018b7430fd22cc5b0ba0b4e76342fbe8be..62f65b42ab2fd6aa0cf86de625a87a93092b690a 100644 --- a/FunctionSpace/ReferenceSpaceLagrange.h +++ b/FunctionSpace/ReferenceSpaceLagrange.h @@ -26,17 +26,17 @@ class ReferenceSpaceLagrange: public ReferenceSpace{ protected: // Lagrange Node Permutation // - unsigned int nNode; - unsigned int nNodePerEdge; - unsigned int nNodePerFace; - unsigned int nNodePerCell; + size_t nNode; + size_t nNodePerEdge; + size_t nNodePerFace; + size_t nNodePerCell; - std::vector<const std::vector<unsigned int>*>* node; + std::vector<const std::vector<size_t>*>* node; public: virtual ~ReferenceSpaceLagrange(void); - const std::vector<const std::vector<unsigned int>*>& + const std::vector<const std::vector<size_t>*>& getAllLagrangeNode(void) const; virtual std::string toString(void) const; @@ -46,20 +46,20 @@ class ReferenceSpaceLagrange: public ReferenceSpace{ void getLagrangeNode(void); - static void edgeSeq(std::vector<unsigned int>& vec, - unsigned int startIdx, - unsigned int startVal, - unsigned int stopVal, - size_t* refEdge, - const std::vector<unsigned int>& edge); - - static void faceSeq(std::vector<unsigned int>& vec, - unsigned int startIdx, - unsigned int startVal, - unsigned int stopVal, - size_t* refFace, - const std::vector<unsigned int>& face, - unsigned int nNodePerEdge); + static void edgeSeq(std::vector<size_t>& vec, + size_t startIdx, + size_t startVal, + size_t stopVal, + size_t* refEdge, + const std::vector<size_t>& edge); + + static void faceSeq(std::vector<size_t>& vec, + size_t startIdx, + size_t startVal, + size_t stopVal, + size_t* refFace, + const std::vector<size_t>& face, + size_t nNodePerEdge); }; @@ -68,7 +68,7 @@ class ReferenceSpaceLagrange: public ReferenceSpace{ ///////////////////// inline -const std::vector<const std::vector<unsigned int>*>& +const std::vector<const std::vector<size_t>*>& ReferenceSpaceLagrange::getAllLagrangeNode(void) const{ return *node; } diff --git a/FunctionSpace/TetEdgeBasis.cpp b/FunctionSpace/TetEdgeBasis.cpp index 5d3fd21a79735a6367509414af7aed6b27b3c5e7..cd52ff813c6947caa42b36e1db738f5d41937dbb 100644 --- a/FunctionSpace/TetEdgeBasis.cpp +++ b/FunctionSpace/TetEdgeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TetEdgeBasis::TetEdgeBasis(size_t order){ // Reference Space // refSpace = new TetReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -324,6 +324,8 @@ TetEdgeBasis::TetEdgeBasis(size_t order){ } TetEdgeBasis::~TetEdgeBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/TetEdgeBasis.h b/FunctionSpace/TetEdgeBasis.h index d8e7856fd439513b8aebd0807a5d5c9b3a8e0431..93cdbb4a3a177bb98ef969f6950940b1f246664b 100644 --- a/FunctionSpace/TetEdgeBasis.h +++ b/FunctionSpace/TetEdgeBasis.h @@ -1,7 +1,7 @@ #ifndef _TETEDGEBASIS_H_ #define _TETEDGEBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class TetEdgeBasis @@ -15,7 +15,7 @@ Basis for @em high @em order Polynomial%s generation.@n */ -class TetEdgeBasis: public BasisHierarchical1From{ +class TetEdgeBasis: public BasisHierarchical1Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/TetNedelecBasis.cpp b/FunctionSpace/TetNedelecBasis.cpp index 2b06274cb981d6f244e83814ee3b030fe2f21f83..80ec10255544c7f450470ba3eb0ba60d6eda9733 100644 --- a/FunctionSpace/TetNedelecBasis.cpp +++ b/FunctionSpace/TetNedelecBasis.cpp @@ -6,7 +6,7 @@ using namespace std; TetNedelecBasis::TetNedelecBasis(void){ // Reference Space // refSpace = new TetReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -69,6 +69,8 @@ TetNedelecBasis::TetNedelecBasis(void){ } TetNedelecBasis::~TetNedelecBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/TetNedelecBasis.h b/FunctionSpace/TetNedelecBasis.h index 900085867d485fa62e72304a3e6c9bcac141212c..151296554cbc386202cf5d5598378ad12e47a04f 100644 --- a/FunctionSpace/TetNedelecBasis.h +++ b/FunctionSpace/TetNedelecBasis.h @@ -1,7 +1,7 @@ #ifndef _TETNEDELECBASIS_H_ #define _TETNEDELECBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class TetNedelecBasis @@ -11,7 +11,7 @@ a Nedelec Basis for Tetrahedra. */ -class TetNedelecBasis: public BasisHierarchical1From{ +class TetNedelecBasis: public BasisHierarchical1Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/TetNodeBasis.cpp b/FunctionSpace/TetNodeBasis.cpp index c9854688a42b77c605fc85f5d13e87f95b69b88c..512178e09c7a3fe21d8c3b5198a9de2b4a769322 100644 --- a/FunctionSpace/TetNodeBasis.cpp +++ b/FunctionSpace/TetNodeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TetNodeBasis::TetNodeBasis(size_t order){ // Reference Space // refSpace = new TetReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -157,6 +157,8 @@ TetNodeBasis::TetNodeBasis(size_t order){ } TetNodeBasis::~TetNodeBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/TetNodeBasis.h b/FunctionSpace/TetNodeBasis.h index 3eff8cf0754aeb284ef05d259484aa676096b458..8d98b54a85086d71bb766c26532a23c40da7008c 100644 --- a/FunctionSpace/TetNodeBasis.h +++ b/FunctionSpace/TetNodeBasis.h @@ -1,7 +1,7 @@ #ifndef _TETNODEBASIS_H_ #define _TETNODEBASIS_H_ -#include "BasisHierarchical0From.h" +#include "BasisHierarchical0Form.h" /** @class TetNodeBasis @@ -15,7 +15,7 @@ Basis for @em high @em order Polynomial%s generation.@n */ -class TetNodeBasis: public BasisHierarchical0From{ +class TetNodeBasis: public BasisHierarchical0Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/TriEdgeBasis.cpp b/FunctionSpace/TriEdgeBasis.cpp index c1faa4c2493231bf219d07bf0b6544a6d75de0e2..70f216683a708ec4465848978428494e6e0e7769 100644 --- a/FunctionSpace/TriEdgeBasis.cpp +++ b/FunctionSpace/TriEdgeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TriEdgeBasis::TriEdgeBasis(size_t order){ // Reference Space // refSpace = new TriReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -237,6 +237,8 @@ TriEdgeBasis::TriEdgeBasis(size_t order){ } TriEdgeBasis::~TriEdgeBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/TriEdgeBasis.h b/FunctionSpace/TriEdgeBasis.h index 99c7a4d08a69555120a9263ef7467beed172e4a4..830d226c3d942ad21dd17d0eb959dd7c6a5a3219 100644 --- a/FunctionSpace/TriEdgeBasis.h +++ b/FunctionSpace/TriEdgeBasis.h @@ -1,7 +1,7 @@ #ifndef _TRIEDGEBASIS_H_ #define _TRIEDGEBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class TriEdgeBasis @@ -15,7 +15,7 @@ Basis for @em high @em order Polynomial%s generation.@n */ -class TriEdgeBasis: public BasisHierarchical1From{ +class TriEdgeBasis: public BasisHierarchical1Form{ public: //! @param order The order of the Basis //! diff --git a/FunctionSpace/TriNedelecBasis.cpp b/FunctionSpace/TriNedelecBasis.cpp index 7cabff1df297b7e04efa942ea393bb86078e8619..0c8b4965ff4c8fb754840b12bf954cc291e20461 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(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -65,6 +65,8 @@ TriNedelecBasis::TriNedelecBasis(void){ } TriNedelecBasis::~TriNedelecBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/TriNedelecBasis.h b/FunctionSpace/TriNedelecBasis.h index 078fc325383b8929a2b47dd31703c3015d337d99..772d4cb6f60510713c8da2be4e7adb9429c71934 100644 --- a/FunctionSpace/TriNedelecBasis.h +++ b/FunctionSpace/TriNedelecBasis.h @@ -1,7 +1,7 @@ #ifndef _TRINEDELECBASIS_H_ #define _TRINEDELECBASIS_H_ -#include "BasisHierarchical1From.h" +#include "BasisHierarchical1Form.h" /** @class TriNedelecBasis @@ -11,7 +11,7 @@ for Triangles.@n */ -class TriNedelecBasis: public BasisHierarchical1From{ +class TriNedelecBasis: public BasisHierarchical1Form{ public: //! Returns a new Nedelec Basis for Triangles //! diff --git a/FunctionSpace/TriNodeBasis.cpp b/FunctionSpace/TriNodeBasis.cpp index e5f5890c63107a027a3e8cf0b67c684119101221..5e954a92617e6d49f3a20d926b7866b6e4fe2872 100644 --- a/FunctionSpace/TriNodeBasis.cpp +++ b/FunctionSpace/TriNodeBasis.cpp @@ -7,7 +7,7 @@ using namespace std; TriNodeBasis::TriNodeBasis(size_t order){ // Reference Space // refSpace = new TriReferenceSpace; - nRefSpace = refSpace->getNReferenceSpace(); + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); const vector<vector<vector<size_t> > >& edgeIdx = refSpace->getEdgeNodeIndex(); @@ -115,6 +115,8 @@ TriNodeBasis::TriNodeBasis(size_t order){ } TriNodeBasis::~TriNodeBasis(void){ + const size_t nRefSpace = getReferenceSpace().getNReferenceSpace(); + // ReferenceSpace // delete refSpace; diff --git a/FunctionSpace/TriNodeBasis.h b/FunctionSpace/TriNodeBasis.h index 2d1b98d304314ee7871b52a148b213dc4ef6f56f..630fa510b06ccf6b0f792c1394c2cf2ebacd913b 100644 --- a/FunctionSpace/TriNodeBasis.h +++ b/FunctionSpace/TriNodeBasis.h @@ -1,7 +1,7 @@ #ifndef _TRINODEBASIS_H_ #define _TRINODEBASIS_H_ -#include "BasisHierarchical0From.h" +#include "BasisHierarchical0Form.h" /** @class TriNodeBasis @@ -15,7 +15,7 @@ Basis for @em high @em order Polynomial%s generation.@n */ -class TriNodeBasis: public BasisHierarchical0From{ +class TriNodeBasis: public BasisHierarchical0Form{ public: //! @param order The order of the Basis //!