diff --git a/src/functionObjects/field/ddt2/ddt2.C b/src/functionObjects/field/ddt2/ddt2.C index a3876716585aa57bcea8897ca5cf0e57e0ee2029..7aeecd01e90d76ac011206c2bf7c38c42c36716d 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 21607ce2a34c98f72c87742e8f94b84dd1340119..bba1492e3e4fb870671465597e812a2df74ff035 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 ff07607652bf19fa5f3dab52c6dc2d5841998d8b..53d41c23f89e0c08f18be6a57f44d2470788a8c8 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 84243608243737ecb27b8735d2be2e19e84f1d43..e4eb1c75b3dcaf2cf3381d9c8bb2f2678007e6ec 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_;