mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: surfaceNoise - added option to specify area-weighted|ensemble average
This commit is contained in:
@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -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_;
|
||||||
|
|
||||||
|
|||||||
@ -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;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user