Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <pup.h>
7 :
8 : #include "Utilities/Serialization/CharmPupable.hpp"
9 :
10 : /// Items related to pointwise analytic data for elliptic solves, such as
11 : /// initial guesses, analytic solutions, and background quantities in elliptic
12 : /// PDEs
13 : namespace elliptic::analytic_data {
14 : /*!
15 : * \brief Subclasses represent an initial guess for an elliptic solve.
16 : *
17 : * Subclasses must define the following compile-time interface:
18 : *
19 : * - They are option-creatable.
20 : * - They define a `variables` function that can provide data for all variables
21 : * that are being solved for. Specifically the function must have this
22 : * signature:
23 : *
24 : * \snippet Test_InitializeFields.cpp initial_guess_vars_fct
25 : *
26 : * It must support being called with a `tmpl::list` of all tags that are being
27 : * solved for. For this purpose it can be convenient to template the function
28 : * on the set of requested tags.
29 : */
30 1 : class InitialGuess : public virtual PUP::able {
31 : protected:
32 0 : InitialGuess() = default;
33 :
34 : public:
35 0 : ~InitialGuess() override = default;
36 :
37 : /// \cond
38 : explicit InitialGuess(CkMigrateMessage* msg) : PUP::able(msg) {}
39 : WRAPPED_PUPable_abstract(InitialGuess);
40 : /// \endcond
41 : };
42 : } // namespace elliptic::analytic_data
|