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