From 1f58a04887353c62aee188496874e5046e0218f2 Mon Sep 17 00:00:00 2001 From: Christophe Geuzaine <cgeuzaine@ulg.ac.be> Date: Sun, 23 May 2010 13:16:36 +0000 Subject: [PATCH] use map for element index cache --- Geo/GModel.cpp | 10 ++++------ Geo/GModel.h | 2 +- Geo/GModelIO_Mesh.cpp | 2 +- 3 files changed, 6 insertions(+), 8 deletions(-) diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 5eb4730cb7..e364b460b0 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -757,16 +757,14 @@ MElement *GModel::getMeshElementByTag(int n) int GModel::getMeshElementIndex(MElement *e) { - int num = e->getNum(); - if(num >= _elementIndexCache.size()) return num; - return _elementIndexCache[num]; + std::map<int, int>::iterator it = _elementIndexCache.find(e->getNum()); + if(it != _elementIndexCache.end()) return it->second; + return e->getNum(); } void GModel::setMeshElementIndex(MElement *e, int index) { - int num = e->getNum(); - if(num >= _elementIndexCache.size()) _elementIndexCache.resize(num + 1, 0); - _elementIndexCache[num] = index; + _elementIndexCache[e->getNum()] = index; } template <class T> diff --git a/Geo/GModel.h b/Geo/GModel.h index 8cb2b55f11..6f0ad466df 100644 --- a/Geo/GModel.h +++ b/Geo/GModel.h @@ -51,7 +51,7 @@ class GModel std::map<int, MVertex*> _vertexMapCache; std::vector<MElement*> _elementVectorCache; std::map<int, MElement*> _elementMapCache; - std::vector<int> _elementIndexCache; + std::map<int, int> _elementIndexCache; // ghost cell information (stores partitions for each element acting // as a ghost cell) diff --git a/Geo/GModelIO_Mesh.cpp b/Geo/GModelIO_Mesh.cpp index 46163460db..956a7f85bb 100644 --- a/Geo/GModelIO_Mesh.cpp +++ b/Geo/GModelIO_Mesh.cpp @@ -695,7 +695,7 @@ int GModel::writeMSH(const std::string &name, double version, bool binary, fprintf(fp, "%d\n", numElements); int num = elementStartNum; std::map<MElement*, int> parentsNum; - _elementIndexCache.resize(numElements + 1); + _elementIndexCache.clear(); // points for(viter it = firstVertex(); it != lastVertex(); ++it) -- GitLab