From 8f48c008d75e79258b4b83a27d81635e06a1af2b Mon Sep 17 00:00:00 2001 From: mattijs Date: Tue, 9 Dec 2008 15:59:00 +0000 Subject: [PATCH] parallel fix --- .../sampledSurface/isoSurface/isoSurface.C | 15 ++- .../isoSurface/sampledIsoSurface.C | 91 ++++++++++++++----- 2 files changed, 79 insertions(+), 27 deletions(-) diff --git a/src/sampling/sampledSurface/isoSurface/isoSurface.C b/src/sampling/sampledSurface/isoSurface/isoSurface.C index 937aa68616..e4a11cc71d 100644 --- a/src/sampling/sampledSurface/isoSurface/isoSurface.C +++ b/src/sampling/sampledSurface/isoSurface/isoSurface.C @@ -1373,7 +1373,17 @@ Foam::isoSurface::isoSurface { const polyPatch& pp = patches[patchI]; - if (!pp.coupled()) + if (pp.coupled()) + { + label faceI = pp.start(); + + forAll(pp, i) + { + boundaryRegion[faceI-mesh_.nInternalFaces()] = patchI; + faceI++; + } + } + else { label faceI = pp.start(); @@ -1381,12 +1391,13 @@ Foam::isoSurface::isoSurface { boundaryRegion[faceI-mesh_.nInternalFaces()] = patchI; - const face& f = mesh_.faces()[faceI++]; + const face& f = mesh_.faces()[faceI]; forAll(f, fp) { isBoundaryPoint.set(f[fp], 1); } + faceI++; } } } diff --git a/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C b/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C index a1fcfd4013..0c7832f176 100644 --- a/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C +++ b/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C @@ -45,6 +45,8 @@ void Foam::sampledIsoSurface::getIsoFields() const { const fvMesh& fvm = static_cast(mesh()); + word pointFldName = "volPointInterpolate(" + isoField_ + ')'; + // Get volField // ~~~~~~~~~~~~ @@ -64,28 +66,56 @@ void Foam::sampledIsoSurface::getIsoFields() const if (debug) { - Info<< "sampledIsoSurface::getIsoField() : reading " - << isoField_ << " from time " << fvm.time().timeName() + Info<< "sampledIsoSurface::getIsoField() : checking " + << isoField_ << " for same time " << fvm.time().timeName() << endl; } - storedVolFieldPtr_.reset + if ( - new volScalarField + !storedVolFieldPtr_.valid() + || (fvm.time().timeName() != storedVolFieldPtr_().instance()) + ) + { + if (debug) + { + Info<< "sampledIsoSurface::getIsoField() : reading " + << isoField_ << " from time " << fvm.time().timeName() + << endl; + } + + storedVolFieldPtr_.reset ( - IOobject + new volScalarField ( - isoField_, - fvm.time().timeName(), - fvm, - IOobject::MUST_READ, - IOobject::NO_WRITE, - false - ), - fvm - ) - ); - volFieldPtr_ = storedVolFieldPtr_.operator->(); + IOobject + ( + isoField_, + fvm.time().timeName(), + fvm, + IOobject::MUST_READ, + IOobject::NO_WRITE, + false + ), + fvm + ) + ); + volFieldPtr_ = storedVolFieldPtr_.operator->(); + + // Interpolate to get pointField + + if (debug) + { + Info<< "sampledIsoSurface::getIsoField() : interpolating " + << pointFldName << endl; + } + + storedPointFieldPtr_.reset + ( + volPointInterpolation::New(fvm).interpolate(*volFieldPtr_).ptr() + ); + pointFieldPtr_ = storedPointFieldPtr_.operator->(); + } } @@ -93,8 +123,6 @@ void Foam::sampledIsoSurface::getIsoFields() const // Get pointField // ~~~~~~~~~~~~~~ - word pointFldName = "volPointInterpolate(" + isoField_ + ')'; - if (fvm.foundObject(pointFldName)) { if (debug) @@ -102,7 +130,6 @@ void Foam::sampledIsoSurface::getIsoFields() const Info<< "sampledIsoSurface::getIsoField() : lookup " << pointFldName << endl; } - storedPointFieldPtr_.clear(); pointFieldPtr_ = &fvm.lookupObject(pointFldName); } else @@ -111,15 +138,29 @@ void Foam::sampledIsoSurface::getIsoFields() const if (debug) { - Info<< "sampledIsoSurface::getIsoField() : interpolating " - << pointFldName << endl; + Info<< "sampledIsoSurface::getIsoField() : checking interpolate " + << isoField_ << " for same time " << fvm.time().timeName() + << endl; } - storedPointFieldPtr_.reset + if ( - volPointInterpolation::New(fvm).interpolate(*volFieldPtr_).ptr() - ); - pointFieldPtr_ = storedPointFieldPtr_.operator->(); + !storedPointFieldPtr_.valid() + || (fvm.time().timeName() != storedPointFieldPtr_().instance()) + ) + { + if (debug) + { + Info<< "sampledIsoSurface::getIsoField() : interpolating " + << pointFldName << endl; + } + + storedPointFieldPtr_.reset + ( + volPointInterpolation::New(fvm).interpolate(*volFieldPtr_).ptr() + ); + pointFieldPtr_ = storedPointFieldPtr_.operator->(); + } } if (debug)