72 scalar timeToNextWrite =
max
78 scalar nSteps = timeToNextWrite/
deltaT_ - SMALL;
81 if (nSteps < labelMax)
83 label nStepsToNextWrite = label(nSteps) + 1;
85 scalar newDeltaT = timeToNextWrite/nStepsToNextWrite;
105 word startFrom = controlDict_.lookupOrDefault<
word>
111 if (startFrom ==
"startTime")
113 controlDict_.lookup(
"startTime") >> startTime_;
120 if (startFrom ==
"firstTime")
124 startTime_ = timeDirs[0].value();
127 else if (startFrom ==
"latestTime")
131 startTime_ = timeDirs[timeDirs.
size()-1].value();
137 <<
"expected startTime, firstTime or latestTime"
138 <<
" found '" << startFrom <<
"'"
143 setTime(startTime_, 0);
146 deltaTSave_ = deltaT_;
147 deltaT0_ = deltaTSave_;
151 scalar sumStartTime = startTime_;
160 <<
"Start time is not the same for all processors" <<
nl
182 deltaT0_ = deltaTSave_;
187 timeIndex_ = startTimeIndex_;
196 const word& controlDictName,
199 const word& systemName,
200 const word& constantName
231 writeControl_(wcTimeStep),
232 writeInterval_(GREAT),
240 runTimeModifiable_(
true),
242 readLibs_(controlDict_,
"libs"),
243 functionObjects_(*
this)
254 const word& systemName,
255 const word& constantName
287 writeControl_(wcTimeStep),
288 writeInterval_(GREAT),
296 runTimeModifiable_(
true),
298 readLibs_(controlDict_,
"libs"),
299 functionObjects_(*
this)
309 const word& systemName,
310 const word& constantName
341 writeControl_(wcTimeStep),
342 writeInterval_(GREAT),
350 runTimeModifiable_(
true),
352 readLibs_(controlDict_,
"libs"),
353 functionObjects_(*
this)
362 functionObjects_.clear();
370 std::ostringstream buf;
371 buf.setf(ios_base::fmtflags(format_), ios_base::floatfield);
372 buf.precision(precision_);
387 return findTimes(path());
397 if (timeDirs[timeI] == t)
399 return timeDirs[timeI].name();
412 if (timeDirs.
size() == 1)
417 if (t < timeDirs[1].value())
421 else if (t > timeDirs[timeDirs.
size()-1].value())
423 return timeDirs[timeDirs.
size()-1];
426 label nearestIndex = -1;
427 scalar deltaT = GREAT;
429 for (label timeI=1; timeI < timeDirs.
size(); ++timeI)
431 scalar diff =
mag(timeDirs[timeI].value() - t);
435 nearestIndex = timeI;
439 return timeDirs[nearestIndex];
459 label nearestIndex = -1;
460 scalar deltaT = GREAT;
464 if (timeDirs[timeI].
name() ==
"constant")
continue;
466 scalar diff =
mag(timeDirs[timeI].value() - t);
470 nearestIndex = timeI;
480 return startTimeIndex_;
498 bool running = value() < (endTime_ - 0.5*deltaT_);
504 if (!running && timeIndex_ != startTimeIndex_)
507 functionObjects_.end();
517 bool running = run();
530 return value() > (endTime_ + 0.5*deltaT_);
544 value() = inst.
value();
546 timeIndex_ = newIndex;
570 setTime(newTime.
value(), newIndex);
578 timeIndex_ = newIndex;
584 setEndTime(endTime.
value());
596 setDeltaT(deltaT.
value());
603 deltaTchanged_ =
true;
611 prevTimeState_.set(
new TimeState(*
this));
613 setTime(*
this - deltaT(), (
timeIndex() - 1)*nSubCycles);
614 deltaT_ /= nSubCycles;
615 deltaT0_ /= nSubCycles;
616 deltaTSave_ = deltaT0_;
618 return prevTimeState();
627 TimeState::operator=(prevTimeState());
628 prevTimeState_.clear();
637 return operator+=(deltaT.
value());
650 readModifiedObjects();
654 if (timeIndex_ == startTimeIndex_)
656 functionObjects_.start();
660 functionObjects_.execute();
664 deltaT0_ = deltaTSave_;
665 deltaTSave_ = deltaT_;
669 setTime(value() + deltaT_, timeIndex_ + 1);
672 if (
mag(value()) < 10*SMALL*deltaT_)
674 setTime(0.0, timeIndex_);
680 int oldPrecision = precision_;
689 <<
"Increased the timePrecision from " << oldPrecision
690 <<
" to " << precision_
691 <<
" to distinguish between timeNames at time " << value()
695 switch (writeControl_)
698 outputTime_ = !(timeIndex_ % label(writeInterval_));
702 case wcAdjustableRunTime:
705 label(((value() - startTime_) + 0.5*deltaT_)/writeInterval_);
707 if (outputIndex > outputTimeIndex_)
710 outputTimeIndex_ = outputIndex;
721 label outputIndex = label
726 if (outputIndex > outputTimeIndex_)
729 outputTimeIndex_ = outputIndex;
740 label outputIndex = label
745 if (outputIndex > outputTimeIndex_)
748 outputTimeIndex_ = outputIndex;
761 if (stopAt_ == saNoWriteNow)
765 else if (stopAt_ == saWriteNow)
770 else if (stopAt_ == saNextWrite && outputTime_ ==
true)