[Commits] [svn:einsteintoolkit] AHFinderDirect/trunk/src/driver/ (Rev. 1569)

rhaas at tapir.caltech.edu rhaas at tapir.caltech.edu
Mon Oct 29 13:06:52 CDT 2012


User: rhaas
Date: 2012/10/29 01:06 PM

Modified:
 /trunk/src/driver/
  setup.cc

Log:
 Initialize Cactus grid scalar with data from internal data structures
 
 this is avoids errors when new horizons are turned on in a checkpoint recovery.
 
 The reason is that AHFinderDirect attempts to initialize its internal variables
 from checkpointed data (in particular the patch system origin). Since the new
 horizons did not exist at the time of checkpoint (and the whole variable is
 missing) the recovery routine in CarpetIOHDF5 reads in no data which leaves the
 Cactus group uninitialized which in turn leads to invalid values in
 AHFinderDirect's internal data structures.
 
 The attached fix circumvents this by having AHFinderDirect initialize the
 Cactus group from its internal data structures (which it constructed from the
 parameters) at BaseGrid. This way, any newly created horizon will retain the
 values from the parameter file, but existing ones have their values
 overwritten.

File Changes:

Directory: /trunk/src/driver/
=============================

File [modified]: setup.cc
Delta lines: +7 -0
===================================================================
--- trunk/src/driver/setup.cc	2012-07-08 04:58:20 UTC (rev 1568)
+++ trunk/src/driver/setup.cc	2012-10-29 18:06:51 UTC (rev 1569)
@@ -683,6 +683,13 @@
       printf ("AHF setup %d found_flag=%d\n",               n+1, (int) AH_data.found_flag);
     }
   }
+
+  // Save in grid array in case a recovery only recovers some horizons
+  for (int n = 0; n < N_horizons; ++ n) {
+    struct AH_data& AH_data = *state.AH_data_array[n+1];
+    const struct BH_diagnostics& BH_diagnostics = AH_data.BH_diagnostics;
+    BH_diagnostics.save(cctkGH, n+1);
+  }
 }
 
 



More information about the Commits mailing list