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