|
SpECTRE
v2026.06.30
|
Items related to evolving the second-order scalar wave equations. More...
Namespaces | |
| namespace | Solutions |
| Holds analytic solutions to the second-order-in-space formulation of the Euclidean wave equation. | |
| namespace | Tags |
| Tags for the second-order ScalarWave evolution system. | |
Classes | |
| struct | System |
| struct | TimeDerivative |
| Compute the time derivatives for the second-order scalar wave system. More... | |
Functions | |
| template<size_t Dim> | |
| std::array< DataVector, 3 > | characteristic_speeds (const tnsr::i< DataVector, Dim, Frame::Inertial > &unit_normal_one_form) |
| Compute the characteristic speeds for the second-order scalar wave system. | |
| template<size_t Dim> | |
| void | characteristic_speeds (gsl::not_null< std::array< DataVector, 3 > * > char_speeds, const tnsr::i< DataVector, Dim, Frame::Inertial > &unit_normal_one_form) |
| Compute the characteristic speeds for the second-order scalar wave system. | |
| template<size_t Dim> | |
| Variables< tmpl::list< Tags::VZero< Dim >, Tags::VPlus, Tags::VMinus > > | characteristic_fields (const Scalar< DataVector > &pi, const tnsr::i< DataVector, Dim, Frame::Inertial > &phi, const tnsr::i< DataVector, Dim, Frame::Inertial > &unit_normal_one_form) |
| Computes characteristic fields from evolved fields for the second-order scalar wave system. | |
| template<size_t Dim> | |
| void | characteristic_fields (gsl::not_null< Variables< tmpl::list< Tags::VZero< Dim >, Tags::VPlus, Tags::VMinus > > * > char_fields, const Scalar< DataVector > &pi, const tnsr::i< DataVector, Dim, Frame::Inertial > &phi, const tnsr::i< DataVector, Dim, Frame::Inertial > &unit_normal_one_form) |
| Computes characteristic fields from evolved fields for the second-order scalar wave system. | |
| template<size_t Dim> | |
| Variables< tmpl::list< Tags::Pi, Tags::Phi< Dim > > > | fields_from_inverse_characteristic_transform (const tnsr::i< DataVector, Dim, Frame::Inertial > &v_zero, const Scalar< DataVector > &v_plus, const Scalar< DataVector > &v_minus, const tnsr::i< DataVector, Dim, Frame::Inertial > &unit_normal_one_form) |
| Reconstruct the fields \((\Pi, \Phi_i)\) from the characteristic fields. | |
| template<size_t Dim> | |
| void | fields_from_inverse_characteristic_transform (gsl::not_null< Variables< tmpl::list< Tags::Pi, Tags::Phi< Dim > > > * > evolved_fields, const tnsr::i< DataVector, Dim, Frame::Inertial > &v_zero, const Scalar< DataVector > &v_plus, const Scalar< DataVector > &v_minus, const tnsr::i< DataVector, Dim, Frame::Inertial > &unit_normal_one_form) |
| Reconstruct the fields \((\Pi, \Phi_i)\) from the characteristic fields. | |
Items related to evolving the second-order scalar wave equations.
\begin{align*}\partial_t \Psi &= -\Pi \\ \partial_t \Pi &= -\delta^{ij}\partial_i \partial_j \Psi \end{align*}
| Variables< tmpl::list< Tags::VZero< Dim >, Tags::VPlus, Tags::VMinus > > SecondOrderScalarWave::characteristic_fields | ( | const Scalar< DataVector > & | pi, |
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | phi, | ||
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | unit_normal_one_form ) |
Computes characteristic fields from evolved fields for the second-order scalar wave system.
The characteristic fields are given in terms of the evolved fields by:
\begin{align*}v^0_{i} =& (\delta^k_i - n_i n^k) \Phi_{k} \\ v^{\pm} =& \Pi \pm n^i \Phi_{i} \end{align*}
where \(n_i\) is the unit normal along which the characteristic fields are defined. Note that, unlike the first-order scalar wave system, there is no characteristic field corresponding to \(\Psi\) (see [92]).
The corresponding characteristic speeds are computed by Tags::CharacteristicSpeedsCompute . The inverse transform, reconstructing \((\Pi, \Phi_i)\) from the characteristic fields, is computed by Tags::FieldsFromInverseCharacteristicTransformCompute .
| void SecondOrderScalarWave::characteristic_fields | ( | gsl::not_null< Variables< tmpl::list< Tags::VZero< Dim >, Tags::VPlus, Tags::VMinus > > * > | char_fields, |
| const Scalar< DataVector > & | pi, | ||
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | phi, | ||
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | unit_normal_one_form ) |
Computes characteristic fields from evolved fields for the second-order scalar wave system.
The characteristic fields are given in terms of the evolved fields by:
\begin{align*}v^0_{i} =& (\delta^k_i - n_i n^k) \Phi_{k} \\ v^{\pm} =& \Pi \pm n^i \Phi_{i} \end{align*}
where \(n_i\) is the unit normal along which the characteristic fields are defined. Note that, unlike the first-order scalar wave system, there is no characteristic field corresponding to \(\Psi\) (see [92]).
The corresponding characteristic speeds are computed by Tags::CharacteristicSpeedsCompute . The inverse transform, reconstructing \((\Pi, \Phi_i)\) from the characteristic fields, is computed by Tags::FieldsFromInverseCharacteristicTransformCompute .
| std::array< DataVector, 3 > SecondOrderScalarWave::characteristic_speeds | ( | const tnsr::i< DataVector, Dim, Frame::Inertial > & | unit_normal_one_form | ) |
Compute the characteristic speeds for the second-order scalar wave system.
The characteristic fields are, in order, \(v^0_i\) (Tags::VZero), \(v^+\) (Tags::VPlus), and \(v^-\) (Tags::VMinus). Their characteristic speeds are 0, +1, and -1, respectively.
| void SecondOrderScalarWave::characteristic_speeds | ( | gsl::not_null< std::array< DataVector, 3 > * > | char_speeds, |
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | unit_normal_one_form ) |
Compute the characteristic speeds for the second-order scalar wave system.
The characteristic fields are, in order, \(v^0_i\) (Tags::VZero), \(v^+\) (Tags::VPlus), and \(v^-\) (Tags::VMinus). Their characteristic speeds are 0, +1, and -1, respectively.
| Variables< tmpl::list< Tags::Pi, Tags::Phi< Dim > > > SecondOrderScalarWave::fields_from_inverse_characteristic_transform | ( | const tnsr::i< DataVector, Dim, Frame::Inertial > & | v_zero, |
| const Scalar< DataVector > & | v_plus, | ||
| const Scalar< DataVector > & | v_minus, | ||
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | unit_normal_one_form ) |
Reconstruct the fields \((\Pi, \Phi_i)\) from the characteristic fields.
This uses the inverse of the relations in Tags::CharacteristicFieldsCompute :
\begin{align*}\Pi =& \frac{1}{2}(v^+ + v^-), \\ \Phi_{i} =& \frac{1}{2}(v^+ - v^-) n_i + v^0_{i}. \end{align*}
The scalar field \(\Psi\) is not reconstructed because it is not part of the characteristic decomposition of the second-order scalar wave system.
| void SecondOrderScalarWave::fields_from_inverse_characteristic_transform | ( | gsl::not_null< Variables< tmpl::list< Tags::Pi, Tags::Phi< Dim > > > * > | evolved_fields, |
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | v_zero, | ||
| const Scalar< DataVector > & | v_plus, | ||
| const Scalar< DataVector > & | v_minus, | ||
| const tnsr::i< DataVector, Dim, Frame::Inertial > & | unit_normal_one_form ) |
Reconstruct the fields \((\Pi, \Phi_i)\) from the characteristic fields.
This uses the inverse of the relations in Tags::CharacteristicFieldsCompute :
\begin{align*}\Pi =& \frac{1}{2}(v^+ + v^-), \\ \Phi_{i} =& \frac{1}{2}(v^+ - v^-) n_i + v^0_{i}. \end{align*}
The scalar field \(\Psi\) is not reconstructed because it is not part of the characteristic decomposition of the second-order scalar wave system.