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 : virtual bool reconstruct_rho_times_temperature() const = 0;
48 :
49 0 : void pup(PUP::er& p) override;
50 : };
51 : } // namespace grmhd::ValenciaDivClean::fd
|