From 31288144ecd11d22d75778caa7b4404e3c2811c6 Mon Sep 17 00:00:00 2001 From: Nicolas Marsic <nicolas.marsic@gmail.com> Date: Wed, 20 Jun 2012 13:35:24 +0000 Subject: [PATCH] FunctionSpace cpp --- FunctionSpace/CMakeLists.txt | 2 ++ FunctionSpace/FunctionSpace.cpp | 12 ++++++++++++ FunctionSpace/FunctionSpace.h | 28 ++++++++++++++++++++++++---- 3 files changed, 38 insertions(+), 4 deletions(-) create mode 100644 FunctionSpace/FunctionSpace.cpp diff --git a/FunctionSpace/CMakeLists.txt b/FunctionSpace/CMakeLists.txt index 5554606cc1..bc9f4a22cd 100644 --- a/FunctionSpace/CMakeLists.txt +++ b/FunctionSpace/CMakeLists.txt @@ -21,6 +21,8 @@ set(SRC LocalFunctionSpaceVector.cpp LocalFunctionSpace0Form.cpp LocalFunctionSpace1Form.cpp + + FunctionSpace.cpp ) file(GLOB HDR RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.h) diff --git a/FunctionSpace/FunctionSpace.cpp b/FunctionSpace/FunctionSpace.cpp new file mode 100644 index 0000000000..ede8dada0e --- /dev/null +++ b/FunctionSpace/FunctionSpace.cpp @@ -0,0 +1,12 @@ +#include "FunctionSpace.h" + +using namespace std; + +FunctionSpace::FunctionSpace(void){ + ebLookUp = new map<Element*, Basis*, ElementComparator>; +} + +FunctionSpace::~FunctionSpace(void){ + delete ebLookUp; +} + diff --git a/FunctionSpace/FunctionSpace.h b/FunctionSpace/FunctionSpace.h index cc8ed83a26..cd5aaa4203 100644 --- a/FunctionSpace/FunctionSpace.h +++ b/FunctionSpace/FunctionSpace.h @@ -16,24 +16,44 @@ --> inheritance: FunctionSpaceScalar & FunctionSapceVector @n "double or fullVector" interpolate(Element, pyhsical coordinate, coef) @n "double or fullVector" interpolate(Element, ref coordinate , coef) @n - "double or fullVector" interpolate(physical coordinate, coef) --> use octree @n - + "double or fullVector" interpolate(physical coordinate, coef) --> use octree?? @n */ class FunctionSpace{ private: + class ElementComparator{ + public: bool operator()(const Element* a, const Element* b) const; }; - std::map<Element*, Basis*, ElementComparator>* ETBL; // Element To Basis Lookup + std::map<Element*, Basis*, ElementComparator>* ebLookUp; // Element to Basis Lookup public: - + FunctionSpace(void); + ~FunctionSpace(void); + void associate(Element& element, Basis& basis); void associate(int physical, Basis& basis); Basis& getBasis(Element& element) const; }; +////////////////////// +// Inline Functions // +////////////////////// + +inline void FunctionSpace::associate(Element& element, Basis& basis){ + ebLookUp->insert(std::pair<Element*, Basis*>(&element, &basis)); +} + +inline Basis& FunctionSpace::getBasis(Element& element) const{ + return *(ebLookUp->find(&element)->second); +} + +inline bool FunctionSpace::ElementComparator::operator() +(const Element* a, const Element* b) const{ + return a->getId() < b->getId(); +} + #endif -- GitLab