diff --git a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.C b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.C
index 8465e8222b1e0e4c8c7d6da20301fff67dad4e7b..9f3394c28d9e2ed93f11d33317aa237afeda88c6 100644
--- a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.C
@@ -205,6 +205,8 @@ Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
     d_(p.d_),
     U_(p.U_),
     f_(p.f_),
+    pi_(p.pi_),
+    tau_(p.tau_),
     rho_(p.rho_),
     tTurb_(p.tTurb_),
     UTurb_(p.UTurb_),
diff --git a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.H
index ad927ed7787149dc8629d4e992d8f32e2b2a9ceb..475c2db163bef835631e93f84975c2bc4fe5c1f9 100644
--- a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcel.H
@@ -233,6 +233,14 @@ protected:
             //- Force on particle due to collisions [N]
             vector f_;
 
+            //- Angular momentum of Parcel in global reference frame
+            // [kg m^2 s-1]
+            vector pi_;
+
+            //- Torque on particle due to collisions in global
+            //  reference frame [Nm]
+            vector tau_;
+
             //- Density [kg/m3]
             scalar rho_;
 
@@ -310,6 +318,9 @@ public:
             const scalar nParticle0,
             const scalar d0,
             const vector& U0,
+            const vector& f0,
+            const vector& pi0,
+            const vector& tau0,
             const constantProperties& constProps
         );
 
@@ -353,6 +364,12 @@ public:
             //- Return const access to force
             inline const vector& f() const;
 
+            //- Return const access to angular momentum
+            inline const vector& pi() const;
+
+            //- Return const access to torque
+            inline const vector& tau() const;
+
             //- Return const access to density
             inline scalar rho() const;
 
@@ -380,6 +397,12 @@ public:
             //- Return access to force
             inline vector& f();
 
+            //- Return access to angular momentum
+            inline vector& pi();
+
+            //- Return access to torque
+            inline vector& tau();
+
             //- Return access to density
             inline scalar& rho();
 
@@ -406,6 +429,9 @@ public:
             //- Particle mass
             inline scalar mass() const;
 
+            //- Particle moment of inertia around diameter axis
+            inline scalar momentOfInertia() const;
+
             //- Particle volume
             inline scalar volume() const;
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelI.H b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelI.H
index 96276c09a777c717d5a713a27f52a612be9970d3..0f95bceb2515294d0d0d043c64816df3ecdfc9b6 100644
--- a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelI.H
@@ -84,6 +84,8 @@ inline Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
     d_(0.0),
     U_(vector::zero),
     f_(vector::zero),
+    pi_(vector::zero),
+    tau_(vector::zero),
     rho_(0.0),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -103,6 +105,9 @@ inline Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
     const scalar nParticle0,
     const scalar d0,
     const vector& U0,
+    const vector& f0,
+    const vector& pi0,
+    const vector& tau0,
     const constantProperties& constProps
 )
 :
@@ -111,7 +116,9 @@ inline Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
     nParticle_(nParticle0),
     d_(d0),
     U_(U0),
-    f_(vector::zero),
+    f_(f0),
+    pi_(pi0),
+    tau_(tau0),
     rho_(constProps.rho0()),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -265,6 +272,22 @@ Foam::InteractingKinematicParcel<ParcelType>::f() const
 }
 
 
+template <class ParcelType>
+inline const Foam::vector&
+Foam::InteractingKinematicParcel<ParcelType>::pi() const
+{
+    return pi_;
+}
+
+
+template <class ParcelType>
+inline const Foam::vector&
+Foam::InteractingKinematicParcel<ParcelType>::tau() const
+{
+    return tau_;
+}
+
+
 template <class ParcelType>
 inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::rho() const
 {
@@ -322,6 +345,20 @@ inline Foam::vector& Foam::InteractingKinematicParcel<ParcelType>::f()
 }
 
 
+template <class ParcelType>
+inline Foam::vector& Foam::InteractingKinematicParcel<ParcelType>::pi()
+{
+    return pi_;
+}
+
+
+template <class ParcelType>
+inline Foam::vector& Foam::InteractingKinematicParcel<ParcelType>::tau()
+{
+    return tau_;
+}
+
+
 template <class ParcelType>
 inline Foam::scalar& Foam::InteractingKinematicParcel<ParcelType>::rho()
 {
@@ -392,6 +429,14 @@ inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::mass() const
 }
 
 
