Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <array>
7 : #include <cstddef>
8 : #include <utility>
9 :
10 : #include "Domain/Structure/DirectionalIdMap.hpp"
11 : #include "Evolution/Systems/Burgers/Tags.hpp"
12 : #include "Utilities/TMPL.hpp"
13 :
14 : /// \cond
15 : class DataVector;
16 : template <typename TagsList>
17 : class Variables;
18 : namespace gsl {
19 : template <typename>
20 : class not_null;
21 : } // namespace gsl
22 : template <size_t Dim>
23 : class Direction;
24 : template <size_t Dim>
25 : class ElementId;
26 : template <size_t Dim>
27 : class Element;
28 : template <size_t Dim>
29 : class Mesh;
30 : namespace evolution::dg::subcell {
31 : class GhostData;
32 : } // namespace evolution::dg::subcell
33 : /// \endcond
34 :
35 : namespace Burgers::fd {
36 : /*!
37 : * \brief Reconstructs \f$U\f$. All results are written into
38 : * `vars_on_lower_face` and `vars_on_upper_face`.
39 : */
40 : template <typename TagsList, typename Reconstructor>
41 1 : void reconstruct_work(
42 : gsl::not_null<std::array<Variables<TagsList>, 1>*> vars_on_lower_face,
43 : gsl::not_null<std::array<Variables<TagsList>, 1>*> vars_on_upper_face,
44 : const Reconstructor& reconstruct,
45 : const Variables<tmpl::list<Tags::U>> volume_vars, const Element<1>& element,
46 : const DirectionalIdMap<1, evolution::dg::subcell::GhostData>& ghost_data,
47 : const Mesh<1>& subcell_mesh, const size_t ghost_zone_size);
48 :
49 : /*!
50 : * \brief Reconstructs \f$U\f$. All results are written into `vars_on_face`.
51 : *
52 : * This is used on DG elements to reconstruct their subcell neighbors' solution
53 : * on the shared faces.
54 : */
55 : template <typename TagsList, typename ReconstructLower,
56 : typename ReconstructUpper>
57 1 : void reconstruct_fd_neighbor_work(
58 : gsl::not_null<Variables<TagsList>*> vars_on_face,
59 : const ReconstructLower& reconstruct_lower_neighbor,
60 : const ReconstructUpper& reconstruct_upper_neighbor,
61 : const Variables<tmpl::list<Tags::U>>& subcell_volume_vars,
62 : const Element<1>& element,
63 : const DirectionalIdMap<1, evolution::dg::subcell::GhostData>& ghost_data,
64 : const Mesh<1>& subcell_mesh, const Direction<1>& direction_to_reconstruct,
65 : const size_t ghost_zone_size);
66 : } // namespace Burgers::fd
|