Line data Source code
1 0 : // Distributed under the MIT License.
2 : // See LICENSE.txt for details.
3 :
4 : #pragma once
5 :
6 : #include <cstddef>
7 : #include <memory>
8 : #include <pup.h>
9 :
10 : #include "Evolution/Systems/CurvedScalarWave/Tags.hpp"
11 : #include "Utilities/Serialization/CharmPupable.hpp"
12 : #include "Utilities/TMPL.hpp"
13 :
14 : /*!
15 : * \ingroup AnalyticDataGroup
16 : * \brief Holds analytic profiles for the scalar field in scalar-tensor
17 : * theories.
18 : */
19 1 : namespace ScalarTensor::AnalyticData::ScalarField {
20 :
21 : /*!
22 : * \brief Base struct representing the analytic profile for the scalar field in
23 : * scalar-tensor theories.
24 : */
25 : template <size_t Dim>
26 1 : struct AnalyticData : public virtual PUP::able {
27 : public:
28 0 : using scalar_field_tags =
29 : tmpl::list<CurvedScalarWave::Tags::Psi,
30 : CurvedScalarWave::Tags::Phi<Dim, Frame::Inertial>>;
31 :
32 : protected:
33 0 : AnalyticData() = default;
34 :
35 : public:
36 0 : ~AnalyticData() override = default;
37 :
38 : /// \cond
39 : explicit AnalyticData(CkMigrateMessage* msg) : PUP::able(msg) {}
40 : WRAPPED_PUPable_abstract(AnalyticData);
41 : /// \endcond
42 :
43 0 : virtual std::unique_ptr<AnalyticData> get_clone() const = 0;
44 : };
45 :
46 : } // namespace ScalarTensor::AnalyticData::ScalarField
|