39 namespace functionObjects
52 { compressibleField::cfK,
"k" },
53 { compressibleField::cfEpsilon,
"epsilon" },
54 { compressibleField::cfOmega,
"omega" },
55 { compressibleField::cfNuTilda,
"nuTilda" },
56 { compressibleField::cfMut,
"mut" },
57 { compressibleField::cfMuEff,
"muEff" },
58 { compressibleField::cfAlphat,
"alphat" },
59 { compressibleField::cfAlphaEff,
"alphaEff" },
60 { compressibleField::cfR,
"R" },
61 { compressibleField::cfDevRhoReff,
"devRhoReff" },
62 { compressibleField::cfL,
"L" },
63 { compressibleField::cfI,
"I" },
64 { compressibleField::cfLESRegion,
"LESRegion" },
65 { compressibleField::cffd,
"fd" },
75 { incompressibleField::ifK,
"k" },
76 { incompressibleField::ifEpsilon,
"epsilon" },
77 { incompressibleField::ifOmega,
"omega" },
78 { incompressibleField::ifNuTilda,
"nuTilda" },
79 { incompressibleField::ifNut,
"nut" },
80 { incompressibleField::ifNuEff,
"nuEff" },
81 { incompressibleField::ifR,
"R" },
82 { incompressibleField::ifDevReff,
"devReff" },
83 { incompressibleField::ifL,
"L" },
84 { incompressibleField::ifI,
"I" },
85 { incompressibleField::ifLESRegion,
"LESRegion" },
86 { incompressibleField::iffd,
"fd" },
107 <<
"Cannot store turbulence field " << localName
108 <<
" since an object with that name already exists" 131 <<
"Turbulence model not found in database, deactivating" 149 prefix_(
dict.getOrDefault<
word>(
"prefix",
"turbulenceProperties")),
162 dict.readIfPresent(
"prefix", prefix_);
164 if (
dict.found(
"field"))
166 fieldSet_.insert(
dict.get<
word>(
"field"));
174 if (fieldSet_.size())
176 Info<<
"storing fields:" <<
nl;
177 for (
const word&
f : fieldSet_)
185 Info<<
"no fields requested to be stored" <<
nl <<
endl;
188 initialised_ =
false;
211 for (
const word&
f : fieldSet_)
213 switch (compressibleFieldNames_[
f])
217 processField<scalar>(
f, model.k());
222 processField<scalar>(
f, model.epsilon());
227 processField<scalar>(
f, model.omega());
232 processField<scalar>(
f, nuTilda(model));
237 processField<scalar>(
f, model.mut());
242 processField<scalar>(
f, model.muEff());
247 processField<scalar>(
f, model.alphat());
252 processField<scalar>(
f, model.alphaEff());
257 processField<symmTensor>(
f, model.R());
262 processField<symmTensor>(
f, model.devRhoReff());
267 processField<scalar>(
f,
L(model));
272 processField<scalar>(
f,
I(model));
277 auto* DESPtr = mesh_.cfindObject<DESModelBase>(modelName_);
281 <<
"Turbulence model is not a DES model - " 282 <<
"skipping request for LESRegion" <<
endl;
287 processField<scalar>(
f, DESPtr->LESRegion());
292 auto* DESPtr = mesh_.cfindObject<DESModelBase>(modelName_);
296 <<
"Turbulence model is not a DES model - " 297 <<
"skipping request for fd" <<
endl;
302 processField<scalar>(
f, DESPtr->fd());
318 for (
const word&
f : fieldSet_)
320 switch (incompressibleFieldNames_[
f])
324 processField<scalar>(
f, model.k());
329 processField<scalar>(
f, model.epsilon());
334 processField<scalar>(
f, model.omega());
339 processField<scalar>(
f, nuTilda(model));
344 processField<scalar>(
f, model.nut());
349 processField<scalar>(
f, model.nuEff());
354 processField<symmTensor>(
f, model.R());
359 processField<symmTensor>(
f, model.devReff());
364 processField<scalar>(
f,
L(model));
369 processField<scalar>(
f,
I(model));
374 auto* DESPtr = mesh_.cfindObject<DESModelBase>(modelName_);
378 <<
"Turbulence model is not a DES model - " 379 <<
"skipping request for LESRegion" <<
endl;
384 processField<scalar>(
f, DESPtr->LESRegion());
389 auto* DESPtr = mesh_.cfindObject<DESModelBase>(modelName_);
393 <<
"Turbulence model is not a DES model - " 394 <<
"skipping request for fd" <<
endl;
399 processField<scalar>(
f, DESPtr->fd());
417 for (
const word&
f : fieldSet_)
421 writeObject(localName);
bool found(const word &name, const bool recursive=false) const
Can the regIOobject object be found (by name).
defineTypeNameAndDebug(ObukhovLength, 0)
void initialise()
Unset duplicate fields already registered by other function objects.
bool initialised_
Flag to track initialisation.
errorManipArg< error, int > exit(error &err, const int errNo=1)
compressibleField
Options for the turbulence fields (compressible)
error FatalError
Error stream (stdout output on all processes), with additional 'FOAM FATAL ERROR' header text and sta...
A list of keyword definitions, which are a keyword followed by a number of values (eg...
const vector L(dict.get< vector >("L"))
turbulenceFields(const word &name, const Time &runTime, const dictionary &dict)
Construct from Time and dictionary.
#define FatalErrorInFunction
Report an error message using Foam::FatalError.
constexpr char nl
The newline '\n' character (0x0a)
ThermalDiffusivity< CompressibleTurbulenceModel< fluidThermo > > turbulenceModel
Ostream & endl(Ostream &os)
Add newline and flush stream.
static const word modelName_
Name of the turbulence properties dictionary.
IncompressibleTurbulenceModel< transportModel > turbulenceModel
word prefix_
Name of output-field prefix.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
Macros for easy insertion into run-time selection tables.
wordHashSet fieldSet_
Fields to load.
bool read(const char *buf, int32_t &val)
Same as readInt32.
bool compressible()
Return true if compressible turbulence model is identified.
fileName::Type type(const fileName &name, const bool followLink=true)
Return the file type: DIRECTORY or FILE, normally following symbolic links.
static word scopedName(const std::string &scope, const word &name)
Create scope:name or scope_name string.
bool unset(const Key &key)
Unset the specified key - same as erase.
word name(const expressions::valueTypeCode typeCode)
A word representation of a valueTypeCode. Empty for INVALID.
static const Identity< scalar > I
static const word propertiesName
Default name of the turbulence properties dictionary.
A class for handling words, derived from Foam::string.
virtual bool read(const dictionary &)
Read the controls.
virtual bool write()
Do nothing.
errorManip< error > abort(error &err)
static const Enum< incompressibleField > incompressibleFieldNames_
Names for incompressibleField turbulence fields.
static const Enum< compressibleField > compressibleFieldNames_
Names for compressibleField turbulence fields.
addToRunTimeSelectionTable(functionObject, ObukhovLength, dictionary)
#define WarningInFunction
Report a warning using Foam::Warning.
Enum is a wrapper around a list of names/values that represent particular enumeration (or int) values...
const objectRegistry & obr_
Reference to the region objectRegistry.
virtual bool execute()
Calculate turbulence fields.
messageStream Info
Information stream (stdout output on master, null elsewhere)
virtual bool read(const dictionary &dict)
Read optional controls.
incompressibleField
Options for the turbulence fields (incompressible)
Specialization of Foam::functionObject for an Foam::fvMesh, providing a reference to the Foam::fvMesh...