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 Hll;
16 class Rusanov;
17 /// \endcond
18 
19 /*!
20  * \brief The base class used to create boundary corrections from input files
21  * and store them in the global cache.
22  */
23 class BoundaryCorrection : public PUP::able {
24  public:
25  BoundaryCorrection() = default;
26  BoundaryCorrection(const BoundaryCorrection&) = default;
27  BoundaryCorrection& operator=(const BoundaryCorrection&) = default;
29  BoundaryCorrection& operator=(BoundaryCorrection&&) = default;
30  ~BoundaryCorrection() override = default;
31 
32  explicit BoundaryCorrection(CkMigrateMessage* msg) noexcept
33  : PUP::able(msg) {}
34 
35  /// \cond
37  /// \endcond
38 
39  using creatable_classes = tmpl::list<Hll, Rusanov>;
40 
41  virtual std::unique_ptr<BoundaryCorrection> get_clone() const noexcept = 0;
42 };
43 } // namespace Burgers::BoundaryCorrections
CharmPupable.hpp
Burgers::BoundaryCorrections::Hll
An HLL (Harten-Lax-van Leer) Riemann solver.
Definition: Hll.hpp:66
Burgers::BoundaryCorrections::Rusanov
A Rusanov/local Lax-Friedrichs Riemann solver.
Definition: Rusanov.hpp:51
WRAPPED_PUPable_abstract
#define WRAPPED_PUPable_abstract(className)
Wraps the Charm++ macro, see the Charm++ documentation.
Definition: CharmPupable.hpp:41
Burgers::BoundaryCorrections::BoundaryCorrection
The base class used to create boundary corrections from input files and store them in the global cach...
Definition: BoundaryCorrection.hpp:23
memory
Burgers::BoundaryCorrections
Boundary corrections/numerical fluxes.
Definition: BoundaryCorrection.hpp:13
std::unique_ptr
TMPL.hpp