From 771a84347d5c4b03e4a668d705a5f200abb58113 Mon Sep 17 00:00:00 2001 From: Franjo Juretic Date: Fri, 13 May 2016 12:19:26 +0200 Subject: [PATCH] Updated mesh checks --- .../polyMeshGenChecksGeometry.C | 297 +++++++++++------- 1 file changed, 189 insertions(+), 108 deletions(-) diff --git a/meshLibrary/utilities/meshes/polyMeshGenChecks/polyMeshGenChecksGeometry.C b/meshLibrary/utilities/meshes/polyMeshGenChecks/polyMeshGenChecksGeometry.C index ce9dd9a..d260baa 100644 --- a/meshLibrary/utilities/meshes/polyMeshGenChecks/polyMeshGenChecksGeometry.C +++ b/meshLibrary/utilities/meshes/polyMeshGenChecks/polyMeshGenChecksGeometry.C @@ -479,7 +479,6 @@ bool checkTetQuality const labelList& owner = mesh.owner(); const labelList& neighbour = mesh.neighbour(); - const vectorField& fCentres = mesh.addressingData().faceCentres(); const vectorField& cCentres = mesh.addressingData().cellCentres(); label nBadFaces(0); @@ -494,89 +493,168 @@ bool checkTetQuality const face& f = faces[faceI]; - forAll(f, eI) - { - //- check the tet on the neighbour side - tetrahedron tetOwn - ( - fCentres[faceI], - points[f[eI]], - points[f.nextLabel(eI)], - cCentres[owner[faceI]] - ); + const label nDecomposed = f.size() - 1; - const scalar tetQualityOwn = help::tetQuality(tetOwn); + forAll(f, pI) + { + bool badQualityFace(false); - if( tetQualityOwn < minTetQuality ) + for(label j=1;j tetOwn + ( + cCentres[owner[faceI]], + points[f[pI]], + points[fpJ], + points[nfpJ] + ); + + const scalar tetQualityOwn = help::tetQuality(tetOwn); + + if( tetQualityOwn < minTetQuality ) { - # ifdef USE_OMP - # pragma omp critical - # endif - Pout<< "Face " << faceI - << " has a triangle that points the wrong way." - << endl - << "Tet quality: " << tetQualityOwn - << " Face " << faceI - << endl; + ++nBadFaces; + + if( report ) + { + # ifdef USE_OMP + # pragma omp critical(output) + # endif + Pout<< "Face " << faceI + << " has a triangle that points the wrong way." + << endl + << "Tet quality: " << tetQualityOwn + << " Face " << faceI + << endl; + } + + if( setPtr ) + { + # ifdef USE_OMP + # pragma omp critical(insertingBadFaces) + # endif + setPtr->insert(faceI); + } + + //- found a problematic face. Do not search further + badQualityFace = true; + continue; } - if( setPtr ) + if( neighbour[faceI] < 0 ) + continue; + + //- check the tet on the neighbour side + tetrahedron tetNei + ( + cCentres[neighbour[faceI]], + points[f[pI]], + points[nfpJ], + points[fpJ] + ); + + const scalar tetQualityNei = help::tetQuality(tetNei); + + if( tetQualityNei < minTetQuality ) { - # ifdef USE_OMP - # pragma omp critical(insertingBadFaces) - # endif - setPtr->insert(faceI); + ++nBadFaces; + + if( report ) + { + # ifdef USE_OMP + # pragma omp critical(output) + # endif + Pout<< "Face " << faceI + << " has a triangle that points the wrong way." + << endl + << "Tet quality: " << tetQualityNei + << " Face " << faceI + << endl; + } + + if( setPtr ) + { + # ifdef USE_OMP + # pragma omp critical(insertingBadFaces) + # endif + setPtr->insert(faceI); + } + + //- found a problematic face. Do not search further + badQualityFace = true; + continue; } } - if( neighbour[faceI] < 0 ) + if( badQualityFace ) continue; + } + } - //- check the tet on the neighbour side - tetrahedron tetNei - ( - fCentres[faceI], - points[f.nextLabel(eI)], - points[f[eI]], - cCentres[neighbour[faceI]] - ); + reduce(nBadFaces, sumOp