SpECTRE  v2024.06.18
control_system::ControlErrors::Shape< Horizon > Struct Template Reference

Control error in the Shape coordinate map. More...

#include <Shape.hpp>

Public Types

using object_centers = domain::object_list< Horizon >
using options = tmpl::list<>

Public Member Functions

void pup (PUP::er &)
template<typename Metavariables , typename... TupleTags>
DataVector operator() (const ::TimescaleTuner< true > &, const Parallel::GlobalCache< Metavariables > &cache, const double time, const std::string &function_of_time_name, const tuples::TaggedTuple< TupleTags... > &measurements)

Static Public Attributes

static constexpr size_t expected_number_of_excisions = 1
static constexpr Options::String help

Detailed Description

template<::domain::ObjectLabel Horizon>
struct control_system::ControlErrors::Shape< Horizon >

Control error in the Shape coordinate map.


Computes the error for each \( l,m \) mode of the shape map except for \( l=0 \) and \( l=1 \). This is because the \( l=0 \) mode is controlled by characteristic speed control, and the \( l=1 \) mode is redundant with the Translation map. The equation for the control error is Eq. (77) from [87] which is

\begin{align} Q_{lm} &= -\frac{r_\mathrm{EB} - Y_{00}\lambda_{00}(t)}{\sqrt{\frac{\pi}{2}} Y_{00}S_{00}} S_{lm} - \lambda_{lm}(t), \quad l>=2 \label{eq:shape_control_error} \end{align}

where \( r_\mathrm{EB} \) is the radius of the excision boundary in the grid frame, \( \lambda_{00}(t) \) is the size map parameter, \( \lambda_{lm}(t) \) for \( l>=2 \) are the shape map parameters, and \( S_{lm}\) are the coefficients of the harmonic expansion of the apparent horizon. The coefficients \( \lambda_{lm}(t) \) (not including \( l=0 \)) and \( S_{lm}\) (including \( l=0 \)) are stored as the real-valued coefficients \( a_{lm} \) and \( b_{lm} \) of the SPHEREPACK spherical-harmonic expansion (in ylm::Spherepack). The \(\lambda_{00}(t)\) coefficient, on the other hand, is stored as the complex coefficient \( A_{00} \) of the standard \( Y_{lm} \) decomposition. Because \( a_{00} = \sqrt{\frac{2}{\pi}}A_{00} \), there is an extra factor of \( \sqrt{\frac{\pi}{2}} \) in the above formula in the denominator of the fraction multiplying the \( S_{00}\) component so it is represented in the \( Y_{lm} \) decomposition just like \( r_{EB} \) and \( \lambda_{00} \) are). That way, we ensure the numerator and denominator are represented in the same way before we take their ratio.


  • This control error requires that there be at least one excision surface in the simulation
  • Currently this control error can only be used with the Shape control system

Member Data Documentation

◆ help

template<::domain::ObjectLabel Horizon>
constexpr Options::String control_system::ControlErrors::Shape< Horizon >::help
Initial value:
"Computes the control error for shape control. This should not take any "

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