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 : /// Boundary corrections/numerical fluxes 13 1 : namespace NewtonianEuler::BoundaryCorrections { 14 : /// \cond 15 : template <size_t Dim> 16 : class Hll; 17 : template <size_t Dim> 18 : class Hllc; 19 : template <size_t Dim> 20 : class Rusanov; 21 : /// \endcond 22 : 23 : /*! 24 : * \brief The base class used to create boundary corrections from input files 25 : * and store them in the global cache. 26 : */ 27 : template <size_t Dim> 28 1 : class BoundaryCorrection : public PUP::able { 29 : public: 30 0 : BoundaryCorrection() = default; 31 0 : BoundaryCorrection(const BoundaryCorrection&) = default; 32 0 : BoundaryCorrection& operator=(const BoundaryCorrection&) = default; 33 0 : BoundaryCorrection(BoundaryCorrection&&) = default; 34 0 : BoundaryCorrection& operator=(BoundaryCorrection&&) = default; 35 0 : ~BoundaryCorrection() override = default; 36 : 37 : /// \cond 38 : explicit BoundaryCorrection(CkMigrateMessage* msg) : PUP::able(msg) {} 39 : WRAPPED_PUPable_abstract(BoundaryCorrection<Dim>); // NOLINT 40 : /// \endcond 41 : 42 0 : using creatable_classes = tmpl::list<Hll<Dim>, Hllc<Dim>, Rusanov<Dim>>; 43 : 44 0 : virtual std::unique_ptr<BoundaryCorrection<Dim>> get_clone() const = 0; 45 : }; 46 : } // namespace NewtonianEuler::BoundaryCorrections