From 5bbbcdd545606af3e9be8c452bf7ca81ac23934a Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 17 Dec 2012 13:42:06 +0000 Subject: [PATCH 1/5] ENH: syncTools: additional face selection routines --- .../meshes/polyMesh/syncTools/syncTools.C | 67 +++++++++++++++++-- .../meshes/polyMesh/syncTools/syncTools.H | 16 ++++- 2 files changed, 76 insertions(+), 7 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.C b/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.C index 5abf8685ec..670daa726c 100644 --- a/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.C +++ b/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -27,7 +27,6 @@ License // * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // -// Determines for every point whether it is coupled and if so sets only one. Foam::PackedBoolList Foam::syncTools::getMasterPoints(const polyMesh& mesh) { PackedBoolList isMasterPoint(mesh.nPoints()); @@ -72,7 +71,6 @@ Foam::PackedBoolList Foam::syncTools::getMasterPoints(const polyMesh& mesh) } -// Determines for every edge whether it is coupled and if so sets only one. Foam::PackedBoolList Foam::syncTools::getMasterEdges(const polyMesh& mesh) { PackedBoolList isMasterEdge(mesh.nEdges()); @@ -117,7 +115,6 @@ Foam::PackedBoolList Foam::syncTools::getMasterEdges(const polyMesh& mesh) } -// Determines for every face whether it is coupled and if so sets only one. Foam::PackedBoolList Foam::syncTools::getMasterFaces(const polyMesh& mesh) { PackedBoolList isMasterFace(mesh.nFaces(), 1); @@ -145,4 +142,66 @@ Foam::PackedBoolList Foam::syncTools::getMasterFaces(const polyMesh& mesh) } +Foam::PackedBoolList Foam::syncTools::getInternalOrMasterFaces +( + const polyMesh& mesh +) +{ + PackedBoolList isMasterFace(mesh.nFaces(), 1); + + const polyBoundaryMesh& patches = mesh.boundaryMesh(); + + forAll(patches, patchI) + { + const polyPatch& pp = patches[patchI]; + + if (pp.coupled()) + { + if (!refCast(pp).owner()) + { + forAll(pp, i) + { + isMasterFace.unset(pp.start()+i); + } + } + } + else + { + forAll(pp, i) + { + isMasterFace.unset(pp.start()+i); + } + } + } + + return isMasterFace; +} + + +Foam::PackedBoolList Foam::syncTools::getInternalOrCoupledFaces +( + const polyMesh& mesh +) +{ + PackedBoolList isMasterFace(mesh.nFaces(), 1); + + const polyBoundaryMesh& patches = mesh.boundaryMesh(); + + forAll(patches, patchI) + { + const polyPatch& pp = patches[patchI]; + + if (!pp.coupled()) + { + forAll(pp, i) + { + isMasterFace.unset(pp.start()+i); + } + } + } + + return isMasterFace; +} + + // ************************************************************************* // diff --git a/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H b/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H index 3eb6e71388..26711f2d0b 100644 --- a/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H +++ b/src/OpenFOAM/meshes/polyMesh/syncTools/syncTools.H @@ -579,15 +579,25 @@ public: // Other - //- Get per point whether is it master (of a coupled set of points) + //- Get per point whether it is uncoupled or a master of a + // coupled set of points static PackedBoolList getMasterPoints(const polyMesh&); - //- Get per edge whether is it master (of a coupled set of edges) + //- Get per edge whether it is uncoupled or a master of a + // coupled set of edges static PackedBoolList getMasterEdges(const polyMesh&); - //- Get per face whether is it master (of a coupled set of faces) + //- Get per face whether it is uncoupled or a master of a + // coupled set of faces static PackedBoolList getMasterFaces(const polyMesh&); + //- Get per face whether it is internal or a master of a + // coupled set of faces + static PackedBoolList getInternalOrMasterFaces(const polyMesh&); + + //- Get per face whether it is internal or coupled + static PackedBoolList getInternalOrCoupledFaces(const polyMesh&); + }; From ceecb84573fd4c53f1b48cd9b6600a24089e9a35 Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 17 Dec 2012 13:45:19 +0000 Subject: [PATCH 2/5] ENH: checkMesh: moved some checking functionality to polyMesh --- .../manipulation/checkMesh/checkGeometry.C | 2 +- src/OpenFOAM/Make/files | 6 +- src/OpenFOAM/meshes/polyMesh/polyMesh.C | 2 +- src/OpenFOAM/meshes/polyMesh/polyMesh.H | 81 ++ .../polyMesh/polyMeshCheck/polyMeshCheck.C | 679 ++++++++++ .../polyMesh/polyMeshCheck/polyMeshTools.C | 190 +++ .../polyMesh/polyMeshCheck/polyMeshTools.H | 109 ++ .../meshes/primitiveMesh/primitiveMesh.H | 223 ++-- .../primitiveMeshCheck/primitiveMeshCheck.C | 1178 +++++++---------- .../primitiveMeshCheckMotion.C | 266 ---- .../primitiveMeshCheck/primitiveMeshTools.C | 638 +++++++++ .../primitiveMeshCheck/primitiveMeshTools.H | 168 +++ 12 files changed, 2467 insertions(+), 1075 deletions(-) create mode 100644 src/OpenFOAM/meshes/polyMesh/polyMeshCheck/polyMeshCheck.C create mode 100644 src/OpenFOAM/meshes/polyMesh/polyMeshCheck/polyMeshTools.C create mode 100644 src/OpenFOAM/meshes/polyMesh/polyMeshCheck/polyMeshTools.H delete mode 100644 src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCheck/primitiveMeshCheckMotion.C create mode 100644 src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCheck/primitiveMeshTools.C create mode 100644 src/OpenFOAM/meshes/primitiveMesh/primitiveMeshCheck/primitiveMeshTools.H diff --git a/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C b/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C index d964ac12cc..ef521a257d 100644 --- a/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C +++ b/applications/utilities/mesh/manipulation/checkMesh/checkGeometry.C @@ -803,7 +803,7 @@ Foam::label Foam::checkGeometry(const polyMesh& mesh, const bool allGeometry) if (allGeometry) { cellSet cells(mesh, "underdeterminedCells", mesh.nCells()/100); - if (mesh.checkCellDeterminant(true, &cells, mesh.geometricD())) + if (mesh.checkCellDeterminant(true, &cells)) { noFailedChecks++; diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files index 1cd7f37fe8..55208034a1 100644 --- a/src/OpenFOAM/Make/files +++ b/src/OpenFOAM/Make/files @@ -425,6 +425,10 @@ $(polyMesh)/polyMeshInitMesh.C $(polyMesh)/polyMeshClear.C $(polyMesh)/polyMeshUpdate.C +polyMeshCheck = $(polyMesh)/polyMeshCheck +$(polyMeshCheck)/polyMeshCheck.C +$(polyMeshCheck)/polyMeshTools.C + primitiveMesh = meshes/primitiveMesh $(primitiveMesh)/primitiveMesh.C $(primitiveMesh)/primitiveMeshCellCells.C @@ -445,9 +449,9 @@ $(primitiveMesh)/primitiveMeshCalcCellShapes.C primitiveMeshCheck = $(primitiveMesh)/primitiveMeshCheck $(primitiveMeshCheck)/primitiveMeshCheck.C -$(primitiveMeshCheck)/primitiveMeshCheckMotion.C $(primitiveMeshCheck)/primitiveMeshCheckPointNearness.C $(primitiveMeshCheck)/primitiveMeshCheckEdgeLength.C +$(primitiveMeshCheck)/primitiveMeshTools.C primitivePatch = $(primitiveMesh)/primitivePatch $(primitivePatch)/patchZones.C diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C index 6388190bf6..abe537320f 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C @@ -1129,7 +1129,7 @@ Foam::tmp Foam::polyMesh::movePoints if (debug) { // Check mesh motion - if (primitiveMesh::checkMeshMotion(points_, true)) + if (checkMeshMotion(points_, true)) { Info<< "tmp polyMesh::movePoints" << "(const pointField&) : " diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.H b/src/OpenFOAM/meshes/polyMesh/polyMesh.H index 09c046feb8..e4c1897671 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyMesh.H +++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.H @@ -34,6 +34,7 @@ SourceFiles polyMeshFromShapeMesh.C polyMeshIO.C polyMeshUpdate.C + polyMeshCheck.C \*---------------------------------------------------------------------------*/ @@ -224,7 +225,45 @@ private: cellList& cells ); + // Geometry checks + //- Check non-orthogonality + bool checkFaceOrthogonality + ( + const vectorField& fAreas, + const vectorField& cellCtrs, + const bool report, + const bool detailedReport, + labelHashSet* setPtr + ) const; + + //- Check face skewness + bool checkFaceSkewness + ( + const pointField& points, + const vectorField& fCtrs, + const vectorField& fAreas, + const vectorField& cellCtrs, + const bool report, + const bool detailedReport, + labelHashSet* setPtr + ) const; + + bool checkEdgeAlignment + ( + const pointField& p, + const bool report, + const Vector