SpECTRE  2021.08.02
importers::Actions::ReadAllVolumeDataAndDistribute< ImporterOptionsGroup, FieldTagsList, ReceiveComponent > Struct Template Reference

Read a volume data file and distribute the data to all registered elements. More...

#include <ReadVolumeData.hpp>

Static Public Member Functions

template<typename ParallelComponent , typename DataBox , typename Metavariables , typename ArrayIndex , Requires< db::tag_is_retrievable_v< Tags::RegisteredElements, DataBox > and db::tag_is_retrievable_v< Tags::ElementDataAlreadyRead, DataBox > > = nullptr>
static void apply (DataBox &box, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &) noexcept
 

Detailed Description

template<typename ImporterOptionsGroup, typename FieldTagsList, typename ReceiveComponent>
struct importers::Actions::ReadAllVolumeDataAndDistribute< ImporterOptionsGroup, FieldTagsList, ReceiveComponent >

Read a volume data file and distribute the data to all registered elements.

This action can be invoked on the importers::ElementDataReader component once all elements have been registered with it. It opens the data file, reads the data for each registered element and uses Parallel::receive_data to distribute the data to the elements. The elements can monitor importers::Tags::VolumeData in their inbox to wait for the data and process it once it's available. You can use importers::Actions::ReceiveVolumeData to wait for the data and move it directly into the DataBox, or implement a specialized action that might verify and post-process the data.

Note that instead of invoking this action directly on the importers::ElementDataReader component you can invoke the iterable action importers::Actions::ReadVolumeData on the elements of an array parallel component.

See also
Dev guide on Importing data