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