diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index caa6c6a431a9275751a3af62ec7acde45d833b28..dc1e1f077e32b159669e4e088c266ffbffc5cd16 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<ParcelType>::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<ParcelType>::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<wallPolyPatch>(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 cab17295c395580d3bad627c7ad7436d95679c7f..439c509d1f10228b0711e8878bf0428bef050d92 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<ParcelType>::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 99cdf18c34fb317b48b66adad99f6b5efbeb8342..2daf570d2e04eaa37654c54e623c5949f4d077c5 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<CloudType>::info(Ostream& os) PatchInteractionModel<CloudType>::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 efff7013ad08742007486a687c392ef12cf054c1..8df1002ebbbd2d01d85b6001bd0ba1fd0bfc0a0c 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<CloudType>::info(Ostream& os) { PatchInteractionModel<CloudType>::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