SpECTRE  v2026.06.30
Loading...
Searching...
No Matches
dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag > Class Template Reference

Observe volume tensor fields. More...

#include <ObserveFields.hpp>

Classes

struct  BlocksToObserve
 A list of block or group names on which to observe. More...
struct  CoordinatesFloatingPointType
 The floating point type/precision with which to write the coordinates to disk. More...
struct  FloatingPointTypes
 The floating point type/precision with which to write the data to disk. More...
struct  InterpolateToMesh
struct  ProjectToMesh
struct  SubfileName
 The name of the subfile inside the HDF5 file. More...
struct  VariablesToObserve

Public Types

using options
using compute_tags_for_observation_box
using return_tags = tmpl::list<>
using argument_tags
using observation_registration_tags = tmpl::list<::Tags::DataBox>
using is_ready_argument_tags = tmpl::list<>

Public Member Functions

 ObserveFields (const std::string &subfile_name, FloatingPointType coordinates_floating_point_type, const std::vector< FloatingPointType > &floating_point_types, const std::vector< std::string > &variables_to_observe, std::optional< std::vector< std::string > > active_block_or_block_groups={}, std::optional< Mesh< VolumeDim > > interpolation_mesh={}, std::optional< Mesh< VolumeDim > > projection_mesh={}, std::optional< std::string > dependency={}, const Options::Context &context={})
 ObserveFields (const std::string &subfile_name, FloatingPointType coordinates_floating_point_type, const std::vector< FloatingPointType > &floating_point_types, const std::vector< std::string > &variables_to_observe, std::optional< std::vector< std::string > > active_block_or_block_groups={}, std::optional< Mesh< VolumeDim > > interpolation_mesh={}, std::optional< Mesh< VolumeDim > > projection_mesh={}, const Options::Context &context={})
template<typename DataBoxType, typename ComputeTagsList, typename Metavariables, typename ParallelComponent>
void operator() (const ObservationBox< DataBoxType, ComputeTagsList > &box, const Mesh< VolumeDim > &mesh, Parallel::GlobalCache< Metavariables > &cache, const ElementId< VolumeDim > &array_index, const ParallelComponent *const component, const ObservationValue &observation_value) const
template<typename DbTagsList>
std::optional< std::pair< observers::TypeOfObservation, observers::ObservationKey > > get_observation_type_and_key_for_registration (const db::DataBox< DbTagsList > &box) const
template<typename Metavariables, typename ArrayIndex, typename Component>
bool is_ready (Parallel::GlobalCache< Metavariables > &, const ArrayIndex &, const Component *const) const
bool needs_evolved_variables () const override
 Whether the event uses anything depending on the evolved_variables. If this returns false, anything depending on the evolved variables may have an incorrect value when the event is run.
void pup (PUP::er &p) override
Public Member Functions inherited from Event
 Event (CkMigrateMessage *msg)
 WRAPPED_PUPable_abstract (Event)
template<typename ComputeTagsList, typename DataBoxType, typename Metavariables, typename ArrayIndex, typename ComponentPointer>
void run (const gsl::not_null< ObservationBox< ComputeTagsList, DataBoxType > * > box, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &array_index, const ComponentPointer, const ObservationValue &observation_value) const
template<typename DbTags, typename Metavariables, typename ArrayIndex, typename ComponentPointer>
bool is_ready (const db::DataBox< DbTags > &box, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &array_index, const ComponentPointer) const

Static Public Member Functions

template<typename DataBoxType, typename ComputeTagsList, typename Metavariables, typename ParallelComponent>
static void call_operator_impl (const std::string &subfile_path, const std::unordered_map< std::string, FloatingPointType > &variables_to_observe, const std::optional< Mesh< VolumeDim > > &interpolation_mesh, const std::optional< Mesh< VolumeDim > > &projection_mesh, const Mesh< VolumeDim > &mesh, const ObservationBox< DataBoxType, ComputeTagsList > &box, Parallel::GlobalCache< Metavariables > &cache, const ElementId< VolumeDim > &element_id, const ParallelComponent *const, const ObservationValue &observation_value, const std::optional< std::string > &dependency)

Static Public Attributes

static constexpr Options::String help

Detailed Description

template<size_t VolumeDim, typename... Tensors, typename... NonTensorComputeTags, typename ArraySectionIdTag>
class dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag >

Observe volume tensor fields.

A class that writes volume quantities to an h5 file during the simulation. The observed quantitites are specified in the VariablesToObserve option. Any Tensor in the db::DataBox can be observed but must be listed in the Tensors template parameter. Any additional compute tags that hold a Tensor can also be added to the Tensors template parameter. Finally, Variables and other non-tensor compute tags can be listed in the NonTensorComputeTags to facilitate observing. Note that the InertialCoordinates are always observed.

The user may specify an interpolation_mesh to which the data is interpolated.

Note
The NonTensorComputeTags are intended to be used for Variables compute tags like Tags::DerivCompute
Array sections
This event supports sections (see Parallel::Section). Set the ArraySectionIdTag template parameter to split up observations into subsets of elements. The observers::Tags::ObservationKey<ArraySectionIdTag> must be available in the DataBox. It identifies the section and is used as a suffix for the path in the output file.

Member Typedef Documentation

◆ argument_tags

template<size_t VolumeDim, typename... Tensors, typename... NonTensorComputeTags, typename ArraySectionIdTag>
using dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag >::argument_tags
Initial value:
The mesh for the observation computational grid. For hybrid methods like DG-FD the observer mesh chan...
Definition Tags.hpp:24
Tag used to retrieve the ObservationBox from the get() function.
Definition ObservationBox.hpp:28

◆ compute_tags_for_observation_box

template<size_t VolumeDim, typename... Tensors, typename... NonTensorComputeTags, typename ArraySectionIdTag>
using dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag >::compute_tags_for_observation_box
Initial value:
tmpl::list<Tensors..., NonTensorComputeTags...>

◆ options

template<size_t VolumeDim, typename... Tensors, typename... NonTensorComputeTags, typename ArraySectionIdTag>
using dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag >::options
Initial value:
The floating point type/precision with which to write the data to disk.
Definition ObserveFields.hpp:154
The floating point type/precision with which to write the coordinates to disk.
Definition ObserveFields.hpp:167

Member Function Documentation

◆ needs_evolved_variables()

template<size_t VolumeDim, typename... Tensors, typename... NonTensorComputeTags, typename ArraySectionIdTag>
bool dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag >::needs_evolved_variables ( ) const
inlineoverridevirtual

Whether the event uses anything depending on the evolved_variables. If this returns false, anything depending on the evolved variables may have an incorrect value when the event is run.

Implements Event.

Member Data Documentation

◆ help

template<size_t VolumeDim, typename... Tensors, typename... NonTensorComputeTags, typename ArraySectionIdTag>
Options::String dg::Events::ObserveFields< VolumeDim, tmpl::list< Tensors... >, tmpl::list< NonTensorComputeTags... >, ArraySectionIdTag >::help
staticconstexpr
Initial value:
=
"Observe volume tensor fields.\n"
"\n"
"Writes volume quantities:\n"
" * InertialCoordinates\n"
" * Tensors listed in the 'VariablesToObserve' option\n"

The documentation for this class was generated from the following file:
  • src/ParallelAlgorithms/Events/ObserveFields.hpp