mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
BUG: Forcing subcycling to restart after final step in cell.
This commit is contained in:
@ -45,12 +45,15 @@ Foam::scalar Foam::streamLineParticle::calcSubCycleDeltaT
|
||||
) const
|
||||
{
|
||||
streamLineParticle testParticle(*this);
|
||||
|
||||
bool oldKeepParticle = td.keepParticle;
|
||||
bool oldSwitchProcessor = td.switchProcessor;
|
||||
scalar fraction = testParticle.trackToFace(position()+dt*U, td);
|
||||
scalar fraction = testParticle.trackToFace(position() + dt*U, td);
|
||||
|
||||
td.keepParticle = oldKeepParticle;
|
||||
td.switchProcessor = oldSwitchProcessor;
|
||||
// Adapt the dt to subdivide the trajectory into 4 substeps.
|
||||
|
||||
// Adapt the dt to subdivide the trajectory into substeps.
|
||||
return dt*fraction/td.nSubCycle_;
|
||||
}
|
||||
|
||||
@ -196,9 +199,7 @@ bool Foam::streamLineParticle::move
|
||||
// Cross cell in steps:
|
||||
// - at subiter 0 calculate dt to cross cell in nSubCycle steps
|
||||
// - at the last subiter do all of the remaining track
|
||||
// - do a few more subiters than nSubCycle since velocity might
|
||||
// be decreasing
|
||||
for (label subIter = 0; subIter < 2*td.nSubCycle_; subIter++)
|
||||
for (label subIter = 0; subIter < td.nSubCycle_; subIter++)
|
||||
{
|
||||
--lifeTime_;
|
||||
|
||||
@ -217,14 +218,17 @@ bool Foam::streamLineParticle::move
|
||||
// Adapt dt to cross cell in a few steps
|
||||
dt = calcSubCycleDeltaT(td, dt, U);
|
||||
}
|
||||
else if (subIter == td.nSubCycle_-1)
|
||||
else if (subIter == td.nSubCycle_ - 1)
|
||||
{
|
||||
// Do full step on last subcycle
|
||||
dt = min(dtMax, tEnd);
|
||||
|
||||
// Force subCycling to restart
|
||||
subIter = td.nSubCycle_;
|
||||
}
|
||||
|
||||
|
||||
scalar fraction = trackToFace(position()+dt*U, td);
|
||||
scalar fraction = trackToFace(position() + dt*U, td);
|
||||
dt *= fraction;
|
||||
|
||||
tEnd -= dt;
|
||||
|
||||
Reference in New Issue
Block a user