out_vars incorrectly uses grid function vdd structure to obtain "active" string for arrays and scalars`

Issue #2473 resolved
Roland Haas created an issue

Vaishak P. reported in http://lists.einsteintoolkit.org/pipermail/users/2020-October/007623.html

This is regarding the output of QuasiLocalMeasures variables in HDF5 format in a BBH simulation similar to the gallery one. I am unable to output QLM data in HDF5 format using the "IOHDF5:out_vars" option for this run.

I had previously opened a ticket at

https://bitbucket.org/einsteintoolkit/tickets/issues/2451

where the issue is related to using "IOHDF5:out2d_vars" (and out_1dvars), which is now fixed.

Please note that I am not facing this issue with "qlm-ks-outvars.par" test case (details in the above ticket). This issue is only with the gallery run.

Also, I only face this issue when I request any QuasiLocalMeasures variables to be output using "IOHDF5:out_vars" option. I

I am attaching the par files, the er and out files and the backtrace from one of the procs.
The error is :

'std::out_of_range' what(): vector::_M_range_check: __n (which is 0) >= this->size() (which is 0)

Comments (8)

  1. Roland Haas reporter

    This turns out to be due to these lines

    if (local_component != -1) {
      ostringstream buf;
      buf << (vdd.at(Carpet::map)
                  ->local_boxes.at(mglevel)
                  .at(refinementlevel)
                  .at(local_component)
                  .active);
      active = buf.str();
    }
    

    which are incorrect for arrays whose grid structure is not represented by vdd (which describes only grid functions). This is griggered in Vaishak’s parameter file due to asking for out_vars output of a grid array, in a multi-rank job using Llama. Namely the triggering rank (rank 1 when I tested the parfile) does not own a grid function component on map 0 so the at(local_component) fails (rather than just returning the incorrect string).

  2. Log in to comment