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/DataBox/Prefixes.hpp"
7 : #include "DataStructures/Tensor/TypeAliases.hpp"
8 : #include "Evolution/DiscontinuousGalerkin/TimeDerivativeDecisions.hpp"
9 : #include "Utilities/TMPL.hpp"
10 :
11 : /// \cond
12 : class DataVector;
13 :
14 : namespace Burgers {
15 : namespace Tags {
16 : struct U;
17 : } // namespace Tags
18 : } // namespace Burgers
19 : namespace gsl {
20 : template <typename T>
21 : class not_null;
22 : } // namespace gsl
23 :
24 : class DataVector;
25 : /// \endcond
26 :
27 : namespace Burgers {
28 : /// Computes the time derivative terms needed for the Burgers system, which are
29 : /// just the fluxes.
30 1 : struct TimeDerivativeTerms {
31 0 : using temporary_tags = tmpl::list<>;
32 0 : using argument_tags = tmpl::list<Tags::U>;
33 :
34 0 : static evolution::dg::TimeDerivativeDecisions<1> apply(
35 : // Time derivatives returned by reference. No source terms or
36 : // nonconservative products, so not used. All the tags in the
37 : // variables_tag in the system struct.
38 : gsl::not_null<Scalar<DataVector>*> /*non_flux_terms_dt_vars*/,
39 :
40 : // Fluxes returned by reference. Listed in the system struct as
41 : // flux_variables.
42 : gsl::not_null<tnsr::I<DataVector, 1, Frame::Inertial>*> flux_u,
43 :
44 : // Arguments listed in argument_tags above
45 : const Scalar<DataVector>& u);
46 : };
47 : } // namespace Burgers
|