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