functionObjects::fieldAverage: Simplified the interface by the introduction of defaults

The mean, prime2Mean and base now have default values:

    {
        mean            on;   // (default = on)
        prime2Mean      on;   // (default = off)
        base            time; // time or iteration (default = time)
        window          200;  // optional averaging window
        windowName      w1;   // optional window name (default = "")
    }

so for the majority of cases for which these defaults are appropriate the
fieldAverage functionObject can now be specified in the functions entry in
controlDict thus:

functions
{
    fieldAverage1
    {
        #includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"

        fields
        (
            U.air
            U.water
            alpha.air
            p
        );
    }
}

also utilising the new fieldAverage.cfg file.

For cases in which these defaults are not appropriate, e.g. the prime2Mean is
also required the optional entries can be specified within sub-dictionaries for
each field, e.g.

    fieldAverage1
    {
        #includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"

        fields
        (
            U
            {
                prime2Mean  yes;
            }

            p
            {
                prime2Mean  yes;
            }
        );
    }
This commit is contained in:
Henry Weller
2020-03-06 15:51:49 +00:00
parent 66397001c2
commit 46c790dd09
31 changed files with 102 additions and 845 deletions

View File

@ -0,0 +1,15 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
type fieldAverage;
functionObjectLibs ("libfieldFunctionObjects.so");
timeStart 0;
writeControl writeTime;
// ************************************************************************* //

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -30,9 +30,9 @@ Description
\verbatim
{
mean on;
prime2Mean on;
base time; // iteration
mean on; // (default = on)
prime2Mean on; // (default = off)
base time; // time or iteration (default = time)
window 200; // optional averaging window
windowName w1; // optional window name (default = "")
}
@ -68,7 +68,6 @@ namespace functionObjects
// Forward declaration of friend functions and operators
class fieldAverageItem;
Istream& operator>>(Istream&, fieldAverageItem&);
Ostream& operator<<(Ostream&, const fieldAverageItem&);
/*---------------------------------------------------------------------------*\
Class fieldAverageItem Declaration
@ -259,7 +258,6 @@ public:
// IOstream Operators
friend Istream& operator>>(Istream&, fieldAverageItem&);
friend Ostream& operator<<(Ostream&, const fieldAverageItem&);
};

View File

@ -2,7 +2,7 @@
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Copyright (C) 2011-2019 OpenFOAM Foundation
\\ / A nd | Copyright (C) 2011-2020 OpenFOAM Foundation
\\/ M anipulation |
-------------------------------------------------------------------------------
License
@ -24,7 +24,6 @@ License
\*---------------------------------------------------------------------------*/
#include "fieldAverageItem.H"
#include "IOstreams.H"
#include "dictionaryEntry.H"
#include "IOobject.H"
@ -40,38 +39,7 @@ Foam::functionObjects::fieldAverageItem::fieldAverageItem(Istream& is)
base_(baseType::iter),
window_(-1.0)
{
is.check
(
"Foam::functionObjects::fieldAverageItem::fieldAverageItem"
"(Foam::Istream&)"
);
const dictionaryEntry entry(dictionary::null, is);
fieldName_ = entry.keyword();
entry.lookup("mean") >> mean_;
entry.lookup("prime2Mean") >> prime2Mean_;
base_ = baseTypeNames_[entry.lookup("base")];
window_ = entry.lookupOrDefault<scalar>("window", -1.0);
windowName_ = entry.lookupOrDefault<word>("windowName", "");
meanFieldName_ = IOobject::groupName
(
IOobject::member(fieldName_) + meanExt,
IOobject::group(fieldName_)
);
prime2MeanFieldName_ = IOobject::groupName
(
IOobject::member(fieldName_) + prime2MeanExt,
IOobject::group(fieldName_)
);
if ((window_ > 0) && (windowName_ != ""))
{
meanFieldName_ = meanFieldName_ + "_" + windowName_;
prime2MeanFieldName_ = prime2MeanFieldName_ + "_" + windowName_;
}
is >> *this;
}
@ -89,14 +57,31 @@ Foam::Istream& Foam::functionObjects::operator>>
"(Foam::Istream&, Foam::functionObjects::fieldAverageItem&)"
);
const dictionaryEntry entry(dictionary::null, is);
token fieldNameToken(is);
faItem.fieldName_ = fieldNameToken.wordToken();
faItem.fieldName_ = entry.keyword();
entry.lookup("mean") >> faItem.mean_;
entry.lookup("prime2Mean") >> faItem.prime2Mean_;
faItem.base_ = faItem.baseTypeNames_[entry.lookup("base")];
faItem.window_ = entry.lookupOrDefault<scalar>("window", -1.0);
token nextToken(is);
is.putBack(nextToken);
if (nextToken.isPunctuation() && nextToken.pToken() == token::BEGIN_BLOCK)
{
const dictionary entry(dictionary::null, is);
faItem.mean_ = entry.lookupOrDefault<Switch>("mean", true);
faItem.prime2Mean_ = entry.lookupOrDefault<Switch>("prime2Mean", false);
faItem.base_ =
faItem.baseTypeNames_[entry.lookupOrDefault<word>("base", "time")];
faItem.window_ = entry.lookupOrDefault<scalar>("window", -1);
faItem.windowName_ = entry.lookupOrDefault<word>("windowName", "");
}
else
{
faItem.mean_ = true;
faItem.prime2Mean_ = false;
faItem.base_ = faItem.baseTypeNames_["time"];
faItem.window_ = -1;
faItem.windowName_ = "";
}
faItem.meanFieldName_ = IOobject::groupName
(
@ -118,48 +103,9 @@ Foam::Istream& Foam::functionObjects::operator>>
faItem.prime2MeanFieldName_ =
faItem.prime2MeanFieldName_ + "_" + faItem.windowName_;
}
return is;
}
Foam::Ostream& Foam::functionObjects::operator<<
(
Ostream& os,
const fieldAverageItem& faItem
)
{
os.check
(
"Foam::Ostream& Foam::operator<<"
"(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)"
);
os << faItem.fieldName_ << nl << token::BEGIN_BLOCK << nl;
writeEntry(os, "mean", faItem.mean_);
writeEntry(os, "prime2Mean", faItem.prime2Mean_);
writeEntry(os, "base", faItem.baseTypeNames_[faItem.base_]);
if (faItem.window_ > 0)
{
writeEntry(os, "window", faItem.window_);
if (faItem.windowName_ != "")
{
writeEntry(os, "windowName", faItem.windowName_);
}
}
os << token::END_BLOCK << nl;
os.check
(
"Foam::Ostream& Foam::operator<<"
"(Foam::Ostream&, const Foam::functionObjects::fieldAverageItem&)"
);
return os;
}
// ************************************************************************* //

