diff --git a/Fltk/statisticsWindow.cpp b/Fltk/statisticsWindow.cpp index a4499b78692cbcaa95c1dc78ccfe872c3b162d1f..b164f0b365174cf46c5ea6500b040bcc7755710c 100644 --- a/Fltk/statisticsWindow.cpp +++ b/Fltk/statisticsWindow.cpp @@ -187,7 +187,8 @@ statisticsWindow::statisticsWindow(int deltaFontSize) void statisticsWindow::compute(bool elementQuality) { - //emi hack - MINIMUM ANGLES +#if 0 + // MINIMUM ANGLES double minAngle = 120.0; double meanAngle = 0.0; int count = 0; @@ -206,16 +207,14 @@ void statisticsWindow::compute(bool elementQuality) } meanAngle = meanAngle / count; printf("Angles = min=%g av=%g \n", minAngle, meanAngle); - // Emi hack - MESH DEGREE VERTICES - // std::vector<GEntity*> entities; + + // MESH DEGREE VERTICES std::set<MEdge, Less_Edge> edges; GModel::current()->getEntities(entities); std::map<MVertex*, int > vert2Deg; for(unsigned int i = 0; i < entities.size(); i++){ - // printf("entity dim =%d tag=%d \n", entities[i]->dim() , entities[i]->tag()); if(entities[i]->dim() < 2 ) continue; if(entities[i]->tag() < 100) continue; - // printf("continuing \n"); for(unsigned int j = 0; j < entities[i]->getNumMeshElements(); j++){ MElement *e = entities[i]->getMeshElement(j); for(unsigned int k = 0; k < e->getNumEdges(); k++){ @@ -248,7 +247,8 @@ void statisticsWindow::compute(bool elementQuality) if (nbE == 4) d4 += 1; } if (nbElems > 0) - printf("Stats degree vertices: dMin=%d , dMax=%d, d4=%g \n", dMin, dMax, (double)d4/nbElems); + printf("Stats degree vertices: dMin=%d , dMax=%d, d4=%g \n", + dMin, dMax, (double)d4/nbElems); FieldManager *fields = GModel::current()->getFields(); Field *f = fields->get(fields->background_field); @@ -269,7 +269,8 @@ void statisticsWindow::compute(bool elementQuality) double l = sqrt((v0->x()-v1->x())*(v0->x()-v1->x())+ (v0->y()-v1->y())*(v0->y()-v1->y())+ (v0->z()-v1->z())*(v0->z()-v1->z())); - double lf = (*f)(0.5*(v0->x()+v1->x()), 0.5*(v0->y()+v1->y()),0.5*(v0->z()+v1->z()),v0->onWhat()); + double lf = (*f)(0.5*(v0->x()+v1->x()), 0.5*(v0->y()+v1->y()), + 0.5*(v0->z()+v1->z()),v0->onWhat()); double el = l/lf; int index = (int) ceil(el*nbS*0.5); qualE[index]+= 1; @@ -287,8 +288,7 @@ void statisticsWindow::compute(bool elementQuality) } fclose(fp); - //Emi hack - MESH DEGREE VERTICES -#if 0 + std::vector<GEntity*> entities; std::set<MEdge, Less_Edge> edges; GModel::current()->getEntities(entities); @@ -327,7 +327,8 @@ void statisticsWindow::compute(bool elementQuality) dMax = std::max(nbE, dMax); if (nbE == 4) d4 += 1; } - if (nbElems > 0) printf("Stats degree vertices: dMin=%d , dMax=%d, d4=%g \n", dMin, dMax, (double)d4/nbElems); + if (nbElems > 0) printf("Stats degree vertices: dMin=%d , dMax=%d, d4=%g \n", + dMin, dMax, (double)d4/nbElems); FieldManager *fields = GModel::current()->getFields(); Field *f = fields->get(fields->background_field); int nbEdges = edges.size(); @@ -337,29 +338,31 @@ void statisticsWindow::compute(bool elementQuality) int nbS = 50; qualE.resize(nbS); if(fields->background_field > 0){ - std::set<MEdge, Less_Edge>::iterator it = edges.begin(); - double sum = 0; - for (; it !=edges.end();++it){ - MVertex *v0 = it->getVertex(0); - MVertex *v1 = it->getVertex(1); - double l = sqrt((v0->x()-v1->x())*(v0->x()-v1->x())+(v0->y()-v1->y())*(v0->y()-v1->y())+(v0->z()-v1->z())*(v0->z()-v1->z())); - double lf = (*f)(0.5*(v0->x()+v1->x()), 0.5*(v0->y()+v1->y()),0.5*(v0->z()+v1->z()),v0->onWhat()); - double el = l/lf; - int index = (int) ceil(el*nbS*0.5); - qualE[index]+= 1; - double e = (l>lf) ? lf/l : l/lf; - sum += e - 1.0; - } - double tau = exp ((1./edges.size()) * sum); - double ibegin = 2./(2*nbS); - double inext = 2./nbS; - for (int i= 0; i< qualE.size(); i++){ - fprintf(fp, "0 0 0 0 %g 0 0 %g \n", ibegin+i*inext , (double)qualE[i]/nbEdges); - } + std::set<MEdge, Less_Edge>::iterator it = edges.begin(); + double sum = 0; + for (; it !=edges.end();++it){ + MVertex *v0 = it->getVertex(0); + MVertex *v1 = it->getVertex(1); + double l = sqrt((v0->x()-v1->x())*(v0->x()-v1->x())+ + (v0->y()-v1->y())*(v0->y()-v1->y())+ + (v0->z()-v1->z())*(v0->z()-v1->z())); + double lf = (*f)(0.5*(v0->x()+v1->x()), 0.5*(v0->y()+v1->y()), + 0.5*(v0->z()+v1->z()),v0->onWhat()); + double el = l/lf; + int index = (int) ceil(el*nbS*0.5); + qualE[index]+= 1; + double e = (l>lf) ? lf/l : l/lf; + sum += e - 1.0; + } + double tau = exp ((1./edges.size()) * sum); + double ibegin = 2./(2*nbS); + double inext = 2./nbS; + for (int i= 0; i< qualE.size(); i++){ + fprintf(fp, "0 0 0 0 %g 0 0 %g \n", ibegin+i*inext , (double)qualE[i]/nbEdges); + } } fclose(fp); #endif - //emi end hack int num = 0; static double s[50];