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