From 9a3e5828f0291df84d74cd008c2d36f1e7668349 Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Wed, 8 Apr 2015 12:22:33 +0100
Subject: [PATCH] StochasticDispersionRAS: Corrected spherical distribution of
 UTurb direction Resolves bug-report
 http://www.openfoam.org/mantisbt/view.php?id=1650

---
 .../StochasticDispersionRAS.C                      | 14 ++++----------
 1 file changed, 4 insertions(+), 10 deletions(-)

diff --git a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
index 04a388ca323..d2ff74223f8 100644
--- a/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
+++ b/src/lagrangian/turbulence/submodels/Kinematic/DispersionModel/StochasticDispersionRAS/StochasticDispersionRAS.C
@@ -99,17 +99,11 @@ Foam::vector Foam::StochasticDispersionRAS<CloudType>::update
             // Calculate a random direction dir distributed uniformly
             // in spherical coordinates
 
-            const scalar theta = rnd.sample01<scalar>()*pi;
-            const scalar phi = rnd.sample01<scalar>()*twoPi;
+            const scalar theta = rnd.sample01<scalar>()*twoPi;
+            const scalar u = 2*rnd.sample01<scalar>() - 1;
 
-            // Optimising compilers will use the sincos function
-            const scalar sinTheta = sin(theta);
-            const scalar cosTheta = cos(theta);
-
-            const scalar sinPhi = sin(phi);
-            const scalar cosPhi = cos(phi);
-
-            const vector dir(sinTheta*cosPhi, sinTheta*sinPhi, cosTheta);
+            const scalar a = sqrt(1 - sqr(u));
+            const vector dir(a*cos(theta), a*sin(theta), u);
 
             // Numerical Recipes... Ch. 7. Random Numbers...
             scalar x1 = 0;
-- 
GitLab