diff --git a/src/lagrangian/basic/Cloud/Cloud.C b/src/lagrangian/basic/Cloud/Cloud.C index 4bbfc9f99fcbf006e00538129037f57e8b1d4425..1e108771a965825b0fb3ac385098c570435661c9 100644 --- a/src/lagrangian/basic/Cloud/Cloud.C +++ b/src/lagrangian/basic/Cloud/Cloud.C @@ -172,6 +172,25 @@ void Foam::Cloud<ParticleType>::deleteParticle(ParticleType& p) } +template<class ParticleType> +void Foam::Cloud<ParticleType>::deleteLostParticles() +{ + forAllIter(typename Cloud<ParticleType>, *this, pIter) + { + ParticleType& p = pIter(); + + if (p.cell() == -1) + { + WarningInFunction + << "deleting lost particle at position " << p.position() + << endl; + + deleteParticle(p); + } + } +} + + template<class ParticleType> void Foam::Cloud<ParticleType>::cloudReset(const Cloud<ParticleType>& c) { diff --git a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C index be5611162f64769e97f14f45fbcfcc4477827940..84facfc8829a82f2b2af139c57fe7338aafb2016 100644 --- a/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/CollidingCloud/CollidingCloud.C @@ -109,6 +109,7 @@ Foam::CollidingCloud<CloudType>::CollidingCloud if (readFields) { parcelType::readFields(*this); + this->deleteLostParticles(); } } } diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C index a6a9ba0b153ca54d98423ea150d83697794ce59d..3814ffd52f7761e08d4738fca271dd9d020c7f3b 100644 --- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.C @@ -394,6 +394,7 @@ Foam::KinematicCloud<CloudType>::KinematicCloud if (readFields) { parcelType::readFields(*this); + this->deleteLostParticles(); } } diff --git a/src/lagrangian/intermediate/clouds/Templates/MPPICCloud/MPPICCloud.C b/src/lagrangian/intermediate/clouds/Templates/MPPICCloud/MPPICCloud.C index 5cbfaf7418f0e06a2bb1410e9824c14aa32031fe..5286c933851fcd856a069b50fb74f2ff24d2cb73 100644 --- a/src/lagrangian/intermediate/clouds/Templates/MPPICCloud/MPPICCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/MPPICCloud/MPPICCloud.C @@ -94,6 +94,7 @@ Foam::MPPICCloud<CloudType>::MPPICCloud if (readFields) { parcelType::readFields(*this); + this->deleteLostParticles(); } } } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C index 9343fe5e240deca566ee4fedb0dcd3872f77f364..d168d158e6ed1235858bbb8912ba564e48c58fb1 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloud.C @@ -111,6 +111,7 @@ Foam::ReactingCloud<CloudType>::ReactingCloud if (readFields) { parcelType::readFields(*this, this->composition()); + this->deleteLostParticles(); } } diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C index 831208bf433fd867cb9e8555ae9a70231fb6054c..21b03b25dcee0ca0e200654294b5ddf05388e022 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ReactingMultiphaseCloud/ReactingMultiphaseCloud.C @@ -98,6 +98,7 @@ Foam::ReactingMultiphaseCloud<CloudType>::ReactingMultiphaseCloud if (readFields) { parcelType::readFields(*this, this->composition()); + this->deleteLostParticles(); } } diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C index 2b47ad1cd04799d906722ec84bb1db9ed36c8245..cbf98371f84fdcf862162cd3cbd48d52b00cdcb6 100644 --- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C +++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloud.C @@ -203,6 +203,7 @@ Foam::ThermoCloud<CloudType>::ThermoCloud if (readFields) { parcelType::readFields(*this); + this->deleteLostParticles(); } } diff --git a/src/lagrangian/solidParticle/solidParticleCloud.H b/src/lagrangian/solidParticle/solidParticleCloud.H index 47149ec8b06979d9b434d56dabc794e72070dd75..d204bd9ff035a68661f26ca2505c6d36e3efae83 100644 --- a/src/lagrangian/solidParticle/solidParticleCloud.H +++ b/src/lagrangian/solidParticle/solidParticleCloud.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License diff --git a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C index d5684374f924e3778788f2f78f02da7b9de78ef9..7a1906c4e4698e7d44ba57c1992310346c013b64 100644 --- a/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C +++ b/src/lagrangian/spray/clouds/Templates/SprayCloud/SprayCloud.C @@ -94,6 +94,7 @@ Foam::SprayCloud<CloudType>::SprayCloud if (readFields) { parcelType::readFields(*this, this->composition()); + this->deleteLostParticles(); } Info << "Average parcel mass: " << averageParcelMass_ << endl;