TimeDerivativeTerms.hpp
1 // 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" // IWYU pragma: keep
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 /// Computes the time derivative terms needed for the ScalarAdvection system,
17 /// which are just the fluxes.
18 template <size_t Dim>
20  using temporary_tags = tmpl::list<Tags::VelocityField<Dim>>;
21  using argument_tags = tmpl::list<Tags::U, Tags::VelocityField<Dim>>;
22 
23  static void apply(
24  // Time derivatives returned by reference. No source terms or
25  // nonconservative products, so not used. All the tags in the
26  // variables_tag in the system struct.
27  gsl::not_null<Scalar<DataVector>*> /*non_flux_terms_dt_vars*/,
28  gsl::not_null<tnsr::I<DataVector, Dim>*> temp_velocity_field,
29 
30  // Fluxes returned by reference. Listed in the system struct as
31  // flux_variables.
32  gsl::not_null<tnsr::I<DataVector, Dim>*> flux,
33 
34  // Arguments listed in argument_tags above
35  const Scalar<DataVector>& u,
36  const tnsr::I<DataVector, Dim>& velocity_field) noexcept;
37 };
38 } // namespace ScalarAdvection
ScalarAdvection::TimeDerivativeTerms
Computes the time derivative terms needed for the ScalarAdvection system, which are just the fluxes.
Definition: TimeDerivativeTerms.hpp:19
cstddef
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