diff --git a/Geo/gmshFace.cpp b/Geo/gmshFace.cpp index d7ce397c2b1ac51b33d5d2dda407d3f2b254b56d..4c2dd2c0a4a67170f9ad95b3980b861040ebf81d 100644 --- a/Geo/gmshFace.cpp +++ b/Geo/gmshFace.cpp @@ -1,4 +1,4 @@ -// $Id: gmshFace.cpp,v 1.42 2007-09-26 20:51:58 geuzaine Exp $ +// $Id: gmshFace.cpp,v 1.43 2007-11-27 16:45:27 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -96,6 +96,7 @@ gmshFace::gmshFace(GModel *m, int num) { s = Create_Surface(num, MSH_SURF_DISCRETE); Tree_Add(m->getGEOInternals()->Surfaces, &s); + meshStatistics.status = GFace::DONE; } void gmshFace::setModelEdges(std::list<GEdge*>&ed) diff --git a/Mesh/Generator.cpp b/Mesh/Generator.cpp index e16d722148b7a4d5f49ad30f07049fd6d2ce1f61..f8e6968612025fa9cc51db3cbe4faada46208240 100644 --- a/Mesh/Generator.cpp +++ b/Mesh/Generator.cpp @@ -1,4 +1,4 @@ -// $Id: Generator.cpp,v 1.125 2007-11-26 14:34:10 remacle Exp $ +// $Id: Generator.cpp,v 1.126 2007-11-27 16:45:27 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -177,50 +177,51 @@ void Mesh1D(GModel *m) Msg(STATUS1, "Mesh"); } -void PrintMesh2dStatistics (GModel *m) +void PrintMesh2dStatistics(GModel *m) { FILE *statreport = 0; - if (CTX.create_append_statreport == 1) - statreport = fopen (CTX.statreport,"w"); - else if (CTX.create_append_statreport == 2) - statreport = fopen (CTX.statreport,"a"); + if(CTX.create_append_statreport == 1) + statreport = fopen(CTX.statreport, "w"); + else if(CTX.create_append_statreport == 2) + statreport = fopen(CTX.statreport, "a"); else return; - double worst=1,best=0,avg=0; - double e_long=0,e_short=1.e22,e_avg=0; - int nTotT=0,nTotE=0,nTotGoodLength=0,nTotGoodQuality=0,nUnmeshed=0,numFaces=0; - Msg(INFO,"2D Mesh Statistics :"); - for (GModel::fiter it = m->firstFace() ; it!=m->lastFace(); ++it) - { - worst = std::min((*it)->meshStatistics.worst_element_shape,worst); - best = std::max((*it)->meshStatistics.best_element_shape,best); - avg += (*it)->meshStatistics.average_element_shape * (*it)->meshStatistics.nbTriangle ; - - e_avg += (*it)->meshStatistics.efficiency_index ;//* (*it)->meshStatistics.nbEdge; - - e_long = std::max((*it)->meshStatistics.longest_edge_length,e_long); - e_short = std::min((*it)->meshStatistics.smallest_edge_length,e_short); + double worst = 1, best = 0, avg = 0; + double e_long = 0, e_short = 1.e22, e_avg = 0; + int nTotT = 0, nTotE = 0, nTotGoodLength = 0, nTotGoodQuality = 0; + int nUnmeshed = 0, numFaces = 0; - if ((*it)->meshStatistics.status == GFace::FAILED || (*it)->meshStatistics.status == GFace::PENDING)nUnmeshed++; - - nTotT += (*it)->meshStatistics.nbTriangle ; - nTotE += (*it)->meshStatistics.nbEdge ; - nTotGoodLength += (*it)->meshStatistics.nbGoodLength ; - nTotGoodQuality+= (*it)->meshStatistics.nbGoodQuality ; - numFaces ++; - } + Msg(INFO,"2D Mesh Statistics :"); + for(GModel::fiter it = m->firstFace() ; it!=m->lastFace(); ++it){ + worst = std::min((*it)->meshStatistics.worst_element_shape, worst); + best = std::max((*it)->meshStatistics.best_element_shape, best); + avg += (*it)->meshStatistics.average_element_shape * (*it)->meshStatistics.nbTriangle; + e_avg += (*it)->meshStatistics.efficiency_index;//* (*it)->meshStatistics.nbEdge; + e_long = std::max((*it)->meshStatistics.longest_edge_length, e_long); + e_short = std::min((*it)->meshStatistics.smallest_edge_length, e_short); + if ((*it)->meshStatistics.status == GFace::FAILED || + (*it)->meshStatistics.status == GFace::PENDING) nUnmeshed++; + nTotT += (*it)->meshStatistics.nbTriangle; + nTotE += (*it)->meshStatistics.nbEdge; + nTotGoodLength += (*it)->meshStatistics.nbGoodLength; + nTotGoodQuality += (*it)->meshStatistics.nbGoodQuality; + numFaces++; + } - if (CTX.create_append_statreport == 1){ - fprintf(statreport,"2D stats\tname\t\t#faces\t\t#fail\t\t#t\t\tQavg\t\tQbest\t\tQworst\t\t#Q>90\t\t#Q>90/#t\t#e\t\ttau\t\t#Egood\t\t#Egood/#e\tCPU\n"); + if(CTX.create_append_statreport == 1){ + fprintf(statreport, "2D stats\tname\t\t#faces\t\t#fail\t\t" + "#t\t\tQavg\t\tQbest\t\tQworst\t\t#Q>90\t\t#Q>90/#t\t" + "#e\t\ttau\t\t#Egood\t\t#Egood/#e\tCPU\n"); } - fprintf(statreport,"\t%16s\t%d\t\t%d\t\t",CTX.base_filename,numFaces, nUnmeshed); + fprintf(statreport,"\t%16s\t%d\t\t%d\t\t", CTX.base_filename, numFaces, nUnmeshed); fprintf(statreport,"%d\t\t%8.7f\t%8.7f\t%8.7f\t%d\t\t%8.7f\t", - nTotT,avg/(double)nTotT,best,worst,nTotGoodQuality,(double)nTotGoodQuality/nTotT); + nTotT, avg / (double)nTotT, best, worst, nTotGoodQuality, + (double)nTotGoodQuality / nTotT); fprintf(statreport,"%d\t\t%8.7f\t%d\t\t%8.7f\t%8.1f\n", - nTotE,exp(e_avg/(double)nTotE),nTotGoodLength,(double)nTotGoodLength/nTotE,CTX.mesh_timer[1]); - fclose (statreport); - + nTotE, exp(e_avg / (double)nTotE), nTotGoodLength, + (double)nTotGoodLength / nTotE, CTX.mesh_timer[1]); + fclose(statreport); } void Mesh2D(GModel *m) @@ -245,20 +246,20 @@ void Mesh2D(GModel *m) if(!Mesh2DWithBoundaryLayers(m)){ std::for_each(m->firstFace(), m->lastFace(), meshGFace()); int nIter = 0; - while(1) - { - meshGFace mesher; - int nbPending = 0; - for (GModel::fiter it = m->firstFace() ; it!=m->lastFace(); ++it) - { - if ((*it)->meshStatistics.status == GFace::PENDING){mesher(*it);nbPending++;} - } - if (!nbPending)break; - if (nIter > 10)break; + while(1){ + meshGFace mesher; + int nbPending = 0; + for(GModel::fiter it = m->firstFace() ; it!=m->lastFace(); ++it){ + if ((*it)->meshStatistics.status == GFace::PENDING){ + mesher(*it); + nbPending++; + } } + if(!nbPending) break; + if(nIter++ > 10) break; + } } - double t2 = Cpu(); CTX.mesh_timer[1] = t2 - t1; Msg(INFO, "Mesh 2D complete (%g s)", CTX.mesh_timer[1]); diff --git a/Mesh/meshGFaceExtruded.cpp b/Mesh/meshGFaceExtruded.cpp index f374952d350be1185366591f1ded27e1314c2495..44cfd58e48309b615761c2c6f1125c3d8efc1095 100644 --- a/Mesh/meshGFaceExtruded.cpp +++ b/Mesh/meshGFaceExtruded.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFaceExtruded.cpp,v 1.22 2007-08-02 16:16:19 geuzaine Exp $ +// $Id: meshGFaceExtruded.cpp,v 1.23 2007-11-27 16:45:27 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -235,6 +235,7 @@ int MeshExtrudedSurface(GFace *gf, MVertexLessThanLexicographic::tolerance = old_tol; + gf->meshStatistics.status = GFace::DONE; return 1; } diff --git a/Mesh/meshGFaceTransfinite.cpp b/Mesh/meshGFaceTransfinite.cpp index 1f99c7db86e94ca65aa5bd05898f88deca808b0f..8b9a43e30e01ecc073aaf20f972837e8c84259bf 100644 --- a/Mesh/meshGFaceTransfinite.cpp +++ b/Mesh/meshGFaceTransfinite.cpp @@ -1,4 +1,4 @@ -// $Id: meshGFaceTransfinite.cpp,v 1.21 2007-09-04 13:47:02 remacle Exp $ +// $Id: meshGFaceTransfinite.cpp,v 1.22 2007-11-27 16:45:27 geuzaine Exp $ // // Copyright (C) 1997-2007 C. Geuzaine, J.-F. Remacle // @@ -401,5 +401,6 @@ int MeshTransfiniteSurface(GFace *gf) } } + gf->meshStatistics.status = GFace::DONE; return 1; }