[cig-commits] r17175 - mc/3D/CitcomS/trunk/lib

becker at geodynamics.org becker at geodynamics.org
Mon Sep 6 19:22:48 PDT 2010


Author: becker
Date: 2010-09-06 19:22:48 -0700 (Mon, 06 Sep 2010)
New Revision: 17175

Modified:
   mc/3D/CitcomS/trunk/lib/Citcom_init.c
   mc/3D/CitcomS/trunk/lib/Tracer_setup.c
Log:
Added random number generator initialization to ensure exact
reproducibility of all runs, including those with tracers.

Earlier reported solver issues might be related to our cluster, at
least all revisions seems to give the same answer now.  



Modified: mc/3D/CitcomS/trunk/lib/Citcom_init.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Citcom_init.c	2010-09-07 01:40:02 UTC (rev 17174)
+++ mc/3D/CitcomS/trunk/lib/Citcom_init.c	2010-09-07 02:22:48 UTC (rev 17175)
@@ -56,6 +56,10 @@
   E->control.total_iteration_cycles=0;
   E->control.total_v_solver_calls=0;
 
+  /* seed random number generator with same seed for
+     reproducibility */
+  srand48((long int) -1);
+
   return(E);
 }
 

Modified: mc/3D/CitcomS/trunk/lib/Tracer_setup.c
===================================================================
--- mc/3D/CitcomS/trunk/lib/Tracer_setup.c	2010-09-07 01:40:02 UTC (rev 17174)
+++ mc/3D/CitcomS/trunk/lib/Tracer_setup.c	2010-09-07 02:22:48 UTC (rev 17175)
@@ -826,7 +826,8 @@
     /* 
        
     what is this supposed to mean? why not initialize the random
-    number generator with a srand48 call? XXX TWB
+    number generator with a srand48 call? I added that in Citcom_init
+    to ensure reproducibility TWB
 
     */
     while (E->trace.ntracers[j]<tracers_cap) {
@@ -845,7 +846,7 @@
         random1=drand48();
         random2=drand48();
         random3=drand48();
-#else
+#else  /* never called */
         random1=(1.0*rand())/(1.0*RAND_MAX);
         random2=(1.0*rand())/(1.0*RAND_MAX);
         random3=(1.0*rand())/(1.0*RAND_MAX);



More information about the CIG-COMMITS mailing list