From 1674ef93c99efcd199e49eb15203b0e3b4a1d2e1 Mon Sep 17 00:00:00 2001
From: Christophe Geuzaine <cgeuzaine@ulg.ac.be>
Date: Tue, 22 Jan 2008 07:48:12 +0000
Subject: [PATCH] *** empty log message ***

---
 Mesh/qualityMeasures.cpp | 210 ++++++++++++++++++++-------------------
 Mesh/qualityMeasures.h   |  36 ++++---
 2 files changed, 126 insertions(+), 120 deletions(-)

diff --git a/Mesh/qualityMeasures.cpp b/Mesh/qualityMeasures.cpp
index 5f6e2a9e32..4b94e87053 100644
--- a/Mesh/qualityMeasures.cpp
+++ b/Mesh/qualityMeasures.cpp
@@ -4,141 +4,143 @@
 #include "MElement.h"
 #include "Numeric.h"
 
-
-double qmTriangle ( const BDS_Point *p1, const BDS_Point *p2, const BDS_Point *p3, const gmshQualityMeasure4Triangle &cr)
+double qmTriangle(const BDS_Point *p1, const BDS_Point *p2, const BDS_Point *p3, 
+		  const gmshQualityMeasure4Triangle &cr)
 {
-  return qmTriangle (p1->X,p1->Y,p1->Z,p2->X,p2->Y,p2->Z,p3->X,p3->Y,p3->Z,cr);
+  return qmTriangle(p1->X, p1->Y, p1->Z, p2->X, p2->Y, p2->Z, p3->X, p3->Y, p3->Z, cr);
 }
 
-double qmTriangle ( BDS_Face *t, const gmshQualityMeasure4Triangle &cr)
+double qmTriangle(BDS_Face *t, const gmshQualityMeasure4Triangle &cr)
 {
   BDS_Point *n[4];
   t->getNodes(n);
-  return qmTriangle (n[0],n[1],n[2],cr);
+  return qmTriangle(n[0], n[1], n[2], cr);
 }
 
-double qmTriangle ( MTriangle*t, const gmshQualityMeasure4Triangle &cr)
+double qmTriangle(MTriangle*t, const gmshQualityMeasure4Triangle &cr)
 {
-  return qmTriangle (t->getVertex(0),t->getVertex(1),t->getVertex(2),cr);
+  return qmTriangle(t->getVertex(0), t->getVertex(1), t->getVertex(2), cr);
 }
 
-double qmTriangle ( const MVertex   *v1, const MVertex   *v2, const MVertex   *v3, const gmshQualityMeasure4Triangle &cr)
+double qmTriangle(const MVertex *v1, const MVertex *v2, const MVertex *v3, 
+		  const gmshQualityMeasure4Triangle &cr)
 {
-  return qmTriangle (v1->x(),v1->y(),v1->z(),v2->x(),v2->y(),v2->z(),v3->x(),v3->y(),v3->z(),cr);
+  return qmTriangle(v1->x(), v1->y(), v1->z(), v2->x(), v2->y(), v2->z(),
+		    v3->x(), v3->y(), v3->z(), cr);
 }
 
 // Triangle abc
 // quality is between 0 and 1
 
