diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C index e17e7138d6..b11d693d95 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.C @@ -258,7 +258,10 @@ bool Foam::KinematicParcel::move(TrackData& td) // face is hit label cellI = p.cell(); - dt *= p.trackToFace(p.position() + dt*U_, td); + if (p.active()) + { + dt *= p.trackToFace(p.position() + dt*U_, td); + } tEnd -= dt; p.stepFraction() = 1.0 - tEnd/deltaT; @@ -322,6 +325,7 @@ bool Foam::KinematicParcel::hitPatch pp, this->face(), td.keepParticle, + active_, U_ ); } diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H index 5316ea2280..a154bac88b 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H @@ -194,6 +194,9 @@ protected: // Parcel properties + //- Active flag - tracking inactive when active = false + bool active_; + //- Parcel type id label typeId_; @@ -308,6 +311,9 @@ public: // Access + //- Return const access to active flag + inline bool active() const; + //- Return const access to type id inline label typeId() const; @@ -332,8 +338,11 @@ public: // Edit + //- Return const access to active flag + inline bool& active(); + //- Return access to type id - inline label typeId(); + inline label& typeId(); //- Return access to number of particles inline scalar& nParticle(); diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H index 7c4b759760..6eca153546 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelI.H @@ -75,6 +75,7 @@ inline Foam::KinematicParcel::KinematicParcel ) : Particle(owner, position, cellI), + active_(false), typeId_(owner.parcelTypeId()), nParticle_(0), d_(0.0), @@ -102,6 +103,7 @@ inline Foam::KinematicParcel::KinematicParcel ) : Particle(owner, position, cellI), + active_(true), typeId_(typeId), nParticle_(nParticle0), d_(d0), @@ -201,6 +203,13 @@ Foam::KinematicParcel::trackData::g() const // * * * * * * * * * * KinematicParcel Member Functions * * * * * * * * * * // +template +inline bool Foam::KinematicParcel::active() const +{ + return active_; +} + + template inline Foam::label Foam::KinematicParcel::typeId() const { @@ -251,7 +260,14 @@ inline const Foam::vector& Foam::KinematicParcel::UTurb() const template -inline Foam::label Foam::KinematicParcel::typeId() +inline bool& Foam::KinematicParcel::active() +{ + return active_; +} + + +template +inline Foam::label& Foam::KinematicParcel::typeId() { return typeId_; } diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C index bbf5d46412..a334e8b880 100644 --- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C +++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcelIO.C @@ -33,6 +33,7 @@ License template Foam::string Foam::KinematicParcel::propHeader = Particle::propHeader + + " active" + " typeId" + " nParticle" + " d" @@ -53,6 +54,7 @@ Foam::KinematicParcel::KinematicParcel ) : Particle(cloud, is, readFields), + active_(false), typeId_(0), nParticle_(0.0), d_(0.0), @@ -68,6 +70,7 @@ Foam::KinematicParcel::KinematicParcel { if (is.format() == IOstream::ASCII) { + active_ = readBool(is); typeId_ = readLabel(is); nParticle_ = readScalar(is); d_ = readScalar(is); @@ -81,7 +84,8 @@ Foam::KinematicParcel::KinematicParcel is.read ( reinterpret_cast(&typeId_), - sizeof(typeId_) + sizeof(active_) + + sizeof(typeId_) + sizeof(nParticle_) + sizeof(d_) + sizeof(U_) @@ -111,6 +115,9 @@ void Foam::KinematicParcel::readFields(Cloud& c) Particle::readFields(c); + IOField