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
|