Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <array> 7 : 8 : #include "DataStructures/Tensor/IndexType.hpp" 9 : #include "DataStructures/Tensor/TypeAliases.hpp" 10 : 11 : /// \cond 12 : namespace gsl { 13 : template <typename T> 14 : class not_null; 15 : } // namespace gsl 16 : 17 : class DataVector; 18 : namespace Particles::MonteCarlo { 19 : class Packet; 20 : } // namespace Particles::MonteCarlo 21 : /// \endcond 22 : 23 : namespace Particles::MonteCarlo { 24 : 25 : /// \brief Contribution to the neutrino-matter coupling 26 : /// terms from evolving a packet by time dt, given 27 : /// absorption and scattering opacities. 28 : /// 29 : /// \details We calculate total momentum exchanges, not 30 : /// densities; thus when coupling to the evolution of the 31 : /// energy/momentum density, division by the spatial volume is 32 : /// necessary. We calculate the source terms of Eqs (62-64) of 33 : /// \cite Foucart2021mcb, with integrals calculated as in 34 : /// Eqs (6-10) of that manuscript (except that we do not 35 : /// divide by the coordinate volume V). 36 1 : void AddCouplingTermsForPropagation( 37 : gsl::not_null<Scalar<DataVector>*> coupling_tilde_tau, 38 : gsl::not_null<tnsr::i<DataVector, 3, Frame::Inertial>*> coupling_tilde_s, 39 : gsl::not_null<Scalar<DataVector>*> coupling_rho_ye, const Packet& packet, 40 : size_t extended_idx, double dt, double absorption_opacity, 41 : double scattering_opacity, double fluid_frame_energy, double lapse, 42 : double lorentz_factor, 43 : const std::array<double, 3>& lower_spatial_four_velocity_packet); 44 : 45 : } // namespace Particles::MonteCarlo