-double qmTriangle ( const double    &xa, const double    &ya, const double    &za, 
-		    const double    &xb, const double    &yb, const double    &zb, 
-		    const double    &xc, const double    &yc, const double    &zc, 
-		    const gmshQualityMeasure4Triangle    &cr)
+double qmTriangle(const double &xa, const double &ya, const double &za, 
+		  const double &xb, const double &yb, const double &zb, 
+		  const double &xc, const double &yc, const double &zc, 
+		  const gmshQualityMeasure4Triangle &cr)
 {
   double quality;
-  switch(cr)
+  switch(cr){
+  case QMTRI_RHO:
     {
-    case QMTRI_RHO:
-      {
-	// quality = rho / R = 2 * inscribed radius / circumradius
-	
-	double a [3] = {xc-xb,yc-yb,zc-zb};
-	double b [3] = {xa-xc,ya-yc,za-zc};
-	double c [3] = {xb-xa,yb-ya,zb-za};
-
-	const double la = norme (a); 
-	const double lb = norme (b); 
-	const double lc = norme (c); 
-
-	double pva [3]; prodve (b,c,pva); const double sina = norm3 (pva); 
-	double pvb [3]; prodve (c,a,pvb); const double sinb = norm3 (pvb);
-	double pvc [3]; prodve (a,b,pvc); const double sinc = norm3 (pvc);
-
-	if (sina == 0.0 && sinb == 0.0 && sinc == 0.0) quality = 0.0;
-	else quality = 2 * (2*sina*sinb*sinc/(sina + sinb + sinc) );
-      }
-      break;
-    default:
-      throw;
-    }  
-
+      // quality = rho / R = 2 * inscribed radius / circumradius
+      double a [3] = {xc-xb,yc-yb,zc-zb};
+      double b [3] = {xa-xc,ya-yc,za-zc};
+      double c [3] = {xb-xa,yb-ya,zb-za};
+      
+      const double la = norme (a); 
+      const double lb = norme (b); 
+      const double lc = norme (c); 
+      
+      double pva [3]; prodve (b,c,pva); const double sina = norm3 (pva); 
+      double pvb [3]; prodve (c,a,pvb); const double sinb = norm3 (pvb);
+      double pvc [3]; prodve (a,b,pvc); const double sinc = norm3 (pvc);
+      
+      if (sina == 0.0 && sinb == 0.0 && sinc == 0.0) quality = 0.0;
+      else quality = 2 * (2*sina*sinb*sinc/(sina + sinb + sinc) );
+    }
+    break;
+  default:
+    throw;
+  }  
 
   return quality;
 }
 
-double qmTet ( MTetrahedron*t, const gmshQualityMeasure4Tet &cr, double *volume)
+double qmTet(MTetrahedron *t, const gmshQualityMeasure4Tet &cr, double *volume)
 {
-  return qmTet (t->getVertex(0),t->getVertex(1),t->getVertex(2),t->getVertex(3),cr,volume);
+  return qmTet(t->getVertex(0), t->getVertex(1), t->getVertex(2), t->getVertex(3),
+	       cr, volume);
 }
 
-double qmTet ( const MVertex   *v1, const MVertex   *v2, const MVertex   *v3, const MVertex   *v4, const gmshQualityMeasure4Tet &cr, double *volume)
+double qmTet(const MVertex *v1, const MVertex *v2, const MVertex *v3,
+	     const MVertex *v4, const gmshQualityMeasure4Tet &cr, double *volume)
 {
-  return qmTet (v1->x(),v1->y(),v1->z(),v2->x(),v2->y(),v2->z(),v3->x(),v3->y(),v3->z(),v4->x(),v4->y(),v4->z(),cr,volume);
+  return qmTet(v1->x(), v1->y(), v1->z(), v2->x(), v2->y(), v2->z(), 
+	       v3->x(), v3->y(), v3->z(), v4->x(), v4->y(), v4->z(), cr, volume);
 }
 
