|
SpECTRE
v2025.08.19
|
Holds functions related to general relativity. More...
Namespaces | |
| namespace | AnalyticData |
| Classes which implement analytic data for general relativity. | |
| namespace | Solutions |
| Classes which implement analytic solutions to Einstein's equations. | |
Classes | |
| struct | AnalyticDataBase |
| Base struct for properties common to all GR analytic data classes. More... | |
| struct | AnalyticSolution |
| Base struct for properties common to all GR analytic solutions. More... | |
| class | KerrSchildCoords |
| Contains helper functions for transforming tensors in Kerr spacetime to Kerr-Schild coordinates. More... | |
Typedefs | |
| template<size_t Dim, typename DataType > | |
| using | tags_for_hydro = tmpl::list< gr::Tags::Lapse< DataType >, gr::Tags::Shift< DataType, Dim >, gr::Tags::SpatialMetric< DataType, Dim >, gr::Tags::InverseSpatialMetric< DataType, Dim >, gr::Tags::SqrtDetSpatialMetric< DataType >, ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< Dim >, Frame::Inertial >, ::Tags::deriv< gr::Tags::Shift< DataType, Dim >, tmpl::size_t< Dim >, Frame::Inertial >, ::Tags::deriv< gr::Tags::SpatialMetric< DataType, Dim >, tmpl::size_t< Dim >, Frame::Inertial >, gr::Tags::ExtrinsicCurvature< DataType, Dim > > |
| GR Tags commonly needed for the evolution of hydro systems. | |
| template<size_t Dim, typename DataType > | |
| using | analytic_solution_tags = tmpl::list< gr::Tags::Lapse< DataType >, ::Tags::dt< gr::Tags::Lapse< DataType > >, ::Tags::deriv< gr::Tags::Lapse< DataType >, tmpl::size_t< Dim >, Frame::Inertial >, gr::Tags::Shift< DataType, Dim >, ::Tags::dt< gr::Tags::Shift< DataType, Dim > >, ::Tags::deriv< gr::Tags::Shift< DataType, Dim >, tmpl::size_t< Dim >, Frame::Inertial >, gr::Tags::SpatialMetric< DataType, Dim >, ::Tags::dt< gr::Tags::SpatialMetric< DataType, Dim > >, ::Tags::deriv< gr::Tags::SpatialMetric< DataType, Dim >, tmpl::size_t< Dim >, Frame::Inertial >, gr::Tags::SqrtDetSpatialMetric< DataType >, gr::Tags::ExtrinsicCurvature< DataType, Dim >, gr::Tags::InverseSpatialMetric< DataType, Dim > > |
| The tags for the variables returned by GR analytic solutions. | |
Functions | |
| template<typename DataType , size_t Dim, typename Frame > | |
| void | geodesic_equation (gsl::not_null< tnsr::I< DataType, Dim, Frame > * > dt_x, gsl::not_null< tnsr::i< DataType, Dim, Frame > * > dt_pi, gsl::not_null< Scalar< DataType > * > dt_lnp0, const tnsr::I< DataType, Dim, Frame > &x, const tnsr::i< DataType, Dim, Frame > &pi, const Scalar< DataType > &lnp0, const Scalar< DataType > &lapse, const tnsr::i< DataType, Dim, Frame > &deriv_lapse, const tnsr::I< DataType, Dim, Frame > &shift, const tnsr::iJ< DataType, Dim, Frame > &deriv_shift, const tnsr::II< DataType, Dim, Frame > &inv_spatial_metric, const tnsr::iJJ< DataType, Dim, Frame > &deriv_inv_spatial_metric, const tnsr::ii< DataType, Dim, Frame > &extrinsic_curvature) |
| First-order formulation of the geodesic equation for null geodesics that is suitable for ray tracing. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::A< DataType, VolumeDim, Frame > | interface_null_normal (const tnsr::A< DataType, VolumeDim, Frame > &spacetime_normal_vector, const tnsr::I< DataType, VolumeDim, Frame > &interface_unit_normal_vector, double sign) |
| Compute null normal vector to the boundary of a closed region in a spatial slice of spacetime. More... | |
| bool | operator!= (const KerrSchildCoords &lhs, const KerrSchildCoords &rhs) |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::ii< DataType, VolumeDim, Frame > | transverse_projection_operator (const tnsr::ii< DataType, VolumeDim, Frame > &spatial_metric, const tnsr::i< DataType, VolumeDim, Frame > &normal_one_form) |
| Compute projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::Ij< DataType, VolumeDim, Frame > | transverse_projection_operator (const tnsr::I< DataType, VolumeDim, Frame > &normal_vector, const tnsr::i< DataType, VolumeDim, Frame > &normal_one_form) |
| Compute projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::AA< DataType, VolumeDim, Frame > | transverse_projection_operator (const tnsr::AA< DataType, VolumeDim, Frame > &inverse_spacetime_metric, const tnsr::A< DataType, VolumeDim, Frame > &spacetime_normal_vector, const tnsr::I< DataType, VolumeDim, Frame > &interface_unit_normal_vector) |
| Compute spacetime projection operator onto an interface. More... | |
| template<typename DataType > | |
| DataType | tortoise_radius_from_boyer_lindquist_minus_r_plus (const DataType &r_minus_r_plus, double mass, double dimensionless_spin) |
| Computes the tortoise coordinates radius from the Boyer-Lindquist radius. More... | |
| template<typename DataType > | |
| DataType | boyer_lindquist_radius_minus_r_plus_from_tortoise (const DataType &r_star, double mass, double dimensionless_spin) |
| Computes the Boyer-Lindquist radius from tortoise coordinates. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| void | christoffel_first_kind (gsl::not_null< tnsr::abb< DataType, SpatialDim, Frame, Index > * > christoffel, const tnsr::abb< DataType, SpatialDim, Frame, Index > &d_metric) |
| Computes Christoffel symbol of the first kind from derivative of metric. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| tnsr::abb< DataType, SpatialDim, Frame, Index > | christoffel_first_kind (const tnsr::abb< DataType, SpatialDim, Frame, Index > &d_metric) |
| Computes Christoffel symbol of the first kind from derivative of metric. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| void | christoffel_second_kind (gsl::not_null< tnsr::Abb< DataType, SpatialDim, Frame, Index > * > christoffel, const tnsr::abb< DataType, SpatialDim, Frame, Index > &d_metric, const tnsr::AA< DataType, SpatialDim, Frame, Index > &inverse_metric) |
| Computes Christoffel symbol of the second kind from derivative of metric and the inverse metric. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| auto | christoffel_second_kind (const tnsr::abb< DataType, SpatialDim, Frame, Index > &d_metric, const tnsr::AA< DataType, SpatialDim, Frame, Index > &inverse_metric) -> tnsr::Abb< DataType, SpatialDim, Frame, Index > |
| Computes Christoffel symbol of the second kind from derivative of metric and the inverse metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | derivatives_of_spacetime_metric (gsl::not_null< tnsr::abb< DataType, SpatialDim, Frame > * > spacetime_deriv_spacetime_metric, const Scalar< DataType > &lapse, const Scalar< DataType > &dt_lapse, const tnsr::i< DataType, SpatialDim, Frame > &deriv_lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::I< DataType, SpatialDim, Frame > &dt_shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &dt_spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric) |
| Computes spacetime derivative of spacetime metric from spatial metric, lapse, shift, and their space and time derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::abb< DataType, SpatialDim, Frame > | derivatives_of_spacetime_metric (const Scalar< DataType > &lapse, const Scalar< DataType > &dt_lapse, const tnsr::i< DataType, SpatialDim, Frame > &deriv_lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::I< DataType, SpatialDim, Frame > &dt_shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &dt_spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric) |
| Computes spacetime derivative of spacetime metric from spatial metric, lapse, shift, and their space and time derivatives. More... | |
| template<typename DataType , size_t Dim, typename Frame > | |
| void | deriv_inverse_spatial_metric (gsl::not_null< tnsr::iJJ< DataType, Dim, Frame > * > result, const tnsr::II< DataType, Dim, Frame > &inverse_spatial_metric, const tnsr::ijj< DataType, Dim, Frame > &d_spatial_metric) |
| Computes the spatial derivative of the inverse spatial metric from the inverse spatial metric and the spatial derivative of the spatial metric. More... | |
| template<typename DataType , size_t Dim, typename Frame > | |
| tnsr::iJJ< DataType, Dim, Frame > | deriv_inverse_spatial_metric (const tnsr::II< DataType, Dim, Frame > &inverse_spatial_metric, const tnsr::ijj< DataType, Dim, Frame > &d_spatial_metric) |
| Computes the spatial derivative of the inverse spatial metric from the inverse spatial metric and the spatial derivative of the spatial metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ii< DataType, SpatialDim, Frame > | extrinsic_curvature (const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &dt_spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric) |
| Computes extrinsic curvature from metric and derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | extrinsic_curvature (gsl::not_null< tnsr::ii< DataType, SpatialDim, Frame > * > ex_curvature, const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &dt_spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric) |
| Computes extrinsic curvature from metric and derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ijj< DataType, SpatialDim, Frame > | covariant_derivative_of_extrinsic_curvature (const tnsr::ijj< DataType, SpatialDim, Frame > &d_ex_curv, const tnsr::ii< DataType, SpatialDim, Frame > &ex_curv, const tnsr::Ijj< DataType, SpatialDim, Frame > &spatial_christoffel_second_kind) |
| Computes the spatial covariant derivative of the extrinsic curvature. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | covariant_derivative_of_extrinsic_curvature (gsl::not_null< tnsr::ijj< DataType, SpatialDim, Frame > * > grad_ex_curv, const tnsr::ijj< DataType, SpatialDim, Frame > &d_ex_curv, const tnsr::ii< DataType, SpatialDim, Frame > &ex_curv, const tnsr::Ijj< DataType, SpatialDim, Frame > &spatial_christoffel_second_kind) |
| Computes the spatial covariant derivative of the extrinsic curvature. More... | |
| template<typename DataType , size_t Dim> | |
| void | geodesic_acceleration (gsl::not_null< tnsr::I< DataType, Dim > * > acceleration, const tnsr::I< DataType, Dim > &velocity, const tnsr::Abb< DataType, Dim > &christoffel_second_kind) |
| Computes the coordinate geodesic acceleration in the inertial frame. More... | |
| template<typename DataType , size_t Dim> | |
| tnsr::I< DataType, Dim > | geodesic_acceleration (const tnsr::I< DataType, Dim > &velocity, const tnsr::Abb< DataType, Dim > &christoffel_second_kind) |
| Computes the coordinate geodesic acceleration in the inertial frame. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::a< DataType, VolumeDim, Frame > | interface_null_normal (const tnsr::a< DataType, VolumeDim, Frame > &spacetime_normal_one_form, const tnsr::i< DataType, VolumeDim, Frame > &interface_unit_normal_one_form, double sign) |
| Compute null normal one-form to the boundary of a closed region in a spatial slice of spacetime. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| void | interface_null_normal (gsl::not_null< tnsr::A< DataType, VolumeDim, Frame > * > null_vector, const tnsr::A< DataType, VolumeDim, Frame > &spacetime_normal_vector, const tnsr::I< DataType, VolumeDim, Frame > &interface_unit_normal_vector, double sign) |
| Compute null normal vector to the boundary of a closed region in a spatial slice of spacetime. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | inverse_spacetime_metric (gsl::not_null< tnsr::AA< DataType, SpatialDim, Frame > * > inverse_spacetime_metric, const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Compute inverse spacetime metric from inverse spatial metric, lapse and shift. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::AA< DataType, SpatialDim, Frame > | inverse_spacetime_metric (const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Compute inverse spacetime metric from inverse spatial metric, lapse and shift. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| Scalar< DataType > | lapse (const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric) |
| Compute lapse from shift and spacetime metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | lapse (gsl::not_null< Scalar< DataType > * > lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric) |
| Compute lapse from shift and spacetime metric. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::II< DataType, VolumeDim, Frame > | transverse_projection_operator (const tnsr::II< DataType, VolumeDim, Frame > &inverse_spatial_metric, const tnsr::I< DataType, VolumeDim, Frame > &normal_vector) |
| Compute projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| void | transverse_projection_operator (gsl::not_null< tnsr::ii< DataType, VolumeDim, Frame > * > projection_tensor, const tnsr::ii< DataType, VolumeDim, Frame > &spatial_metric, const tnsr::i< DataType, VolumeDim, Frame > &normal_one_form) |
| Compute projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::aa< DataType, VolumeDim, Frame > | transverse_projection_operator (const tnsr::aa< DataType, VolumeDim, Frame > &spacetime_metric, const tnsr::a< DataType, VolumeDim, Frame > &spacetime_normal_one_form, const tnsr::i< DataType, VolumeDim, Frame > &interface_unit_normal_one_form) |
| Compute spacetime projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| void | transverse_projection_operator (gsl::not_null< tnsr::AA< DataType, VolumeDim, Frame > * > projection_tensor, const tnsr::AA< DataType, VolumeDim, Frame > &inverse_spacetime_metric, const tnsr::A< DataType, VolumeDim, Frame > &spacetime_normal_vector, const tnsr::I< DataType, VolumeDim, Frame > &interface_unit_normal_vector) |
| Compute spacetime projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| tnsr::Ab< DataType, VolumeDim, Frame > | transverse_projection_operator (const tnsr::A< DataType, VolumeDim, Frame > &spacetime_normal_vector, const tnsr::a< DataType, VolumeDim, Frame > &spacetime_normal_one_form, const tnsr::I< DataType, VolumeDim, Frame > &interface_unit_normal_vector, const tnsr::i< DataType, VolumeDim, Frame > &interface_unit_normal_one_form) |
| Compute spacetime projection operator onto an interface. More... | |
| template<typename DataType , size_t VolumeDim, typename Frame > | |
| void | transverse_projection_operator (gsl::not_null< tnsr::Ab< DataType, VolumeDim, Frame > * > projection_tensor, const tnsr::A< DataType, VolumeDim, Frame > &spacetime_normal_vector, const tnsr::a< DataType, VolumeDim, Frame > &spacetime_normal_one_form, const tnsr::I< DataType, VolumeDim, Frame > &interface_unit_normal_vector, const tnsr::i< DataType, VolumeDim, Frame > &interface_unit_normal_one_form) |
| Compute spacetime projection operator onto an interface. More... | |
| template<typename Frame > | |
| void | psi_4 (gsl::not_null< Scalar< ComplexDataVector > * > psi_4_result, const tnsr::ii< DataVector, 3, Frame > &spatial_ricci, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature, const tnsr::ijj< DataVector, 3, Frame > &cov_deriv_extrinsic_curvature, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const tnsr::II< DataVector, 3, Frame > &inverse_spatial_metric, const tnsr::I< DataVector, 3, Frame > &inertial_coords) |
| Computes Newman Penrose quantity \(\Psi_4\) using the characteristic field U \(^{8+}\) and complex vector \(\bar{m}^i\). More... | |
| template<typename Frame > | |
| Scalar< ComplexDataVector > | psi_4 (const tnsr::ii< DataVector, 3, Frame > &spatial_ricci, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature, const tnsr::ijj< DataVector, 3, Frame > &cov_deriv_extrinsic_curvature, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const tnsr::II< DataVector, 3, Frame > &inverse_spatial_metric, const tnsr::I< DataVector, 3, Frame > &inertial_coords) |
| Computes Newman Penrose quantity \(\Psi_4\) using the characteristic field U \(^{8+}\) and complex vector \(\bar{m}^i\). More... | |
| template<typename Frame > | |
| void | psi_4_real (gsl::not_null< Scalar< DataVector > * > psi_4_real_result, const tnsr::ii< DataVector, 3, Frame > &spatial_ricci, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature, const tnsr::ijj< DataVector, 3, Frame > &cov_deriv_extrinsic_curvature, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const tnsr::II< DataVector, 3, Frame > &inverse_spatial_metric, const tnsr::I< DataVector, 3, Frame > &inertial_coords) |
| Computes the real part of the Newman Penrose quantity \(\Psi_4\) using \(\Psi_4[Real] = -0.5*U^{8+}_{ij}*(x^ix^j - y^iy^j)\). | |
| template<typename Frame > | |
| Scalar< DataVector > | psi_4_real (const tnsr::ii< DataVector, 3, Frame > &spatial_ricci, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature, const tnsr::ijj< DataVector, 3, Frame > &cov_deriv_extrinsic_curvature, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const tnsr::II< DataVector, 3, Frame > &inverse_spatial_metric, const tnsr::I< DataVector, 3, Frame > &inertial_coords) |
| Computes the real part of the Newman Penrose quantity \(\Psi_4\) using \(\Psi_4[Real] = -0.5*U^{8+}_{ij}*(x^ix^j - y^iy^j)\). | |
| template<typename Frame > | |
| void | pontryagin_scalar_in_vacuum (gsl::not_null< Scalar< DataVector > * > pontryagin_scalar, const tnsr::ii< DataVector, 3, Frame > &weyl_electric, const tnsr::ii< DataVector, 3, Frame > &weyl_magnetic, const tnsr::II< DataVector, 3, Frame > &inverse_spatial_metric) |
| Computes the Pontryagin scalar in vacuum. More... | |
| template<typename Frame > | |
| Scalar< DataVector > | pontryagin_scalar_in_vacuum (const tnsr::ii< DataVector, 3, Frame > &weyl_electric, const tnsr::ii< DataVector, 3, Frame > &weyl_magnetic, const tnsr::II< DataVector, 3, Frame > &inverse_spatial_metric) |
| Computes the Pontryagin scalar in vacuum. More... | |
| void | gauss_bonnet_scalar_in_vacuum (gsl::not_null< Scalar< DataVector > * > gb_scalar, const Scalar< DataVector > &weyl_electric_scalar, const Scalar< DataVector > &weyl_magnetic_scalar) |
| Computes Gauss-Bonnet scalar in vacuum. More... | |
| Scalar< DataVector > | gauss_bonnet_scalar_in_vacuum (const Scalar< DataVector > &weyl_electric_scalar, const Scalar< DataVector > &weyl_magnetic_scalar) |
| Computes Gauss-Bonnet scalar in vacuum. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| void | ricci_tensor (gsl::not_null< tnsr::aa< DataType, SpatialDim, Frame, Index > * > result, const tnsr::Abb< DataType, SpatialDim, Frame, Index > &christoffel_2nd_kind, const tnsr::aBcc< DataType, SpatialDim, Frame, Index > &d_christoffel_2nd_kind) |
| Computes Ricci tensor from the (spatial or spacetime) Christoffel symbol of the second kind and its derivative. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| tnsr::aa< DataType, SpatialDim, Frame, Index > | ricci_tensor (const tnsr::Abb< DataType, SpatialDim, Frame, Index > &christoffel_2nd_kind, const tnsr::aBcc< DataType, SpatialDim, Frame, Index > &d_christoffel_2nd_kind) |
| Computes Ricci tensor from the (spatial or spacetime) Christoffel symbol of the second kind and its derivative. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| void | ricci_scalar (gsl::not_null< Scalar< DataType > * > ricci_scalar_result, const tnsr::aa< DataType, SpatialDim, Frame, Index > &ricci_tensor, const tnsr::AA< DataType, SpatialDim, Frame, Index > &inverse_metric) |
| Computes the Ricci Scalar from the (spatial or spacetime) Ricci Tensor and inverse metrics. More... | |
| template<size_t SpatialDim, typename Frame , IndexType Index, typename DataType > | |
| Scalar< DataType > | ricci_scalar (const tnsr::aa< DataType, SpatialDim, Frame, Index > &ricci_tensor, const tnsr::AA< DataType, SpatialDim, Frame, Index > &inverse_metric) |
| Computes the Ricci Scalar from the (spatial or spacetime) Ricci Tensor and inverse metrics. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::I< DataType, SpatialDim, Frame > | shift (const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Compute shift from spacetime metric and inverse spatial metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | shift (gsl::not_null< tnsr::I< DataType, SpatialDim, Frame > * > shift, const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Compute shift from spacetime metric and inverse spatial metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | spacetime_deriv_of_goth_g (gsl::not_null< tnsr::aBB< DataType, SpatialDim, Frame > * > da_goth_g, const tnsr::AA< DataType, SpatialDim, Frame > &inverse_spacetime_metric, const tnsr::abb< DataType, SpatialDim, Frame > &da_spacetime_metric, const Scalar< DataType > &lapse, const tnsr::a< DataType, SpatialDim, Frame > &da_lapse, const Scalar< DataType > &sqrt_det_spatial_metric, const tnsr::a< DataType, SpatialDim, Frame > &da_det_spatial_metric) |
| Computes spacetime derivative of \( \mathfrak{g}^{ab}\equiv (-g)^{1/2} g^{ab} \). More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::aBB< DataType, SpatialDim, Frame > | spacetime_deriv_of_goth_g (const tnsr::AA< DataType, SpatialDim, Frame > &inverse_spacetime_metric, const tnsr::abb< DataType, SpatialDim, Frame > &da_spacetime_metric, const Scalar< DataType > &lapse, const tnsr::a< DataType, SpatialDim, Frame > &da_lapse, const Scalar< DataType > &sqrt_det_spatial_metric, const tnsr::a< DataType, SpatialDim, Frame > &da_det_spatial_metric) |
| Computes spacetime derivative of \( \mathfrak{g}^{ab}\equiv (-g)^{1/2} g^{ab} \). More... | |
| template<typename DataType , size_t Dim, typename Frame > | |
| void | spacetime_metric (gsl::not_null< tnsr::aa< DataType, Dim, Frame > * > spacetime_metric, const Scalar< DataType > &lapse, const tnsr::I< DataType, Dim, Frame > &shift, const tnsr::ii< DataType, Dim, Frame > &spatial_metric) |
| Computes the spacetime metric from the spatial metric, lapse, and shift. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::aa< DataType, SpatialDim, Frame > | spacetime_metric (const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric) |
| Computes the spacetime metric from the spatial metric, lapse, and shift. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | spacetime_normal_one_form (gsl::not_null< tnsr::a< DataType, SpatialDim, Frame > * > normal_one_form, const Scalar< DataType > &lapse) |
| Computes spacetime normal one-form from lapse. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::a< DataType, SpatialDim, Frame > | spacetime_normal_one_form (const Scalar< DataType > &lapse) |
| Computes spacetime normal one-form from lapse. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::A< DataType, SpatialDim, Frame > | spacetime_normal_vector (const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift) |
| Computes spacetime normal vector from lapse and shift. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | spacetime_normal_vector (gsl::not_null< tnsr::A< DataType, SpatialDim, Frame > * > spacetime_normal_vector, const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift) |
| Computes spacetime normal vector from lapse and shift. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ii< DataType, SpatialDim, Frame > | spatial_metric (const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric) |
| Compute spatial metric from spacetime metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | spatial_metric (gsl::not_null< tnsr::ii< DataType, SpatialDim, Frame > * > spatial_metric, const tnsr::aa< DataType, SpatialDim, Frame > &spacetime_metric) |
| Compute spatial metric from spacetime metric. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | time_derivative_of_spacetime_metric (gsl::not_null< tnsr::aa< DataType, SpatialDim, Frame > * > dt_spacetime_metric, const Scalar< DataType > &lapse, const Scalar< DataType > &dt_lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::I< DataType, SpatialDim, Frame > &dt_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &dt_spatial_metric) |
| Computes the time derivative of the spacetime metric from spatial metric, lapse, shift, and their time derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::aa< DataType, SpatialDim, Frame > | time_derivative_of_spacetime_metric (const Scalar< DataType > &lapse, const Scalar< DataType > &dt_lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::I< DataType, SpatialDim, Frame > &dt_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &dt_spatial_metric) |
| Computes the time derivative of the spacetime metric from spatial metric, lapse, shift, and their time derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | time_derivative_of_spatial_metric (gsl::not_null< tnsr::ii< DataType, SpatialDim, Frame > * > dt_spatial_metric, const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &extrinsic_curvature) |
| Computes the time derivative of the spatial metric from extrinsic curvature, lapse, shift, and their time derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ii< DataType, SpatialDim, Frame > | time_derivative_of_spatial_metric (const Scalar< DataType > &lapse, const tnsr::I< DataType, SpatialDim, Frame > &shift, const tnsr::iJ< DataType, SpatialDim, Frame > &deriv_shift, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &deriv_spatial_metric, const tnsr::ii< DataType, SpatialDim, Frame > &extrinsic_curvature) |
| Computes the time derivative of the spatial metric from extrinsic curvature, lapse, shift, and their time derivatives. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ii< DataType, SpatialDim, Frame > | weyl_electric (const tnsr::ii< DataType, SpatialDim, Frame > &spatial_ricci, const tnsr::ii< DataType, SpatialDim, Frame > &extrinsic_curvature, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes the electric part of the Weyl tensor in vacuum. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | weyl_electric (gsl::not_null< tnsr::ii< DataType, SpatialDim, Frame > * > weyl_electric_part, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_ricci, const tnsr::ii< DataType, SpatialDim, Frame > &extrinsic_curvature, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes the electric part of the Weyl tensor in vacuum. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| Scalar< DataType > | weyl_electric_scalar (const tnsr::ii< DataType, SpatialDim, Frame > &weyl_electric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes the scalar \(E_{ij} E^{ij}\) from the electric part of the Weyl tensor \(E_{ij}\). More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | weyl_electric_scalar (gsl::not_null< Scalar< DataType > * > weyl_electric_scalar_result, const tnsr::ii< DataType, SpatialDim, Frame > &weyl_electric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes the scalar \(E_{ij} E^{ij}\) from the electric part of the Weyl tensor \(E_{ij}\). More... | |
| template<typename Frame , typename DataType > | |
| tnsr::ii< DataType, 3, Frame > | weyl_magnetic (const tnsr::ijj< DataType, 3, Frame > &grad_extrinsic_curvature, const tnsr::ii< DataType, 3, Frame > &spatial_metric, const Scalar< DataType > &sqrt_det_spatial_metric) |
| Computes the magnetic part of the Weyl tensor. More... | |
| template<typename Frame , typename DataType > | |
| void | weyl_magnetic (gsl::not_null< tnsr::ii< DataType, 3, Frame > * > weyl_magnetic_part, const tnsr::ijj< DataType, 3, Frame > &grad_extrinsic_curvature, const tnsr::ii< DataType, 3, Frame > &spatial_metric, const Scalar< DataType > &sqrt_det_spatial_metric) |
| Computes the magnetic part of the Weyl tensor. More... | |
| template<typename Frame , typename DataType > | |
| Scalar< DataType > | weyl_magnetic_scalar (const tnsr::ii< DataType, 3, Frame > &weyl_magnetic, const tnsr::II< DataType, 3, Frame > &inverse_spatial_metric) |
| Computes the scalar \(B_{ij} B^{ij}\) from the magnetic part of the Weyl tensor \(B_{ij}\). More... | |
| template<typename Frame , typename DataType > | |
| void | weyl_magnetic_scalar (gsl::not_null< Scalar< DataType > * > weyl_magnetic_scalar_result, const tnsr::ii< DataType, 3, Frame > &weyl_magnetic, const tnsr::II< DataType, 3, Frame > &inverse_spatial_metric) |
| Computes the scalar \(B_{ij} B^{ij}\) from the magnetic part of the Weyl tensor \(B_{ij}\). More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ii< DataType, SpatialDim, Frame > | weyl_propagating (const tnsr::ii< DataType, SpatialDim, Frame > &ricci, const tnsr::ii< DataType, SpatialDim, Frame > &extrinsic_curvature, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &cov_deriv_extrinsic_curvature, const tnsr::I< DataType, SpatialDim, Frame > &unit_interface_normal_vector, const tnsr::II< DataType, SpatialDim, Frame > &projection_IJ, const tnsr::ii< DataType, SpatialDim, Frame > &projection_ij, const tnsr::Ij< DataType, SpatialDim, Frame > &projection_Ij, double sign) |
| Computes the propagating modes of the Weyl tensor. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | weyl_propagating (gsl::not_null< tnsr::ii< DataType, SpatialDim, Frame > * > weyl_prop_u8, const tnsr::ii< DataType, SpatialDim, Frame > &ricci, const tnsr::ii< DataType, SpatialDim, Frame > &extrinsic_curvature, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric, const tnsr::ijj< DataType, SpatialDim, Frame > &cov_deriv_extrinsic_curvature, const tnsr::I< DataType, SpatialDim, Frame > &unit_interface_normal_vector, const tnsr::II< DataType, SpatialDim, Frame > &projection_IJ, const tnsr::ii< DataType, SpatialDim, Frame > &projection_ij, const tnsr::Ij< DataType, SpatialDim, Frame > &projection_Ij, double sign) |
| Computes the propagating modes of the Weyl tensor. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| tnsr::ii< DataType, SpatialDim, Frame > | weyl_type_D1 (const tnsr::ii< DataType, SpatialDim, Frame > &weyl_electric, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes a quantity measuring how far from type D spacetime is. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | weyl_type_D1 (gsl::not_null< tnsr::ii< DataType, SpatialDim, Frame > * > weyl_type_D1, const tnsr::ii< DataType, SpatialDim, Frame > &weyl_electric, const tnsr::ii< DataType, SpatialDim, Frame > &spatial_metric, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes a quantity measuring how far from type D spacetime is. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| void | weyl_type_D1_scalar (gsl::not_null< Scalar< DataType > * > weyl_type_D1_scalar_result, const tnsr::ii< DataType, SpatialDim, Frame > &weyl_type_D1, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes the scalar \(D_{ij} D^{ij}\) , a measure of a spacetime's devitation from type D. More... | |
| template<typename DataType , size_t SpatialDim, typename Frame > | |
| Scalar< DataType > | weyl_type_D1_scalar (const tnsr::ii< DataType, SpatialDim, Frame > &weyl_type_D1, const tnsr::II< DataType, SpatialDim, Frame > &inverse_spatial_metric) |
| Computes the scalar \(D_{ij} D^{ij}\) , a measure of a spacetime's devitation from type D. More... | |
Holds functions related to general relativity.
| DataType gr::boyer_lindquist_radius_minus_r_plus_from_tortoise | ( | const DataType & | r_star, |
| double | mass, | ||
| double | dimensionless_spin | ||
| ) |
Computes the Boyer-Lindquist radius from tortoise coordinates.
This function inverts the transformation from tortoise coordinates radius \(r_*\) to Boyer-Lindquist radius \(r\):
\begin{equation} r_* = r + \frac{2 M}{r_+ - r_-}\left( r_+ \ln(\frac{r - r_+}{2 M}) - r_- \ln(\frac{r - r_-}{2 M}) \right) \end{equation}
where \(r_\pm = M \pm \sqrt{M^2 - a^2}\).
It performs a numerical rootfind to invert the above equation.
| r_star | Tortoise coordinate \(r_*\). |
| mass | Kerr mass parameter \(M\). |
| dimensionless_spin | Kerr dimensionless spin parameter \(\chi=a/M\). |
Returns: Boyer-Lindquist radius minus \(r_+\): \(r - r_+\).
| Scalar< DataVector > gr::gauss_bonnet_scalar_in_vacuum | ( | const Scalar< DataVector > & | weyl_electric_scalar, |
| const Scalar< DataVector > & | weyl_magnetic_scalar | ||
| ) |
Computes Gauss-Bonnet scalar in vacuum.
The Gauss-Bonnet scalar in vacuum is given by
\begin{align} \mathcal{G} &\equiv R_{abcd} R^{abcd} - 4 R_{ab} R^{ab} + R^2 &= C_{abcd} C^{abcd} &= 8 (E_{ab} E^{ab} - B_{ab} B^{ab}) ~, \end{align}
where \( R_{abcd} \), \( R_{ab} \), \( R \) \( C_{abcd} \) are the Riemann tensor, Ricci tensor, Ricci scalar and Weyl tensor in 4 spacetime dimensions. The Gauss-Bonnet scalar in vacuum can be computed in terms of the electric ( \( E_{ab} \)) and magnetic ( \( B_{ab} \)) parts of the Weyl tensor.
gr::Tags::WeylMagnetic and gr::Tags::WeylElectric | void gr::gauss_bonnet_scalar_in_vacuum | ( | gsl::not_null< Scalar< DataVector > * > | gb_scalar, |
| const Scalar< DataVector > & | weyl_electric_scalar, | ||
| const Scalar< DataVector > & | weyl_magnetic_scalar | ||
| ) |
Computes Gauss-Bonnet scalar in vacuum.
The Gauss-Bonnet scalar in vacuum is given by
\begin{align} \mathcal{G} &\equiv R_{abcd} R^{abcd} - 4 R_{ab} R^{ab} + R^2 &= C_{abcd} C^{abcd} &= 8 (E_{ab} E^{ab} - B_{ab} B^{ab}) ~, \end{align}
where \( R_{abcd} \), \( R_{ab} \), \( R \) \( C_{abcd} \) are the Riemann tensor, Ricci tensor, Ricci scalar and Weyl tensor in 4 spacetime dimensions. The Gauss-Bonnet scalar in vacuum can be computed in terms of the electric ( \( E_{ab} \)) and magnetic ( \( B_{ab} \)) parts of the Weyl tensor.
gr::Tags::WeylMagnetic and gr::Tags::WeylElectric | tnsr::I< DataType, Dim > gr::geodesic_acceleration | ( | const tnsr::I< DataType, Dim > & | velocity, |
| const tnsr::Abb< DataType, Dim > & | christoffel_second_kind | ||
| ) |
Computes the coordinate geodesic acceleration in the inertial frame.
The geodesic acceleration in coordinate form is given by
\begin{equation} \frac{d^2 x^i}{d t^2} = (v^i \Gamma^0_{00} - \Gamma^i_{00} ) + 2 v^j (v^i \Gamma^0_{j0} - \Gamma^i_{j0} ) + v^j v^k (v^i \Gamma^0_{jk} - \Gamma^i_{jk} ), \end{equation}
where \(v^i\) is the coordinate velocity, \(\Gamma^\mu_{\nu \rho}\) are the spacetime Christoffel symbols of the second kind, and all latin indices are spatial.
| void gr::geodesic_acceleration | ( | gsl::not_null< tnsr::I< DataType, Dim > * > | acceleration, |
| const tnsr::I< DataType, Dim > & | velocity, | ||
| const tnsr::Abb< DataType, Dim > & | christoffel_second_kind | ||
| ) |
Computes the coordinate geodesic acceleration in the inertial frame.
The geodesic acceleration in coordinate form is given by
\begin{equation} \frac{d^2 x^i}{d t^2} = (v^i \Gamma^0_{00} - \Gamma^i_{00} ) + 2 v^j (v^i \Gamma^0_{j0} - \Gamma^i_{j0} ) + v^j v^k (v^i \Gamma^0_{jk} - \Gamma^i_{jk} ), \end{equation}
where \(v^i\) is the coordinate velocity, \(\Gamma^\mu_{\nu \rho}\) are the spacetime Christoffel symbols of the second kind, and all latin indices are spatial.
| void gr::geodesic_equation | ( | gsl::not_null< tnsr::I< DataType, Dim, Frame > * > | dt_x, |
| gsl::not_null< tnsr::i< DataType, Dim, Frame > * > | dt_pi, | ||
| gsl::not_null< Scalar< DataType > * > | dt_lnp0, | ||
| const tnsr::I< DataType, Dim, Frame > & | x, | ||
| const tnsr::i< DataType, Dim, Frame > & | pi, | ||
| const Scalar< DataType > & | lnp0, | ||
| const Scalar< DataType > & | lapse, | ||
| const tnsr::i< DataType, Dim, Frame > & | deriv_lapse, | ||
| const tnsr::I< DataType, Dim, Frame > & | shift, | ||
| const tnsr::iJ< DataType, Dim, Frame > & | deriv_shift, | ||
| const tnsr::II< DataType, Dim, Frame > & | inv_spatial_metric, | ||
| const tnsr::iJJ< DataType, Dim, Frame > & | deriv_inv_spatial_metric, | ||
| const tnsr::ii< DataType, Dim, Frame > & | extrinsic_curvature | ||
| ) |
First-order formulation of the geodesic equation for null geodesics that is suitable for ray tracing.
This is the formulation of the geodesic equation that is originally used for ray tracing in [25] (Eq. (4)) and [26] (Eq. (6)).
For null rays with position \(x^\mu\), proper time (or affine geodesic parameter) \(\tau\), and four-momentum \(p^\mu = dx^\mu / d\tau\), we first define the momentum variable
\begin{equation} \Pi_i = \frac{p_i}{\alpha p^0} = \frac{p_i}{\sqrt{\gamma^{jk} p_j p_k}} \text{.} \end{equation}
Here we work in a 3+1 decomposition of spacetime with time coordinate \(t\), lapse \(\alpha\), shift \(\beta^i\), spatial metric \(\gamma_{ij}\), and extrinsic curvature \(K_{ij}\). Then, the geodesic equation is given by
\begin{align} \frac{d \Pi_i}{d t} &= -\partial_i \alpha + (\Pi^j \partial_j \alpha -\alpha K_{jk}\Pi^j\Pi^k) \Pi_i) + \Pi_k \partial_i \beta^k - \frac{1}{2} \alpha \Pi_j\Pi_k \partial_i \gamma^{jk} \\ \frac{d x^i}{d t} &= \alpha \Pi^i - \beta^i \text{.} \end{align}
This function also computes the evolution of the additional redshift variable \(\ln(\alpha p^0)\) (Eq. (5) in [25]) as
\begin{equation} \frac{d \ln(\alpha p^0)}{d t} = -\Pi^i \partial_i \alpha + \alpha K_{ij} \Pi^i \Pi^j \text{.} \end{equation}
| tnsr::A< DataType, VolumeDim, Frame > gr::interface_null_normal | ( | const tnsr::A< DataType, VolumeDim, Frame > & | spacetime_normal_vector, |
| const tnsr::I< DataType, VolumeDim, Frame > & | interface_unit_normal_vector, | ||
| double | sign | ||
| ) |
Compute null normal vector to the boundary of a closed region in a spatial slice of spacetime.
Consider an \(n-1\)-dimensional boundary \(S\) of a closed region in an \(n\)-dimensional spatial hypersurface \(\Sigma\). Let \(s^a\) be the unit spacelike vector orthogonal to \(S\) in \(\Sigma\), and \(n^a\) be the timelike unit vector orthogonal to \(\Sigma\). This function returns the null vector that is outgoing/ingoing on \(S\):
\begin{align*} k^a = \frac{1}{\sqrt{2}}\left(n^a \pm s^a\right). \end{align*}
| Scalar< DataVector > gr::pontryagin_scalar_in_vacuum | ( | const tnsr::ii< DataVector, 3, Frame > & | weyl_electric, |
| const tnsr::ii< DataVector, 3, Frame > & | weyl_magnetic, | ||
| const tnsr::II< DataVector, 3, Frame > & | inverse_spatial_metric | ||
| ) |
Computes the Pontryagin scalar in vacuum.
The Pontryagin scalar in vacuum is given by
\begin{align} \mathcal{P} &\equiv {^{\star} C}_{abcd} C^{abcd} \\ &= - 16 E_{ab} B^{ab} ~, \end{align}
where \( C_{abcd} \) it the Weyl tensor (with dual \( {^\star} C}_{abcd} \)) in 4 spacetime dimensions. Here it is computed in terms of the electric ( \( E_{ab} \)) and magnetic ( \( B_{ab} \)) parts of the Weyl scalar, with the conventions used here for ( \( \{E_{ab}, B_{ab}\} \)).
gr::Tags::WeylMagnetic and gr::Tags::WeylElectric | void gr::pontryagin_scalar_in_vacuum | ( | gsl::not_null< Scalar< DataVector > * > | pontryagin_scalar, |
| const tnsr::ii< DataVector, 3, Frame > & | weyl_electric, | ||
| const tnsr::ii< DataVector, 3, Frame > & | weyl_magnetic, | ||
| const tnsr::II< DataVector, 3, Frame > & | inverse_spatial_metric | ||
| ) |
Computes the Pontryagin scalar in vacuum.
The Pontryagin scalar in vacuum is given by
\begin{align} \mathcal{P} &\equiv {^{\star} C}_{abcd} C^{abcd} \\ &= - 16 E_{ab} B^{ab} ~, \end{align}
where \( C_{abcd} \) it the Weyl tensor (with dual \( {^\star} C}_{abcd} \)) in 4 spacetime dimensions. Here it is computed in terms of the electric ( \( E_{ab} \)) and magnetic ( \( B_{ab} \)) parts of the Weyl scalar, with the conventions used here for ( \( \{E_{ab}, B_{ab}\} \)).
gr::Tags::WeylMagnetic and gr::Tags::WeylElectric | tnsr::a< DataType, SpatialDim, Frame > gr::spacetime_normal_one_form | ( | const Scalar< DataType > & | lapse | ) |
Computes spacetime normal one-form from lapse.
If \(\alpha\) is the lapse, then
\begin{align} n_t &= - \alpha \\ n_i &= 0 \end{align}
is computed.
| void gr::spacetime_normal_one_form | ( | gsl::not_null< tnsr::a< DataType, SpatialDim, Frame > * > | normal_one_form, |
| const Scalar< DataType > & | lapse | ||
| ) |
Computes spacetime normal one-form from lapse.
If \(\alpha\) is the lapse, then
\begin{align} n_t &= - \alpha \\ n_i &= 0 \end{align}
is computed.
| DataType gr::tortoise_radius_from_boyer_lindquist_minus_r_plus | ( | const DataType & | r_minus_r_plus, |
| double | mass, | ||
| double | dimensionless_spin | ||
| ) |
Computes the tortoise coordinates radius from the Boyer-Lindquist radius.
This function evaluates the transformation from tortoise coordinates \(r_*\) to Boyer-Lindquist radius \(r\):
\begin{equation} r_* = r + \frac{2 M}{r_+ - r_-}\left( r_+ \ln(\frac{r - r_+}{2 M}) - r_- \ln(\frac{r - r_-}{2 M}) \right) \end{equation}
where \(r_\pm = M \pm \sqrt{M^2 - a^2}\).
| r_minus_r_plus | Boyer-Lindquist radius minus \(r_+\): \(r - r_+\). |
| mass | Kerr mass parameter \(M\). |
| dimensionless_spin | Kerr dimensionless spin parameter \(\chi=a/M\). |
Returns: Tortoise coordinates radius \(r_*\).
| tnsr::AA< DataType, VolumeDim, Frame > gr::transverse_projection_operator | ( | const tnsr::AA< DataType, VolumeDim, Frame > & | inverse_spacetime_metric, |
| const tnsr::A< DataType, VolumeDim, Frame > & | spacetime_normal_vector, | ||
| const tnsr::I< DataType, VolumeDim, Frame > & | interface_unit_normal_vector | ||
| ) |
Compute spacetime projection operator onto an interface.
Consider a \(d-1\)-dimensional surface \(S\) in a \(d\)-dimensional spatial hypersurface \(\Sigma\). Let \(s^a\) be the unit spacelike vector orthogonal to \(S\) in \(\Sigma\), and \(n^a\) be the timelike unit vector orthogonal to \(\Sigma\). This function returns the projection operator onto \(S\) for \(d+1\) dimensional quantities:
\begin{align*} P^{ab} = g^{ab} + n^a n^b - s^a s^b = \gamma_{ab} - s_a s_b. \end{align*}
| tnsr::Ij< DataType, VolumeDim, Frame > gr::transverse_projection_operator | ( | const tnsr::I< DataType, VolumeDim, Frame > & | normal_vector, |
| const tnsr::i< DataType, VolumeDim, Frame > & | normal_one_form | ||
| ) |
Compute projection operator onto an interface.
Returns the operator \(P^{i}_{j} = \delta^{i}_{j} - n^i n_j\), where \(n^i\) and \(n_i\) are the normal vector and normal one-form to the interface in question.
| tnsr::ii< DataType, VolumeDim, Frame > gr::transverse_projection_operator | ( | const tnsr::ii< DataType, VolumeDim, Frame > & | spatial_metric, |
| const tnsr::i< DataType, VolumeDim, Frame > & | normal_one_form | ||
| ) |
Compute projection operator onto an interface.
Returns the operator \(P_{ij} = \gamma_{ij} - n_i n_j\), where \( \gamma_{ij}\) is the spatial metric, and \( n_i\) is the normal one-form to the interface in question.