SpECTRE  v2022.09.02
CurvedScalarWave::Tags::ComputeLargestCharacteristicSpeed< SpatialDim > Struct Template Reference

Computes the largest magnitude of the characteristic speeds. More...

#include <Characteristics.hpp>

Public Types

using argument_tags = tmpl::list< Tags::ConstraintGamma1, gr::Tags::Lapse< DataVector >, gr::Tags::Shift< SpatialDim, Frame::Inertial, DataVector >, gr::Tags::SpatialMetric< SpatialDim, Frame::Inertial, DataVector > >
using return_type = double
using base = LargestCharacteristicSpeed
- Public Types inherited from CurvedScalarWave::Tags::LargestCharacteristicSpeed
using type = double

Static Public Member Functions

static void function (const gsl::not_null< double * > max_speed, const Scalar< DataVector > &gamma_1, const Scalar< DataVector > &lapse, const tnsr::I< DataVector, SpatialDim, Frame::Inertial > &shift, const tnsr::ii< DataVector, SpatialDim, Frame::Inertial > &spatial_metric)

Detailed Description

template<size_t SpatialDim>
struct CurvedScalarWave::Tags::ComputeLargestCharacteristicSpeed< SpatialDim >

Computes the largest magnitude of the characteristic speeds.


Returns the magnitude of the largest characteristic speed along any direction at a given point in space, considering all characteristic fields. This is useful, for e.g., in computing the Courant factor. The coordinate characteristic speeds for this system are \(\{-(1+\gamma_1)n_k N^k, -n_k N^k, -n_k N^k \pm N\}\). At any point in space, these are maximized when the normal vector is parallel to the shift vector, i.e. \( n^j = N^j / \sqrt{N^i N_i}\), and \( n_k N^k = g_{jk} N^j N^k / \sqrt{N^i N_i} = \sqrt{N^i N_i} =\) magnitude(shift, spatial_metric). The maximum characteristic speed is therefore calculated as \( \rm{max}(\vert 1+\gamma_1\vert\sqrt{N^i N_i},\, \sqrt{N^i N_i}+\vert N\vert) \).

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