void Foam::KinematicCloud<CloudType>::motion(TrackData& td) { td.part() = TrackData::tpLinearTrack; CloudType::move(td, solution_.trackTime()); updateCellOccupancy(); }
void Foam::KinematicCloud<CloudType>::preEvolve() { Info<< "\nSolving cloud " << this->name() << endl; this->dispersion().cacheFields(true); forces_.cacheFields(true); updateCellOccupancy(); pAmbient_ = constProps_.dict().template lookupOrDefault<scalar>("pAmbient", pAmbient_); }
void Foam::KinematicCloud<CloudType>::preEvolve() { // force calculaion of mesh dimensions - needed for parallel runs // with topology change due to lazy evaluation of valid mesh dimensions label nGeometricD = mesh_.nGeometricD(); Info<< "\nSolving " << nGeometricD << "-D cloud " << this->name() << endl; this->dispersion().cacheFields(true); forces_.cacheFields(true); updateCellOccupancy(); pAmbient_ = constProps_.dict().template lookupOrDefault<scalar>("pAmbient", pAmbient_); functions_.preEvolve(); }
void Foam::KinematicCloud<CloudType>::evolveCloud(TrackData& td) { if (solution_.coupled()) { td.cloud().resetSourceTerms(); } if (solution_.transient()) { label preInjectionSize = this->size(); this->surfaceFilm().inject(td); // Update the cellOccupancy if the size of the cloud has changed // during the injection. if (preInjectionSize != this->size()) { updateCellOccupancy(); preInjectionSize = this->size(); } injectors_.inject(td); // Assume that motion will update the cellOccupancy as necessary // before it is required. td.cloud().motion(td); stochasticCollision().update(solution_.trackTime()); } else { // this->surfaceFilm().injectSteadyState(td); injectors_.injectSteadyState(td, solution_.trackTime()); td.part() = TrackData::tpLinearTrack; CloudType::move(td, solution_.trackTime()); } }
void Foam::KinematicCloud<CloudType>::updateMesh() { updateCellOccupancy(); injectors_.updateMesh(); cellLengthScale_ = cbrt(mesh_.V()); }