diff --git a/Geo/MElement.h b/Geo/MElement.h index 50fc874c3c981e58cd4220eba04a6df7fc45660f..3a91e59975571580bc8225f33a43dfebf03a4fb7 100644 --- a/Geo/MElement.h +++ b/Geo/MElement.h @@ -458,4 +458,11 @@ template <> struct DimTr<3> } }; +struct Less_ElementPtr : public std::binary_function<MElement *, MElement *, bool> { + bool operator()(const MElement *e1, const MElement *e2) const + { + return e1->getNum()<e2->getNum(); + } +}; + #endif diff --git a/Geo/MTriangle.h b/Geo/MTriangle.h index 0a7958f164ba2bb7bc0f56ac2b5a369b3396287b..3be0475e9830bc6043f90fbac2596132106e8c89 100644 --- a/Geo/MTriangle.h +++ b/Geo/MTriangle.h @@ -359,9 +359,9 @@ class MTriangleN : public MTriangle { }; template <class T> -void sort3(T *t[3]) +void sort3(T t[3]) { - T *temp; + T temp; if(t[0] > t[1]){ temp = t[1]; t[1] = t[0]; @@ -383,8 +383,8 @@ struct compareMTriangleLexicographic { bool operator () (MTriangle *t1, MTriangle *t2) const { - MVertex *_v1[3] = {t1->getVertex(0), t1->getVertex(1), t1->getVertex(2)}; - MVertex *_v2[3] = {t2->getVertex(0), t2->getVertex(1), t2->getVertex(2)}; + int _v1[3] = {t1->getVertex(0)->getNum(), t1->getVertex(1)->getNum(), t1->getVertex(2)->getNum()}; + int _v2[3] = {t2->getVertex(0)->getNum(), t2->getVertex(1)->getNum(), t2->getVertex(2)->getNum()}; sort3(_v1); sort3(_v2); if(_v1[0] < _v2[0]) return true; diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp index 4c91f07b7b3c05b1956c88fcf4493fd84374e108..f737949d93c12c2af942f333017f29c493c33d4d 100644 --- a/Mesh/meshGRegion.cpp +++ b/Mesh/meshGRegion.cpp @@ -672,7 +672,7 @@ static void MeshDelaunayVolumeNewCode(std::vector<GRegion*> ®ions) { GRegion *gr = regions[0]; std::list<GFace*> faces = gr->faces(); - std::set<GFace*> allFacesSet; + std::set<GFace*, GEntityLessThan> allFacesSet; for(unsigned int i = 0; i < regions.size(); i++){ std::list<GFace*> f = regions[i]->faces(); allFacesSet.insert(f.begin(), f.end()); diff --git a/Mesh/meshGRegionDelaunayInsertion.h b/Mesh/meshGRegionDelaunayInsertion.h index 88af9966f4e0aefe18ec4c014eda725b7be08a0b..3ed5d4020dcf03b44066acc53f725e4e1a30a428 100644 --- a/Mesh/meshGRegionDelaunayInsertion.h +++ b/Mesh/meshGRegionDelaunayInsertion.h @@ -188,7 +188,7 @@ class compareTet4Ptr { if (a->getRadius() > b->getRadius()) return true; if (a->getRadius() < b->getRadius()) return false; - return a < b; + return a->tet()->getNum() < b->tet()->getNum(); } }; diff --git a/contrib/HighOrderMeshOptimizer/OptHOM.cpp b/contrib/HighOrderMeshOptimizer/OptHOM.cpp index ca081c94cd6a2384e7691e1068c3b94cdf497b5e..0487530484b257b6262622a0773dc3b8bf2099da 100644 --- a/contrib/HighOrderMeshOptimizer/OptHOM.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHOM.cpp @@ -75,7 +75,7 @@ static inline double compute_f1(double v, double barrier) } OptHOM::OptHOM(const std::map<MElement*,GEntity*> &element2entity, - const std::set<MElement*> &els, std::set<MVertex*> & toFix, + const std::set<MElement*, Less_ElementPtr> &els, std::set<MVertex*> & toFix, bool fixBndNodes, bool fastJacEval) : mesh(element2entity, els, toFix, fixBndNodes, fastJacEval) { diff --git a/contrib/HighOrderMeshOptimizer/OptHOM.h b/contrib/HighOrderMeshOptimizer/OptHOM.h index 179e19be2ad152211f03a5b4eeefee265375644d..f36b71ce3f38601206325efbd26e2002c6f336d8 100644 --- a/contrib/HighOrderMeshOptimizer/OptHOM.h +++ b/contrib/HighOrderMeshOptimizer/OptHOM.h @@ -45,7 +45,7 @@ class OptHOM public: Mesh mesh; OptHOM(const std::map<MElement*,GEntity*> &element2entity, - const std::set<MElement*> &els, std::set<MVertex*> & toFix, + const std::set<MElement*, Less_ElementPtr> &els, std::set<MVertex*> & toFix, bool fixBndNodes, bool fastJacEval = false); // returns 1 if the mesh has been optimized with success i.e. all jacobians // are in the range; returns 0 if the mesh is valid (all jacobians positive, diff --git a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp index d91c48c9c16983658134a734ba93cf66b263f63b..a818794bb004a7384754d346c1253aadfefb70d3 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHomMesh.cpp @@ -39,7 +39,7 @@ #include "OptHomIntegralBoundaryDist.h" Mesh::Mesh(const std::map<MElement*,GEntity*> &element2entity, - const std::set<MElement*> &els, std::set<MVertex*> &toFix, + const std::set<MElement*, Less_ElementPtr> &els, std::set<MVertex*> &toFix, bool fixBndNodes, bool fastJacEval) : _fastJacEval(fastJacEval) { diff --git a/contrib/HighOrderMeshOptimizer/OptHomMesh.h b/contrib/HighOrderMeshOptimizer/OptHomMesh.h index 8ccdd35e4513f78fd91d4b25c5f3af76baa48d83..d4ff7e3ac5b34de835ded8032f1bc1ea09236d48 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomMesh.h +++ b/contrib/HighOrderMeshOptimizer/OptHomMesh.h @@ -44,7 +44,7 @@ class Mesh { public: Mesh(const std::map<MElement*,GEntity*> &element2entity, - const std::set<MElement*> &els, std::set<MVertex*> & toFix, bool fixBndNodes, bool fastJacEval); + const std::set<MElement*, Less_ElementPtr> &els, std::set<MVertex*> & toFix, bool fixBndNodes, bool fastJacEval); inline const int &nPC() { return _nPC; } inline int nVert() { return _vert.size(); } diff --git a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp index 578f7aece41b64e46e4a01dd9f710d07a0e302fa..96cd8c848934598c4d8f916a73873d54ddd2bf4d 100644 --- a/contrib/HighOrderMeshOptimizer/OptHomRun.cpp +++ b/contrib/HighOrderMeshOptimizer/OptHomRun.cpp @@ -51,7 +51,7 @@ typedef std::vector<MElement*> elVec; typedef elVec::const_iterator elVecConstIter; -typedef std::set<MElement*> elSet; +typedef std::set<MElement*, Less_ElementPtr> elSet; typedef elSet::iterator elSetIter; typedef std::set<MVertex*> vertSet;