BoundaryCorrection.hpp
1 // Distributed under the MIT License.
2 // See LICENSE.txt for details.
3 
4 #pragma once
5 
6 #include <memory>
7 #include <pup.h>
8 
10 #include "Utilities/TMPL.hpp"
11 
12 /// Boundary corrections/numerical fluxes
14 /// \cond
15 class Rusanov;
16 /// \endcond
17 
18 /*!
19  * \brief The base class used to make boundary corrections factory createable so
20  * they can be specified in the input file.
21  */
22 class BoundaryCorrection : public PUP::able {
23  public:
24  BoundaryCorrection() = default;
25  BoundaryCorrection(const BoundaryCorrection&) = default;
26  BoundaryCorrection& operator=(const BoundaryCorrection&) = default;
28  BoundaryCorrection& operator=(BoundaryCorrection&&) = default;
29  ~BoundaryCorrection() override = default;
30 
31  /// \cond
33  /// \endcond
34 
35  using creatable_classes = tmpl::list<Rusanov>;
36 
37  virtual std::unique_ptr<BoundaryCorrection> get_clone() const noexcept = 0;
38 };
39 } // namespace grmhd::ValenciaDivClean::BoundaryCorrections
CharmPupable.hpp
WRAPPED_PUPable_abstract
#define WRAPPED_PUPable_abstract(className)
Wraps the Charm++ macro, see the Charm++ documentation.
Definition: CharmPupable.hpp:41
memory
grmhd::ValenciaDivClean::BoundaryCorrections
Boundary corrections/numerical fluxes.
Definition: BoundaryCorrection.hpp:13
grmhd::ValenciaDivClean::BoundaryCorrections::Rusanov
A Rusanov/local Lax-Friedrichs Riemann solver.
Definition: Rusanov.hpp:69
std::unique_ptr
grmhd::ValenciaDivClean::BoundaryCorrections::BoundaryCorrection
The base class used to make boundary corrections factory createable so they can be specified in the i...
Definition: BoundaryCorrection.hpp:22
TMPL.hpp