From af60a986811332e80c56ef7f4e6eda0572bedcd6 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Mon, 21 Mar 2011 14:57:32 +0000 Subject: [PATCH] BUG: searchableCylinder: point on centreline incorrect nearest --- .../searchableSurface/searchableCylinder.C | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/src/meshTools/searchableSurface/searchableCylinder.C b/src/meshTools/searchableSurface/searchableCylinder.C index 3569fd17acc..d8fef7917a1 100644 --- a/src/meshTools/searchableSurface/searchableCylinder.C +++ b/src/meshTools/searchableSurface/searchableCylinder.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd. + \\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd. \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -91,7 +91,24 @@ Foam::pointIndexHit Foam::searchableCylinder::findNearest // distance to cylinder wall: magV-radius_ // Nearest cylinder point - point cylPt = sample + (radius_-magV)*v; + point cylPt; + if (magV < ROOTVSMALL) + { + // Point exactly on centre line. Take any point on wall. + vector e1 = point(1,0,0) ^ unitDir_; + scalar magE1 = mag(e1); + if (magE1 < SMALL) + { + e1 = point(0,1,0) ^ unitDir_; + magE1 = mag(e1); + } + e1 /= magE1; + cylPt = sample + radius_*e1; + } + else + { + cylPt = sample + (radius_-magV)*v; + } if (parallel < 0.5*magDir_) { -- GitLab