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/DataVector.hpp"
7 : #include "Evolution/Systems/ScalarAdvection/Tags.hpp"
8 : #include "Utilities/Gsl.hpp"
9 : #include "Utilities/TMPL.hpp"
10 :
11 : namespace ScalarAdvection {
12 1 : namespace Tags {
13 : /*!
14 : * \brief Compute the largest characteristic speed of the ScalarAdvection system
15 : *
16 : * \f{align*}
17 : * \lambda_\text{maxabs} = \sqrt{v^iv_i}
18 : * \f}
19 : *
20 : * where \f$v^i\f$ is the velocity field.
21 : */
22 : template <size_t Dim>
23 1 : struct LargestCharacteristicSpeedCompute : LargestCharacteristicSpeed,
24 : db::ComputeTag {
25 0 : using argument_tags = tmpl::list<Tags::VelocityField<Dim>>;
26 0 : using return_type = double;
27 0 : using base = LargestCharacteristicSpeed;
28 0 : static void function(const gsl::not_null<double*> speed,
29 : const tnsr::I<DataVector, Dim>& velocity_field);
30 : };
31 : } // namespace Tags
32 : } // namespace ScalarAdvection
|