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
|