Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <cstddef> 7 : 8 : #include "DataStructures/Tensor/TypeAliases.hpp" 9 : #include "Evolution/DgSubcell/Tags/Coordinates.hpp" 10 : #include "Evolution/Systems/GrMhd/GhValenciaDivClean/System.hpp" 11 : #include "Evolution/Systems/GrMhd/ValenciaDivClean/FixConservatives.hpp" 12 : #include "Evolution/Systems/GrMhd/ValenciaDivClean/PrimitiveFromConservativeOptions.hpp" 13 : #include "Evolution/Systems/GrMhd/ValenciaDivClean/Tags.hpp" 14 : #include "Evolution/Systems/RadiationTransport/NoNeutrinos/System.hpp" 15 : #include "Evolution/VariableFixing/Tags.hpp" 16 : #include "PointwiseFunctions/Hydro/Tags.hpp" 17 : #include "Utilities/TMPL.hpp" 18 : 19 : /// \cond 20 : class DataVector; 21 : namespace EquationsOfState { 22 : template <bool IsRelativistic, size_t ThermodynamicDim> 23 : class EquationOfState; 24 : } // namespace EquationsOfState 25 : namespace gsl { 26 : template <typename T> 27 : class not_null; 28 : } // namespace gsl 29 : template <typename TagsList> 30 : class Variables; 31 : /// \endcond 32 : 33 1 : namespace grmhd::GhValenciaDivClean::subcell { 34 : /*! 35 : * \brief Fix the conservative variables and compute the primitive variables. 36 : * 37 : * Sets `ValenciaDivClean::Tags::VariablesNeededFixing` to `true` if the 38 : * conservative variables needed fixing, otherwise sets the tag to `false`. 39 : */ 40 : template <typename OrderedListOfRecoverySchemes, 41 : typename System> 42 1 : struct FixConservativesAndComputePrims { 43 0 : using return_tags = tmpl::list< 44 : ValenciaDivClean::Tags::VariablesNeededFixing, 45 : typename System::variables_tag, 46 : typename System::primitive_variables_tag>; 47 0 : using argument_tags = tmpl::list< 48 : evolution::dg::subcell::Tags::Coordinates<3, Frame::Inertial>, 49 : ::Tags::VariableFixer<grmhd::ValenciaDivClean::FixConservatives>, 50 : hydro::Tags::GrmhdEquationOfState, 51 : grmhd::ValenciaDivClean::Tags::PrimitiveFromConservativeOptions>; 52 : 53 0 : static void apply( 54 : gsl::not_null<bool*> needed_fixing, 55 : gsl::not_null< 56 : typename System::variables_tag::type*> 57 : conserved_vars_ptr, 58 : gsl::not_null<Variables<hydro::grmhd_tags<DataVector>>*> 59 : primitive_vars_ptr, 60 : const tnsr::I<DataVector, 3, Frame::Inertial>& subcell_coords, 61 : const grmhd::ValenciaDivClean::FixConservatives& fix_conservatives, 62 : const EquationsOfState::EquationOfState<true, 3>& eos, 63 : const grmhd::ValenciaDivClean::PrimitiveFromConservativeOptions& 64 : primitive_from_conservative_options); 65 : }; 66 : } // namespace grmhd::GhValenciaDivClean::subcell