From 40515ea6cbf854b4f97fe3e7c2ae66c3bb012566 Mon Sep 17 00:00:00 2001 From: Nicolas Marsic <nicolas.marsic@gmail.com> Date: Fri, 31 Jan 2014 14:36:41 +0000 Subject: [PATCH] const GroupOfElement + GroupOfElement::isUniform + GroupOfElement::add() + Formulation::domain() --- FunctionSpace/FunctionSpace.cpp | 10 +++++++++- FunctionSpace/FunctionSpace.h | 9 +++++---- FunctionSpace/FunctionSpaceScalar.cpp | 7 ++++--- FunctionSpace/FunctionSpaceScalar.h | 5 +++-- FunctionSpace/FunctionSpaceVector.cpp | 7 ++++--- FunctionSpace/FunctionSpaceVector.h | 5 +++-- 6 files changed, 28 insertions(+), 15 deletions(-) diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp index 434fbce0ec..521aaf36e0 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 fc6867d3f5..decf948b1a 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 d178ad0073..77d3d2281b 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 ee9b12035a..2ddddde0e9 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 0c11bbd62a..1fb78e7d39 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 4914e888c1..c20f4f60f8 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); -- GitLab