BUG: trackedParticle: could get stuck on processor face

This commit is contained in:
mattijs
2013-12-20 15:57:56 +00:00
parent 6af4a60a53
commit 4d42057791

View File

@ -90,27 +90,36 @@ Foam::trackedParticle::trackedParticle
bool Foam::trackedParticle::move bool Foam::trackedParticle::move
( (
trackingData& td, trackingData& td,
const scalar trackedParticle const scalar trackTime
) )
{ {
td.switchProcessor = false; td.switchProcessor = false;
td.keepParticle = true;
scalar tEnd = (1.0 - stepFraction())*trackedParticle; scalar tEnd = (1.0 - stepFraction())*trackTime;
scalar dtMax = tEnd; scalar dtMax = tEnd;
while (td.keepParticle && !td.switchProcessor && tEnd > SMALL) if (tEnd <= SMALL)
{ {
// set the lagrangian time-step // Remove the particle
scalar dt = min(dtMax, tEnd); td.keepParticle = false;
}
else
{
td.keepParticle = true;
// mark visited cell with max level. while (td.keepParticle && !td.switchProcessor && tEnd > SMALL)
td.maxLevel()[cell()] = max(td.maxLevel()[cell()], level_); {
// set the lagrangian time-step
scalar dt = min(dtMax, tEnd);
dt *= trackToFace(end_, td); // mark visited cell with max level.
td.maxLevel()[cell()] = max(td.maxLevel()[cell()], level_);
tEnd -= dt; dt *= trackToFace(end_, td);
stepFraction() = 1.0 - tEnd/trackedParticle;
tEnd -= dt;
stepFraction() = 1.0 - tEnd/trackTime;
}
} }
return td.keepParticle; return td.keepParticle;