diff --git a/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C b/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C index 5fd09bda66e9ba888e5f0212c05cca58c567a70f..017117370d1979ab8b5cc9ce0b712a378ac9a6dd 100644 --- a/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C +++ b/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.C @@ -307,6 +307,48 @@ Foam::tmp<Foam::volScalarField> Foam::sampledIsoSurface::average } +Foam::tmp<Foam::pointScalarField> Foam::sampledIsoSurface::average +( + const pointMesh& pMesh, + const volScalarField& fld +) const +{ + tmp<pointScalarField> tpointAvg + ( + new pointScalarField + ( + IOobject + ( + "pointAvg", + fld.time().timeName(), + fld.db(), + IOobject::NO_READ, + IOobject::NO_WRITE, + false + ), + pMesh, + dimensionedScalar("zero", dimless, scalar(0.0)) + ) + ); + pointScalarField& pointAvg = tpointAvg(); + + for (label pointI = 0; pointI < fld.mesh().nPoints(); pointI++) + { + const labelList& pCells = fld.mesh().pointCells(pointI); + + forAll(pCells, i) + { + pointAvg[pointI] += fld[pCells[i]]; + } + pointAvg[pointI] /= pCells.size(); + } + // Give value to calculatedFvPatchFields + pointAvg.correctBoundaryConditions(); + + return tpointAvg; +} + + bool Foam::sampledIsoSurface::updateGeometry() const { const fvMesh& fvm = static_cast<const fvMesh&>(mesh()); @@ -407,6 +449,7 @@ bool Foam::sampledIsoSurface::updateGeometry() const ( *volFieldPtr_, *pointFieldPtr_, + //average(pointMesh::New(mesh()), *volFieldPtr_), isoVal_, regularise_, mergeTol_ diff --git a/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.H b/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.H index 99324cdf5f398a66b1f1e3416d1454e12ff07f20..ccaa4d875005b3189692fa4a34799970a5450acb 100644 --- a/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.H +++ b/src/sampling/sampledSurface/isoSurface/sampledIsoSurface.H @@ -124,6 +124,12 @@ class sampledIsoSurface const pointScalarField& ) const; + tmp<pointScalarField> average + ( + const pointMesh&, + const volScalarField& fld + ) const; + //- Create iso surface (if time has changed) // Do nothing (and return false) if no update was needed bool updateGeometry() const;