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