ENH: surfaceNoise - added option to specify area-weighted|ensemble average

This commit is contained in:
Andrew Heather
2021-04-01 13:04:01 +01:00
parent 2dbdac109e
commit 93befa4f63
3 changed files with 48 additions and 11 deletions

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com \\ / A nd | www.openfoam.com
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2015-2020 OpenCFD Ltd. Copyright (C) 2015-2021 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -310,9 +310,14 @@ scalar surfaceNoise::writeSurfaceData
writerPtr_->clear(); writerPtr_->clear();
} }
// TO BE VERIFIED: area-averaged values if (areaAverage_)
// areaAverage = sum(allData*surf.magSf())/sum(surf.magSf()); {
areaAverage = sum(allData)/(allData.size() + ROOTVSMALL); areaAverage = sum(allData*surf.magSf())/sum(surf.magSf());
}
else
{
areaAverage = sum(allData)/(allData.size() + ROOTVSMALL);
}
} }
Pstream::scatter(areaAverage); Pstream::scatter(areaAverage);
@ -342,9 +347,14 @@ scalar surfaceNoise::writeSurfaceData
writerPtr_->clear(); writerPtr_->clear();
} }
// TO BE VERIFIED: area-averaged values if (areaAverage_)
// return sum(data*surf.magSf())/sum(surf.magSf()); {
return sum(data)/(data.size() + ROOTVSMALL); 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), startTimeIndex_(0),
nFace_(0), nFace_(0),
fftWriteInterval_(1), fftWriteInterval_(1),
areaAverage_(false),
readerType_(word::null), readerType_(word::null),
readerPtr_(nullptr), readerPtr_(nullptr),
writerPtr_(nullptr) writerPtr_(nullptr)
@ -449,8 +460,22 @@ bool surfaceNoise::read(const dictionary& dict)
dict.readEntry("file", inputFileNames_.first()); dict.readEntry("file", inputFileNames_.first());
} }
dict.readIfPresent("fftWriteInterval", fftWriteInterval_);
dict.readIfPresent("p", pName_); 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<word>("reader"); readerType_ = dict.get<word>("reader");
@ -465,6 +490,8 @@ bool surfaceNoise::read(const dictionary& dict)
// Use outputDir/TIME/surface-name // Use outputDir/TIME/surface-name
writerPtr_->useTimeDir(true); writerPtr_->useTimeDir(true);
Info << endl;
return true; return true;
} }

View File

@ -5,7 +5,7 @@
\\ / A nd | www.openfoam.com \\ / A nd | www.openfoam.com
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
Copyright (C) 2015-2019 OpenCFD Ltd. Copyright (C) 2015-2021 OpenCFD Ltd.
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
This file is part of OpenFOAM. This file is part of OpenFOAM.
@ -60,11 +60,15 @@ Description
// Write interval for FFT data, default = 1 // Write interval for FFT data, default = 1
fftWriteInterval 100; fftWriteInterval 100;
// Area-weighted averaging switch, default = no (ensemble) for backwards
// compatibility
areaAverage yes;
// Surface reader // Surface reader
reader ensight; reader ensight;
// Surface writer // Surface writer
writer ensight; writer ensight;
// Collate times for ensight output - ensures geometry is only written once // Collate times for ensight output - ensures geometry is only written once
writeOptions writeOptions
@ -159,6 +163,10 @@ protected:
// result in a very large number of output files (1 per frequency) // result in a very large number of output files (1 per frequency)
label fftWriteInterval_; label fftWriteInterval_;
//- Apply area average; default = no (ensemble average) for backwards
//- compatibility
bool areaAverage_;
//- Reader type //- Reader type
word readerType_; word readerType_;

View File

@ -36,6 +36,8 @@ surfaceNoiseCoeffs
// Input file // Input file
file "postProcessing/curleSurface/surface/surface.case"; file "postProcessing/curleSurface/surface/surface.case";
areaAverage yes;
// Surface reader // Surface reader
reader ensight; reader ensight;