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
|