diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C index 69cdf234cdb41828140af5bc4553d348a05f2de9..04c5786ea62dc5f0dd23a1e47b4bb7d1526e97bb 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -258,6 +258,106 @@ void Foam::meshRefinement::updateIntersections(const labelList& changedFaces) } +void Foam::meshRefinement::testSyncPointList +( + const string& msg, + const polyMesh& mesh, + const List<scalar>& fld +) +{ + if (fld.size() != mesh.nPoints()) + { + FatalErrorIn + ( + "meshRefinement::testSyncPointList(const polyMesh&" + ", const List<scalar>&)" + ) << msg << endl + << "fld size:" << fld.size() << " mesh points:" << mesh.nPoints() + << abort(FatalError); + } + + Pout<< "Checking field " << msg << endl; + scalarField minFld(fld); + syncTools::syncPointList + ( + mesh, + minFld, + minEqOp<scalar>(), + GREAT + ); + scalarField maxFld(fld); + syncTools::syncPointList + ( + mesh, + maxFld, + maxEqOp<scalar>(), + -GREAT + ); + forAll(minFld, pointI) + { + const scalar& minVal = minFld[pointI]; + const scalar& maxVal = maxFld[pointI]; + if (mag(minVal-maxVal) > SMALL) + { + Pout<< msg << " at:" << mesh.points()[pointI] << nl + << " minFld:" << minVal << nl + << " maxFld:" << maxVal << nl + << endl; + } + } +} + + +void Foam::meshRefinement::testSyncPointList +( + const string& msg, + const polyMesh& mesh, + const List<point>& fld +) +{ + if (fld.size() != mesh.nPoints()) + { + FatalErrorIn + ( + "meshRefinement::testSyncPointList(const polyMesh&" + ", const List<point>&)" + ) << msg << endl + << "fld size:" << fld.size() << " mesh points:" << mesh.nPoints() + << abort(FatalError); + } + + Pout<< "Checking field " << msg << endl; + pointField minFld(fld); + syncTools::syncPointList + ( + mesh, + minFld, + minMagSqrEqOp<point>(), + point(GREAT, GREAT, GREAT) + ); + pointField maxFld(fld); + syncTools::syncPointList + ( + mesh, + maxFld, + maxMagSqrEqOp<point>(), + vector::zero + ); + forAll(minFld, pointI) + { + const point& minVal = minFld[pointI]; + const point& maxVal = maxFld[pointI]; + if (mag(minVal-maxVal) > SMALL) + { + Pout<< msg << " at:" << mesh.points()[pointI] << nl + << " minFld:" << minVal << nl + << " maxFld:" << maxVal << nl + << endl; + } + } +} + + void Foam::meshRefinement::checkData() { Pout<< "meshRefinement::checkData() : Checking refinement structure." diff --git a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H index c265f05257568c8444f9562991ec6e6cf11c9c3a..899311d90974d964763a674d92bc1a7b76e3d2df 100644 --- a/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H +++ b/src/mesh/autoMesh/autoHexMesh/meshRefinement/meshRefinement.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -879,6 +879,20 @@ public: //- Debugging: check that all faces still obey start()>end() void checkData(); + static void testSyncPointList + ( + const string& msg, + const polyMesh& mesh, + const List<scalar>& fld + ); + + static void testSyncPointList + ( + const string& msg, + const polyMesh& mesh, + const List<point>& fld + ); + //- Compare two lists over all boundary faces template<class T> void testSyncBoundaryFaceList