From 4e21098cb571fc2f0b5626b5d721b35304d9aff9 Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Wed, 16 May 2018 11:52:34 +0100 Subject: [PATCH] MPPICParcel: Retain effect of patch interactions on correction velocity This prevents infinite loops occurring during correction steps as a result of a fixed correction velocity repeatedly pushing the particle towards a rebound patch. Resolves bug report https://bugs.openfoam.org/view.php?id=2935 --- .../parcels/Templates/MPPICParcel/MPPICParcel.C | 15 +++++++-------- 1 file changed, 7 insertions(+), 8 deletions(-) diff --git a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.C b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.C index fb07d6343..8408c1897 100644 --- a/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/MPPICParcel/MPPICParcel.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2013-2017 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2013-2018 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -94,17 +94,16 @@ bool Foam::MPPICParcel::move } case trackingData::tpCorrectTrack: { - vector U = p.U(); + const scalar f = p.stepFraction(); + const scalar a = p.age(); - scalar f = p.stepFraction(); - - scalar a = p.age(); - - p.U() = (1.0 - f)*p.UCorrect(); + Swap(p.U(), p.UCorrect()); ParcelType::move(cloud, td, trackTime); - p.U() = U + (p.stepFraction() - f)*p.UCorrect(); + Swap(p.U(), p.UCorrect()); + + p.U() += (p.stepFraction() - f)*p.UCorrect(); p.age() = a;