From 954ab76a24daf625ac035d6ddb6d68a3da5ba7bf Mon Sep 17 00:00:00 2001 From: Pierre Kraemer Date: Thu, 9 Feb 2012 13:58:44 +0100 Subject: [PATCH] newDart with MR duplicate --- include/Topology/generic/genericmap.hpp | 16 ++++++++++++++-- include/Topology/map/map1.hpp | 14 +++++++++++++- include/Topology/map/map2.hpp | 10 ++++++++++ include/Topology/map/map3.hpp | 13 +++++++++++-- src/Topology/generic/genericmap.cpp | 14 -------------- 5 files changed, 48 insertions(+), 19 deletions(-) diff --git a/include/Topology/generic/genericmap.hpp b/include/Topology/generic/genericmap.hpp index f144ba96a..a13a8f293 100644 --- a/include/Topology/generic/genericmap.hpp +++ b/include/Topology/generic/genericmap.hpp @@ -86,10 +86,22 @@ inline Dart GenericMap::newDart() { unsigned int mrdi = m_mrattribs.insertLine() ; m_mrLevels->operator[](mrdi) = m_mrCurrentLevel ; + for(unsigned int i = 0; i < m_mrCurrentLevel; ++i) m_mrDarts[i]->operator[](mrdi) = MRNULL ; - for(unsigned int i = m_mrCurrentLevel; i < m_mrDarts.size(); ++i) - m_mrDarts[i]->operator[](mrdi) = di ; + + m_mrDarts[m_mrCurrentLevel]->operator[](mrdi) = di ; + + for(unsigned int i = m_mrCurrentLevel + 1; i < m_mrDarts.size(); ++i) + { + unsigned int dj = m_attribs[DART].insertLine(); + for(unsigned int o = 0; o < NB_ORBITS; ++o) + { + if (m_embeddings[o]) + (*m_embeddings[o])[dj] = EMBNULL ; + } + m_mrDarts[i]->operator[](mrdi) = dj ; + } return Dart::create(mrdi) ; } return Dart::create(di) ; diff --git a/include/Topology/map/map1.hpp b/include/Topology/map/map1.hpp index 0e143329c..e00153a9a 100644 --- a/include/Topology/map/map1.hpp +++ b/include/Topology/map/map1.hpp @@ -69,9 +69,21 @@ inline void Map1::update_topo_shortcuts() inline Dart Map1::newDart() { Dart d = GenericMap::newDart() ; - unsigned int d_index = dartIndex(d); + unsigned int d_index = dartIndex(d) ; (*m_phi1)[d_index] = d ; (*m_phi_1)[d_index] = d ; + if(m_isMultiRes) + { + pushLevel() ; + for(unsigned int i = m_mrCurrentLevel + 1; i < m_mrDarts.size(); ++i) + { + setCurrentLevel(i) ; + unsigned int d_index = dartIndex(d) ; + (*m_phi1)[d_index] = d ; + (*m_phi_1)[d_index] = d ; + } + popLevel() ; + } return d ; } diff --git a/include/Topology/map/map2.hpp b/include/Topology/map/map2.hpp index b9109e630..f92240e9b 100644 --- a/include/Topology/map/map2.hpp +++ b/include/Topology/map/map2.hpp @@ -68,6 +68,16 @@ inline Dart Map2::newDart() { Dart d = Map1::newDart() ; (*m_phi2)[dartIndex(d)] = d ; + if(m_isMultiRes) + { + pushLevel() ; + for(unsigned int i = m_mrCurrentLevel + 1; i < m_mrDarts.size(); ++i) + { + setCurrentLevel(i) ; + (*m_phi2)[dartIndex(d)] = d ; + } + popLevel() ; + } return d ; } diff --git a/include/Topology/map/map3.hpp b/include/Topology/map/map3.hpp index fd548da29..d8d379386 100644 --- a/include/Topology/map/map3.hpp +++ b/include/Topology/map/map3.hpp @@ -65,8 +65,17 @@ inline void Map3::update_topo_shortcuts() inline Dart Map3::newDart() { Dart d = Map2::newDart() ; - unsigned int d_index = dartIndex(d); - (*m_phi3)[d_index] = d ; + (*m_phi3)[dartIndex(d)] = d ; + if(m_isMultiRes) + { + pushLevel() ; + for(unsigned int i = m_mrCurrentLevel + 1; i < m_mrDarts.size(); ++i) + { + setCurrentLevel(i) ; + (*m_phi3)[dartIndex(d)] = d ; + } + popLevel() ; + } return d ; } diff --git a/src/Topology/generic/genericmap.cpp b/src/Topology/generic/genericmap.cpp index fbe225099..86bd9faf1 100644 --- a/src/Topology/generic/genericmap.cpp +++ b/src/Topology/generic/genericmap.cpp @@ -177,20 +177,6 @@ void GenericMap::addLevel() m_mrDarts.push_back(amvMR) ; - // copy the darts pointers of the previous level - if(m_mrDarts.size() > 1) - m_mrattribs.copyAttribute(amvMR->getIndex(), m_mrDarts[m_mrDarts.size() - 2]->getIndex()) ; -} - -void GenericMap::addLevelDuplicate() -{ - unsigned int newLevel = m_mrDarts.size() ; - std::stringstream ss ; - ss << "MRdart_"<< newLevel ; - AttributeMultiVector* amvMR = m_mrattribs.addAttribute(ss.str()) ; - - m_mrDarts.push_back(amvMR) ; - // copy the darts pointers of the previous level if(m_mrDarts.size() > 1) m_mrattribs.copyAttribute(amvMR->getIndex(), m_mrDarts[newLevel - 1]->getIndex()) ; -- GitLab