Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include <memory> 7 : #include <pup.h> 8 : 9 : #include "Utilities/Serialization/CharmPupable.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : namespace grmhd::ValenciaDivClean::fd { 13 : /// \cond 14 : class MonotonicityPreserving5Prim; 15 : class MonotonisedCentralPrim; 16 : class PositivityPreservingAdaptiveOrderPrim; 17 : class Wcns5zPrim; 18 : /// \endcond 19 : 20 : /*! 21 : * \brief The base class from which all reconstruction schemes must inherit 22 : */ 23 1 : class Reconstructor : public PUP::able { 24 : public: 25 0 : Reconstructor() = default; 26 0 : Reconstructor(const Reconstructor&) = default; 27 0 : Reconstructor& operator=(const Reconstructor&) = default; 28 0 : Reconstructor(Reconstructor&&) = default; 29 0 : Reconstructor& operator=(Reconstructor&&) = default; 30 0 : ~Reconstructor() override = default; 31 : 32 : /// \cond 33 : explicit Reconstructor(CkMigrateMessage* msg); 34 : WRAPPED_PUPable_abstract(Reconstructor); // NOLINT 35 : /// \endcond 36 : 37 0 : using creatable_classes = 38 : tmpl::list<MonotonicityPreserving5Prim, MonotonisedCentralPrim, 39 : PositivityPreservingAdaptiveOrderPrim, Wcns5zPrim>; 40 : 41 0 : virtual std::unique_ptr<Reconstructor> get_clone() const = 0; 42 : 43 0 : virtual size_t ghost_zone_size() const = 0; 44 : 45 0 : virtual bool supports_adaptive_order() const { return false; } 46 : 47 0 : void pup(PUP::er& p) override; 48 : }; 49 : } // namespace grmhd::ValenciaDivClean::fd