From f52a56489c933d73d2dbcefc14f68501f94e8f95 Mon Sep 17 00:00:00 2001
From: andy <a.heather@opencfd.co.uk>
Date: Wed, 20 Oct 2010 16:04:34 +0100
Subject: [PATCH] ENH: Updated diesel library for updated pdf/random containers

---
 .../injector/commonRailInjector/commonRailInjector.C | 11 +++++------
 .../injector/commonRailInjector/commonRailInjector.H |  2 +-
 .../injector/definedInjector/definedInjector.C       | 11 +++++------
 .../injector/definedInjector/definedInjector.H       |  2 +-
 .../dieselSpray/injector/injectorType/injectorType.H |  4 ++--
 .../injector/multiHoleInjector/multiHoleInjector.C   | 11 +++++------
 .../injector/multiHoleInjector/multiHoleInjector.H   |  2 +-
 .../injector/swirlInjector/swirlInjector.C           | 11 +++++------
 .../injector/swirlInjector/swirlInjector.H           |  2 +-
 .../dieselSpray/injector/unitInjector/unitInjector.C | 11 +++++------
 .../dieselSpray/injector/unitInjector/unitInjector.H |  2 +-
 src/lagrangian/dieselSpray/parcel/parcel.C           |  2 +-
 .../dieselSpray/parcel/setRelaxationTimes.C          | 12 ++++++------
 src/lagrangian/dieselSpray/spray/spray.C             |  2 +-
 src/lagrangian/dieselSpray/spray/spray.H             |  6 +++---
 src/lagrangian/dieselSpray/spray/sprayI.H            |  2 +-
 .../spraySubModels/atomizationModel/LISA/LISA.C      |  5 ++---
 .../spraySubModels/atomizationModel/LISA/LISA.H      |  1 -
 .../atomizationModel/atomizationModel.H              |  2 +-
 .../blobsSheetAtomization/blobsSheetAtomization.C    |  3 +--
 .../blobsSheetAtomization/blobsSheetAtomization.H    |  1 -
 .../spraySubModels/breakupModel/SHF/SHF.C            |  9 ++++-----
 .../spraySubModels/breakupModel/SHF/SHF.H            |  2 --
 .../spraySubModels/breakupModel/TAB/TAB.C            |  2 +-
 .../breakupModel/breakupModel/breakupModel.H         |  2 +-
 .../collisionModel/ORourke/ORourkeCollisionModel.C   |  2 +-
 .../collisionModel/ORourke/ORourkeCollisionModel.H   |  2 +-
 .../spraySubModels/collisionModel/ORourke/sameCell.H |  4 ++--
 .../collisionModel/collisionModel/collisionModel.C   |  2 +-
 .../collisionModel/collisionModel/collisionModel.H   | 10 +++++-----
 .../collisionModel/collisionModelNew.C               |  2 +-
 .../collisionModel/noCollision/noCollision.C         |  2 +-
 .../collisionModel/noCollision/noCollision.H         |  2 +-
 .../collisionModel/trajectoryModel/trajectoryCM.H    |  4 ++--
 .../collisionModel/trajectoryModel/trajectoryModel.C |  2 +-
 .../collisionModel/trajectoryModel/trajectoryModel.H |  2 +-
 .../gradientDispersionRAS/gradientDispersionRAS.C    |  4 ++--
 .../stochasticDispersionRAS.C                        |  6 +++---
 .../spraySubModels/injectorModel/Chomiak/Chomiak.C   |  2 +-
 .../injectorModel/blobsSwirl/blobsSwirlInjector.C    |  4 ++--
 .../injectorModel/constant/constInjector.C           |  5 +++--
 .../definedHollowCone/definedHollowCone.C            |  4 ++--
 .../definedPressureSwirl/definedPressureSwirl.C      |  4 ++--
 .../injectorModel/hollowCone/hollowCone.C            |  5 ++---
 .../injectorModel/injectorModel/injectorModel.H      |  2 +-
 .../pressureSwirl/pressureSwirlInjector.C            |  4 ++--
 46 files changed, 91 insertions(+), 103 deletions(-)

diff --git a/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.C b/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.C
index 922c51a8d8c..374e1a16c05 100644
--- a/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.C
+++ b/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.C
@@ -25,7 +25,6 @@ License
 
 #include "commonRailInjector.H"
 #include "addToRunTimeSelectionTable.H"
