mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: Time: have separate timer for secondary write interval
This commit is contained in:
@ -79,21 +79,35 @@ Foam::word Foam::Time::controlDictName("controlDict");
|
|||||||
|
|
||||||
void Foam::Time::adjustDeltaT()
|
void Foam::Time::adjustDeltaT()
|
||||||
{
|
{
|
||||||
|
bool adjustTime = false;
|
||||||
|
scalar timeToNextWrite = VGREAT;
|
||||||
|
|
||||||
if (writeControl_ == wcAdjustableRunTime)
|
if (writeControl_ == wcAdjustableRunTime)
|
||||||
{
|
{
|
||||||
scalar interval = writeInterval_;
|
adjustTime = true;
|
||||||
if (secondaryWriteControl_ == wcAdjustableRunTime)
|
timeToNextWrite = max
|
||||||
{
|
|
||||||
interval = min(interval, secondaryWriteInterval_);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
scalar timeToNextWrite = max
|
|
||||||
(
|
(
|
||||||
0.0,
|
0.0,
|
||||||
(outputTimeIndex_ + 1)*interval - (value() - startTime_)
|
(outputTimeIndex_ + 1)*writeInterval_ - (value() - startTime_)
|
||||||
);
|
);
|
||||||
|
}
|
||||||
|
if (secondaryWriteControl_ == wcAdjustableRunTime)
|
||||||
|
{
|
||||||
|
adjustTime = true;
|
||||||
|
timeToNextWrite = max
|
||||||
|
(
|
||||||
|
0.0,
|
||||||
|
min
|
||||||
|
(
|
||||||
|
timeToNextWrite,
|
||||||
|
(secondaryOutputTimeIndex_ + 1)*secondaryWriteInterval_
|
||||||
|
- (value() - startTime_)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (adjustTime)
|
||||||
|
{
|
||||||
scalar nSteps = timeToNextWrite/deltaT_ - SMALL;
|
scalar nSteps = timeToNextWrite/deltaT_ - SMALL;
|
||||||
|
|
||||||
// For tiny deltaT the label can overflow!
|
// For tiny deltaT the label can overflow!
|
||||||
@ -1130,10 +1144,10 @@ Foam::Time& Foam::Time::operator++()
|
|||||||
/ secondaryWriteInterval_
|
/ secondaryWriteInterval_
|
||||||
);
|
);
|
||||||
|
|
||||||
if (outputIndex > outputTimeIndex_)
|
if (outputIndex > secondaryOutputTimeIndex_)
|
||||||
{
|
{
|
||||||
outputTime_ = true;
|
outputTime_ = true;
|
||||||
outputTimeIndex_ = outputIndex;
|
secondaryOutputTimeIndex_ = outputIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1145,10 +1159,10 @@ Foam::Time& Foam::Time::operator++()
|
|||||||
returnReduce(elapsedCpuTime(), maxOp<double>())
|
returnReduce(elapsedCpuTime(), maxOp<double>())
|
||||||
/ secondaryWriteInterval_
|
/ secondaryWriteInterval_
|
||||||
);
|
);
|
||||||
if (outputIndex > outputTimeIndex_)
|
if (outputIndex > secondaryOutputTimeIndex_)
|
||||||
{
|
{
|
||||||
outputTime_ = true;
|
outputTime_ = true;
|
||||||
outputTimeIndex_ = outputIndex;
|
secondaryOutputTimeIndex_ = outputIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
@ -1160,10 +1174,10 @@ Foam::Time& Foam::Time::operator++()
|
|||||||
returnReduce(label(elapsedClockTime()), maxOp<label>())
|
returnReduce(label(elapsedClockTime()), maxOp<label>())
|
||||||
/ secondaryWriteInterval_
|
/ secondaryWriteInterval_
|
||||||
);
|
);
|
||||||
if (outputIndex > outputTimeIndex_)
|
if (outputIndex > secondaryOutputTimeIndex_)
|
||||||
{
|
{
|
||||||
outputTime_ = true;
|
outputTime_ = true;
|
||||||
outputTimeIndex_ = outputIndex;
|
secondaryOutputTimeIndex_ = outputIndex;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
|||||||
@ -51,6 +51,8 @@ void Foam::Time::readDict()
|
|||||||
}
|
}
|
||||||
|
|
||||||
scalar oldWriteInterval = writeInterval_;
|
scalar oldWriteInterval = writeInterval_;
|
||||||
|
scalar oldSecondaryWriteInterval = secondaryWriteInterval_;
|
||||||
|
|
||||||
if (controlDict_.readIfPresent("writeInterval", writeInterval_))
|
if (controlDict_.readIfPresent("writeInterval", writeInterval_))
|
||||||
{
|
{
|
||||||
if (writeControl_ == wcTimeStep && label(writeInterval_) < 1)
|
if (writeControl_ == wcTimeStep && label(writeInterval_) < 1)
|
||||||
@ -124,6 +126,26 @@ void Foam::Time::readDict()
|
|||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if (oldSecondaryWriteInterval != secondaryWriteInterval_)
|
||||||
|
{
|
||||||
|
switch (secondaryWriteControl_)
|
||||||
|
{
|
||||||
|
case wcRunTime:
|
||||||
|
case wcAdjustableRunTime:
|
||||||
|
// Recalculate secondaryOutputTimeIndex_ to be in units of
|
||||||
|
// current writeInterval.
|
||||||
|
secondaryOutputTimeIndex_ = label
|
||||||
|
(
|
||||||
|
secondaryOutputTimeIndex_
|
||||||
|
* oldSecondaryWriteInterval
|
||||||
|
/ secondaryWriteInterval_
|
||||||
|
);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (controlDict_.readIfPresent("purgeWrite", purgeWrite_))
|
if (controlDict_.readIfPresent("purgeWrite", purgeWrite_))
|
||||||
{
|
{
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -37,6 +37,7 @@ Foam::TimeState::TimeState()
|
|||||||
deltaT0_(0),
|
deltaT0_(0),
|
||||||
deltaTchanged_(false),
|
deltaTchanged_(false),
|
||||||
outputTimeIndex_(0),
|
outputTimeIndex_(0),
|
||||||
|
secondaryOutputTimeIndex_(0),
|
||||||
outputTime_(false)
|
outputTime_(false)
|
||||||
{}
|
{}
|
||||||
|
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2011 OpenFOAM Foundation
|
\\ / A nd | Copyright (C) 2011-2012 OpenFOAM Foundation
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -61,9 +61,9 @@ protected:
|
|||||||
bool deltaTchanged_;
|
bool deltaTchanged_;
|
||||||
|
|
||||||
label outputTimeIndex_;
|
label outputTimeIndex_;
|
||||||
|
label secondaryOutputTimeIndex_;
|
||||||
bool outputTime_;
|
bool outputTime_;
|
||||||
|
|
||||||
|
|
||||||
public:
|
public:
|
||||||
|
|
||||||
// Constructors
|
// Constructors
|
||||||
|
|||||||
Reference in New Issue
Block a user