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 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 class BoundaryCorrection : public PUP::able {
29  public:
30  BoundaryCorrection() = default;
31  BoundaryCorrection(const BoundaryCorrection&) = default;
32  BoundaryCorrection& operator=(const BoundaryCorrection&) = default;
34  BoundaryCorrection& operator=(BoundaryCorrection&&) = default;
35  ~BoundaryCorrection() override = default;
36 
37  /// \cond
38  explicit BoundaryCorrection(CkMigrateMessage* msg) noexcept
39  : PUP::able(msg) {}
41  /// \endcond
42 
43  using creatable_classes = tmpl::list<Hll<Dim>, Hllc<Dim>, Rusanov<Dim>>;
44 
45  virtual std::unique_ptr<BoundaryCorrection<Dim>> get_clone()
46  const noexcept = 0;
47 };
48 } // namespace NewtonianEuler::BoundaryCorrections
CharmPupable.hpp
NewtonianEuler::BoundaryCorrections::Hll
An HLL (Harten-Lax-van Leer) Riemann solver for NewtonianEuler system.
Definition: Hll.hpp:83
NewtonianEuler::BoundaryCorrections
Boundary corrections/numerical fluxes.
Definition: BoundaryCorrection.hpp:13
WRAPPED_PUPable_abstract
#define WRAPPED_PUPable_abstract(className)
Wraps the Charm++ macro, see the Charm++ documentation.
Definition: CharmPupable.hpp:41
NewtonianEuler::BoundaryCorrections::Hllc
The HLLC (Harten-Lax-van Leer-Contact) Riemann solver for the NewtonianEuler system.
Definition: Hllc.hpp:170
memory
NewtonianEuler::BoundaryCorrections::BoundaryCorrection
The base class used to create boundary corrections from input files and store them in the global cach...
Definition: BoundaryCorrection.hpp:28
NewtonianEuler::BoundaryCorrections::Rusanov
A Rusanov/local Lax-Friedrichs Riemann solver.
Definition: Rusanov.hpp:65
std::unique_ptr
TMPL.hpp