From 1538606f58791e3158fd2b5a50651484274e9f85 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs@hunt.opencfd.co.uk> Date: Fri, 7 Nov 2008 11:46:13 +0000 Subject: [PATCH] signed distance --- .../distanceSurface/distanceSurface.C | 36 +++++++++++++++---- .../distanceSurface/distanceSurface.H | 3 ++ 2 files changed, 33 insertions(+), 6 deletions(-) diff --git a/src/sampling/sampledSurface/distanceSurface/distanceSurface.C b/src/sampling/sampledSurface/distanceSurface/distanceSurface.C index 66cfac6fb52..fca90949cac 100644 --- a/src/sampling/sampledSurface/distanceSurface/distanceSurface.C +++ b/src/sampling/sampledSurface/distanceSurface/distanceSurface.C @@ -56,13 +56,36 @@ void Foam::distanceSurface::createGeometry() const scalarField(mesh().nCells(), GREAT), nearest ); - forAll(cellDistance, cellI) + + if (signed_) { - cellDistance[cellI] = Foam::mag - ( - nearest[cellI].hitPoint() - - mesh().cellCentres()[cellI] - ); + vectorField normal; + surfPtr_().getNormal(nearest, normal); + + forAll(cellDistance, cellI) + { + vector d(mesh().cellCentres()[cellI]-nearest[cellI].hitPoint()); + + if ((d&normal[cellI]) > 0) + { + cellDistance[cellI] = Foam::mag(d); + } + else + { + cellDistance[cellI] = -Foam::mag(d); + } + } + } + else + { + forAll(cellDistance, cellI) + { + cellDistance[cellI] = Foam::mag + ( + nearest[cellI].hitPoint() + - mesh().cellCentres()[cellI] + ); + } } } @@ -166,6 +189,7 @@ Foam::distanceSurface::distanceSurface ) ), distance_(readScalar(dict.lookup("distance"))), + signed_(readBool(dict.lookup("signed"))), regularise_(dict.lookupOrDefault("regularise", true)), zoneName_(word::null), facesPtr_(NULL), diff --git a/src/sampling/sampledSurface/distanceSurface/distanceSurface.H b/src/sampling/sampledSurface/distanceSurface/distanceSurface.H index bb7290c5d84..82fba8a83f3 100644 --- a/src/sampling/sampledSurface/distanceSurface/distanceSurface.H +++ b/src/sampling/sampledSurface/distanceSurface/distanceSurface.H @@ -62,6 +62,9 @@ class distanceSurface //- distance value const scalar distance_; + //- signed distance + const bool signed_; + //- Whether to coarsen const Switch regularise_; -- GitLab