diff --git a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C index 5256a377ef..2257a11ff9 100644 --- a/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C +++ b/src/sampling/sampledSurface/sampledSurfaces/sampledSurfaces.C @@ -164,19 +164,18 @@ void Foam::sampledSurfaces::countFields() } // Now propagate field counts (per surface) + // - can update writer even when not writing without problem - label surfi = 0; - - for (const sampledSurface& s : surfaces()) + forAll(*this, surfi) { + const sampledSurface& s = (*this)[surfi]; + writers_[surfi].nFields() = ( nVolumeFields + (s.withSurfaceFields() ? nSurfaceFields : 0) + ((s.hasFaceIds() && !s.interpolate()) ? 1 : 0) ); - - ++surfi; } } @@ -446,9 +445,10 @@ bool Foam::sampledSurfaces::read(const dictionary& dict) dict.readEntry("fields", fieldSelection_); fieldSelection_.uniq(); - label surfi = 0; - for (const sampledSurface& s : surfs) + forAll(*this, surfi) { + const sampledSurface& s = (*this)[surfi]; + if (!surfi) { Info<< "Sampled surface:" << nl; @@ -465,8 +465,6 @@ bool Foam::sampledSurfaces::read(const dictionary& dict) Info<< ", store as surfMesh (deprecated)"; } Info<< nl; - - ++surfi; } Info<< nl; } @@ -492,36 +490,34 @@ bool Foam::sampledSurfaces::read(const dictionary& dict) bool Foam::sampledSurfaces::performAction(unsigned request) { - if - ( - empty() - || (request == ACTION_NONE) - || !testAny - ( - actions_, - [=] (unsigned action) { return (request & action); } - ) - ) + // Update surfaces, writer associations etc. + + bool ok = false; + + forAll(*this, surfi) { + sampledSurface& s = (*this)[surfi]; + + if (request & actions_[surfi]) + { + if (s.update()) + { + writers_[surfi].expire(); + } + + nFaces_[surfi] = returnReduce(s.faces().size(), sumOp