From fd8e86410130e0b86b8efeb3c0d8071dc2ae230e Mon Sep 17 00:00:00 2001
From: Thomas Toulorge <thomas.toulorge@mines-paristech.fr>
Date: Fri, 10 Mar 2017 07:52:53 +0000
Subject: [PATCH] Fixed compilation problem due to changes not committed.

---
 Geo/MFace.cpp                                 |  9 +++++++++
 Geo/MFace.h                                   |  1 +
 .../OptHomFastCurving.cpp                     | 20 +++++++++----------
 3 files changed, 20 insertions(+), 10 deletions(-)

diff --git a/Geo/MFace.cpp b/Geo/MFace.cpp
index 10c407262e..725cb2530c 100644
--- a/Geo/MFace.cpp
+++ b/Geo/MFace.cpp
@@ -57,6 +57,15 @@ MFace::MFace(std::vector<MVertex*> v)
   sortVertices(_v,_si);
 }
 
+double MFace::approximateArea() const
+{
+  SPoint3 p0 = _v[0]->point(), p1 = _v[1]->point(), p2 = _v[2]->point();
+  double a = triangle_area(p0, p1, p2);
+  if (_v.size() == 3) return a;
+  a += triangle_area(p0, p2, _v[3]->point());
+  return a;
+}
+
 SVector3 MFace::normal() const
 {
   double n[3];
diff --git a/Geo/MFace.h b/Geo/MFace.h
index 4cf0fc8c97..cbb072fcc6 100644
--- a/Geo/MFace.h
+++ b/Geo/MFace.h
@@ -43,6 +43,7 @@ class MFace {
     for(int i = 0; i < getNumVertices(); i++)
       verts[i] = getSortedVertex(i);
   }
+  double approximateArea() const;
   SVector3 normal() const;
   SVector3 tangent(int num) const
   {
diff --git a/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp b/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp
index f056d58506..cd3b6cdaaf 100644
--- a/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp
+++ b/contrib/HighOrderMeshOptimizer/OptHomFastCurving.cpp
@@ -317,13 +317,13 @@ void getOppositeFacePrism(MElement *el, const MFace &elBaseFace,
   elTopFace = MFace(topVert);
 
   // Compute min. (side faces) and max. (top face) face areas
-  faceSurfMax = elTopFace.area();
+  faceSurfMax = elTopFace.approximateArea();
   MFace sideFace0 = el->getFace(2);
-  faceSurfMin = sideFace0.area();
+  faceSurfMin = sideFace0.approximateArea();
   MFace sideFace1 = el->getFace(3);
-  faceSurfMin = std::min(faceSurfMin, sideFace1.area());
+  faceSurfMin = std::min(faceSurfMin, sideFace1.approximateArea());
   MFace sideFace2 = el->getFace(4);
-  faceSurfMin = std::min(faceSurfMin, sideFace2.area());
+  faceSurfMin = std::min(faceSurfMin, sideFace2.approximateArea());
 }
 
 
@@ -364,15 +364,15 @@ void getOppositeFaceHex(MElement *el, const MFace &elBaseFace, MFace &elTopFace,
   elTopFace = MFace(topVert);
 
   // Compute min. (side faces) and max. (top face) face areas
-  faceSurfMax = elTopFace.area();
+  faceSurfMax = elTopFace.approximateArea();
   MFace sideFace0 = el->getFace(sideFace[0]);
-  faceSurfMin = sideFace0.area();
+  faceSurfMin = sideFace0.approximateArea();
   MFace sideFace1 = el->getFace(sideFace[1]);
-  faceSurfMin = std::min(faceSurfMin, sideFace1.area());
+  faceSurfMin = std::min(faceSurfMin, sideFace1.approximateArea());
   MFace sideFace2 = el->getFace(sideFace[2]);
-  faceSurfMin = std::min(faceSurfMin, sideFace2.area());
+  faceSurfMin = std::min(faceSurfMin, sideFace2.approximateArea());
   MFace sideFace3 = el->getFace(sideFace[3]);
-  faceSurfMin = std::min(faceSurfMin, sideFace3.area());
+  faceSurfMin = std::min(faceSurfMin, sideFace3.approximateArea());
 }
 
 
@@ -392,7 +392,7 @@ void getOppositeFaceTet(MElement *el, const MFace &elBaseFace, MFace &elTopFace,
   for (int iElFace = 0; iElFace < el->getNumFaces(); iElFace++) {
     if (iElFace != iElBaseFace) {
       MFace faceTest = el->getFace(iElFace);
-      const double faceSurfTest = faceTest.area();
+      const double faceSurfTest = faceTest.approximateArea();
       if (faceSurfTest < faceSurfMin) faceSurfMin = faceSurfTest;
       if (faceSurfTest > faceSurfMax) {
         faceSurfMax = faceSurfTest;
-- 
GitLab