From 0496e181236503bd21f8121bf0dbced60177a514 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Wed, 13 Jan 2010 19:08:47 +0000 Subject: [PATCH] Modified tolerances to take truncation error into account --- .../polyPatches/basic/coupled/coupledPolyPatch.C | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C index ee2d966836c..8e18f68c771 100644 --- a/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C +++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/basic/coupled/coupledPolyPatch.C @@ -199,13 +199,20 @@ Foam::scalarField Foam::coupledPolyPatch::calcFaceTol const face& f = faces[faceI]; + // 1. calculate a typical size of the face. Use maximum distance + // to face centre scalar maxLenSqr = -GREAT; + // 2. as measure of truncation error when comparing two coordinates + // use SMALL * maximum component + scalar maxCmpt = -GREAT; forAll(f, fp) { - maxLenSqr = max(maxLenSqr, magSqr(points[f[fp]] - cc)); + const point& pt = points[f[fp]]; + maxLenSqr = max(maxLenSqr, magSqr(pt - cc)); + maxCmpt = max(maxCmpt, cmptMax(cmptMag(pt))); } - tols[faceI] = matchTol * Foam::sqrt(maxLenSqr); + tols[faceI] = max(SMALL*maxCmpt, matchTol*Foam::sqrt(maxLenSqr)); } return tols; } -- GitLab