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 : 8 : #include "DataStructures/VariablesTag.hpp" 9 : #include "Evolution/Systems/Cce/Tags.hpp" 10 : #include "Utilities/TMPL.hpp" 11 : 12 : namespace Cce { 13 : 14 : /*! 15 : * \brief Performing Cauchy characteristic evolution and Cauchy characteristic 16 : * matching for Einstein-Klein-Gordon system. 17 : * 18 : * \details The code adopts the characteristic formulation to solve the field 19 : * equations for scalar-tensor theory as considered in \cite Ma2023sok. Working 20 : * in the Einstein frame, a real-valued scalar field \f$\psi\f$ is minimally 21 : * coupled with the spacetime metric \f$g_{\mu\nu}\f$. The corresponding action 22 : * is expressed as follows: 23 : * 24 : * \f[ 25 : * S = \int d^4x \sqrt{-g} \left(\frac{R}{16 \pi} - \frac{1}{2} \nabla_\mu \psi 26 : * \nabla^\mu \psi\right). 27 : * \f] 28 : * 29 : * The system consists of two sectors: scalar and tensor (metric). The scalar 30 : * field follows the Klein-Gordon (KG) equation 31 : * 32 : * \f[ 33 : * \Box \psi = 0. 34 : * \f] 35 : * 36 : * Its characteristic expression is given in \cite Barreto2004fn, yielding 37 : * the hypersurface equation for \f$\partial_u\psi=\Pi\f$, where 38 : * \f$\partial_u\f$ represents differentiation with respect to retarded time $u$ 39 : * at fixed numerical radius \f$y\f$. The code first integrates the KG equation 40 : * radially to determine \f$\Pi\f$. Subsequently, the time integration is 41 : * performed to evolve the scalar field \f$\psi\f$ forward in time. 42 : * 43 : * The tensor (metric) sector closely aligns with the current GR CCE system, 44 : * incorporating additional source terms that depend only on the scalar field 45 : * \f$\psi\f$ and its spatial derivatives, rather than its time derivative 46 : * \f$(\Pi)\f$. This feature preserves the hierarchical structure of the 47 : * equations. As a result, the Einstein-Klein-Gordon system can be divided into 48 : * three major sequential steps: 49 : * - Integrate the metric hypersurface equations with the existing 50 : * infrastructure 51 : * - Integrate the KG equation for \f$\Pi\f$ 52 : * - Evolve two variables, \f$\psi\f$ (scalar) and \f$J\f$ (tensor) to the next 53 : * time step 54 : * 55 : */ 56 : template <bool EvolveCcm> 57 1 : struct KleinGordonSystem { 58 0 : static constexpr size_t volume_dim = 3; 59 0 : using variables_tag = tmpl::list< 60 : ::Tags::Variables<tmpl::list<Tags::BondiJ, Tags::KleinGordonPsi>>, 61 : ::Tags::Variables<tmpl::conditional_t< 62 : EvolveCcm, 63 : tmpl::list<Cce::Tags::CauchyCartesianCoords, 64 : Cce::Tags::PartiallyFlatCartesianCoords, 65 : Cce::Tags::InertialRetardedTime>, 66 : tmpl::list<Cce::Tags::CauchyCartesianCoords, 67 : Cce::Tags::InertialRetardedTime>>>>; 68 : 69 0 : static constexpr bool has_primitive_and_conservative_vars = false; 70 : }; 71 : } // namespace Cce