Fluxes.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <cstddef>
7 
9 #include "DataStructures/DataVector.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 struct Fluxes {
23  using argument_tags = tmpl::list<Tags::U, Tags::VelocityField<Dim>>;
24  using return_tags =
25  tmpl::list<::Tags::Flux<Tags::U, tmpl::size_t<Dim>, Frame::Inertial>>;
26  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) noexcept;
29 };
30 } // namespace ScalarAdvection
Frame::Inertial
Definition: IndexType.hpp:44
cstddef
ScalarAdvection::Fluxes
Compute the fluxes of the ScalarAdvection system where is the velocity field.
Definition: Fluxes.hpp:22
Scalar
Tensor< T, Symmetry<>, index_list<> > Scalar
Definition: TypeAliases.hpp:21
Gsl.hpp
TypeAliases.hpp
ScalarAdvection
Items related to evolving the scalar advection equation.
Definition: BoundaryCondition.hpp:13
Prefixes.hpp
TMPL.hpp
gsl::not_null
Require a pointer to not be a nullptr
Definition: ReadSpecPiecewisePolynomial.hpp:13