+template <class ParcelType>
+inline Foam::scalar
+Foam::InteractingKinematicParcel<ParcelType>::momentOfInertia() const
+{
+    return 0.1*mass()*sqr(d_);
+}
+
+
 template <class ParcelType>
 inline Foam::scalar Foam::InteractingKinematicParcel<ParcelType>::volume() const
 {
diff --git a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelIO.C b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelIO.C
index 66170b5a6a26cfb73a2d11b1e00b2ce0285f4a2c..1d57bea39b2edb2ba6a10fa8b02b10ecf04dbe14 100644
--- a/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelIO.C
+++ b/src/lagrangian/intermediate/parcels/Templates/InteractingKinematicParcel/InteractingKinematicParcelIO.C
@@ -39,6 +39,8 @@ Foam::string Foam::InteractingKinematicParcel<ParcelType>::propHeader =
   + " d"
   + " (Ux Uy Uz)"
   + " (fx fy fz)"
+  + " (pix piy piz)"
+  + " (taux tauy tauz)"
   + " rho"
   + " tTurb"
   + " UTurb";
@@ -60,6 +62,8 @@ Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
     d_(0.0),
     U_(vector::zero),
     f_(vector::zero),
+    pi_(vector::zero),
+    tau_(vector::zero),
     rho_(0.0),
     tTurb_(0.0),
     UTurb_(vector::zero),
@@ -76,6 +80,8 @@ Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
             d_ = readScalar(is);
             is >> U_;
             is >> f_;
+            is >> pi_;
+            is >> tau_;
             rho_ = readScalar(is);
             tTurb_ = readScalar(is);
             is >> UTurb_;
@@ -90,6 +96,8 @@ Foam::InteractingKinematicParcel<ParcelType>::InteractingKinematicParcel
               + sizeof(d_)
               + sizeof(U_)
               + sizeof(f_)
+              + sizeof(pi_)
+              + sizeof(tau_)
               + sizeof(rho_)
               + sizeof(tTurb_)
               + sizeof(UTurb_)
@@ -133,6 +141,12 @@ void Foam::InteractingKinematicParcel<ParcelType>::readFields
     IOField<vector> f(c.fieldIOobject("f", IOobject::MUST_READ));
     c.checkFieldIOobject(c, f);
 
+    IOField<vector> pi(c.fieldIOobject("pi", IOobject::MUST_READ));
+    c.checkFieldIOobject(c, pi);
+
+    IOField<vector> tau(c.fieldIOobject("tau", IOobject::MUST_READ));
+    c.checkFieldIOobject(c, tau);
+
     IOField<scalar> rho(c.fieldIOobject("rho", IOobject::MUST_READ));
     c.checkFieldIOobject(c, rho);
 
@@ -152,6 +166,7 @@ void Foam::InteractingKinematicParcel<ParcelType>::readFields
         p.d_ = d[i];
         p.U_ = U[i];
         p.f_ = f[i];
+        p.pi_ = pi[i];
         p.rho_ = rho[i];
         p.tTurb_ = tTurb[i];
         p.UTurb_ = UTurb[i];
@@ -179,6 +194,8 @@ void Foam::InteractingKinematicParcel<ParcelType>::writeFields
     IOField<scalar> d(c.fieldIOobject("d", IOobject::NO_READ), np);
     IOField<vector> U(c.fieldIOobject("U", IOobject::NO_READ), np);
     IOField<vector> f(c.fieldIOobject("f", IOobject::NO_READ), np);
+    IOField<vector> pi(c.fieldIOobject("pi", IOobject::NO_READ), np);
+    IOField<vector> tau(c.fieldIOobject("tau", IOobject::NO_READ), np);
     IOField<scalar> rho(c.fieldIOobject("rho", IOobject::NO_READ), np);
     IOField<scalar> tTurb(c.fieldIOobject("tTurb", IOobject::NO_READ), np);
     IOField<vector> UTurb(c.fieldIOobject("UTurb", IOobject::NO_READ), np);
@@ -193,6 +210,8 @@ void Foam::InteractingKinematicParcel<ParcelType>::writeFields
         d[i] = p.d();
         U[i] = p.U();
         f[i] = p.f();
+        pi[i] = p.pi();
+        tau[i] = p.tau();
         rho[i] = p.rho();
         tTurb[i] = p.tTurb();
         UTurb[i] = p.UTurb();
@@ -204,6 +223,8 @@ void Foam::InteractingKinematicParcel<ParcelType>::writeFields
     d.write();
     U.write();
     f.write();
+    pi.write();
+    tau.write();
     rho.write();
     tTurb.write();
     UTurb.write();
@@ -227,6 +248,8 @@ Foam::Ostream& Foam::operator<<
             << token::SPACE << p.d()
             << token::SPACE << p.U()
             << token::SPACE << p.f()
+            << token::SPACE << p.pi()
+            << token::SPACE << p.tau()
             << token::SPACE << p.rho()
             << token::SPACE << p.tTurb()
             << token::SPACE << p.UTurb();
@@ -242,6 +265,8 @@ Foam::Ostream& Foam::operator<<
           + sizeof(p.d())
           + sizeof(p.U())
           + sizeof(p.f())
+          + sizeof(p.pi())
+          + sizeof(p.tau())
           + sizeof(p.rho())
           + sizeof(p.tTurb())
           + sizeof(p.UTurb())
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
index 87e1dd5c9c83c534f33883d0feaff58eef105887..778d45090cb4ac879b4997c0a5d17f843a2d480b 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcel.H
@@ -271,6 +271,9 @@ public:
             const scalar nParticle0,
             const scalar d0,
             const vector& U0,
+            const vector& f0,
+            const vector& pi0,
+            const vector& tau0,
             const constantProperties& constProps
         );
 
