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 : #include <utility> 8 : 9 : /// \cond 10 : template <size_t VolumeDim> 11 : class DirectionalId; 12 : namespace db { 13 : class Access; 14 : } // namespace db 15 : namespace evolution::dg { 16 : template <size_t Dim> 17 : struct BoundaryData; 18 : } // namespace evolution::dg 19 : namespace gsl { 20 : template <class T> 21 : class not_null; 22 : } // namespace gsl 23 : /// \endcond 24 : 25 : namespace evolution::dg::subcell { 26 : /*! 27 : * \brief Invoked in directions where the neighbor is doing subcell, this 28 : * function copies received subcell data into the DataBox. 29 : * 30 : * The mesh and data needed for reconstruction are copied over into 31 : * `subcell::Tags::MeshForGhostData` and 32 : * `subcell::Tags::GhostDataForReconstruction`. 33 : * Additionally, the max/min of the evolved variables from neighboring elements 34 : * that is used for the relaxed discrete maximum principle troubled-cell 35 : * indicator is combined with the data from the local element and stored in 36 : * `subcell::Tags::DataForRdmpTci`. We handle the RDMP 37 : * data now because it is sent in the same buffer as the data for 38 : * reconstruction. 39 : */ 40 : template <size_t VolumeDim> 41 1 : void receive_subcell_data_for_dg( 42 : gsl::not_null<db::Access*> box, const DirectionalId<VolumeDim>& mortar_id, 43 : const evolution::dg::BoundaryData<VolumeDim>& received_mortar_data); 44 : } // namespace evolution::dg::subcell