SpECTRE  2021.08.02
RadiationTransport::M1Grey::ComputeSources< NeutrinoSpecies > Struct Template Reference

Compute the curvature source terms for the flux-balanced grey M1 radiation transport. More...

#include <Sources.hpp>

Public Types

using return_tags = tmpl::list< ::Tags::Source< Tags::TildeE< Frame::Inertial, NeutrinoSpecies > >..., ::Tags::Source< Tags::TildeS< Frame::Inertial, NeutrinoSpecies > >... >
 
using argument_tags = tmpl::list< Tags::TildeE< Frame::Inertial, NeutrinoSpecies >..., Tags::TildeS< Frame::Inertial, NeutrinoSpecies >..., Tags::TildeP< Frame::Inertial, NeutrinoSpecies >..., Tags::M1HydroCouplingNormal< NeutrinoSpecies >..., Tags::M1HydroCouplingSpatial< Frame::Inertial, NeutrinoSpecies >..., gr::Tags::Lapse<>, ::Tags::deriv< gr::Tags::Lapse< DataVector >, tmpl::size_t< 3 >, Frame::Inertial >, ::Tags::deriv< gr::Tags::Shift< 3, Frame::Inertial, DataVector >, tmpl::size_t< 3 >, Frame::Inertial >, ::Tags::deriv< gr::Tags::SpatialMetric< 3, Frame::Inertial, DataVector >, tmpl::size_t< 3 >, Frame::Inertial >, gr::Tags::InverseSpatialMetric< 3 >, gr::Tags::ExtrinsicCurvature< 3, Frame::Inertial, DataVector > >
 

Static Public Member Functions

static void apply (const gsl::not_null< typename Tags::TildeE< Frame::Inertial, NeutrinoSpecies >::type * >... sources_tilde_e, const gsl::not_null< typename Tags::TildeS< Frame::Inertial, NeutrinoSpecies >::type * >... sources_tilde_s, const typename Tags::TildeE< Frame::Inertial, NeutrinoSpecies >::type &... tilde_e, const typename Tags::TildeS< Frame::Inertial, NeutrinoSpecies >::type &... tilde_s, const typename Tags::TildeP< Frame::Inertial, NeutrinoSpecies >::type &... tilde_p, const typename Tags::M1HydroCouplingNormal< NeutrinoSpecies >::type &... source_n, const typename Tags::M1HydroCouplingSpatial< Frame::Inertial, NeutrinoSpecies >::type &... source_i, const Scalar< DataVector > &lapse, const tnsr::i< DataVector, 3 > &d_lapse, const tnsr::iJ< DataVector, 3 > &d_shift, const tnsr::ijj< DataVector, 3 > &d_spatial_metric, const tnsr::II< DataVector, 3 > &inv_spatial_metric, const tnsr::ii< DataVector, 3 > &extrinsic_curvature) noexcept
 

Detailed Description

template<typename... NeutrinoSpecies>
struct RadiationTransport::M1Grey::ComputeSources< NeutrinoSpecies >

Compute the curvature source terms for the flux-balanced grey M1 radiation transport.

A flux-balanced system has the generic form:

\[ \partial_t U_i + \partial_m F^m(U_i) = S(U_i) \]

where \(F^a()\) denotes the flux of a conserved variable \(U_i\) and \(S()\) denotes the source term for the conserved variable.

For the grey M1 formalism (neglecting coupling to the fluid):

\begin{align*} S({\tilde E}) &= \alpha \tilde P^{ij} K_{ij} - \tilde S^i \partial_i \alpha,\\ S({\tilde S_i}) &= -\tilde E \partial_i \alpha + \tilde S_k \partial_i \beta^k + \frac{1}{2} \alpha \tilde P^{jk} \partial_i \gamma_{jk}, \end{align*}

where \({\tilde E}\), \({\tilde S_i}\), \({\tilde P}^{ij}\) are the densitized energy, momentum, and pressure tensor of the neutrinos/photons, \(K_{ij}\) is the extrinsic curvature, and \(\alpha\), \(\beta^i\), \(\gamma_{ij}\) are the lapse, shift and 3-metric.

In the main function, we loop over all neutrino species, and then call the actual implementation of the curvature source terms.