SpECTRE  v2025.08.19
ah ::callbacks::ObserveFieldsOnHorizon< TagsToObserve, HorizonMetavars > Struct Template Reference

A ah::protocols::Callback that outputs 2D "volume" data on a surface and the surface's spherical harmonic data. More...

#include <ObserveFieldsOnHorizon.hpp>

Public Types

using Fr = typename HorizonMetavars::frame
 
using const_global_cache_tags = tmpl::list< observers::Tags::SurfaceFileName >
 

Static Public Member Functions

template<typename DbTags , typename Metavariables >
static void apply (const db::DataBox< DbTags > &box, Parallel::GlobalCache< Metavariables > &cache, const FastFlow::Status)
 

Detailed Description

template<typename TagsToObserve, typename HorizonMetavars>
struct ah ::callbacks::ObserveFieldsOnHorizon< TagsToObserve, HorizonMetavars >

A ah::protocols::Callback that outputs 2D "volume" data on a surface and the surface's spherical harmonic data.

Details

The columns of spherical harmonic data written take the form

[Time, {Frame}ExpansionCenter_x, {Frame}ExpansionCenter_y,
{Frame}ExpansionCenter_z, Lmax, coef(0,0), ... coef(Lmax,Lmax)]
The time in a simulation. Times can be safely compared for exact equality as long as they do not belo...
Definition: Time.hpp:29
Indicates the Frame that a TensorIndexType is in.
Definition: IndexType.hpp:36

where coef(l,m) refers to the strahlkorper coefficients stored and defined by ylm::Strahlkorper::coefficients() const, and Frame is HorizonMetavars::frame. It is assumed that \(l_{\mathrm{max}} = m_{\mathrm{max}}\).

Note
Currently, \(l_{\mathrm{max}}\) for a given surface does not change over the course of the simulation, which means that the total number of columns of coefficients that we need to write is also constant. The current implementation of writing the coefficients at one time assumes \(l_{\mathrm{max}}\) of a surface remains constant. If and when in the future functionality for an adaptive \(l_{\mathrm{max}}\) is added, the implementation for writing the coefficients will need to be updated to account for this. One possible way to address this is to have a known maximum \(l_{\mathrm{max}}\) for a given surface and write all coefficients up to that maximum \(l_{\mathrm{max}}\).

The documentation for this struct was generated from the following file: