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/VariablesTag.hpp" 9 : #include "PointwiseFunctions/Hydro/Tags.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : /// \cond 13 : template <typename TagsList> 14 : class Variables; 15 : /// \endcond 16 : 17 : namespace NewtonianEuler::subcell { 18 : /*! 19 : * \brief Computes the mass density, velocity, and pressure on the subcells so 20 : * they can be sent to the neighbors for their reconstructions. 21 : * 22 : * The computation just copies the data from the primitive variables tag to a 23 : * new Variables (the copy is subcell grid to subcell grid). In the future we 24 : * will likely want to elide this copy but that requires support from the 25 : * actions. 26 : * 27 : * This mutator is passed to 28 : * `evolution::dg::subcell::Actions::SendDataForReconstruction`. 29 : */ 30 : template <size_t Dim> 31 1 : class PrimitiveGhostVariables { 32 : private: 33 0 : using MassDensity = hydro::Tags::RestMassDensity<DataVector>; 34 0 : using Velocity = hydro::Tags::SpatialVelocity<DataVector, Dim>; 35 0 : using SpecificInternalEnergy = 36 : hydro::Tags::SpecificInternalEnergy<DataVector>; 37 0 : using Pressure = hydro::Tags::Pressure<DataVector>; 38 : 39 0 : using prim_tags = 40 : tmpl::list<MassDensity, Velocity, SpecificInternalEnergy, Pressure>; 41 0 : using prims_to_reconstruct_tags = tmpl::list<MassDensity, Velocity, Pressure>; 42 : 43 : public: 44 0 : using return_tags = tmpl::list<>; 45 0 : using argument_tags = tmpl::list<::Tags::Variables<prim_tags>>; 46 : 47 0 : static DataVector apply(const Variables<prim_tags>& prims, size_t rdmp_size); 48 : }; 49 : } // namespace NewtonianEuler::subcell