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 "NumericalAlgorithms/Spectral/Mesh.hpp" 8 : #include "Utilities/Gsl.hpp" 9 : 10 : /// \cond 11 : namespace gsl { 12 : template <typename T> 13 : class not_null; 14 : } // namespace gsl 15 : 16 : class DataVector; 17 : 18 : template<size_t Dim> 19 : class Mesh; 20 : /// \endcond 21 : 22 0 : namespace Particles::MonteCarlo { 23 : 24 : /// Proper 4-volume of a cell for a time step time_step. 25 : /// We assume that determinant_spatial_metric is given 26 : /// in inertial coordinates, hence the need for 27 : /// det_jacobian_logical_to_inertial 28 1 : void cell_proper_four_volume_finite_difference( 29 : gsl::not_null<Scalar<DataVector>* > cell_proper_four_volume, 30 : const Scalar<DataVector>& lapse, 31 : const Scalar<DataVector>& determinant_spatial_metric, 32 : double time_step, 33 : const Mesh<3>& mesh, 34 : const Scalar<DataVector>& det_jacobian_logical_to_inertial); 35 : 36 : /// 3-volume of a cell in inertial coordinate. Note that this is 37 : /// the coordinate volume, not the proper volume. This quantity 38 : /// is needed as a normalization factor for the terms coupling 39 : /// Monte-Carlo transport to the fluid evolution (as we evolved 40 : /// densitized fluid variables in inertial coordinates). 41 1 : void cell_inertial_coordinate_three_volume_finite_difference( 42 : gsl::not_null<Scalar<DataVector>* > cell_inertial_three_volume, 43 : const Mesh<3>& mesh, 44 : const Scalar<DataVector>& det_jacobian_logical_to_inertial); 45 : 46 : } // namespace Particles::MonteCarlo