diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
index c91f9575696ead224e7aec05d868c6358326f876..d7a9ccbc6954079e7abe20060e0712e19b4fb4c6 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloudI.H
@@ -423,20 +423,23 @@ Foam::KinematicCloud<ParcelType>::SU() const
                 this->db().time().timeName(),
                 this->mesh(),
                 IOobject::NO_READ,
-                IOobject::AUTO_WRITE
+                IOobject::NO_WRITE
             ),
             this->mesh(),
             dimensionedVector
             (
-                 "zero",
-                 dimDensity*dimVelocity/dimTime,
-                 vector::zero
+                "zero",
+                dimDensity*dimVelocity/dimTime,
+                vector::zero
             )
         )
     );
 
-    vectorField& SU = tSU().field();
-    SU = UTrans()/(mesh_.V()*this->db().time().deltaT());
+    if (solution_.sourceActive())
+    {
+        vectorField& SU = tSU().field();
+        SU = UTrans()/(mesh_.V()*this->db().time().deltaT());
+    }
 
     return tSU;
 }
diff --git a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
index bc859a9060d107064b1572810a5c3a432aa00863..509971acd5cb70c2ef04eaa6a0f33368791507e0 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ReactingCloud/ReactingCloudI.H
@@ -69,7 +69,61 @@ template<class ParcelType>
 inline Foam::tmp<Foam::DimensionedField<Foam::scalar, Foam::volMesh> >
 Foam::ReactingCloud<ParcelType>::Srho(const label i) const
 {
-    return rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V());
+    tmp<volScalarField> tRhoi
+    (
+        new volScalarField
+        (
+            IOobject
+            (
+                this->name() + "rhoTrans",
+                this->db().time().timeName(),
+                this->db(),
+                IOobject::NO_READ,
+                IOobject::NO_WRITE,
+                false
+            ),
+            this->mesh(),
+            dimensionedScalar
+            (
+                "zero",
+                rhoTrans_[0].dimensions()/dimTime/dimVolume,
+                0.0
+            )
+        )
+    );
+
+    if (this->solution().sourceActive())
+    {
+        scalarField& rhoi = tRhoi().internalField();
+        rhoi = rhoTrans_[i]/(this->db().time().deltaT()*this->mesh().V());
+
+        return tRhoi;
+    }
+    else
+    {
+        return tmp<volScalarField>
+        (
+            new volScalarField
+            (
+                IOobject
+                (
+                    this->name() + "rhoTrans",
+                    this->db().time().timeName(),
+                    this->db(),
+                    IOobject::NO_READ,
+                    IOobject::NO_WRITE,
+                    false
+                ),
+                this->mesh(),
+                dimensionedScalar
+                (
+                    "zero",
+                    rhoTrans_[0].dimensions()/dimTime/dimVolume,
+                    0.0
+                )
+            )
+        );
+    }
 }
 
 
@@ -95,13 +149,20 @@ Foam::ReactingCloud<ParcelType>::Srho() const
         )
     );
 
-    scalarField& sourceField = trhoTrans().field();
-    forAll(rhoTrans_, i)
+    if (this->solution().sourceActive())
     {
-        sourceField += rhoTrans_[i];
-    }
+        scalarField& sourceField = trhoTrans().field();
+        forAll(rhoTrans_, i)
+        {
+            sourceField += rhoTrans_[i];
+        }
 
-    return trhoTrans/(this->db().time().deltaT()*this->mesh().V());
+        return trhoTrans/(this->db().time().deltaT()*this->mesh().V());
+    }
+    else
+    {
+        return trhoTrans;
+    }
 }
 
 
diff --git a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
index 6af79f2cbc8085054c488d2d04230e59d6e11d35..4928b61953586bef4ff5340a5d1164c847c65e48 100644
--- a/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
+++ b/src/lagrangian/intermediate/clouds/Templates/ThermoCloud/ThermoCloudI.H
@@ -111,13 +111,20 @@ Foam::ThermoCloud<ParcelType>::Sh() const
                 this->db().time().timeName(),
                 this->mesh(),
                 IOobject::NO_READ,
-                IOobject::AUTO_WRITE,
+                IOobject::NO_WRITE,
                 false
             ),
-            hsTrans_()/(this->mesh().V()*this->db().time().deltaT())
+            this->mesh(),
+            dimensionedScalar("zero", dimEnergy/dimVolume/dimTime, 0.0)
         )
     );
 
+    if (this->solution().sourceActive())
+    {
+        scalarField& Sh = tSh();
+        Sh = hsTrans_()/(this->mesh().V()*this->db().time().deltaT());
+    }
+
     return tSh;
 }