Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include "DataStructures/Tensor/TypeAliases.hpp" 7 : #include "Domain/Tags.hpp" 8 : #include "Evolution/DgSubcell/Tags/Coordinates.hpp" 9 : #include "Evolution/DgSubcell/Tags/Mesh.hpp" 10 : #include "Evolution/Particles/MonteCarlo/Tags.hpp" 11 : #include "PointwiseFunctions/GeneralRelativity/Tags.hpp" 12 : #include "Utilities/Gsl.hpp" 13 : 14 : /// \cond 15 : namespace gsl { 16 : template <typename T> 17 : class not_null; 18 : } // namespace gsl 19 : 20 : class DataVector; 21 : 22 : template <size_t Dim> 23 : class Mesh; 24 : /// \endcond 25 : 26 : namespace Particles::MonteCarlo { 27 : 28 0 : void cell_light_crossing_time( 29 : gsl::not_null<Scalar<DataVector>*> cell_light_crossing_time, 30 : const Mesh<3>& mesh, 31 : const tnsr::I<DataVector, 3, Frame::Inertial>& inertial_coordinates, 32 : const Scalar<DataVector>& lapse, 33 : const tnsr::I<DataVector, 3, Frame::Inertial>& shift, 34 : const tnsr::II<DataVector, 3, Frame::Inertial>& inv_spatial_metric); 35 : 36 0 : struct CellLightCrossingTimeCompute : Tags::CellLightCrossingTime<DataVector>, 37 : db::ComputeTag { 38 0 : using base = Tags::CellLightCrossingTime<DataVector>; 39 0 : using return_type = typename base::type; 40 0 : using argument_tags = tmpl::list< 41 : evolution::dg::subcell::Tags::Mesh<3>, 42 : evolution::dg::subcell::Tags::Coordinates<3, Frame::Inertial>, 43 : gr::Tags::Lapse<DataVector>, 44 : gr::Tags::Shift<DataVector, 3, Frame::Inertial>, 45 : gr::Tags::InverseSpatialMetric<DataVector, 3, Frame::Inertial>>; 46 : 47 0 : static void function( 48 : gsl::not_null<return_type*> cell_light_crossing_time_, 49 : const Mesh<3>& mesh, 50 : const tnsr::I<DataVector, 3, Frame::Inertial>& inertial_coordinates, 51 : const Scalar<DataVector>& lapse, 52 : const tnsr::I<DataVector, 3, Frame::Inertial>& shift, 53 : const tnsr::II<DataVector, 3, Frame::Inertial>& inv_spatial_metric){ 54 : cell_light_crossing_time(cell_light_crossing_time_, mesh, 55 : inertial_coordinates, lapse, shift, inv_spatial_metric); 56 : } 57 : }; 58 : 59 : 60 : } // namespace Particles::MonteCarlo