SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
control_system::ControlErrors::Shape< Object > Struct Template Reference

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

#include <Shape.hpp>

Public Types

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

Public Member Functions

std::optional< double > get_suggested_timescale () const
void reset ()
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 Options::String help

Detailed Description

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

Control error in the Shape coordinate map.

Details

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 [100] 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.

Requirements:

  • 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 Object>
Options::String control_system::ControlErrors::Shape< Object >::help
staticconstexpr
Initial value:
{
"Computes the control error for shape control. This should not take any "
"options."}

The documentation for this struct was generated from the following file:
  • src/ControlSystem/ControlErrors/Shape.hpp