/*! \brief Free streams a particle up to the current time. * * This synchronises the delayed states of the particle. * \param part Particle to syncronise. */ inline void updateParticle(const Particle& part) const { streamParticle(const_cast<Particle&>(part), part.getPecTime() + partPecTime); const_cast<Particle&>(part).getPecTime() = -partPecTime; }
/*! \brief Free streams all particles up to the current time. This synchronises all the delayed states of the particles */ void updateAllParticles() const { //May as well take this opportunity to reset the streaming //Note: the Replexing coordinator RELIES on this behaviour! for (Particle& part : Sim->particles) { streamParticle(part, part.getPecTime() + partPecTime); part.getPecTime() = 0; } partPecTime = 0; streamCount = 0; }
/*! \brief A dangerous function to predictivly move a particle forward. See GCellsShearing, this just over advances the particle to find its future position in boundary changes. */ inline void advanceUpdateParticle(Particle& part, double& dt) const { streamParticle(part, dt + partPecTime + part.getPecTime()); part.getPecTime() = - dt - partPecTime; }
/*! \brief Free streams a particle up to the current time. This synchronises the delayed states of the particle. \param part Particle to syncronise. */ inline void updateParticle(Particle& part) const { streamParticle(part, part.getPecTime() + partPecTime); part.getPecTime() = -partPecTime; }