Go to the documentation of this file.
37 namespace functionObjects
70 functionObjectName_(
"unknown-functionObject"),
74 resetOnRestart_(
false)
80 forAll(fieldNames_, fieldi)
82 const word& fieldName = fieldNames_[fieldi];
84 if (
dict.found(fieldName))
87 valueDict.
readEntry(
"totalTime", totalTime_[fieldi]);
92 writeFileHeader(file());
104 resetOnRestart_ =
false;
106 dict.readEntry(
"functionObject", functionObjectName_);
107 dict.readEntry(
"fields", fieldNames_);
108 if (
dict.readIfPresent(
"window", window_))
110 window_ = obr().time().userTimeToTime(window_);
113 totalTime_.setSize(fieldNames_.size());
116 totalTime_[i] = time_.deltaTValue();
119 dict.readIfPresent(
"resetOnRestart", resetOnRestart_);
127 scalar dt = obr_.time().deltaTValue();
131 file() << time_.timeName();
135 forAll(fieldNames_, fieldi)
137 const word& fieldName(fieldNames_[fieldi]);
138 const word meanName(fieldName +
"Mean");
140 scalar Dt = totalTime_[fieldi];
141 scalar
alpha = (Dt - dt)/Dt;
146 if (Dt - dt >= window_)
148 alpha = (window_ - dt)/window_;
153 bool processed =
false;
154 calc<scalar>(fieldName, meanName,
alpha,
beta, processed);
155 calc<vector>(fieldName, meanName,
alpha,
beta, processed);
156 calc<sphericalTensor>(fieldName, meanName,
alpha,
beta, processed);
157 calc<symmTensor>(fieldName, meanName,
alpha,
beta, processed);
158 calc<tensor>(fieldName, meanName,
alpha,
beta, processed);
162 unprocessedFields.append(fieldi);
166 file() <<
tab <<
"n/a";
170 totalTime_[fieldi] += dt;
175 if (unprocessedFields.size())
178 <<
"From function object: " << functionObjectName_ <<
nl
179 <<
"Unprocessed fields:" <<
nl;
181 forAll(unprocessedFields, i)
183 label fieldi = unprocessedFields[i];
184 Log <<
" " << fieldNames_[fieldi] <<
nl;
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
virtual void writeFileHeader(Ostream &os) const
Output file header information.
A class for handling words, derived from Foam::string.
virtual bool execute()
Execute.
const dimensionedScalar alpha
Fine-structure constant: default SI units: [].
bool read(const char *buf, int32_t &val)
Same as readInt32.
Ostream & endl(Ostream &os)
Add newline and flush stream.
#define forAll(list, i)
Loop across all elements in list.
virtual void writeHeader(Ostream &os, const string &str) const
Write a commented header to stream.
virtual bool read(const dictionary &dict)
Read.
word name(const complex &c)
Return string representation of complex.
virtual bool read(const dictionary &)
Read the field value average data.
wordList fieldNames_
List of fields on which to operate.
dimensionedScalar beta("beta", dimless/dimTemperature, laminarTransport)
bool readEntry(const word &keyword, T &val, enum keyType::option matchOpt=keyType::REGEX, bool mandatory=true) const
A list of keyword definitions, which are a keyword followed by a number of values (eg,...
virtual bool read(const dictionary &dict)
Read optional controls.
Macros for easy insertion into run-time selection tables.
virtual bool write()
Write the value average.
valueAverage(const word &name, const Time &runTime, const dictionary &dict)
Construct from Time and dictionary.
virtual void writeCommented(Ostream &os, const string &str) const
Write a commented string to stream.
addToRunTimeSelectionTable(functionObject, ObukhovLength, dictionary)
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
defineTypeNameAndDebug(ObukhovLength, 0)
Specialization of Foam::functionObject for a region and providing a reference to the region Foam::obj...
Base class for writing single files from the function objects.
An Ostream is an abstract base class for all output systems (streams, files, token lists,...
#define WarningInFunction
Report a warning using Foam::Warning.
virtual void writeTabbed(Ostream &os, const string &str) const
Write a tabbed string to stream.