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 UpwindPenalty;
17 /// \endcond
18 
19 /*!
20  * \brief The base class used to make boundary corrections factory createable so
21  * they can be specified in the input file.
22  */
23 template <size_t Dim>
24 class BoundaryCorrection : public PUP::able {
25  public:
26  BoundaryCorrection() = default;
27  BoundaryCorrection(const BoundaryCorrection&) = default;
28  BoundaryCorrection& operator=(const BoundaryCorrection&) = default;
30  BoundaryCorrection& operator=(BoundaryCorrection&&) = default;
31  ~BoundaryCorrection() override = default;
32 
33  /// \cond
34  explicit BoundaryCorrection(CkMigrateMessage* msg) noexcept
35  : PUP::able(msg) {}
37  /// \endcond
38 
39  using creatable_classes = tmpl::list<UpwindPenalty<Dim>>;
40 
41  virtual std::unique_ptr<BoundaryCorrection<Dim>> get_clone()
42  const noexcept = 0;
43 };
44 } // namespace ScalarWave::BoundaryCorrections
CharmPupable.hpp
ScalarWave::BoundaryCorrections::BoundaryCorrection
The base class used to make boundary corrections factory createable so they can be specified in the i...
Definition: BoundaryCorrection.hpp:24
WRAPPED_PUPable_abstract
#define WRAPPED_PUPable_abstract(className)
Wraps the Charm++ macro, see the Charm++ documentation.
Definition: CharmPupable.hpp:41
ScalarWave::BoundaryCorrections
Boundary corrections/numerical fluxes.
Definition: BoundaryCorrection.hpp:13
memory
std::unique_ptr
ScalarWave::BoundaryCorrections::UpwindPenalty
Computes the scalar wave upwind multipenalty boundary correction.
Definition: UpwindPenalty.hpp:174
TMPL.hpp