#2279: CarpetIOHDF5 recover failure with manual topology
Reporter:
Status:open
Milestone:
Version:
Type:bug
Priority:major
Component:Carpet

Comment (by Roland Haas):

I could reproduce this and fix it (I think). What initially confused me was that the example parfile as provided actually passed b/c it does not use manual topology setting (it is commented out):

#Carpet::processor_topology       = "manual"
#Carpet::processor_topology_3d_x  = 8
#Carpet::processor_topology_3d_y  = 1
#Carpet::processor_topology_3d_z  = 1

Setting reg.map = 0 was the correct solution for you. It turns out that the routine did not set reg.map at all, and the constructor if region_t also did not initialize (poison really) it’s map member leading to use of unitialized values (often zero).

The pull request:
https://bitbucket.org/eschnett/carpet/pull-requests/29/intiialize-region_t-structure-members/diff

contains code to initialize region_t::map and pseudoregion_t::component to -1 which is an invalid value (and detected by consistency checks). It also changes the “manual”, “along-z” and “along-dir” splitting routines to initialize reg.map from reg0.map ie the map of the superregion being passed in (which will be zero in your case), which is in line with how other splitting methods (eg “automatic”) handle maps and also how reg0 is used in those routines otherwise.

All tests in the testsuite (and the test parfile of course) pass with those patches.

--
Ticket URL: https://bitbucket.org/einsteintoolkit/tickets/issues/2279/carpetiohdf5-recover-failure-with-manual