SpECTRE Documentation Coverage Report
Current view: top level - /__w/spectre/spectre/docs/DevGuide - ImportingData.md Coverage Total Hit
Commit: 48e8b5f3e1d94a58a76e3c6360a441267c963bab Lines: 0.0 % 1 0
Test Date: 2026-10-10 00:10:05
Legend: Lines:     hit not hit

            Line data    Source code
       1            0 : \cond NEVER
       2              : Distributed under the MIT License.
       3              : See LICENSE.txt for details.
       4              : \endcond
       5              : # Importing data {#dev_guide_importing}
       6              : 
       7              : \tableofcontents
       8              : 
       9              : The `importers` namespace holds functionality for importing data into SpECTRE.
      10              : We currently support loading volume data files in the same format that is
      11              : written by the `observers`.
      12              : 
      13              : ## Importing volume data
      14              : 
      15              : The `importers::ElementDataReader` parallel component is responsible for loading
      16              : volume data, interpolating it, and distributing it to elements of one or
      17              : multiple array parallel components. As a first step, make sure you have added
      18              : the `importers::ElementDataReader` to your `Metavariables::component_list`. Also
      19              : make sure you have a `Parallel::Phase` in which you will perform
      20              : registration with the importer, and another in which you want to load the data.
      21              : Here's an example for such `Metavariables`:
      22              : 
      23              : \snippet Test_VolumeDataReaderAlgorithm.hpp metavars
      24              : 
      25              : To load volume data from a file, write an action in which you invoke
      26              : `importers::Actions::ReadAllVolumeDataAndDistribute` on the
      27              : `importers::ElementDataReader`. For simple use cases we provide
      28              : `importers::Actions::ReadVolumeData`, which can be added to the
      29              : `phase_dependent_action_list` of your element array and which will generate
      30              : input-file options for you. Here's an example that will be explained in more
      31              : detail below:
      32              : 
      33              : \snippet Test_VolumeDataReaderAlgorithm.hpp import_actions
      34              : 
      35              : - The `importers::Actions::ReadVolumeData` action specifies input-file options
      36              :   and dispatches to `importers::Actions::ReadAllVolumeDataAndDistribute` on the
      37              :   `importers::ElementDataReader` nodegroup component. It loads the volume data
      38              :   file once per node on its first invocation. Subsequent invocations of these
      39              :   actions, e.g. from all other elements on the node, will do nothing. The data
      40              :   is distributed into the inboxes of all elements on the node under the
      41              :   `importers::Tags::VolumeData` tag using `Parallel::receive_data`.
      42              : - The `importers::Actions::ReceiveVolumeData` action waits for the volume data
      43              :   to be available and directly moves it into the DataBox. If you wish to verify
      44              :   or post-process the data before populating the DataBox, use your own
      45              :   specialized action in place of `importers::Actions::ReceiveVolumeData`.
      46              : - You need to register the elements of your array parallel component for
      47              :   receiving volume data. To do so, invoke the
      48              :   `importers::Actions::RegisterWithElementDataReader` action in an earlier
      49              :   phase, as shown in the example above.
      50              : 
      51              : The parameters passed to `importers::Actions::ReadAllVolumeDataAndDistribute`
      52              : specify the volume data to load. See the documentation of
      53              : `importers::Actions::ReadAllVolumeDataAndDistribute` for details. In the example
      54              : above, we use `importers::Actions::ReadVolumeData` to generate the input-file
      55              : options for us and place them in an option group:
      56              : 
      57              : \snippet Test_VolumeDataReaderAlgorithm.hpp option_group
      58              : 
      59              : This results in a section in the input file that may look like this:
      60              : 
      61              : \snippet Test_VolumeDataReaderAlgorithm2D.yaml importer_options
        

Generated by: LCOV version 2.0-1