diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp index 434fbce0ec29f0ff3e51b8995618c7425f88922d..521aaf36e06fb0d77dcb60fb84e2c102444ecc72 100644 --- a/FunctionSpace/FunctionSpace.cpp +++ b/FunctionSpace/FunctionSpace.cpp @@ -10,6 +10,7 @@ using namespace std; const size_t FunctionSpace::nGeoType = 9; +bool FunctionSpace::once = false; FunctionSpace::FunctionSpace(void){ } @@ -20,7 +21,14 @@ FunctionSpace::~FunctionSpace(void){ delete basis[i]; } -void FunctionSpace::build(GroupOfElement& goe, string family){ +void FunctionSpace::build(const GroupOfElement& goe, string family){ + /* + if(once) + throw Exception("FS Once"); + + else + once = true; + */ // Save GroupOfElement & Mesh // this->goe = &goe; this->mesh = &(goe.getMesh()); diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h index fc6867d3f58d304cca2d9036fd0ef4911840f294..decf948b1a61769d27f65b140b27b2c5db48d492 100644 --- a/FunctionSpace/FunctionSpace.h +++ b/FunctionSpace/FunctionSpace.h @@ -32,11 +32,12 @@ class FunctionSpace{ protected: // Number of possible geomtrical topologies // static const size_t nGeoType; + static bool once; protected: // Geometry // const Mesh* mesh; - GroupOfElement* goe; + const GroupOfElement* goe; // Basis // std::vector<const Basis*> basis; @@ -61,7 +62,7 @@ class FunctionSpace{ const Basis& getBasis(const MElement& element) const; const Basis& getBasis(size_t i) const; - GroupOfElement& getSupport(void) const; + const GroupOfElement& getSupport(void) const; bool isScalar(void) const; size_t getForm(void) const; @@ -78,7 +79,7 @@ class FunctionSpace{ protected: FunctionSpace(void); - void build(GroupOfElement& goe, std::string family); + void build(const GroupOfElement& goe, std::string family); void buildDof(void); }; @@ -148,7 +149,7 @@ inline const Basis& FunctionSpace::getBasis(size_t i) const{ return *basis[i]; } -inline GroupOfElement& FunctionSpace::getSupport(void) const{ +inline const GroupOfElement& FunctionSpace::getSupport(void) const{ return *goe; } diff --git a/FunctionSpace/FunctionSpaceScalar.cpp b/FunctionSpace/FunctionSpaceScalar.cpp index d178ad00730885f9113793879338c012996aa434..77d3d2281ba1df75d0da567a1503c781583d6468 100644 --- a/FunctionSpace/FunctionSpaceScalar.cpp +++ b/FunctionSpace/FunctionSpaceScalar.cpp @@ -1,7 +1,8 @@ #include "Mapper.h" #include "FunctionSpaceScalar.h" -FunctionSpaceScalar::FunctionSpaceScalar(GroupOfElement& goe, size_t order){ +FunctionSpaceScalar::FunctionSpaceScalar(const GroupOfElement& goe, + size_t order){ this->scalar = true; this->form = 0; this->order = order; @@ -9,8 +10,8 @@ FunctionSpaceScalar::FunctionSpaceScalar(GroupOfElement& goe, size_t order){ build(goe, "hierarchical"); } -FunctionSpaceScalar::FunctionSpaceScalar(GroupOfElement& goe, size_t order, - std::string family){ +FunctionSpaceScalar::FunctionSpaceScalar(const GroupOfElement& goe, + size_t order, std::string family){ this->scalar = true; this->form = 0; this->order = order; diff --git a/FunctionSpace/FunctionSpaceScalar.h b/FunctionSpace/FunctionSpaceScalar.h index ee9b12035ae3efe83ca1f6d23c2575bf062263a5..2ddddde0e942c6a7045a312a9afe48bb03662de5 100644 --- a/FunctionSpace/FunctionSpaceScalar.h +++ b/FunctionSpace/FunctionSpaceScalar.h @@ -16,8 +16,9 @@ class FunctionSpaceScalar : public FunctionSpace{ public: - FunctionSpaceScalar(GroupOfElement& goe, size_t order); - FunctionSpaceScalar(GroupOfElement& goe, size_t order, std::string family); + FunctionSpaceScalar(const GroupOfElement& goe, size_t order); + FunctionSpaceScalar(const GroupOfElement& goe, size_t order, + std::string family); virtual ~FunctionSpaceScalar(void); diff --git a/FunctionSpace/FunctionSpaceVector.cpp b/FunctionSpace/FunctionSpaceVector.cpp index 0c11bbd62ad0864ea6c53154c1bfaaacd14a5f91..1fb78e7d39ec823f194d7308dd9b6b671cd1d71e 100644 --- a/FunctionSpace/FunctionSpaceVector.cpp +++ b/FunctionSpace/FunctionSpaceVector.cpp @@ -1,7 +1,8 @@ #include "Mapper.h" #include "FunctionSpaceVector.h" -FunctionSpaceVector::FunctionSpaceVector(GroupOfElement& goe, size_t order){ +FunctionSpaceVector::FunctionSpaceVector(const GroupOfElement& goe, + size_t order){ this->scalar = false; this->form = 1; this->order = order; @@ -9,8 +10,8 @@ FunctionSpaceVector::FunctionSpaceVector(GroupOfElement& goe, size_t order){ build(goe, "hierarchical"); } -FunctionSpaceVector::FunctionSpaceVector(GroupOfElement& goe, size_t order, - std::string family){ +FunctionSpaceVector::FunctionSpaceVector(const GroupOfElement& goe, + size_t order, std::string family){ this->scalar = false; this->form = 1; this->order = order; diff --git a/FunctionSpace/FunctionSpaceVector.h b/FunctionSpace/FunctionSpaceVector.h index 4914e888c15b67e7ef5ac0a3eb16ec9c7517304e..c20f4f60f8ed6d641fceade38c9dac8f8cdbf75f 100644 --- a/FunctionSpace/FunctionSpaceVector.h +++ b/FunctionSpace/FunctionSpaceVector.h @@ -17,8 +17,9 @@ class FunctionSpaceVector : public FunctionSpace{ public: - FunctionSpaceVector(GroupOfElement& goe, size_t order); - FunctionSpaceVector(GroupOfElement& goe, size_t order, std::string family); + FunctionSpaceVector(const GroupOfElement& goe, size_t order); + FunctionSpaceVector(const GroupOfElement& goe, size_t order, + std::string family); virtual ~FunctionSpaceVector(void);