diff --git a/Geo/GEdge.cpp b/Geo/GEdge.cpp index 018c0c0ce68c0cee1e6d35cbbcb226304b94f42b..4aa0af1655726fc1ef98b2ef48a3aa6f790ccbdd 100644 --- a/Geo/GEdge.cpp +++ b/Geo/GEdge.cpp @@ -37,6 +37,8 @@ void GEdge::deleteMesh() mesh_vertices.clear(); for(unsigned int i = 0; i < lines.size(); i++) delete lines[i]; lines.clear(); + deleteVertexArrays(); + model()->destroyMeshCaches(); } void GEdge::reverse() diff --git a/Geo/GEntity.cpp b/Geo/GEntity.cpp index 17247cb3a65e769b737b0f384b870bdf717474df..abd2baef4a92da0e581c18bb28a88848094d5152 100644 --- a/Geo/GEntity.cpp +++ b/Geo/GEntity.cpp @@ -17,11 +17,6 @@ GEntity::GEntity(GModel *m, int t) _color = CTX::instance()->packColor(0, 0, 255, 0); } -GEntity::~GEntity() -{ - deleteVertexArrays(); -} - void GEntity::deleteVertexArrays() { if(va_lines) delete va_lines; va_lines = 0; diff --git a/Geo/GEntity.h b/Geo/GEntity.h index b24b6db0d7b9c8877ddebc087c7c75d2779c7a69..a4d2f2d59370e8c090383f0ad20b3ec72964d166 100644 --- a/Geo/GEntity.h +++ b/Geo/GEntity.h @@ -158,7 +158,7 @@ class GEntity { GEntity(GModel *m, int t); - virtual ~GEntity(); + virtual ~GEntity(){} // delete the mesh data virtual void deleteMesh(){} diff --git a/Geo/GFace.cpp b/Geo/GFace.cpp index 7032c53b1a9990b75a0337af854d3eb8b7da3716..e1f4a904ef0084f53ad4adb0bb99caac3da3b512 100644 --- a/Geo/GFace.cpp +++ b/Geo/GFace.cpp @@ -37,10 +37,10 @@ GFace::~GFace() ++it; } - deleteMesh(); - if(va_geom_triangles) delete va_geom_triangles; + + deleteMesh(); } void GFace::delFreeEdge(GEdge *e) @@ -83,6 +83,8 @@ void GFace::deleteMesh() quadrangles.clear(); for(unsigned int i = 0; i < polygons.size(); i++) delete polygons[i]; polygons.clear(); + deleteVertexArrays(); + model()->destroyMeshCaches(); } unsigned int GFace::getNumMeshElements() diff --git a/Geo/GModel.cpp b/Geo/GModel.cpp index 82707ba69848a06e570ebcf336d507c267aea321..2b5700d570f549a19ffed7d0e71d05ee478595c0 100644 --- a/Geo/GModel.cpp +++ b/Geo/GModel.cpp @@ -704,6 +704,7 @@ void GModel::removeInvisibleElements() removeInvisible((*it)->lines, all); (*it)->deleteVertexArrays(); } + destroyMeshCaches(); } int GModel::indexMeshVertices(bool all, int singlePartition) diff --git a/Geo/GRegion.cpp b/Geo/GRegion.cpp index ca75fff6a63f8a7d597f682ab50d7d147b8f9bca..a09843cc7648e534a860cafe813a1c8af25270a6 100644 --- a/Geo/GRegion.cpp +++ b/Geo/GRegion.cpp @@ -46,6 +46,8 @@ void GRegion::deleteMesh() pyramids.clear(); for(unsigned int i = 0; i < polyhedra.size(); i++) delete polyhedra[i]; polyhedra.clear(); + deleteVertexArrays(); + model()->destroyMeshCaches(); } unsigned int GRegion::getNumMeshElements() diff --git a/Geo/GVertex.cpp b/Geo/GVertex.cpp index 2e465d05e10e7125b01c35fd16d1619c52380efe..206abc95151bff40e831ceef8700faab0be64096 100644 --- a/Geo/GVertex.cpp +++ b/Geo/GVertex.cpp @@ -5,6 +5,7 @@ #include <sstream> #include <algorithm> +#include "GModel.h" #include "GVertex.h" #include "GFace.h" #include "MPoint.h" @@ -25,6 +26,8 @@ void GVertex::deleteMesh() mesh_vertices.clear(); for(unsigned int i = 0; i < points.size(); i++) delete points[i]; points.clear(); + deleteVertexArrays(); + model()->destroyMeshCaches(); } void GVertex::setPosition(GPoint &p) diff --git a/Geo/discreteEdge.cpp b/Geo/discreteEdge.cpp index cc28500503b3f7771e1a89a1cd5bd210ba1da347..baa8ee5e7cd6373341e61c7f6344a62a6055ea32 100644 --- a/Geo/discreteEdge.cpp +++ b/Geo/discreteEdge.cpp @@ -277,6 +277,8 @@ void discreteEdge::parametrize() mesh_vertices = newVertices; deleteVertexArrays(); + model()->destroyMeshCaches(); + lines.clear(); lines = newLines; diff --git a/Mesh/HighOrder.cpp b/Mesh/HighOrder.cpp index 4399e427f1efbd31c699305319dfc18fea4aaba2..73f512ba6d916413f231c0dda2a529a8890926d9 100644 --- a/Mesh/HighOrder.cpp +++ b/Mesh/HighOrder.cpp @@ -737,7 +737,8 @@ static void setHighOrder(GFace *gf, edgeContainer &edgeVertices, std::vector<MQuadrangle*> quadrangles2; for(unsigned int i = 0; i < gf->quadrangles.size(); i++){ MQuadrangle *q = gf->quadrangles[i]; - MQuadrangle *qNew = setHighOrder(q,gf,edgeVertices,faceVertices,linear,incomplete,nPts,displ2D,displ3D); + MQuadrangle *qNew = setHighOrder(q, gf, edgeVertices, faceVertices, linear, + incomplete, nPts, displ2D, displ3D); quadrangles2.push_back(qNew); delete q; } @@ -898,6 +899,8 @@ static void removeHighOrderVertices(GEntity *e) void SetOrder1(GModel *m) { + m->destroyMeshCaches(); + // replace all elements with first order elements for(GModel::eiter it = m->firstEdge(); it != m->lastEdge(); ++it){ setFirstOrder(*it, (*it)->lines); diff --git a/Mesh/highOrderSmoother.cpp b/Mesh/highOrderSmoother.cpp index 94d016b437ea6dfb75912e8184e5dde6ae3a2bb7..6500b83aabef7ea8569925545fc2aca727772fab 100644 --- a/Mesh/highOrderSmoother.cpp +++ b/Mesh/highOrderSmoother.cpp @@ -1396,7 +1396,7 @@ static int swapHighOrderTriangles(GFace *gf, } } gf->mesh_vertices = mesh_vertices2; - printf("Deleted %d vertices from %d\n",c2,gf->mesh_vertices.size()); + printf("Deleted %d vertices from %d\n", c2, (int)gf->mesh_vertices.size()); printf("Added %d vertices\n",c1); for (unsigned int i = 0; i < gf->triangles.size(); i++){ @@ -1408,7 +1408,7 @@ static int swapHighOrderTriangles(GFace *gf, } } - printf("replacing %d by %d\n",gf->triangles.size(),triangles2.size()); + printf("replacing %d by %d\n", (int)gf->triangles.size(), (int)triangles2.size()); gf->triangles = triangles2; return nbSwap; } diff --git a/Mesh/meshGEdge.cpp b/Mesh/meshGEdge.cpp index da4ef33df77be7fa0c5905c2d53bb82a3de0e2aa..d3b3a345dfadba8a8c91097ec3e166752a5d5e2e 100644 --- a/Mesh/meshGEdge.cpp +++ b/Mesh/meshGEdge.cpp @@ -235,10 +235,7 @@ static double Integration(GEdge *ge, double t1, double t2, void deMeshGEdge::operator() (GEdge *ge) { if(ge->geomType() == GEntity::DiscreteCurve) return; - ge->deleteMesh(); - ge->deleteVertexArrays(); - ge->model()->destroyMeshCaches(); } void meshGEdge::operator() (GEdge *ge) diff --git a/Mesh/meshGFace.cpp b/Mesh/meshGFace.cpp index 822e029a63c5c0d0acc42f0ae898f2835609fe1b..45b80b95f822f42fc78da7d1fda5150412168284 100644 --- a/Mesh/meshGFace.cpp +++ b/Mesh/meshGFace.cpp @@ -1229,17 +1229,12 @@ static bool meshGeneratorPeriodic(GFace *gf, bool debug = true) void deMeshGFace::operator() (GFace *gf) { if(gf->geomType() == GEntity::DiscreteSurface) return; - gf->deleteMesh(); - - gf->deleteVertexArrays(); - gf->model()->destroyMeshCaches(); - gf->meshStatistics.status = GFace::PENDING; gf->meshStatistics.nbTriangle = gf->meshStatistics.nbEdge = 0; } -int debugSurface = -100; +int debugSurface = -1; void meshGFace::operator() (GFace *gf) { diff --git a/Mesh/meshGFaceLloyd.cpp b/Mesh/meshGFaceLloyd.cpp index 8978c5d8780e705356a1d223d821f0a03b07eeae..f7f8da48797bc6961f28dbd4cbb31abf67c3f8ee 100644 --- a/Mesh/meshGFaceLloyd.cpp +++ b/Mesh/meshGFaceLloyd.cpp @@ -30,8 +30,8 @@ void lloydAlgorithm::operator () ( GFace * gf) { const double LC2D = sqrt ((du.high()-du.low())*(du.high()-du.low()) + (dv.high()-dv.low())*(dv.high()-dv.low())); - printf("Lloyd on face %d %d elements %d nodes LC %g\n",gf->tag(), - gf->getNumMeshElements(),all.size(),LC2D); + printf("Lloyd on face %d %d elements %d nodes LC %g\n", gf->tag(), + gf->getNumMeshElements(), (int)all.size(), LC2D); int i = 0; diff --git a/Mesh/meshGRegion.cpp b/Mesh/meshGRegion.cpp index 073ba271cfd371995230d832196b6c2bc94ee47e..2bc09056ceaba5a38e8fdd836b8510d8c33517c2 100644 --- a/Mesh/meshGRegion.cpp +++ b/Mesh/meshGRegion.cpp @@ -124,6 +124,7 @@ void TransferTetgenMesh(GRegion *gr, tetgenio &in, tetgenio &out, // Tetgen modifies both surface & edge mesh, so we need to re-create // everything + gr->model()->destroyMeshCaches(); std::list<GFace*> faces = gr->faces(); std::list<GFace*>::iterator it = faces.begin(); while(it != faces.end()){ @@ -438,10 +439,7 @@ void TransferVolumeMesh(GRegion *gr, Ng_Mesh *ngmesh, void deMeshGRegion::operator() (GRegion *gr) { if(gr->geomType() == GEntity::DiscreteVolume) return; - gr->deleteMesh(); - gr->deleteVertexArrays(); - gr->model()->destroyMeshCaches(); } int intersect_line_triangle(double X[3], double Y[3], double Z[3] , diff --git a/Solver/multiscaleLaplace.cpp b/Solver/multiscaleLaplace.cpp index 5852f1d9bff9f2d699b1ced4bfc612c84f890bb3..6430614ccd601da799151246e5295adf8b10afca 100644 --- a/Solver/multiscaleLaplace.cpp +++ b/Solver/multiscaleLaplace.cpp @@ -585,16 +585,16 @@ static void connected_left_right (std::vector<MElement *> &left, } //-------------------------------------------------------------- -static void printLevel ( const char* fn, - std::vector<MElement *> &elements, - std::map<MVertex*,SPoint2> *coordinates, - double version){ - - if( !CTX::instance()->mesh.saveAll) return; +static void printLevel(const char* fn, + std::vector<MElement *> &elements, + std::map<MVertex*,SPoint2> *coordinates, + double version) +{ + if(!CTX::instance()->mesh.saveAll) return; std::set<MVertex*> vs; - for (int i=0;i<elements.size();i++) - for (int j=0;j<elements[i]->getNumVertices();j++) + for (int i = 0; i < elements.size(); i++) + for (int j = 0; j < elements[i]->getNumVertices(); j++) vs.insert(elements[i]->getVertex(j)); bool binary = false; @@ -603,23 +603,23 @@ static void printLevel ( const char* fn, fprintf(fp, "%g %d %d\n", version, binary ? 1 : 0, (int)sizeof(double)); fprintf(fp, "$EndMeshFormat\n"); - fprintf(fp,"$Nodes\n%d\n",vs.size()); + fprintf(fp, "$Nodes\n%d\n", (int)vs.size()); std::set<MVertex*> :: iterator it = vs.begin(); int index = 1; for (; it != vs.end() ; ++it){ (*it)->setIndex(index++); SPoint2 p = (coordinates) ? (*coordinates)[*it] : SPoint2(0,0); - if (coordinates) fprintf(fp,"%d %g %g 0\n",(*it)->getIndex(),p.x(),p.y()); - else fprintf(fp,"%d %g %g %g\n",(*it)->getIndex(), - (*it)->x(),(*it)->y(),(*it)->z()); + if (coordinates) fprintf(fp, "%d %g %g 0\n", (*it)->getIndex(), p.x(), p.y()); + else fprintf(fp, "%d %g %g %g\n", (*it)->getIndex(), + (*it)->x(), (*it)->y(), (*it)->z()); } - fprintf(fp,"$EndNodes\n",elements.size()); + fprintf(fp, "$EndNodes\n"); - fprintf(fp,"$Elements\n%d\n",elements.size()); - for (int i=0;i<elements.size();i++){ - elements[i]->writeMSH(fp,version); + fprintf(fp, "$Elements\n%d\n", (int)elements.size()); + for (int i = 0; i < elements.size(); i++){ + elements[i]->writeMSH(fp, version); } - fprintf(fp,"$EndElements\n%d\n",elements.size()); + fprintf(fp, "$EndElements\n"); fclose(fp); }