SpECTRE  v2025.08.19
Cce::Tags::SwshDerivativeCompute< ArgumentTag, DerivativeKind > Struct Template Reference

Compute tag for a manually-handled Swsh derivative in the volume. More...

#include <SwshDerivatives.hpp>

Public Types

using base = Spectral::Swsh::Tags::Derivative< ArgumentTag, DerivativeKind >
 
using return_type = typename base::type
 
using ApplySwshJac = ApplySwshJacobianInplace< base >
 
using argument_tags = tmpl::append< tmpl::list< Tags::LMax, Tags::NumberOfRadialPoints, ArgumentTag >, typename ApplySwshJac::argument_tags, typename ApplySwshJac::on_demand_argument_tags >
 
- Public Types inherited from Spectral::Swsh::Tags::Derivative< ArgumentTag, DerivativeKind >
using type = detail::adjust_spin_weight_t< ArgumentTag, DerivativeKind >
 
using tag = ArgumentTag
 
using derivative_of = ArgumentTag
 
using derivative_kind = DerivativeKind
 

Static Public Member Functions

static constexpr auto function (const gsl::not_null< return_type * > eth_field, size_t l_max, size_t number_of_radial_points, const typename ArgumentTag::type &field, const Scalar< SpinWeighted< ComplexDataVector, 0 > > &one_minus_y, const Scalar< SpinWeighted< ComplexDataVector, 1 > > &eth_r_divided_by_r, const typename Tags::Dy< ArgumentTag >::type &dy_field)
 
- Static Public Member Functions inherited from Spectral::Swsh::Tags::Derivative< ArgumentTag, DerivativeKind >
static std::string name ()
 

Additional Inherited Members

- Static Public Attributes inherited from Spectral::Swsh::Tags::Derivative< ArgumentTag, DerivativeKind >
static const int spin
 

Detailed Description

template<typename ArgumentTag, typename DerivativeKind>
struct Cce::Tags::SwshDerivativeCompute< ArgumentTag, DerivativeKind >

Compute tag for a manually-handled Swsh derivative in the volume.

Details

Numerical swsh derivatives are \(\breve\eth\) (at fixed \(y\)), but we prefer to write our calculations here in terms of \(\eth\) (at fixed \(r\)). This involves a correction term that depends on the \(\partial_{\breve{y}}\) derivative of the field being differentiated. Most of these are handled in place by ApplySwshJacobianInplace. However, that infrastructure is specific to the Cce evolution system itself, so it won't work for other uses (e.g. observers that are invoked periodically). This compute tag instead manually computes a certain swsh derivative (at fixed \(r\)). Right now this will only work when DerivativeKind is either Spectral::Swsh::Tags::Eth or Spectral::Swsh::Tags::Ethbar. If you want to extend it to second derivatives, there will have to be more template specializations.


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