SpECTRE  v2024.05.11
Cce::Actions::ScriObserveInterpolated< ObserverWriterComponent, BoundaryComponent, WriteSynchronously > Struct Template Reference

Checks the interpolation managers and if they are ready, performs the interpolation and sends the data to file. More...

#include <ScriObserveInterpolated.hpp>

Public Types

using const_global_cache_tags = tmpl::flatten< tmpl::list< Tags::ObservationLMax, std::conditional_t< tt::is_a_v< AnalyticWorldtubeBoundary, BoundaryComponent >, tmpl::list< Tags::OutputNoninertialNews >, tmpl::list<> > > >

Static Public Member Functions

template<typename DbTags , typename... InboxTags, typename Metavariables , typename ArrayIndex , typename ActionList , typename ParallelComponent >
static Parallel::iterable_action_return_t apply (db::DataBox< DbTags > &box, const tuples::TaggedTuple< InboxTags... > &, Parallel::GlobalCache< Metavariables > &cache, const ArrayIndex &, const ActionList, const ParallelComponent *const)

Detailed Description

template<typename ObserverWriterComponent, typename BoundaryComponent, bool WriteSynchronously = true>
struct Cce::Actions::ScriObserveInterpolated< ObserverWriterComponent, BoundaryComponent, WriteSynchronously >

Checks the interpolation managers and if they are ready, performs the interpolation and sends the data to file.


This uses the ScriPlusInterpolationManager to perform the interpolations of all requested scri quantities (determined by scri_values_to_observe in the metavariables), and write them to disk using observers::threadedActions::WriteSimpleData. When using an analytic worldtube solution, this action also uses the AnalyticBoundaryDataManager to output the expected News value at the appropriate asymptotically inertial time.

This action also uses the Tags::EthInertialRetardedTime, interpolated to the inertial frame, to perform the coordinate transformations presented in [26] to the Weyl scalars after interpolation. For our formulas, we need to adjust the signs and factors of two to be compatible with our definitions of \(\eth\) and choice of Newman-Penrose tetrad.

\begin{align*} \Psi_0^{\prime (5)} =& \Psi_0^{(5)} + 2 \eth u^\prime \Psi_1^{(4)} + \frac{3}{4} \left(\eth u^\prime\right)^2 \Psi_2^{(3)} + \frac{1}{2} \left( \eth u^\prime\right)^3 \Psi_3^{(2)} + \frac{1}{16} \left(\eth u^\prime\right)^4 \Psi_4^{(1)}, \\ \Psi_1^{\prime (4)} =& \Psi_1^{(4)} + \frac{3}{2} \eth u^\prime \Psi_2^{(3)} + \frac{3}{4} \left(\eth u^\prime\right)^2 \Psi_3^{(2)} + \frac{1}{8} \left(\eth u^\prime\right)^3 \Psi_4^{(1)}, \\ \Psi_2^{\prime (3)} =& \Psi_2^{(3)} + \eth u^\prime \Psi_3^{(2)} + \frac{1}{4} \left(\eth u^\prime\right)^2 \Psi_4^{(1)}, \\ \Psi_3^{\prime (2)} =& \Psi_3^{(2)} + \frac{1}{2} \eth u^{\prime} \Psi_4^{ (1)}, \\ \Psi_4^{\prime (1)} =& \Psi_4^{(1)}. \end{align*}

If WriteSynchronously is true, then a local synchronous action will be used to write the News value rather than a threaded action.

DataBox changes:

  • Adds: nothing
  • Removes: nothing
  • Modifies: InterpolagionManager<ComplexDataVector, Tag> for each Tag in Metavariables::scri_values_to_observe

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