-double qmTet ( const double    &x1, const double    &y1, const double    &z1, 
-	       const double    &x2, const double    &y2, const double    &z2, 
-	       const double    &x3, const double    &y3, const double    &z3, 
-	       const double    &x4, const double    &y4, const double    &z4, 
-	       const gmshQualityMeasure4Tet    &cr, double *volume ){
+double qmTet(const double &x1, const double &y1, const double &z1, 
+	     const double &x2, const double &y2, const double &z2, 
+	     const double &x3, const double &y3, const double &z3, 
+	     const double &x4, const double &y4, const double &z4, 
+	     const gmshQualityMeasure4Tet &cr, double *volume)
+{
   double quality;
-  switch(cr)
+  switch(cr){
+  case QMTET_ONE:
+    return 1.0;
+  case QMTET_3:
+    {
+      double mat[3][3];
+      mat[0][0] = x2 - x1;
+      mat[0][1] = x3 - x1;
+      mat[0][2] = x4 - x1;
+      mat[1][0] = y2 - y1;
+      mat[1][1] = y3 - y1;
+      mat[1][2] = y4 - y1;
+      mat[2][0] = z2 - z1;
+      mat[2][1] = z3 - z1;
+      mat[2][2] = z4 - z1;
+      *volume = fabs(det3x3(mat)) / 6.;
+      double l = ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
+      l += ((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)+(z3-z1)*(z3-z1));
+      l += ((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)+(z4-z1)*(z4-z1));
+      l += ((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
+      l += ((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2)+(z4-z2)*(z4-z2));
+      l += ((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)+(z3-z4)*(z3-z4));
+      return 12. * pow(3*fabs(*volume),2./3.)/l;
+    }
+  case QMTET_2:
     {
-    case QMTET_ONE:
-      return 1.0;
-    case QMTET_3:
-      {
-	double mat[3][3];
-	mat[0][0] = x2 - x1;
-	mat[0][1] = x3 - x1;
-	mat[0][2] = x4 - x1;
-	mat[1][0] = y2 - y1;
-	mat[1][1] = y3 - y1;
-	mat[1][2] = y4 - y1;
-	mat[2][0] = z2 - z1;
-	mat[2][1] = z3 - z1;
-	mat[2][2] = z4 - z1;
-	*volume = fabs(det3x3(mat)) / 6.;
-	double l = ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
-	l += ((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)+(z3-z1)*(z3-z1));
-	l +=((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)+(z4-z1)*(z4-z1));
-	l +=((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2));
-	l +=((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2)+(z4-z2)*(z4-z2));
-	l +=((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)+(z3-z4)*(z3-z4));
-	return 12. * pow(3*fabs(*volume),2./3.)/l;	
-      }
-    case QMTET_2:
-      {
-	double mat[3][3];
-	mat[0][0] = x2 - x1;
-	mat[0][1] = x3 - x1;
-	mat[0][2] = x4 - x1;
-	mat[1][0] = y2 - y1;
-	mat[1][1] = y3 - y1;
-	mat[1][2] = y4 - y1;
-	mat[2][0] = z2 - z1;
-	mat[2][1] = z3 - z1;
-	mat[2][2] = z4 - z1;
-	*volume = fabs(det3x3(mat)) / 6.;
-	double p0[3] = { x1,y1,z1};
-	double p1[3] = { x2,y2,z2};
-	double p2[3] = { x3,y3,z3};
-	double p3[3] = { x4,y4,z4};
-	double s1 = fabs(triangle_area(p0, p1, p2));
-	double s2 = fabs(triangle_area(p0, p2, p3));
-	double s3 = fabs(triangle_area(p0, p1, p3));
-	double s4 = fabs(triangle_area(p1, p2, p3));
-	double rhoin = 3. * fabs(*volume) / (s1 + s2 + s3 + s4);
-	double l = sqrt ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
-	l = std::max(l,sqrt ((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)+(z3-z1)*(z3-z1)));
-	l = std::max(l,sqrt ((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)+(z4-z1)*(z4-z1)));
-	l = std::max(l,sqrt ((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2)));
-	l = std::max(l,sqrt ((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2)+(z4-z2)*(z4-z2)));
-	l = std::max(l,sqrt ((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)+(z3-z4)*(z3-z4)));
-	return 2. * sqrt(6.) * rhoin / l;	
-      }
-      break;
-    default:
-      throw;
+      double mat[3][3];
+      mat[0][0] = x2 - x1;
+      mat[0][1] = x3 - x1;
+      mat[0][2] = x4 - x1;
+      mat[1][0] = y2 - y1;
+      mat[1][1] = y3 - y1;
+      mat[1][2] = y4 - y1;
+      mat[2][0] = z2 - z1;
+      mat[2][1] = z3 - z1;
+      mat[2][2] = z4 - z1;
+      *volume = fabs(det3x3(mat)) / 6.;
+      double p0[3] = {x1,y1,z1};
+      double p1[3] = {x2,y2,z2};
+      double p2[3] = {x3,y3,z3};
+      double p3[3] = {x4,y4,z4};
+      double s1 = fabs(triangle_area(p0, p1, p2));
+      double s2 = fabs(triangle_area(p0, p2, p3));
+      double s3 = fabs(triangle_area(p0, p1, p3));
+      double s4 = fabs(triangle_area(p1, p2, p3));
+      double rhoin = 3. * fabs(*volume) / (s1 + s2 + s3 + s4);
+      double l = sqrt ((x2-x1)*(x2-x1)+(y2-y1)*(y2-y1)+(z2-z1)*(z2-z1));
+      l = std::max(l,sqrt ((x3-x1)*(x3-x1)+(y3-y1)*(y3-y1)+(z3-z1)*(z3-z1)));
+      l = std::max(l,sqrt ((x4-x1)*(x4-x1)+(y4-y1)*(y4-y1)+(z4-z1)*(z4-z1)));
+      l = std::max(l,sqrt ((x3-x2)*(x3-x2)+(y3-y2)*(y3-y2)+(z3-z2)*(z3-z2)));
+      l = std::max(l,sqrt ((x4-x2)*(x4-x2)+(y4-y2)*(y4-y2)+(z4-z2)*(z4-z2)));
+      l = std::max(l,sqrt ((x3-x4)*(x3-x4)+(y3-y4)*(y3-y4)+(z3-z4)*(z3-z4)));
+      return 2. * sqrt(6.) * rhoin / l;	
     }
+    break;
+  default:
+    throw;
+  }
 }
diff --git a/Mesh/qualityMeasures.h b/Mesh/qualityMeasures.h
index 96d9078bd0..335a74437d 100644
--- a/Mesh/qualityMeasures.h
+++ b/Mesh/qualityMeasures.h
@@ -9,21 +9,25 @@ class MTetrahedron;
 enum gmshQualityMeasure4Triangle {QMTRI_RHO};
 enum gmshQualityMeasure4Tet      {QMTET_1,QMTET_2,QMTET_3,QMTET_ONE};
 
-double qmTriangle ( MTriangle *f,  const gmshQualityMeasure4Triangle &cr); 
-double qmTriangle ( BDS_Face *f,  const gmshQualityMeasure4Triangle &cr); 
-double qmTriangle ( const BDS_Point *p1, const BDS_Point *p2, const BDS_Point *p3, const gmshQualityMeasure4Triangle &cr); 
-double qmTriangle ( const MVertex   *v1, const MVertex   *v2, const MVertex   *v3, const gmshQualityMeasure4Triangle &cr);
-double qmTriangle ( const double    *d1, const double    *d2, const double    *d3, const gmshQualityMeasure4Triangle &cr);
-double qmTriangle ( const double    &x1, const double    &y1, const double    &z1, 
-		    const double    &x2, const double    &y2, const double    &z2, 
-		    const double    &x3, const double    &y3, const double    &z3, 
-		    const gmshQualityMeasure4Triangle    &cr);
-double qmTet ( MTetrahedron *t, const gmshQualityMeasure4Tet &cr, double *volume = 0);
-double qmTet ( const MVertex   *v1, const MVertex   *v2, const MVertex   *v3, const MVertex   *v4, const gmshQualityMeasure4Tet &cr, double *volume = 0);
-double qmTet ( const double    &x1, const double    &y1, const double    &z1, 
-	       const double    &x2, const double    &y2, const double    &z2, 
-	       const double    &x3, const double    &y3, const double    &z3, 
-	       const double    &x4, const double    &y4, const double    &z4, 
-	       const gmshQualityMeasure4Tet    &cr, double *volume = 0);
+double qmTriangle(MTriangle *f, const gmshQualityMeasure4Triangle &cr); 
+double qmTriangle(BDS_Face *f, const gmshQualityMeasure4Triangle &cr); 
+double qmTriangle(const BDS_Point *p1, const BDS_Point *p2, const BDS_Point *p3, 
+		  const gmshQualityMeasure4Triangle &cr); 
+double qmTriangle(const MVertex *v1, const MVertex *v2, const MVertex *v3, 
+		  const gmshQualityMeasure4Triangle &cr);
+double qmTriangle(const double *d1, const double *d2, const double *d3, 
+		  const gmshQualityMeasure4Triangle &cr);
+double qmTriangle(const double &x1, const double &y1, const double &z1, 
+		  const double &x2, const double &y2, const double &z2, 
+		  const double &x3, const double &y3, const double &z3, 
+		  const gmshQualityMeasure4Triangle &cr);
+double qmTet(MTetrahedron *t, const gmshQualityMeasure4Tet &cr, double *volume = 0);
+double qmTet(const MVertex *v1, const MVertex *v2, const MVertex *v3, 
+	     const MVertex *v4, const gmshQualityMeasure4Tet &cr, double *volume = 0);
+double qmTet(const double &x1, const double &y1, const double &z1, 
+	     const double &x2, const double &y2, const double &z2, 
+	     const double &x3, const double &y3, const double &z3, 
+	     const double &x4, const double &y4, const double &z4, 
+	     const gmshQualityMeasure4Tet &cr, double *volume = 0);
 
 #endif
-- 
GitLab