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/Systems/ForceFree/Tags.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : /// \cond 13 : template <typename T> 14 : class Variables; 15 : namespace Tags { 16 : template <typename TagsList> 17 : struct Variables; 18 : } // namespace Tags 19 : /// \endcond 20 : 21 : namespace ForceFree::subcell { 22 : /*! 23 : * \brief Returns \f$\tilde{J}^i\f$, \f$\tilde{E}^i\f$, \f$\tilde{B}^i\f$, 24 : * \f$\tilde{\psi}\f$, \f$\tilde{\phi}\f$ and \f$\tilde{q}\f$ for FD 25 : * reconstruction. 26 : * 27 : * This mutator is passed to 28 : * `evolution::dg::subcell::Actions::SendDataForReconstruction`. 29 : */ 30 1 : class GhostVariables { 31 : private: 32 0 : using evolved_vars = 33 : tmpl::list<ForceFree::Tags::TildeE, ForceFree::Tags::TildeB, 34 : ForceFree::Tags::TildePsi, ForceFree::Tags::TildePhi, 35 : ForceFree::Tags::TildeQ>; 36 : 37 : public: 38 0 : using return_tags = tmpl::list<>; 39 0 : using argument_tags = 40 : tmpl::list<::Tags::Variables<evolved_vars>, ForceFree::Tags::TildeJ>; 41 : 42 0 : static DataVector apply( 43 : const Variables<evolved_vars>& vars, 44 : const tnsr::I<DataVector, 3, Frame::Inertial>& tilde_j, size_t rdmp_size); 45 : }; 46 : } // namespace ForceFree::subcell