ENH: Function objects - updated logic to determine whether or not to instantiate a time-based function object. Fixes #439

This commit is contained in:
Andrew Heather
2017-03-21 16:55:24 +00:00
parent 694a03dfeb
commit eed3b77060
5 changed files with 45 additions and 5 deletions

View File

@ -755,11 +755,7 @@ bool Foam::functionObjectList::read()
fo2,
"functionObject::" + key + "::new"
);
if
(
dict.found("writeControl")
|| dict.found("outputControl")
)
if (functionObjects::timeControl::entriesPresent(dict))
{
foPtr.set
(

View File

@ -50,6 +50,7 @@ const Foam::NamedEnum<Foam::timeControl::timeControls, 9>
Foam::timeControl::timeControlNames_;
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::timeControl::timeControl
@ -78,6 +79,23 @@ Foam::timeControl::~timeControl()
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::timeControl::entriesPresent
(
const dictionary& dict,
const word& prefix
)
{
const word controlName(prefix + "Control");
if (dict.found(controlName))
{
return true;
}
return false;
}
void Foam::timeControl::read(const dictionary& dict)
{
word controlName(prefix_ + "Control");

View File

@ -121,6 +121,10 @@ public:
// Member Functions
//- Helper function to identify if a timeControl object is present
// in the dictionary
static bool entriesPresent(const dictionary& dict, const word& prefix);
//- Read from dictionary
void read(const dictionary&);

View File

@ -93,6 +93,24 @@ Foam::functionObjects::timeControl::timeControl
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
bool Foam::functionObjects::timeControl::entriesPresent(const dictionary& dict)
{
if
(
Foam::timeControl::entriesPresent(dict, "write")
|| Foam::timeControl::entriesPresent(dict, "output") // backwards compat
|| Foam::timeControl::entriesPresent(dict, "execute")
|| dict.found("timeStart")
|| dict.found("timeEnd")
)
{
return true;
}
return false;
}
bool Foam::functionObjects::timeControl::execute()
{
if (active() && (postProcess || executeControl_.execute()))

View File

@ -157,6 +157,10 @@ public:
// Function object control
//- Helper function to identify if a timeControl object is present
// in the dictionary
static bool entriesPresent(const dictionary& dict);
//- Called at each ++ or += of the time-loop.
// postProcess overrides the usual executeControl behaviour and
// forces execution (used in post-processing mode)