-#include "Random.H"
 #include "mathematicalConstants.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -175,13 +174,13 @@ Foam::commonRailInjector::~commonRailInjector()
 
 void Foam::commonRailInjector::setTangentialVectors()
 {
-    Random rndGen(label(0));
+    cachedRandom rndGen(label(0), -1);
     scalar magV = 0.0;
     vector tangent;
 
     while (magV < SMALL)
     {
-        vector testThis = rndGen.vector01();
+        vector testThis = rndGen.sample01<vector>();
 
         tangent = testThis - (testThis & direction_)*direction_;
         magV = mag(tangent);
@@ -223,7 +222,7 @@ Foam::vector Foam::commonRailInjector::position
     const vector& axisOfSymmetry,
     const vector& axisOfWedge,
     const vector& axisOfWedgeNormal,
-    Random& rndGen
+    cachedRandom& rndGen
 ) const
 {
     if (twoD)
@@ -241,8 +240,8 @@ Foam::vector Foam::commonRailInjector::position
     else
     {
         // otherwise, disc injection
-        scalar iRadius = d_*rndGen.scalar01();
-        scalar iAngle = constant::mathematical::twoPi*rndGen.scalar01();
+        scalar iRadius = d_*rndGen.sample01<scalar>();
+        scalar iAngle = constant::mathematical::twoPi*rndGen.sample01<scalar>();
 
         return
         (
diff --git a/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.H b/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.H
index ed13a2cb82b..6ca532c9eac 100644
--- a/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.H
+++ b/src/lagrangian/dieselSpray/injector/commonRailInjector/commonRailInjector.H
@@ -138,7 +138,7 @@ public:
             const vector& axisOfSymmetry,
             const vector& axisOfWedge,
             const vector& axisOfWedgeNormal,
-            Random& rndGen
+            cachedRandom& rndGen
         ) const;
 
         //- Return the number of holes
diff --git a/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.C b/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.C
index 6071c67bd7b..1934491eaf4 100644
--- a/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.C
+++ b/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.C
@@ -25,7 +25,6 @@ License
 
 #include "definedInjector.H"
 #include "addToRunTimeSelectionTable.H"
-#include "Random.H"
 #include "mathematicalConstants.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -158,13 +157,13 @@ Foam::definedInjector::~definedInjector()
 
 void Foam::definedInjector::setTangentialVectors()
 {
-    Random rndGen(label(0));
+    cachedRandom rndGen(label(0), -1);
     scalar magV = 0.0;
     vector tangent;
 
     while (magV < SMALL)
     {
-        vector testThis = rndGen.vector01();
+        vector testThis = rndGen.sample01<vector>();
 
         tangent = testThis - (testThis & direction_)*direction_;
         magV = mag(tangent);
@@ -204,7 +203,7 @@ Foam::vector Foam::definedInjector::position
     const vector& axisOfSymmetry,
     const vector& axisOfWedge,
     const vector& axisOfWedgeNormal,
-    Random& rndGen
+    cachedRandom& rndGen
 ) const
 {
     if (twoD)
@@ -222,8 +221,8 @@ Foam::vector Foam::definedInjector::position
     else
     {
         // otherwise, disc injection
-        scalar iRadius = d_*rndGen.scalar01();
-        scalar iAngle = constant::mathematical::twoPi*rndGen.scalar01();
+        scalar iRadius = d_*rndGen.sample01<scalar>();
+        scalar iAngle = constant::mathematical::twoPi*rndGen.sample01<scalar>();
 
         return
         (
diff --git a/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.H b/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.H
index acbb09c765b..0f14b80c8f2 100644
--- a/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.H
+++ b/src/lagrangian/dieselSpray/injector/definedInjector/definedInjector.H
@@ -139,7 +139,7 @@ public:
             const vector& axisOfSymmetry,
             const vector& axisOfWedge,
             const vector& axisOfWedgeNormal,
-            Random& rndGen
+            cachedRandom& rndGen
         ) const;
 
         //- Return the number of holes
diff --git a/src/lagrangian/dieselSpray/injector/injectorType/injectorType.H b/src/lagrangian/dieselSpray/injector/injectorType/injectorType.H
index 90e1c3885ed..a5a3e476c93 100644
--- a/src/lagrangian/dieselSpray/injector/injectorType/injectorType.H
+++ b/src/lagrangian/dieselSpray/injector/injectorType/injectorType.H
@@ -43,7 +43,7 @@ SourceFiles
 #include "runTimeSelectionTables.H"
 #include "vector.H"
 #include "scalarField.H"
-#include "Random.H"
+#include "cachedRandom.H"
 #include "liquidMixture.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -120,7 +120,7 @@ public:
             const vector& axisOfSymmetry,
             const vector& axisOfWedge,
             const vector& axisOfWedgeNormal,
-            Random& rndGen
+            cachedRandom& rndGen
         ) const = 0;
 
         //- Return the number of holes
diff --git a/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.C b/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.C
index 49446e1f00c..878c9bcabb5 100644
--- a/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.C
+++ b/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.C
@@ -25,7 +25,6 @@ License
 
 #include "multiHoleInjector.H"
 #include "addToRunTimeSelectionTable.H"
-#include "Random.H"
 #include "unitConversion.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -194,7 +193,7 @@ void Foam::multiHoleInjector::setTangentialVectors()
         position_[i] = centerPosition_ + 0.5*nozzleTipDiameter_*dp;
     }
 
-    Random rndGen(label(0));
+    cachedRandom rndGen(label(0), -1);
 
     for (label i=0; i<nHoles_; i++)
     {
@@ -202,7 +201,7 @@ void Foam::multiHoleInjector::setTangentialVectors()
         scalar magV = 0;
         while (magV < SMALL)
         {
-            vector testThis = rndGen.vector01();
+            vector testThis = rndGen.sample01<vector>();
 
             tangent = testThis - (testThis & direction_[i])*direction_[i];
             magV = mag(tangent);
@@ -244,7 +243,7 @@ Foam::vector Foam::multiHoleInjector::position
     const vector& axisOfSymmetry,
     const vector& axisOfWedge,
     const vector& axisOfWedgeNormal,
-    Random& rndGen
+    cachedRandom& rndGen
 ) const
 {
     if (twoD)
@@ -262,8 +261,8 @@ Foam::vector Foam::multiHoleInjector::position
     else
     {
         // otherwise, disc injection
-        scalar iRadius = d_*rndGen.scalar01();
-        scalar iAngle = constant::mathematical::twoPi*rndGen.scalar01();
+        scalar iRadius = d_*rndGen.sample01<scalar>();
+        scalar iAngle = constant::mathematical::twoPi*rndGen.sample01<scalar>();
 
         return
         (
diff --git a/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.H b/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.H
index 686ac382bd8..cd2b5cad539 100644
--- a/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.H
+++ b/src/lagrangian/dieselSpray/injector/multiHoleInjector/multiHoleInjector.H
@@ -148,7 +148,7 @@ public:
             const vector& axisOfSymmetry,
             const vector& axisOfWedge,
             const vector& axisOfWedgeNormal,
-            Random& rndGen
+            cachedRandom& rndGen
         ) const;
 
         //- Return the number of holes
diff --git a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C
index ed8177e2933..57cce2960f3 100644
--- a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C
+++ b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.C
@@ -25,7 +25,6 @@ License
 
 #include "swirlInjector.H"
 #include "addToRunTimeSelectionTable.H"
-#include "Random.H"
 #include "mathematicalConstants.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -179,13 +178,13 @@ Foam::swirlInjector::~swirlInjector()
 
 void Foam::swirlInjector::setTangentialVectors()
 {
-    Random rndGen(label(0));
+    cachedRandom rndGen(label(0), -1);
     scalar magV = 0.0;
     vector tangent;
 
     while (magV < SMALL)
     {
-        vector testThis = rndGen.vector01();
+        vector testThis = rndGen.sample01<vector>();
 
         tangent = testThis - (testThis & direction_)*direction_;
         magV = mag(tangent);
@@ -226,7 +225,7 @@ Foam::vector Foam::swirlInjector::position
     const vector& axisOfSymmetry,
     const vector& axisOfWedge,
     const vector& axisOfWedgeNormal,
-    Random& rndGen
+    cachedRandom& rndGen
 ) const
 {
     if (twoD)
@@ -244,8 +243,8 @@ Foam::vector Foam::swirlInjector::position
     else
     {
         // otherwise, disc injection
-        scalar iRadius = d_*rndGen.scalar01();
-        scalar iAngle = constant::mathematical::twoPi*rndGen.scalar01();
+        scalar iRadius = d_*rndGen.sample01<scalar>();
+        scalar iAngle = constant::mathematical::twoPi*rndGen.sample01<scalar>();
 
         return
         (
diff --git a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.H b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.H
index 0658139fa9f..4a1083a3d78 100644
--- a/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.H
+++ b/src/lagrangian/dieselSpray/injector/swirlInjector/swirlInjector.H
@@ -157,7 +157,7 @@ public:
             const vector& axisOfSymmetry,
             const vector& axisOfWedge,
             const vector& axisOfWedgeNormal,
-            Random& rndGen
+            cachedRandom& rndGen
         ) const;
 
         //- Return the number of holes
diff --git a/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.C b/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.C
index a09e497bb1a..e40646a06d9 100644
--- a/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.C
+++ b/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.C
@@ -25,7 +25,6 @@ License
 
 #include "unitInjector.H"
 #include "addToRunTimeSelectionTable.H"
-#include "Random.H"
 #include "mathematicalConstants.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
@@ -154,13 +153,13 @@ Foam::unitInjector::~unitInjector()
 
 void Foam::unitInjector::setTangentialVectors()
 {
-    Random rndGen(label(0));
+    cachedRandom rndGen(label(0), -1);
     scalar magV = 0.0;
     vector tangent;
 
     while (magV < SMALL)
     {
-        vector testThis = rndGen.vector01();
+        vector testThis = rndGen.sample01<vector>();
 
         tangent = testThis - (testThis & direction_)*direction_;
         magV = mag(tangent);
@@ -199,7 +198,7 @@ Foam::vector Foam::unitInjector::position
     const vector& axisOfSymmetry,
     const vector& axisOfWedge,
     const vector& axisOfWedgeNormal,
-    Random& rndGen
+    cachedRandom& rndGen
 ) const
 {
     if (twoD)
@@ -217,8 +216,8 @@ Foam::vector Foam::unitInjector::position
     else
     {
         // otherwise, disc injection
-        scalar iRadius = d_*rndGen.scalar01();
-        scalar iAngle = constant::mathematical::twoPi*rndGen.scalar01();
+        scalar iRadius = d_*rndGen.sample01<scalar>();
+        scalar iAngle = constant::mathematical::twoPi*rndGen.sample01<scalar>();
 
         return
         (
diff --git a/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.H b/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.H
index f386783b10a..1b61f6e96c3 100644
--- a/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.H
+++ b/src/lagrangian/dieselSpray/injector/unitInjector/unitInjector.H
@@ -137,7 +137,7 @@ public:
             const vector& axisOfSymmetry,
             const vector& axisOfWedge,
             const vector& axisOfWedgeNormal,
-            Random& rndGen
+            cachedRandom& rndGen
         ) const;
 
         //- Return the number of holes
diff --git a/src/lagrangian/dieselSpray/parcel/parcel.C b/src/lagrangian/dieselSpray/parcel/parcel.C
index 50837a923d4..3862508f7a5 100644
--- a/src/lagrangian/dieselSpray/parcel/parcel.C
+++ b/src/lagrangian/dieselSpray/parcel/parcel.C
@@ -521,7 +521,7 @@ void Foam::parcel::updateParcelProperties
 
         scalar Taverage = TDroplet + (Tg - TDroplet)/3.0;
         // for a liquid Cl \approx Cp
-        scalar liquidcL = sDB.fuels().cp(pg, TDroplet, X());
+        scalar liquidcL = sDB.fuels().Cp(pg, TDroplet, X());
 
         cpMix = 0.0;
         for (label i=0; i<Ns; i++)
diff --git a/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C b/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C
index 0b4b305f0cd..36f1c092c45 100644
--- a/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C
+++ b/src/lagrangian/dieselSpray/parcel/setRelaxationTimes.C
@@ -65,7 +65,7 @@ void Foam::parcel::setRelaxationTimes
     // calculate mixture properties
     scalar W = 0.0;
     scalar kMixture = 0.0;
-    scalar cpMixture = 0.0;
+    scalar CpMixture = 0.0;
     scalar muf = 0.0;
 
     for (label i=0; i<Ns; i++)
@@ -74,7 +74,7 @@ void Foam::parcel::setRelaxationTimes
         W += Y/sDB.gasProperties()[i].W();
         // Using mass-fractions to average...
         kMixture += Y*sDB.gasProperties()[i].kappa(Tf);
-        cpMixture += Y*sDB.gasProperties()[i].Cp(Tf);
+        CpMixture += Y*sDB.gasProperties()[i].Cp(Tf);
         muf += Y*sDB.gasProperties()[i].mu(Tf);
     }
     W = 1.0/W;
@@ -98,7 +98,7 @@ void Foam::parcel::setRelaxationTimes
     scalar nuf = muf/rho;
 
     scalar liquidDensity = fuels.rho(pressure, T(), X());
-    scalar liquidcL = fuels.cp(pressure, T(), X());
+    scalar liquidcL = fuels.Cp(pressure, T(), X());
     scalar heatOfVapour = fuels.hl(pressure, T(), X());
 
     // calculate the partial rho of the fuel vapour
@@ -130,7 +130,7 @@ void Foam::parcel::setRelaxationTimes
     }
 
     scalar Reynolds = Re(Up, nuf);
-    scalar Prandtl = Pr(cpMixture, muf, kMixture);
+    scalar Prandtl = Pr(CpMixture, muf, kMixture);
 
     // calculate the characteritic times
 
@@ -280,7 +280,7 @@ void Foam::parcel::setRelaxationTimes
                 tauBoiling[i] = sDB.evaporation().boilingTime
                 (
                     fuels.properties()[i].rho(pressure, Td),
-                    fuels.properties()[i].cp(pressure, Td),
+                    fuels.properties()[i].Cp(pressure, Td),
                     heatOfVapour,
                     kMixture,
                     Nusselt,
@@ -292,7 +292,7 @@ void Foam::parcel::setRelaxationTimes
                     tBoilingSurface,
                     vapourSurfaceEnthalpy,
                     vapourFarEnthalpy,
-                    cpMixture,
+                    CpMixture,
                     temperature,
                     kLiquid
                 );
diff --git a/src/lagrangian/dieselSpray/spray/spray.C b/src/lagrangian/dieselSpray/spray/spray.C
index 81047c68094..7283cbaa461 100644
--- a/src/lagrangian/dieselSpray/spray/spray.C
+++ b/src/lagrangian/dieselSpray/spray/spray.C
@@ -68,7 +68,7 @@ Foam::spray::spray
     runTime_(U.time()),
     time0_(runTime_.value()),
     mesh_(U.mesh()),
-    rndGen_(label(0)),
+    rndGen_(label(0), -1),
     g_(g.value()),
 
     U_(U),
diff --git a/src/lagrangian/dieselSpray/spray/spray.H b/src/lagrangian/dieselSpray/spray/spray.H
index 86859aa17c1..ac380c7520a 100644
--- a/src/lagrangian/dieselSpray/spray/spray.H
+++ b/src/lagrangian/dieselSpray/spray/spray.H
@@ -39,7 +39,7 @@ Description
 #include "liquid.H"
 #include "autoPtr.H"
 #include "liquidMixture.H"
-#include "Random.H"
+#include "cachedRandom.H"
 #include "thermoPhysicsTypes.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -76,7 +76,7 @@ class spray
             const fvMesh& mesh_;
 
             //- Random number generator
-            Random rndGen_;
+            cachedRandom rndGen_;
 
         //- Acceleration due to gravity
         const vector& g_;
@@ -250,7 +250,7 @@ public:
             inline tmp<volScalarField> evaporationSource(const label i) const;
             inline tmp<volScalarField> heatTransferSource() const;
 
-            inline Random& rndGen();
+            inline cachedRandom& rndGen();
             inline label subCycles() const;
             inline const vector& g() const;
 
diff --git a/src/lagrangian/dieselSpray/spray/sprayI.H b/src/lagrangian/dieselSpray/spray/sprayI.H
index d406f670dd4..7087204888f 100644
--- a/src/lagrangian/dieselSpray/spray/sprayI.H
+++ b/src/lagrangian/dieselSpray/spray/sprayI.H
@@ -221,7 +221,7 @@ inline tmp<volScalarField> spray::heatTransferSource() const
 }
 
 
-inline Random& spray::rndGen()
+inline cachedRandom& spray::rndGen()
 {
     return rndGen_;
 }
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C
index 5334e2295d7..5082323aa5e 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.C
@@ -54,7 +54,6 @@ Foam::LISA::LISA
 :
     atomizationModel(dict, sm),
     coeffsDict_(dict.subDict(typeName + "Coeffs")),
-    rndGen_(sm.rndGen()),
     Cl_(readScalar(coeffsDict_.lookup("Cl"))),
     cTau_(readScalar(coeffsDict_.lookup("cTau"))),
     Q_(readScalar(coeffsDict_.lookup("Q"))),
@@ -361,8 +360,8 @@ void Foam::LISA::atomizeParcel
 
         do
         {
-            x = minValue + range*rndGen_.scalar01();
-            y = rndGen_.scalar01();
+            x = minValue + range*rndGen_.sample01<scalar>();
+            y = rndGen_.sample01<scalar>();
 
             scalar xx = pow(x/dD, nExp);
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.H b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.H
index 18234356d50..235aef280ea 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/LISA/LISA.H
@@ -68,7 +68,6 @@ private:
     // Private data
 
         dictionary coeffsDict_;
-        Random& rndGen_;
         scalar Cl_;
         scalar cTau_;
         scalar Q_;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/atomizationModel/atomizationModel.H b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/atomizationModel/atomizationModel.H
index db0cf0dada4..d543ec2bedb 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/atomizationModel/atomizationModel.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/atomizationModel/atomizationModel.H
@@ -55,7 +55,7 @@ protected:
 
         const dictionary& dict_;
         spray& spray_;
-        Random& rndGen_;
+        cachedRandom& rndGen_;
 
 
 public:
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C
index 3c58faaf4f6..6c527b9b28d 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.C
@@ -56,8 +56,7 @@ Foam::blobsSheetAtomization::blobsSheetAtomization
     atomizationModel(dict, sm),
     coeffsDict_(dict.subDict(typeName + "Coeffs")),
     B_(readScalar(coeffsDict_.lookup("B"))),
-    angle_(readScalar(coeffsDict_.lookup("angle"))),
-    rndGen_(sm.rndGen())
+    angle_(readScalar(coeffsDict_.lookup("angle")))
 {}
 
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.H b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.H
index 754c92f0f34..2aef4303edf 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/atomizationModel/blobsSheetAtomization/blobsSheetAtomization.H
@@ -67,7 +67,6 @@ private:
         dictionary coeffsDict_;
         scalar B_;
         scalar angle_;
-        Random& rndGen_;
 
 
 public:
diff --git a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.C b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.C
index 4824d253f85..2c00930e05c 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.C
@@ -53,7 +53,6 @@ Foam::SHF::SHF
     breakupModel(dict, sm),
     coeffsDict_(dict.subDict(typeName + "Coeffs")),
     g_(sm.g()),
-    rndGen_(sm.rndGen()),
     weCorrCoeff_(readScalar(coeffsDict_.lookup("weCorrCoeff"))),
     weBuCrit_(readScalar(coeffsDict_.lookup("weBuCrit"))),
     weBuBag_(readScalar(coeffsDict_.lookup("weBuBag"))),
@@ -186,9 +185,9 @@ void Foam::SHF::breakupParcel
 
             do
             {
-                x = cDmaxBM_*rndGen_.scalar01();
+                x = cDmaxBM_*rndGen_.sample01<scalar>();
                 d = sqr(x)*d05;
-                y = rndGen_.scalar01();
+                y = rndGen_.sample01<scalar>();
 
                 px =
                     x
@@ -217,9 +216,9 @@ void Foam::SHF::breakupParcel
             do
             {
 
-                x = cDmaxS_*rndGen_.scalar01();
+                x = cDmaxS_*rndGen_.sample01<scalar>();
                 d = sqr(x)*d05;
-                y = rndGen_.scalar01();
+                y = rndGen_.sample01<scalar>();
 
                 px =
                     x
diff --git a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.H b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.H
index daf62e69af8..549c48b5991 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/SHF/SHF.H
@@ -66,8 +66,6 @@ private:
         // reference to gravity
         const vector& g_;
 
-        Random& rndGen_;
-
         // model constants
 
         scalar weCorrCoeff_;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/TAB/TAB.C b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/TAB/TAB.C
index 9d9f5523efc..4f791ea7c49 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/TAB/TAB.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/TAB/TAB.C
@@ -175,7 +175,7 @@ void Foam::TAB::breakupParcel
 
                 label n = 0;
                 bool found = false;
-                scalar random = rndGen_.scalar01();
+                scalar random = rndGen_.sample01<scalar>();
                 while (!found && (n<99))
                 {
                     if (rrd_[n] > random)
diff --git a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/breakupModel/breakupModel.H b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/breakupModel/breakupModel.H
index 8913d4ad664..8ec1e38196e 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/breakupModel/breakupModel/breakupModel.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/breakupModel/breakupModel/breakupModel.H
@@ -56,7 +56,7 @@ protected:
         const dictionary& dict_;
 
         spray& spray_;
-        Random& rndGen_;
+        cachedRandom& rndGen_;
 
         Switch includeOscillation_;
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.C b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.C
index f333f6b3879..0c0e10b8f36 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.C
@@ -48,7 +48,7 @@ Foam::ORourkeCollisionModel::ORourkeCollisionModel
 (
     const dictionary& dict,
     spray& sm,
-    Random& rndGen
+    cachedRandom& rndGen
 )
 :
     collisionModel(dict, sm, rndGen),
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.H b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.H
index 64fb5f247c2..e9fddb31d1c 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/ORourkeCollisionModel.H
@@ -75,7 +75,7 @@ public:
         (
             const dictionary& dict,
             spray& sm,
-            Random& rndGen
+            cachedRandom& rndGen
         );
 
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/sameCell.H b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/sameCell.H
index dd66d1d3ddc..7743a06f7cc 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/sameCell.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/ORourke/sameCell.H
@@ -35,7 +35,7 @@ scalar mdMin = mMin/nMin;
 scalar nu0 = 0.25*constant::mathematical::pi*sqr(sumD)*magVRel*dt/vols_[cell1];
 scalar nu = nMin*nu0;
 scalar collProb = exp(-nu);
-scalar xx = rndGen_.scalar01();
+scalar xx = rndGen_.sample01<scalar>();
 
 if ((xx > collProb) && (mMin > VSMALL) && (mMax > VSMALL))
 {
@@ -62,7 +62,7 @@ if ((xx > collProb) && (mMin > VSMALL) && (mMax > VSMALL))
     scalar WeColl = max(1.0e-12, 0.5*rho*magVRel*magVRel*dMin/sigma);
 
     scalar coalesceProb = min(1.0, 2.4*f/WeColl);
-    scalar prob = rndGen_.scalar01();
+    scalar prob = rndGen_.sample01<scalar>();
 
     // Coalescence
     if (prob < coalesceProb && coalescence_)
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.C b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.C
index 29a98081eb5..af6e7517147 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.C
@@ -41,7 +41,7 @@ Foam::collisionModel::collisionModel
 (
     const dictionary& dict,
     spray& sm,
-    Random& rndGen
+    cachedRandom& rndGen
 )
 :
     dict_(dict),
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.H b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.H
index 94d8c73b76f..4554ea0ab42 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModel.H
@@ -34,7 +34,7 @@ Description
 
 #include "IOdictionary.H"
 #include "spray.H"
-#include "Random.H"
+#include "cachedRandom.H"
 #include "Switch.H"
 #include "autoPtr.H"
 #include "runTimeSelectionTables.H"
@@ -56,7 +56,7 @@ protected:
     // Protected data
         const dictionary& dict_;
         spray& spray_;
-        Random& rndGen_;
+        cachedRandom& rndGen_;
 
         //dictionary coeffsDict_;
 
@@ -76,7 +76,7 @@ public:
             (
                 const dictionary& dict,
                 spray& sm,
-                Random& rndGen
+                cachedRandom& rndGen
             ),
             (dict, sm, rndGen)
         );
@@ -89,7 +89,7 @@ public:
         (
             const dictionary& dict,
             spray& sm,
-            Random& rndGen
+            cachedRandom& rndGen
         );
 
 
@@ -103,7 +103,7 @@ public:
         (
             const dictionary& dict,
             spray& sm,
-            Random& rndGen
+            cachedRandom& rndGen
         );
 
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModelNew.C b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModelNew.C
index 9e56403c369..6b850a01166 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModelNew.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/collisionModel/collisionModelNew.C
@@ -37,7 +37,7 @@ Foam::autoPtr<Foam::collisionModel> Foam::collisionModel::New
 (
     const dictionary& dict,
     spray& sm,
-    Random& rndGen
+    cachedRandom& rndGen
 )
 {
     const word modelType(dict.lookup("collisionModel"));
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.C b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.C
index 8949e129675..f74dc9956ef 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.C
@@ -49,7 +49,7 @@ Foam::noCollision::noCollision
 (
     const dictionary& dict,
     spray& sm,
-    Random& rndGen
+    cachedRandom& rndGen
 )
 :
     collisionModel(dict, sm, rndGen)
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.H b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.H
index b78332edbc6..edb857fcaaa 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/noCollision/noCollision.H
@@ -62,7 +62,7 @@ public:
         (
             const dictionary& dict,
             spray& sm,
-            Random& rndGen
+            cachedRandom& rndGen
         );
 
     //- Destructor
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryCM.H b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryCM.H
index 9b60cff915f..d9e83f68752 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryCM.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryCM.H
@@ -51,7 +51,7 @@ if (vAlign > 0)
                 pow(0.5*sumD/max(0.5*sumD, closestDist), cSpace_)
                *exp(-cTime_*mag(alpha-beta));
 
-            scalar xx = rndGen_.scalar01();
+            scalar xx = rndGen_.sample01<scalar>();
 
             spray::iterator pMin = p1;
             spray::iterator pMax = p2;
@@ -106,7 +106,7 @@ if (vAlign > 0)
 
                 scalar coalesceProb = min(1.0, 2.4*f/WeColl);
 
-                scalar prob = rndGen_.scalar01();
+                scalar prob = rndGen_.sample01<scalar>();
 
                 // Coalescence
                 if ( prob < coalesceProb && coalescence_)
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.C b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.C
index 60e2e9b7618..a58b729d073 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.C
@@ -48,7 +48,7 @@ Foam::trajectoryCollisionModel::trajectoryCollisionModel
 (
     const dictionary& dict,
     spray& sm,
-    Random& rndGen
+    cachedRandom& rndGen
 )
 :
     collisionModel(dict, sm, rndGen),
diff --git a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.H b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.H
index 62b55f9a390..65323b305b1 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/collisionModel/trajectoryModel/trajectoryModel.H
@@ -78,7 +78,7 @@ public:
         (
             const dictionary& dict,
             spray& sm,
-            Random& rndGen
+            cachedRandom& rndGen
         );
 
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/gradientDispersionRAS/gradientDispersionRAS.C b/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/gradientDispersionRAS/gradientDispersionRAS.C
index b154974a264..9c7f0dffd08 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/gradientDispersionRAS/gradientDispersionRAS.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/gradientDispersionRAS/gradientDispersionRAS.C
@@ -102,8 +102,8 @@ void Foam::gradientDispersionRAS::disperseParcels() const
                 scalar rsq = 10.0;
                 while ((rsq > 1.0) || (rsq == 0.0))
                 {
-                    x1 = 2.0*spray_.rndGen().scalar01() - 1.0;
-                    x2 = 2.0*spray_.rndGen().scalar01() - 1.0;
+                    x1 = 2.0*spray_.rndGen().sample01<scalar>() - 1.0;
+                    x2 = 2.0*spray_.rndGen().sample01<scalar>() - 1.0;
                     rsq = x1*x1 + x2*x2;
                 }
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/stochasticDispersionRAS/stochasticDispersionRAS.C b/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/stochasticDispersionRAS/stochasticDispersionRAS.C
index c7e7e4cd09f..7085f45839d 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/stochasticDispersionRAS/stochasticDispersionRAS.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/dispersionModel/stochasticDispersionRAS/stochasticDispersionRAS.C
@@ -96,7 +96,7 @@ void Foam::stochasticDispersionRAS::disperseParcels() const
                 elmnt().tTurb() = 0.0;
 
                 scalar sigma = sqrt(2.0*k[cellI]/3.0);
-                vector dir = 2.0*spray_.rndGen().vector01() - one;
+                vector dir = 2.0*spray_.rndGen().sample01<vector>() - one;
                 dir /= mag(dir) + SMALL;
 
                 // numerical recipes... Ch. 7. Random Numbers...
@@ -104,8 +104,8 @@ void Foam::stochasticDispersionRAS::disperseParcels() const
                 scalar rsq = 10.0;
                 while (rsq > 1.0 || rsq == 0.0)
                 {
-                    x1 = 2.0*spray_.rndGen().scalar01() - 1.0;
-                    x2 = 2.0*spray_.rndGen().scalar01() - 1.0;
+                    x1 = 2.0*spray_.rndGen().sample01<scalar>() - 1.0;
+                    x2 = 2.0*spray_.rndGen().sample01<scalar>() - 1.0;
                     rsq = x1*x1 + x2*x2;
                 }
 
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/Chomiak/Chomiak.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/Chomiak/Chomiak.C
index 2c924d6ed17..5fe010c7401 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/Chomiak/Chomiak.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/Chomiak/Chomiak.C
@@ -123,7 +123,7 @@ Foam::vector Foam::ChomiakInjector::direction
     scalar alpha = sin(angle);
     scalar dcorr = cos(angle);
 
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/blobsSwirl/blobsSwirlInjector.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/blobsSwirl/blobsSwirlInjector.C
index a0bf94b5a3c..d649955dabe 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/blobsSwirl/blobsSwirlInjector.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/blobsSwirl/blobsSwirlInjector.C
@@ -105,7 +105,7 @@ Foam::scalar Foam::blobsSwirlInjector::d0
 {
     const injectorType& it = injectors_[n].properties();
 
-    scalar c = rndGen_.scalar01();
+    scalar c = rndGen_.sample01<scalar>();
 
     angle_ = degToRad(coneAngle_[n]/2.0 + c*coneInterval_[n]);
 
@@ -139,7 +139,7 @@ Foam::vector Foam::blobsSwirlInjector::direction
 {
     scalar alpha = sin(angle_);
     scalar dcorr = cos(angle_);
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/constant/constInjector.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/constant/constInjector.C
index 7e52e1d77d1..8f59a43cee4 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/constant/constInjector.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/constant/constInjector.C
@@ -130,11 +130,12 @@ Foam::vector Foam::constInjector::direction
     */
 
     scalar angle =
-        rndGen_.scalar01()*sprayAngle_[n]*constant::mathematical::pi/360.0;
+        rndGen_.sample01<scalar>()*sprayAngle_[n]
+       *constant::mathematical::pi/360.0;
     scalar alpha = sin(angle);
     scalar dcorr = cos(angle);
 
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedHollowCone/definedHollowCone.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedHollowCone/definedHollowCone.C
index ea7151f0701..87c15c13a26 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedHollowCone/definedHollowCone.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedHollowCone/definedHollowCone.C
@@ -157,11 +157,11 @@ Foam::vector Foam::definedHollowConeInjector::direction
     scalar angleOuter = it.getTableValue(outerConeAngle_, t);
 
     // use random number to generate angle between inner/outer cone angles
-    scalar angle = angleInner + rndGen_.scalar01()*(angleOuter - angleInner);
+    scalar angle = rndGen_.position<scalar>(angleInner, angleOuter);
 
     scalar alpha = sin(angle*constant::mathematical::pi/360.0);
     scalar dcorr = cos(angle*constant::mathematical::pi/360.0);
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedPressureSwirl/definedPressureSwirl.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedPressureSwirl/definedPressureSwirl.C
index 53204fac477..aaeae060fec 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedPressureSwirl/definedPressureSwirl.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/definedPressureSwirl/definedPressureSwirl.C
@@ -90,7 +90,7 @@ Foam::scalar Foam::definedPressureSwirlInjector::d0
 {
     const injectorType& it = injectors_[n].properties();
 
-    scalar c = rndGen_.scalar01();
+    scalar c = rndGen_.sample01<scalar>();
     scalar coneAngle = it.getTableValue(coneAngle_, t);
     scalar coneInterval = it.getTableValue(coneInterval_, t);
     angle_ = coneAngle ;
@@ -212,7 +212,7 @@ Foam::vector Foam::definedPressureSwirlInjector::direction
 {
     scalar alpha = sin(angle_);
     scalar dcorr = cos(angle_);
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/hollowCone/hollowCone.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/hollowCone/hollowCone.C
index 81a1cdf8a28..dc53ee59d22 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/hollowCone/hollowCone.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/hollowCone/hollowCone.C
@@ -124,11 +124,10 @@ Foam::vector Foam::hollowConeInjector::direction
     const scalar d
 ) const
 {
-    scalar angle =
-        innerAngle_[n] + rndGen_.scalar01()*(outerAngle_[n]-innerAngle_[n]);
+    scalar angle = rndGen_.position<scalar>(innerAngle_[n], outerAngle_[n]);
     scalar alpha = sin(angle*constant::mathematical::pi/360.0);
     scalar dcorr = cos(angle*constant::mathematical::pi/360.0);
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/injectorModel/injectorModel.H b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/injectorModel/injectorModel.H
index 7d505ce833c..a66f4e9cb8e 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/injectorModel/injectorModel.H
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/injectorModel/injectorModel.H
@@ -62,7 +62,7 @@ protected:
         spray& sm_;
 
         const PtrList<injector>& injectors_;
-        Random& rndGen_;
+        cachedRandom& rndGen_;
 
 
 public:
diff --git a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/pressureSwirl/pressureSwirlInjector.C b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/pressureSwirl/pressureSwirlInjector.C
index 9f299631f38..42c5e59adcb 100644
--- a/src/lagrangian/dieselSpray/spraySubModels/injectorModel/pressureSwirl/pressureSwirlInjector.C
+++ b/src/lagrangian/dieselSpray/spraySubModels/injectorModel/pressureSwirl/pressureSwirlInjector.C
@@ -100,7 +100,7 @@ Foam::scalar Foam::pressureSwirlInjector::d0
 {
     const injectorType& it = injectors_[n].properties();
 
-    scalar c = rndGen_.scalar01();
+    scalar c = rndGen_.sample01<scalar>();
     angle_ = coneAngle_[n] + 2.0*coneInterval_[n]*(0.5 - c);
 
     angle_ *= constant::mathematical::pi/360.0;
@@ -134,7 +134,7 @@ Foam::vector Foam::pressureSwirlInjector::direction
 {
     scalar alpha = sin(angle_);
     scalar dcorr = cos(angle_);
-    scalar beta = constant::mathematical::twoPi*rndGen_.scalar01();
+    scalar beta = constant::mathematical::twoPi*rndGen_.sample01<scalar>();
 
     // randomly distributed vector normal to the injection vector
     vector normal = vector::zero;
-- 
GitLab