diff --git a/src/functionObjects/field/ddt2/ddt2.C b/src/functionObjects/field/ddt2/ddt2.C index a387671658..7aeecd01e9 100644 --- a/src/functionObjects/field/ddt2/ddt2.C +++ b/src/functionObjects/field/ddt2/ddt2.C @@ -112,6 +112,7 @@ Foam::functionObjects::ddt2::ddt2 ) : fvMeshFunctionObject(name, runTime, dict), + prevTimeIndex_(-1), selectFields_(), resultName_(word::null), blacklist_(), @@ -217,12 +218,20 @@ 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 21607ce2a3..bba1492e3e 100644 --- a/src/functionObjects/field/ddt2/ddt2.H +++ b/src/functionObjects/field/ddt2/ddt2.H @@ -101,6 +101,9 @@ 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 ff07607652..53d41c23f8 100644 --- a/src/functionObjects/field/zeroGradient/zeroGradient.C +++ b/src/functionObjects/field/zeroGradient/zeroGradient.C @@ -100,6 +100,7 @@ Foam::functionObjects::zeroGradient::zeroGradient ) : fvMeshFunctionObject(name, runTime, dict), + prevTimeIndex_(-1), selectFields_(), resultName_(string::null), results_() @@ -174,12 +175,20 @@ 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 8424360824..e4eb1c75b3 100644 --- a/src/functionObjects/field/zeroGradient/zeroGradient.H +++ b/src/functionObjects/field/zeroGradient/zeroGradient.H @@ -95,6 +95,9 @@ class zeroGradient { // Private data + //- Time at last execute, ensures write uses up-to-date values + label prevTimeIndex_; + //- Name of fields to process wordReList selectFields_;