From 3d6dc9a9b83c92dab5af2a843cfa6d561bb7e3c6 Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 3 Feb 2010 16:57:03 +0000 Subject: [PATCH] ENH: Automatically increase the time precision to make timeNames differ. Before two timesteps could get the same timeName and start overwriting old results. --- src/OpenFOAM/db/Time/Time.C | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/src/OpenFOAM/db/Time/Time.C b/src/OpenFOAM/db/Time/Time.C index 31473cb0..427b5c45 100644 --- a/src/OpenFOAM/db/Time/Time.C +++ b/src/OpenFOAM/db/Time/Time.C @@ -653,6 +653,9 @@ Foam::Time& Foam::Time::operator++() deltaT0_ = deltaTSave_; deltaTSave_ = deltaT_; + + const word oldTimeName = dimensionedScalar::name(); + setTime(value() + deltaT_, timeIndex_ + 1); // If the time is very close to zero reset to zero @@ -661,6 +664,24 @@ Foam::Time& Foam::Time::operator++() setTime(0.0, timeIndex_); } + // Check that new time representation differs from old one + if (dimensionedScalar::name() == oldTimeName) + { + int oldPrecision = precision_; + do + { + precision_++; + setTime(value(), timeIndex()); + } + while (precision_ < 100 && dimensionedScalar::name() == oldTimeName); + + WarningIn("Time::operator++()") + << "Increased the timePrecision from " << oldPrecision + << " to " << precision_ + << " to distinguish between timeNames at time " << value() + << endl; + } + switch (writeControl_) { case wcTimeStep: -- 2.11.4.GIT