diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C index 5ac43c4ade..98218dae82 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C @@ -294,6 +294,18 @@ bool Foam::LocalInteraction::correct // Calculate motion relative to patch velocity U -= Up; + if (mag(U) < this->Urmax()) + { + WarningInFunction + << "Particle U the same as patch " + << " The particle has been removed" << nl << endl; + + keepParticle = false; + p.active(false); + U = Zero; + break; + } + scalar Un = U & nw; vector Ut = U - Un*nw; diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C index 8fe23c0229..497e3e5875 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.C @@ -137,7 +137,8 @@ Foam::PatchInteractionModel::PatchInteractionModel functionObjects::writeFile(owner, this->localPath(), typeName, false), UName_("unknown_U"), escapedParcels_(0), - escapedMass_(0.0) + escapedMass_(0.0), + Urmax_(1e-4) {} @@ -160,7 +161,8 @@ Foam::PatchInteractionModel::PatchInteractionModel ), UName_(this->coeffDict().template getOrDefault("U", "U")), escapedParcels_(0), - escapedMass_(0.0) + escapedMass_(0.0), + Urmax_(this->coeffDict().template getOrDefault("UrMax", 1e-4)) {} @@ -174,7 +176,8 @@ Foam::PatchInteractionModel::PatchInteractionModel functionObjects::writeFile(pim), UName_(pim.UName_), escapedParcels_(pim.escapedParcels_), - escapedMass_(pim.escapedMass_) + escapedMass_(pim.escapedMass_), + Urmax_(pim.Urmax_) {} @@ -187,6 +190,13 @@ const Foam::word& Foam::PatchInteractionModel::UName() const } +template +const Foam::scalar& Foam::PatchInteractionModel::Urmax() const +{ + return Urmax_; +} + + template void Foam::PatchInteractionModel::addToEscapedParcels ( diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H index d235330e2f..17b3e62bbb 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/PatchInteractionModel/PatchInteractionModel.H @@ -99,6 +99,9 @@ protected: //- Mass of parcels escaped scalar escapedMass_; + //- Maximum relative U with patch for particle to be removed + scalar Urmax_; + // Protected Member Functions @@ -162,6 +165,8 @@ public: //- Return name of velocity field const word& UName() const; + //- Return Urmax + const scalar& Urmax() const; // Member Functions diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C index a7cc6821f2..fe5fd477dc 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C @@ -211,6 +211,18 @@ bool Foam::StandardWallInteraction::correct // Calculate motion relative to patch velocity U -= Up; + if (mag(U) < this->Urmax()) + { + WarningInFunction + << "Particle U the same as patch " + << " The particle has been removed" << nl << endl; + + keepParticle = false; + p.active(false); + U = Zero; + break; + } + scalar Un = U & nw; vector Ut = U - Un*nw; @@ -224,6 +236,7 @@ bool Foam::StandardWallInteraction::correct // Return velocity to global space U += Up; + break; } default: