Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstddef> 7 : 8 : #include "DataStructures/DataBox/Prefixes.hpp" 9 : #include "DataStructures/DataVector.hpp" 10 : #include "DataStructures/Tensor/TypeAliases.hpp" 11 : #include "Evolution/Systems/ScalarAdvection/Tags.hpp" 12 : #include "Utilities/Gsl.hpp" 13 : #include "Utilities/TMPL.hpp" 14 : 15 : namespace ScalarAdvection { 16 : 17 : /*! 18 : * \brief Compute the fluxes of the ScalarAdvection system \f$F^i = v^iU\f$ 19 : * where \f$v^i\f$ is the velocity field. 20 : */ 21 : template <size_t Dim> 22 1 : struct Fluxes { 23 0 : using argument_tags = tmpl::list<Tags::U, Tags::VelocityField<Dim>>; 24 0 : using return_tags = 25 : tmpl::list<::Tags::Flux<Tags::U, tmpl::size_t<Dim>, Frame::Inertial>>; 26 0 : static void apply(gsl::not_null<tnsr::I<DataVector, Dim>*> u_flux, 27 : const Scalar<DataVector>& u, 28 : const tnsr::I<DataVector, Dim>& velocity_field); 29 : }; 30 : } // namespace ScalarAdvection