diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C index 845a7de3e5..5ad342225d 100644 --- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C +++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2015-2020 OpenCFD Ltd. + Copyright (C) 2015-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -310,9 +310,14 @@ scalar surfaceNoise::writeSurfaceData writerPtr_->clear(); } - // TO BE VERIFIED: area-averaged values - // areaAverage = sum(allData*surf.magSf())/sum(surf.magSf()); - areaAverage = sum(allData)/(allData.size() + ROOTVSMALL); + if (areaAverage_) + { + areaAverage = sum(allData*surf.magSf())/sum(surf.magSf()); + } + else + { + areaAverage = sum(allData)/(allData.size() + ROOTVSMALL); + } } Pstream::scatter(areaAverage); @@ -342,9 +347,14 @@ scalar surfaceNoise::writeSurfaceData writerPtr_->clear(); } - // TO BE VERIFIED: area-averaged values - // return sum(data*surf.magSf())/sum(surf.magSf()); - return sum(data)/(data.size() + ROOTVSMALL); + if (areaAverage_) + { + return sum(data*surf.magSf())/sum(surf.magSf()); + } + else + { + return sum(data)/(data.size() + ROOTVSMALL); + } } } @@ -426,6 +436,7 @@ surfaceNoise::surfaceNoise(const dictionary& dict, const bool readFields) startTimeIndex_(0), nFace_(0), fftWriteInterval_(1), + areaAverage_(false), readerType_(word::null), readerPtr_(nullptr), writerPtr_(nullptr) @@ -449,8 +460,22 @@ bool surfaceNoise::read(const dictionary& dict) dict.readEntry("file", inputFileNames_.first()); } - dict.readIfPresent("fftWriteInterval", fftWriteInterval_); dict.readIfPresent("p", pName_); + dict.readIfPresent("fftWriteInterval", fftWriteInterval_); + + Info<< " Pressure field name: " << pName_ << nl + << " FFT write interval: " << fftWriteInterval_ << nl; + + dict.readIfPresent("areaAverage", areaAverage_); + + if (areaAverage_) + { + Info<< " Averaging: area weighted" << endl; + } + else + { + Info<< " Averaging: ensemble" << endl; + } readerType_ = dict.get("reader"); @@ -465,6 +490,8 @@ bool surfaceNoise::read(const dictionary& dict) // Use outputDir/TIME/surface-name writerPtr_->useTimeDir(true); + Info << endl; + return true; } diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H index 17a589cc29..05ac4c2826 100644 --- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H +++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.H @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2015-2019 OpenCFD Ltd. + Copyright (C) 2015-2021 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -60,11 +60,15 @@ Description // Write interval for FFT data, default = 1 fftWriteInterval 100; + // Area-weighted averaging switch, default = no (ensemble) for backwards + // compatibility + areaAverage yes; + // Surface reader - reader ensight; + reader ensight; // Surface writer - writer ensight; + writer ensight; // Collate times for ensight output - ensures geometry is only written once writeOptions @@ -159,6 +163,10 @@ protected: // result in a very large number of output files (1 per frequency) label fftWriteInterval_; + //- Apply area average; default = no (ensemble average) for backwards + //- compatibility + bool areaAverage_; + //- Reader type word readerType_; diff --git a/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/noiseDict-surface b/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/noiseDict-surface index 23d03aade3..23478e0466 100644 --- a/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/noiseDict-surface +++ b/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/noiseDict-surface @@ -36,6 +36,8 @@ surfaceNoiseCoeffs // Input file file "postProcessing/curleSurface/surface/surface.case"; + areaAverage yes; + // Surface reader reader ensight;