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 : 9 : #include "Utilities/Serialization/CharmPupable.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : /// \cond 13 : namespace PUP { 14 : class er; 15 : } // namespace PUP 16 : /// \endcond 17 : 18 : namespace grmhd::GhValenciaDivClean::fd { 19 : /// \cond 20 : class MonotonisedCentralPrim; 21 : class PositivityPreservingAdaptiveOrderPrim; 22 : class Wcns5zPrim; 23 : /// \endcond 24 : 25 : /*! 26 : * \brief The base class from which all reconstruction schemes must inherit 27 : */ 28 1 : class Reconstructor : public PUP::able { 29 : public: 30 0 : Reconstructor() = default; 31 0 : Reconstructor(const Reconstructor&) = default; 32 0 : Reconstructor& operator=(const Reconstructor&) = default; 33 0 : Reconstructor(Reconstructor&&) = default; 34 0 : Reconstructor& operator=(Reconstructor&&) = default; 35 0 : ~Reconstructor() override = default; 36 : 37 : /// \cond 38 : explicit Reconstructor(CkMigrateMessage* msg); 39 : WRAPPED_PUPable_abstract(Reconstructor); // NOLINT 40 : /// \endcond 41 : 42 0 : using creatable_classes = 43 : tmpl::list<MonotonisedCentralPrim, PositivityPreservingAdaptiveOrderPrim, 44 : Wcns5zPrim>; 45 : 46 0 : virtual std::unique_ptr<Reconstructor> get_clone() const = 0; 47 : 48 0 : virtual size_t ghost_zone_size() const = 0; 49 : 50 0 : virtual bool supports_adaptive_order() const { return false; } 51 : 52 : // NOLINTNEXTLINE(google-runtime-references) 53 0 : void pup(PUP::er& p) override; 54 : }; 55 : } // namespace grmhd::GhValenciaDivClean::fd