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 "PointwiseFunctions/InitialDataUtilities/Background.hpp"
10 : #include "PointwiseFunctions/InitialDataUtilities/InitialGuess.hpp"
11 : #include "Utilities/Serialization/CharmPupable.hpp"
12 :
13 1 : namespace elliptic::analytic_data {
14 : /*!
15 : * \brief Subclasses represent analytic solutions of elliptic systems.
16 : *
17 : * Subclasses must define the compile-time interfaces of both
18 : * `elliptic::analytic_data::InitialGuess` and
19 : * `elliptic::analytic_data::Background`.
20 : *
21 : * The combined set of system variables and background fields must solve the
22 : * elliptic PDEs. Subclasses must list all additional requirements needed so
23 : * they solve the elliptic PDEs in the class documentation and in their option
24 : * help-string.
25 : */
26 1 : class AnalyticSolution : public elliptic::analytic_data::InitialGuess,
27 : public elliptic::analytic_data::Background {
28 : protected:
29 0 : AnalyticSolution() = default;
30 :
31 : public:
32 0 : ~AnalyticSolution() override = default;
33 :
34 : /// \cond
35 : explicit AnalyticSolution(CkMigrateMessage* msg) : PUP::able(msg) {}
36 : WRAPPED_PUPable_abstract(AnalyticSolution);
37 : /// \endcond
38 :
39 0 : virtual std::unique_ptr<AnalyticSolution> get_clone() const = 0;
40 : };
41 : } // namespace elliptic::analytic_data
|