<html>#2279: CarpetIOHDF5 recover failure with manual topology
<table style='border-spacing: 1ex 0pt; '>
<tr><td style='text-align:right'> Reporter:</td><td></td></tr>
<tr><td style='text-align:right'>   Status:</td><td>open</td></tr>
<tr><td style='text-align:right'>Milestone:</td><td></td></tr>
<tr><td style='text-align:right'>  Version:</td><td></td></tr>
<tr><td style='text-align:right'>     Type:</td><td>bug</td></tr>
<tr><td style='text-align:right'> Priority:</td><td>major</td></tr>
<tr><td style='text-align:right'>Component:</td><td>Carpet</td></tr>
</table>

<p>Comment (by Roland Haas):</p>
<p>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 <em>not</em> use manual topology setting (it is commented out):</p>
<div class="codehilite language-perl"><pre><span></span><span class="c1">#Carpet::processor_topology       = &quot;manual&quot;</span>
<span class="c1">#Carpet::processor_topology_3d_x  = 8</span>
<span class="c1">#Carpet::processor_topology_3d_y  = 1</span>
<span class="c1">#Carpet::processor_topology_3d_z  = 1</span>
</pre></div>


<p>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 <code>region_t</code> also did not initialize (poison really) it’s map member leading to use of unitialized values (often zero).</p>
<p>The pull request:<br />
<a data-is-external-link="true" href="https://bitbucket.org/eschnett/carpet/pull-requests/29/intiialize-region_t-structure-members/diff" rel="nofollow">https://bitbucket.org/eschnett/carpet/pull-requests/29/intiialize-region_t-structure-members/diff</a></p>
<p>contains code to initialize <code>region_t::map</code> and <code>pseudoregion_t::component</code> to <code>-1</code> which is an invalid value (and detected by consistency checks). It also changes the “manual”, “along-z” and “along-dir” splitting routines to initialize <code>reg.map</code> from <code>reg0.map</code> 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 <code>reg0</code> is used in those routines otherwise.</p>
<p>All tests in the testsuite (and the test parfile of course)  pass with those patches.</p>
<p>--<br/>
Ticket URL: <a href='https://bitbucket.org/einsteintoolkit/tickets/issues/2279/carpetiohdf5-recover-failure-with-manual'>https://bitbucket.org/einsteintoolkit/tickets/issues/2279/carpetiohdf5-recover-failure-with-manual</a></p>
</html>