System.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/VariablesTag.hpp"
9 #include "Evolution/Systems/ScalarAdvection/Characteristics.hpp"
10 #include "Evolution/Systems/ScalarAdvection/Fluxes.hpp"
11 #include "Evolution/Systems/ScalarAdvection/Tags.hpp"
12 #include "Utilities/TMPL.hpp"
13 
14 /*!
15  * \ingroup EvolutionSystemsGroup
16  * \brief Items related to evolving the scalar advection equation.
17  *
18  * \f{align*}
19  * \partial_t U + \nabla \cdot (v U) = 0
20  * \f}
21  *
22  * Since the ScalarAdvection system is only used for testing limiters in the
23  * current implementation, the velocity field \f$v\f$ is fixed throughout time.
24  */
25 namespace ScalarAdvection {
26 template <size_t Dim>
27 struct System {
28  static constexpr bool is_in_flux_conservative_form = true;
29  static constexpr bool has_primitive_and_conservative_vars = false;
30  static constexpr size_t volume_dim = Dim;
31 
33  using flux_variables = tmpl::list<Tags::U>;
34  using gradient_variables = tmpl::list<>;
35  using sourced_variables = tmpl::list<>;
36 
37  using volume_fluxes = Fluxes<Dim>;
38 
41 };
42 } // namespace ScalarAdvection
Tags::Variables
Definition: VariablesTag.hpp:21
cstddef
ScalarAdvection::Fluxes
Compute the fluxes of the ScalarAdvection system where is the velocity field.
Definition: Fluxes.hpp:22
ScalarAdvection::System
Definition: System.hpp:27
ScalarAdvection::Tags::LargestCharacteristicSpeedCompute
Compute the largest characteristic speed of the ScalarAdvection system.
Definition: Characteristics.hpp:23
ScalarAdvection
Items related to evolving the scalar advection equation.
Definition: Characteristics.hpp:11
TMPL.hpp