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 <memory> 8 : #include <pup.h> 9 : 10 : #include "Utilities/Serialization/CharmPupable.hpp" 11 : #include "Utilities/TMPL.hpp" 12 : 13 : namespace ScalarAdvection::fd { 14 : /// \cond 15 : template <size_t Dim> 16 : class AoWeno53; 17 : template <size_t Dim> 18 : class MonotonisedCentral; 19 : /// \endcond 20 : 21 : /*! 22 : * \brief The base class from which all reconstruction schemes must inherit 23 : */ 24 : template <size_t Dim> 25 1 : class Reconstructor : public PUP::able { 26 : public: 27 0 : Reconstructor() = default; 28 0 : Reconstructor(const Reconstructor&) = default; 29 0 : Reconstructor& operator=(const Reconstructor&) = default; 30 0 : Reconstructor(Reconstructor&&) = default; 31 0 : Reconstructor& operator=(Reconstructor&&) = default; 32 0 : ~Reconstructor() override = default; 33 : 34 0 : void pup(PUP::er& p) override; 35 : 36 : /// \cond 37 : explicit Reconstructor(CkMigrateMessage* msg); 38 : WRAPPED_PUPable_abstract(Reconstructor<Dim>); // NOLINT 39 : /// \endcond 40 : 41 0 : using creatable_classes = tmpl::list<AoWeno53<Dim>, MonotonisedCentral<Dim>>; 42 : 43 0 : virtual std::unique_ptr<Reconstructor<Dim>> get_clone() const = 0; 44 : 45 0 : virtual size_t ghost_zone_size() const = 0; 46 : }; 47 : } // namespace ScalarAdvection::fd