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
|