diff --git a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C index 1f179698d100fa4bab81c26e9705793aee40614b..8251159d02f7ad1bfaf1e04fc8f25ae350b76216 100644 --- a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C +++ b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.C @@ -77,7 +77,8 @@ Foam::functionObjects::timeControl::timeControl ), executeControl_(t, dict, "execute"), writeControl_(t, dict, "write"), - foPtr_(functionObject::New(name, t, dict_)) + foPtr_(functionObject::New(name, t, dict_)), + executeTimeIndex_(-1) { readControls(); } @@ -89,6 +90,7 @@ bool Foam::functionObjects::timeControl::execute() { if (active() && (postProcess || executeControl_.execute())) { + executeTimeIndex_ = time_.timeIndex(); foPtr_->execute(); } @@ -100,6 +102,13 @@ bool Foam::functionObjects::timeControl::write() { if (active() && (postProcess || writeControl_.execute())) { + // Ensure written results reflect the current state + if (executeTimeIndex_ != time_.timeIndex()) + { + executeTimeIndex_ = time_.timeIndex(); + foPtr_->execute(); + } + foPtr_->write(); } diff --git a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H index e256144f6b21a8e3f99e5fdbde4322c924e48cba..d019a7e8b64bb36808d841c6449bf5a2986c9bd9 100644 --- a/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H +++ b/src/OpenFOAM/db/functionObjects/timeControl/timeControlFunctionObject.H @@ -99,6 +99,9 @@ class timeControl //- The functionObject to execute autoPtr<functionObject> foPtr_; + //- Time index of the last execute call + label executeTimeIndex_; + // Private Member Functions diff --git a/src/functionObjects/field/ddt2/ddt2.C b/src/functionObjects/field/ddt2/ddt2.C index 7aeecd01e90d76ac011206c2bf7c38c42c36716d..a3876716585aa57bcea8897ca5cf0e57e0ee2029 100644 --- a/src/functionObjects/field/ddt2/ddt2.C +++ b/src/functionObjects/field/ddt2/ddt2.C @@ -112,7 +112,6 @@ Foam::functionObjects::ddt2::ddt2 ) : fvMeshFunctionObject(name, runTime, dict), - prevTimeIndex_(-1), selectFields_(), resultName_(word::null), blacklist_(), @@ -218,20 +217,12 @@ bool Foam::functionObjects::ddt2::execute() << "Unprocessed field " << ignored << endl; } - // Update time index - prevTimeIndex_ = obr_.time().timeIndex(); - return true; } bool Foam::functionObjects::ddt2::write() { - if (prevTimeIndex_ < obr_.time().timeIndex()) - { - // Ensure written results reflect the current state - execute(); - } if (results_.size()) { Log << type() << ' ' << name() << " write:" << endl; diff --git a/src/functionObjects/field/ddt2/ddt2.H b/src/functionObjects/field/ddt2/ddt2.H index bba1492e3e4fb870671465597e812a2df74ff035..21607ce2a34c98f72c87742e8f94b84dd1340119 100644 --- a/src/functionObjects/field/ddt2/ddt2.H +++ b/src/functionObjects/field/ddt2/ddt2.H @@ -101,9 +101,6 @@ class ddt2 { // Private data - //- Time at last execute, ensures write uses up-to-date values - label prevTimeIndex_; - //- Name of fields to process wordReList selectFields_; diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.C b/src/functionObjects/field/zeroGradient/zeroGradient.C index 53d41c23f89e0c08f18be6a57f44d2470788a8c8..ff07607652bf19fa5f3dab52c6dc2d5841998d8b 100644 --- a/src/functionObjects/field/zeroGradient/zeroGradient.C +++ b/src/functionObjects/field/zeroGradient/zeroGradient.C @@ -100,7 +100,6 @@ Foam::functionObjects::zeroGradient::zeroGradient ) : fvMeshFunctionObject(name, runTime, dict), - prevTimeIndex_(-1), selectFields_(), resultName_(string::null), results_() @@ -175,20 +174,12 @@ bool Foam::functionObjects::zeroGradient::execute() << "Unprocessed field " << ignored << endl; } - // Update time index - prevTimeIndex_ = obr_.time().timeIndex(); - return true; } bool Foam::functionObjects::zeroGradient::write() { - if (prevTimeIndex_ < obr_.time().timeIndex()) - { - // Ensure written results reflect the current state - execute(); - } if (results_.size()) { Log << type() << ' ' << name() << " write:" << endl; diff --git a/src/functionObjects/field/zeroGradient/zeroGradient.H b/src/functionObjects/field/zeroGradient/zeroGradient.H index e4eb1c75b3dcaf2cf3381d9c8bb2f2678007e6ec..84243608243737ecb27b8735d2be2e19e84f1d43 100644 --- a/src/functionObjects/field/zeroGradient/zeroGradient.H +++ b/src/functionObjects/field/zeroGradient/zeroGradient.H @@ -95,9 +95,6 @@ class zeroGradient { // Private data - //- Time at last execute, ensures write uses up-to-date values - label prevTimeIndex_; - //- Name of fields to process wordReList selectFields_;