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
|