SpECTRE Documentation Coverage Report
Current view: top level - __w/spectre/spectre/docs/DevGuide - ImportingData.md Hit Total Coverage
Commit: aabde07399ba7837e5db64eedfd0a21f31f96922 Lines: 0 1 0.0 %
Date: 2024-04-26 02:38:13
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 1.14