View File

@ -53,24 +53,18 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U
{
mean on;
prime2Mean on;
base time;
}
p
{
mean on;
prime2Mean on;
base time;
}
);
}

View File

@ -51,68 +51,22 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
rhoN
{
mean on;
prime2Mean off;
base time;
}
rhoM
{
mean on;
prime2Mean off;
base time;
}
dsmcRhoN
{
mean on;
prime2Mean off;
base time;
}
momentum
{
mean on;
prime2Mean off;
base time;
}
linearKE
{
mean on;
prime2Mean off;
base time;
}
internalE
{
mean on;
prime2Mean off;
base time;
}
iDof
{
mean on;
prime2Mean off;
base time;
}
q
{
mean on;
prime2Mean off;
base time;
}
fD
{
mean on;
prime2Mean off;
base time;
}
);
}
dsmcFields1
{
type dsmcFields;

View File

@ -51,69 +51,23 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
restartOnOutput off;
fields
(
rhoN
{
mean on;
prime2Mean off;
base time;
}
rhoM
{
mean on;
prime2Mean off;
base time;
}
dsmcRhoN
{
mean on;
prime2Mean off;
base time;
}
momentum
{
mean on;
prime2Mean off;
base time;
}
linearKE
{
mean on;
prime2Mean off;
base time;
}
internalE
{
mean on;
prime2Mean off;
base time;
}
iDof
{
mean on;
prime2Mean off;
base time;
}
q
{
mean on;
prime2Mean off;
base time;
}
fD
{
mean on;
prime2Mean off;
base time;
}
);
}
dsmcFields1
{
type dsmcFields;

View File

@ -51,66 +51,19 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
rhoN
{
mean on;
prime2Mean off;
base time;
}
rhoM
{
mean on;
prime2Mean off;
base time;
}
dsmcRhoN
{
mean on;
prime2Mean off;
base time;
}
momentum
{
mean on;
prime2Mean off;
base time;
}
linearKE
{
mean on;
prime2Mean off;
base time;
}
internalE
{
mean on;
prime2Mean off;
base time;
}
iDof
{
mean on;
prime2Mean off;
base time;
}
q
{
mean on;
prime2Mean off;
base time;
}
fD
{
mean on;
prime2Mean off;
base time;
}
);
}

