SpECTRE  v2024.05.11
RadiationTransport::M1Grey::ComputeM1Closure< tmpl::list< NeutrinoSpecies... > > Struct Template Reference

#include <M1Closure.hpp>

Public Types

using return_tags = tmpl::list< Tags::ClosureFactor< NeutrinoSpecies >..., Tags::TildeP< Frame::Inertial, NeutrinoSpecies >..., Tags::TildeJ< NeutrinoSpecies >..., Tags::TildeHNormal< NeutrinoSpecies >..., Tags::TildeHSpatial< Frame::Inertial, NeutrinoSpecies >... >
 
using argument_tags = tmpl::list< Tags::TildeE< Frame::Inertial, NeutrinoSpecies >..., Tags::TildeS< Frame::Inertial, NeutrinoSpecies >..., hydro::Tags::SpatialVelocity< DataVector, 3 >, hydro::Tags::LorentzFactor< DataVector >, gr::Tags::SpatialMetric< DataVector, 3 >, gr::Tags::InverseSpatialMetric< DataVector, 3 > >
 

Static Public Member Functions

static void apply (const gsl::not_null< typename Tags::ClosureFactor< NeutrinoSpecies >::type * >... closure_factor, const gsl::not_null< typename Tags::TildeP< Frame::Inertial, NeutrinoSpecies >::type * >... tilde_p, const gsl::not_null< typename Tags::TildeJ< NeutrinoSpecies >::type * >... tilde_j, const gsl::not_null< typename Tags::TildeHNormal< NeutrinoSpecies >::type * >... tilde_hn, const gsl::not_null< typename Tags::TildeHSpatial< Frame::Inertial, NeutrinoSpecies >::type * >... tilde_hi, const typename Tags::TildeE< Frame::Inertial, NeutrinoSpecies >::type &... tilde_e, const typename Tags::TildeS< Frame::Inertial, NeutrinoSpecies >::type &... tilde_s, const tnsr::I< DataVector, 3 > &spatial_velocity, const Scalar< DataVector > &lorentz_factor, const tnsr::ii< DataVector, 3 > &spatial_metric, const tnsr::II< DataVector, 3 > &inv_spatial_metric)
 

Detailed Description

template<typename... NeutrinoSpecies>
struct RadiationTransport::M1Grey::ComputeM1Closure< tmpl::list< NeutrinoSpecies... > >

Compute the 2nd moment of the neutrino distribution function in the inertial frame (pressure tensor) from the 0th (energy density) and 1st (momentum density) moments. The M1 closure sets

\begin{align} P_{ij} = d_{\rm thin} P_{ij,\rm thin} + d_{\rm thick} P_{ij,\rm thick} \end{align}

with \(P_{ij}\) the pressure tensor in the inertial frame, and \(P_{ij,thin/thick}\) its value assuming an optically thick / optically thin medium.

Following the algorithm described in Appendix A of [68], we choose the Minerbo closure ([129]) which sets

\begin{align} d_{\rm thin} = & 1.5\chi-0.5\\ d_{\rm thick} = & 1.5-1.5\chi \\ \chi = & \frac{1}{3} + \xi^2 \frac{6-2\xi+6\xi^2}{15} \\ \xi = & H^aH_a/J^2 \end{align}

with \(J\) the energy density in the frame comoving with the fluid, and \(H^a\) the momentum density in that frame. The optically thick closure is

\begin{align} K^{ab,\rm thick} = \frac{J_{\rm thick}}{3} (g^{ab}+u^a u^b) \end{align}

with \( K^{ab,\rm thick} \) the pressure tensor in the frame comoving with the fluid, and \( u^a \) the fluid 4-velocity, while the optically thin closure is

\begin{align} P^{ij,\rm thin} = \frac{S^i S^j}{S^k S_k} E \end{align}

with \( E \), \( S^{i} \) the 0th and 1st moments in the inertial frame (see paper for the computation of \(P_{ij,thick}\) from the other moments).

The main step of this function is to solve the equation

\begin{align} \frac{\xi^2 J^2 - H^aH_a}{E^2} = 0 \end{align}

for \(\xi\), with \(J\) and \(H^a\) being functions of \(\xi\) and of the input variables (the 0th and 1st moments in the inertial frame). This is done by separating \(H^a\) as

\begin{align} H_a = - H_t t_a - H_v v_a - H_f F_a \end{align}

(with \(v^a\) the fluid 3-velocity and \(t^a\) the unit normal to the slice) and then writing each of the variables \(J\), \(H_n\), \(H_v\), \(H_f\) as

\begin{align} X = X_0 + d_{\rm thin} X_{\rm thin} + d_{\rm thick} X_{\rm thick} \end{align}

so that evaluating

\begin{align} \frac{\xi^2 J^2 - H^aH_a}{E^2} = 0 \end{align}

for a given \(\xi\) only requires recomputing \(d_{\rm thin,thick}\) and their derivatives with respect to \(\xi\). We perform the root-finding using a Newton-Raphson algorithm, with the accuracy set by the variable root_find_number_of_digits (6 significant digits at the moment).

The function returns the closure factors \(\xi\) (to be used as initial guess for this function at the next step), the pressure tensor \(P_{ij}\), and the neutrino moments in the frame comoving with the fluid. The momentum density in the frame comoving with the fluid is decomposed into its normal component \( H^a t_a\), and its spatial components \( \gamma_{ia} H^a\).


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