Fix T73552: Mantaflow - liquid particles show up in organized unrealistic structure
authorSebastián Barschkis <sebbas@sebbas.org>
Wed, 8 Apr 2020 16:29:11 +0000 (18:29 +0200)
committerSebastián Barschkis <sebbas@sebbas.org>
Wed, 8 Apr 2020 16:29:26 +0000 (18:29 +0200)
Issue was being caused by a particle offset which was random but the same for every particle.

extern/mantaflow/preprocessed/gitinfo.h
extern/mantaflow/preprocessed/plugin/secondaryparticles.cpp

index 6a26c4803920f8247ff8a64e28625b0587824581..791dd001bbede969597ec374450ff3034d7363dc 100644 (file)
@@ -1,3 +1,3 @@
 
 
-#define MANTA_GIT_VERSION "commit f3d32c45934fd08c40096fb3510e9cc403730977"
+#define MANTA_GIT_VERSION "commit 21303fab2eda588ec22988bf9e5762d2001c131f"
index 23f5e23d99dd556de760bf0802ef7c7a6a4dbb6d..a8913a218c15c184c1066396b157111401e51ecb 100644 (file)
@@ -525,7 +525,7 @@ struct knFlipSampleSecondaryParticlesMoreCylinders : public KernelBase {
     if (!(flags(i, j, k) & itype))
       return;
 
-    RandomStream mRand(9832);
+    static RandomStream mRand(9832);
     Real radius =
         0.25;  // diameter=0.5 => sampling with two cylinders in each dimension since cell size=1
     for (Real x = i - radius; x <= i + radius; x += 2 * radius) {
@@ -791,11 +791,9 @@ struct knFlipSampleSecondaryParticles : public KernelBase {
     const int n = KE * (k_ta * TA + k_wc * WC) * dt;  // number of secondary particles
     if (n == 0)
       return;
-    RandomStream mRand(9832);
+    static RandomStream mRand(9832);
 
-    Vec3 xi = Vec3(i + mRand.getReal(),
-                   j + mRand.getReal(),
-                   k + mRand.getReal());  // randomized offset uniform in cell
+    Vec3 xi = Vec3(i, j, k) + mRand.getVec3();  // randomized offset uniform in cell
     Vec3 vi = v.getInterpolated(xi);
     Vec3 dir = dt * vi;                               // direction of movement of current particle
     Vec3 e1 = getNormalized(Vec3(dir.z, 0, -dir.x));  // perpendicular to dir