--- src/geo/GeomMeshMatcher.cpp.orig 2024-03-29 22:07:00 UTC +++ src/geo/GeomMeshMatcher.cpp @@ -12,7 +12,6 @@ #include #include #include "GeomMeshMatcher.h" -#include "Pair.h" #include "discreteVertex.h" #include "GmshMessage.h" #include "SOrientedBoundingBox.h" @@ -61,22 +60,22 @@ void getIntersection(std::vector &res, std::vector< } } -template T findMatching(std::vector > &matching, T &entity) +template T findMatching(std::vector > &matching, T &entity) { for(auto pair = matching.begin(); pair != matching.end(); pair++) { - if((*pair).left() == entity) return ((*pair).right()); + if((*pair).first == entity) return ((*pair).second); } return (0); } // Matching vertices -std::vector > * +std::vector > * GeomMeshMatcher::matchVertices(GModel *m1, GModel *m2, bool &ok) { // Vector that will be returned. - std::vector > *coresp_v = - new std::vector >; + std::vector > *coresp_v = + new std::vector >; int num_matched_vertices = 0; int num_total_vertices = m2->getNumVertices(); @@ -107,7 +106,7 @@ GeomMeshMatcher::matchVertices(GModel *m1, GModel *m2, if(choice && best_score != DBL_MAX) { choice->physicals = v1->physicals; - coresp_v->push_back(Pair(v1, choice)); + coresp_v->push_back(std::make_pair(v1, choice)); num_matched_vertices++; } } @@ -120,17 +119,17 @@ GeomMeshMatcher::matchVertices(GModel *m1, GModel *m2, // Matching edges -std::vector > * +std::vector > * GeomMeshMatcher::matchEdges(GModel *m1, GModel *m2, - std::vector > *coresp_v, + std::vector > *coresp_v, bool &ok) { int num_matched_edges = 0; int num_total_edges = m2->getNumEdges(); // Vector that will be returned. - std::vector > *coresp_e = - new std::vector >; + std::vector > *coresp_e = + new std::vector >; std::vector closed_curves; @@ -195,7 +194,7 @@ GeomMeshMatcher::matchEdges(GModel *m1, GModel *m2, } } } - coresp_e->push_back(Pair(e1, choice)); + coresp_e->push_back(std::make_pair(e1, choice)); // copy topological information if(choice) { @@ -213,16 +212,16 @@ GeomMeshMatcher::matchEdges(GModel *m1, GModel *m2, // Matching faces -std::vector > * +std::vector > * GeomMeshMatcher::matchFaces(GModel *m1, GModel *m2, - std::vector > *coresp_e, + std::vector > *coresp_e, bool &ok) { int num_matched_faces = 0; int num_total_faces = m2->getNumFaces(); - std::vector > *coresp_f = - new std::vector >; + std::vector > *coresp_f = + new std::vector >; for(auto fit = m1->firstFace(); fit != m1->lastFace(); fit++) { GFace *f1 = (GFace *)*fit; @@ -276,7 +275,7 @@ GeomMeshMatcher::matchFaces(GModel *m1, GModel *m2, if(choice) { Msg::Debug("Surfaces %i and %i match", f1->tag(), choice->tag()); - coresp_f->push_back(Pair(f1, choice)); + coresp_f->push_back(std::make_pair(f1, choice)); // copy topological information choice->setTag(f1->tag()); f1->physicals = choice->physicals; @@ -292,17 +291,17 @@ GeomMeshMatcher::matchFaces(GModel *m1, GModel *m2, // Matching regions -std::vector > * +std::vector > * GeomMeshMatcher::matchRegions(GModel *m1, GModel *m2, - std::vector > *coresp_f, + std::vector > *coresp_f, bool &ok) { int num_matched_regions = 0; int num_total_regions = 0; - std::vector > *coresp_r = - new std::vector >; + std::vector > *coresp_r = + new std::vector >; std::vector m1_entities; m1->getEntities(m1_entities, 3); @@ -344,8 +343,7 @@ GeomMeshMatcher::matchRegions(GModel *m1, GModel *m2, } if(common_regions.size() == 1) { - coresp_r->push_back( - Pair((GRegion *)*entity1, common_regions[0])); + coresp_r->push_back(std::make_pair((GRegion *)*entity1, common_regions[0])); common_regions[0]->setTag(((GRegion *)*entity1)->tag()); (*entity1)->physicals = common_regions[0]->physicals; num_matched_regions++; @@ -377,8 +375,7 @@ GeomMeshMatcher::matchRegions(GModel *m1, GModel *m2, choice = (*candidate); } } - coresp_r->push_back( - Pair((GRegion *)*entity1, choice)); + coresp_r->push_back(std::make_pair((GRegion *)*entity1, choice)); if(choice) { choice->setTag(((GRegion *)*entity1)->tag()); (*entity1)->physicals = choice->physicals; @@ -594,13 +591,13 @@ template } template -static void copy_periodicity(std::vector > &eCor, +static void copy_periodicity(std::vector > &eCor, std::map &mesh_to_geom) { typename std::multimap eMap; // (eCor.begin(),eCor.end()); auto eIter = eCor.begin(); for(; eIter != eCor.end(); ++eIter) { - eMap.insert(std::make_pair(eIter->second(), eIter->first())); + eMap.insert(std::make_pair(eIter->second, eIter->first)); } auto srcIter = eMap.begin(); @@ -651,12 +648,12 @@ template } template -static bool apply_periodicity(std::vector > &eCor) +static bool apply_periodicity(std::vector > &eCor) { typename std::multimap eMap; // (eCor.begin(),eCor.end()); auto eIter = eCor.begin(); for(; eIter != eCor.end(); ++eIter) { - eMap.insert(std::make_pair(eIter->second(), eIter->first())); + eMap.insert(std::make_pair(eIter->second, eIter->first)); } auto srcIter = eMap.begin(); @@ -787,57 +784,57 @@ void copy_vertices(GModel *geom, GModel *mesh, void copy_vertices(GModel *geom, GModel *mesh, std::map &_mesh_to_geom, - std::vector > *coresp_v, - std::vector > *coresp_e, - std::vector > *coresp_f, - std::vector > *coresp_r) + std::vector > *coresp_v, + std::vector > *coresp_e, + std::vector > *coresp_f, + std::vector > *coresp_r) { // copy all elements for(std::size_t i = 0; i < coresp_v->size(); ++i) - copy_vertices((*coresp_v)[i].first(), (*coresp_v)[i].second(), + copy_vertices((*coresp_v)[i].first, (*coresp_v)[i].second, _mesh_to_geom); for(std::size_t i = 0; i < coresp_e->size(); ++i) - copy_vertices((*coresp_e)[i].first(), (*coresp_e)[i].second(), + copy_vertices((*coresp_e)[i].first, (*coresp_e)[i].second, _mesh_to_geom); for(std::size_t i = 0; i < coresp_f->size(); ++i) - copy_vertices((*coresp_f)[i].first(), (*coresp_f)[i].second(), + copy_vertices((*coresp_f)[i].first, (*coresp_f)[i].second, _mesh_to_geom); for(std::size_t i = 0; i < coresp_r->size(); ++i) - copy_vertices((*coresp_r)[i].first(), (*coresp_r)[i].second(), + copy_vertices((*coresp_r)[i].first, (*coresp_r)[i].second, _mesh_to_geom); } void copy_elements(GModel *geom, GModel *mesh, std::map &_mesh_to_geom, - std::vector > *coresp_v, - std::vector > *coresp_e, - std::vector > *coresp_f, - std::vector > *coresp_r) + std::vector > *coresp_v, + std::vector > *coresp_e, + std::vector > *coresp_f, + std::vector > *coresp_r) { // copy all elements for(std::size_t i = 0; i < coresp_v->size(); ++i) { - GVertex *dest = (*coresp_v)[i].first(); - GVertex *orig = (*coresp_v)[i].second(); + GVertex *dest = (*coresp_v)[i].first; + GVertex *orig = (*coresp_v)[i].second; copy_elements(dest->points, orig->points, _mesh_to_geom); } for(std::size_t i = 0; i < coresp_e->size(); ++i) { - GEdge *dest = (*coresp_e)[i].first(); - GEdge *orig = (*coresp_e)[i].second(); + GEdge *dest = (*coresp_e)[i].first; + GEdge *orig = (*coresp_e)[i].second; copy_elements(dest->lines, orig->lines, _mesh_to_geom); } for(std::size_t i = 0; i < coresp_f->size(); ++i) { - GFace *dest = (*coresp_f)[i].first(); - GFace *orig = (*coresp_f)[i].second(); + GFace *dest = (*coresp_f)[i].first; + GFace *orig = (*coresp_f)[i].second; copy_elements(dest->triangles, orig->triangles, _mesh_to_geom); copy_elements(dest->quadrangles, orig->quadrangles, _mesh_to_geom); } for(std::size_t i = 0; i < coresp_r->size(); ++i) { - GRegion *dest = (*coresp_r)[i].first(); - GRegion *orig = (*coresp_r)[i].second(); + GRegion *dest = (*coresp_r)[i].first; + GRegion *orig = (*coresp_r)[i].second; copy_elements(dest->tetrahedra, orig->tetrahedra, _mesh_to_geom); copy_elements(dest->hexahedra, orig->hexahedra, _mesh_to_geom); @@ -857,10 +854,10 @@ int GeomMeshMatcher::match(GModel *geom, GModel *mesh) bool ok = true; - std::vector > *coresp_v(nullptr); - std::vector > *coresp_e(nullptr); - std::vector > *coresp_f(nullptr); - std::vector > *coresp_r(nullptr); + std::vector > *coresp_v(nullptr); + std::vector > *coresp_e(nullptr); + std::vector > *coresp_f(nullptr); + std::vector > *coresp_r(nullptr); coresp_v = matchVertices(geom, mesh, ok); if(ok) {