diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index caa6c6a431..dc1e1f077e 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -353,14 +353,14 @@ bool Foam::KinematicParcel::move p.age() += dt; - if (p.onFace()) + if (p.active() && p.onFace()) { cloud.functions().postFace(p, ttd.keepParticle); } cloud.functions().postMove(p, dt, start, ttd.keepParticle); - if (p.onFace() && ttd.keepParticle) + if (p.active() && p.onFace() && ttd.keepParticle) { p.hitFace(s, cloud, ttd); } @@ -399,6 +399,9 @@ bool Foam::KinematicParcel::hitPatch } else { + // This does not take into account the wall interation model + // Just the polyPatch type. Then, a patch type which has 'rebound' + // interation model will count as escaped parcel while it is not if (!isA(pp) && !polyPatch::constraintType(pp.type())) { cloud.patchInteraction().addToEscapedParcels(nParticle_*mass()); diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index cab17295c3..439c509d1f 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -470,7 +470,7 @@ inline Foam::scalar Foam::KinematicParcel::Eo ) { const vector dir = U/max(mag(U), ROOTVSMALL); - return mag(g & dir)*(rho - rhoc)*sqr(d)/max(sigma, ROOTVSMALL); + return mag(g & dir)*mag(rho - rhoc)*sqr(d)/max(sigma, ROOTVSMALL); } diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C index 99cdf18c34..2daf570d2e 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/LocalInteraction/LocalInteraction.C @@ -334,16 +334,24 @@ void Foam::LocalInteraction::info(Ostream& os) PatchInteractionModel::info(os); // retrieve any stored data - labelListList npe0(nEscape_); - this->getModelProperty("nEscape", npe0); + labelListList npe0(patchData_.size()); + labelListList mpe0(patchData_.size()); + labelListList nps0(patchData_.size()); + labelListList mps0(patchData_.size()); + + forAll(patchData_, patchi) + { + label lsd = nEscape_[patchi].size(); + npe0[patchi].setSize(lsd, Zero); + mpe0[patchi].setSize(lsd, Zero); + nps0[patchi].setSize(lsd, Zero); + mps0[patchi].setSize(lsd, Zero); + } - scalarListList mpe0(massEscape_); + + this->getModelProperty("nEscape", npe0); this->getModelProperty("massEscape", mpe0); - - labelListList nps0(nStick_); this->getModelProperty("nStick", nps0); - - scalarListList mps0(massStick_); this->getModelProperty("massStick", mps0); // accumulate current data diff --git a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C index efff7013ad..8df1002ebb 100644 --- a/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C +++ b/src/lagrangian/intermediate/submodels/Kinematic/PatchInteractionModel/StandardWallInteraction/StandardWallInteraction.C @@ -248,16 +248,23 @@ void Foam::StandardWallInteraction::info(Ostream& os) { PatchInteractionModel::info(os); - labelListList npe0(nEscape_); + labelListList npe0(nEscape_.size()); + labelListList mpe0(nEscape_.size()); + labelListList nps0(nEscape_.size()); + labelListList mps0(nEscape_.size()); + + forAll(nEscape_, patchi) + { + label lsd = nEscape_[patchi].size(); + npe0[patchi].setSize(lsd, Zero); + mpe0[patchi].setSize(lsd, Zero); + nps0[patchi].setSize(lsd, Zero); + mps0[patchi].setSize(lsd, Zero); + } + this->getModelProperty("nEscape", npe0); - - scalarListList mpe0(massEscape_); this->getModelProperty("massEscape", mpe0); - - labelListList nps0(nStick_); this->getModelProperty("nStick", nps0); - - scalarListList mps0(massStick_); this->getModelProperty("massStick", mps0); // Accumulate current data