diff --git a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
index 1c3e011d44cc445e1fd16f9bbde3c6ec7623adf7..06a439ad367c3e08a197a065fca8b0416d9b4a0a 100644
--- a/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
+++ b/src/lagrangian/intermediate/parcels/Templates/ThermoParcel/ThermoParcelI.H
@@ -97,6 +97,9 @@ inline Foam::ThermoParcel<ParcelType>::ThermoParcel
     const scalar nParticle0,
     const scalar d0,
     const vector& U0,
+    const vector& f0,
+    const vector& pi0,
+    const vector& tau0,
     const constantProperties& constProps
 )
 :
@@ -109,6 +112,9 @@ inline Foam::ThermoParcel<ParcelType>::ThermoParcel
         nParticle0,
         d0,
         U0,
+        f0,
+        pi0,
+        tau0,
         constProps
     ),
     T_(constProps.T0()),
diff --git a/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.C b/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.C
index db3c932e78892d4bba0315c96aee6670f7f08cb2..f0fc1183693786066f6f86d86004f4d1f40d1db8 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.C
@@ -63,6 +63,9 @@ Foam::basicInteractingKinematicParcel::basicInteractingKinematicParcel
     const scalar nParticle0,
     const scalar d0,
     const vector& U0,
+    const vector& f0,
+    const vector& pi0,
+    const vector& tau0,
     const constantProperties& constProps
 )
 :
@@ -75,6 +78,9 @@ Foam::basicInteractingKinematicParcel::basicInteractingKinematicParcel
         nParticle0,
         d0,
         U0,
+        f0,
+        pi0,
+        tau0,
         constProps
     )
 {}
diff --git a/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.H b/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.H
index 6384932610ce400789ee8443105eb4a3bd610be2..3d39f4f2e16cae71ebd011452e7b46775477d806 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicInteractingKinematicParcel/basicInteractingKinematicParcel.H
@@ -79,6 +79,9 @@ public:
             const scalar nParticle0,
             const scalar d0,
             const vector& U0,
+            const vector& f0,
+            const vector& pi0,
+            const vector& tau0,
             const constantProperties& constProps
         );
 
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
index 7f2524cbd282cfb8d9543c069d22b07db8add93b..02564dcf3cc28f3c276d8dc8894e5175734031f4 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.C
@@ -58,6 +58,9 @@ Foam::basicThermoParcel::basicThermoParcel
     const scalar nParticle0,
     const scalar d0,
     const vector U0,
+    const vector& f0,
+    const vector& pi0,
+    const vector& tau0,
     const constantProperties& constProps
 )
 :
@@ -70,6 +73,9 @@ Foam::basicThermoParcel::basicThermoParcel
         nParticle0,
         d0,
         U0,
+        f0,
+        pi0,
+        tau0,
         constProps
     )
 {}
diff --git a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
index 974c36e23a96f51bb57d3009fea0a1951fbf331e..5a83dbdc7b24255ecee7b3412c2ae335cd14682f 100644
--- a/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
+++ b/src/lagrangian/intermediate/parcels/derived/basicThermoParcel/basicThermoParcel.H
@@ -78,6 +78,9 @@ public:
             const scalar nParticle0,
             const scalar d0,
             const vector U0,
+            const vector& f0,
+            const vector& pi0,
+            const vector& tau0,
             const constantProperties& constProps
         );