Line data Source code
1 0 : // Distributed under the MIT License. 2 : // See LICENSE.txt for details. 3 : 4 : #pragma once 5 : 6 : #include "DataStructures/Tensor/Tensor.hpp" 7 : #include "Utilities/Gsl.hpp" 8 : 9 : namespace ScalarTensor { 10 : 11 : /*! 12 : * \brief Add in the source term to the \f$\Pi\f$ 13 : * evolved variable of the ::CurvedScalarWave system. 14 : * 15 : * \details The only source term in the wave equation 16 : * \f[ 17 : * \Box \Psi = \mathcal{S} ~, 18 : * \f] 19 : * 20 : * is in the equation for \f$\Pi\f$: 21 : * \f[ 22 : * \partial_t \Pi + \text{\{spatial derivative 23 : * terms\}} = \alpha \mathcal{S} 24 : * ~, 25 : * \f] 26 : * 27 : * where \f$\mathcal{S}\f$ is the source term (e. g. in the Klein-Gordon 28 : * equation, the source term is the derivative of the scalar potential 29 : * \f$\mathcal{S} \equiv \partial V / \partial \Psi \f$.) 30 : * 31 : * This function adds that contribution to the existing value of `dt_pi_scalar`. 32 : * The wave equation terms in the scalar equation should be computed before 33 : * passing the `dt_pi_scalar` to this function for updating. 34 : * 35 : * \param dt_pi_scalar Time derivative terms of $\Pi$. The sourceless part 36 : * should be computed before with ::CurvedScalarWave::TimeDerivative. 37 : * \param scalar_source Source term $\mathcal{S}$ for the scalar equation. 38 : * \param lapse Lapse $\alpha$. 39 : * 40 : * \see `CurvedScalarWave::TimeDerivative` for details about the source-less 41 : * part of the time derivative calculation. 42 : */ 43 1 : void add_scalar_source_to_dt_pi_scalar( 44 : gsl::not_null<Scalar<DataVector>*> dt_pi_scalar, 45 : const Scalar<DataVector>& scalar_source, const Scalar<DataVector>& lapse); 46 : 47 : /*! 48 : * \brief Computes the source term given by the mass of the scalar. 49 : * 50 : * \details For a scalar field with mass parameter \f$ m_\Psi \f$, 51 : * the wave equation takes the form 52 : * \f[ 53 : * \Box \Psi = \mathcal{S} ~, 54 : * \f] 55 : * 56 : * where the source is given by 57 : * \f[ 58 : * \mathcal{S} \equiv m^2_\Psi \Psi~. 59 : * \f] 60 : * 61 : * Here the mass parameter value is an option that needs to be specified in the 62 : * input file. 63 : * 64 : * \param scalar_source Source term $\mathcal{S}$ for the scalar equation. 65 : * \param psi Scalar field $\Psi$. 66 : * \param mass_psi Mass of the scalar field $m_\Psi$. 67 : * 68 : * \see `ScalarTensor::Tags::ScalarMass` for details about the mass. 69 : */ 70 1 : void mass_source(gsl::not_null<Scalar<DataVector>*> scalar_source, 71 : const Scalar<DataVector>& psi, double mass_psi); 72 : 73 : } // namespace ScalarTensor