View File

@ -51,66 +51,19 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
rhoN
{
mean on;
prime2Mean off;
base time;
}
rhoM
{
mean on;
prime2Mean off;
base time;
}
dsmcRhoN
{
mean on;
prime2Mean off;
base time;
}
momentum
{
mean on;
prime2Mean off;
base time;
}
linearKE
{
mean on;
prime2Mean off;
base time;
}
internalE
{
mean on;
prime2Mean off;
base time;
}
iDof
{
mean on;
prime2Mean off;
base time;
}
q
{
mean on;
prime2Mean off;
base time;
}
fD
{
mean on;
prime2Mean off;
base time;
}
);
}

View File

@ -49,24 +49,18 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U
{
mean on;
prime2Mean on;
base time;
prime2Mean yes;
}
p
{
mean on;
prime2Mean on;
base time;
prime2Mean yes;
}
);
}

View File

@ -74,24 +74,18 @@ functions
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U
{
mean on;
prime2Mean on;
base time;
prime2Mean yes;
}
p
{
mean on;
prime2Mean on;
base time;
prime2Mean yes;
}
);
}

View File

@ -74,24 +74,18 @@ functions
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U
{
mean on;
prime2Mean on;
base time;
prime2Mean yes;
}
p
{
mean on;
prime2Mean on;
base time;
prime2Mean yes;
}
);
}

View File

@ -53,31 +53,13 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
alpha.vapour
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -53,31 +53,13 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
alpha.vapour
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.particles
{
mean on;
prime2Mean off;
base time;
}
U.air
{
mean on;
prime2Mean off;
base time;
}
alpha.particles
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,52 +55,16 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air1
{
mean on;
prime2Mean off;
base time;
}
U.air2
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air1
{
mean on;
prime2Mean off;
base time;
}
alpha.air2
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,52 +55,16 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air1
{
mean on;
prime2Mean off;
base time;
}
U.air2
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air1
{
mean on;
prime2Mean off;
base time;
}
alpha.air2
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.particles
{
mean on;
prime2Mean off;
base time;
}
U.air
{
mean on;
prime2Mean off;
base time;
}
alpha.particles
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.particles
{
mean on;
prime2Mean off;
base time;
}
U.air
{
mean on;
prime2Mean off;
base time;
}
alpha.particles
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.particles
{
mean on;
prime2Mean off;
base time;
}
U.air
{
mean on;
prime2Mean off;
base time;
}
alpha.particles
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.air
{
mean on;
prime2Mean off;
base time;
}
U.water
{
mean on;
prime2Mean off;
base time;
}
alpha.air
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}

View File

@ -55,38 +55,14 @@ functions
{
fieldAverage1
{
type fieldAverage;
libs ("libfieldFunctionObjects.so");
writeControl writeTime;
#includeEtc "caseDicts/postProcessing/fields/fieldAverage.cfg"
fields
(
U.particles
{
mean on;
prime2Mean off;
base time;
}
U.air
{
mean on;
prime2Mean off;
base time;
}
alpha.particles
{
mean on;
prime2Mean off;
base time;
}
p
{
mean on;
prime2Mean off;
base time;
}
);
}
}