SpECTRE
v2024.12.16
|
Namespaces | |
namespace | ylm |
Items related to spherical harmonics. | |
namespace | ylm::Tags |
Holds tags and ComputeItems associated with a ylm::Strahlkorper . | |
namespace | SurfaceFinder |
Contains functions that are used to find contour levels. | |
namespace | gr::surfaces::Tags |
Holds tags and ComputeItems associated with a ylm::Strahlkorper that also need a metric. | |
Classes | |
class | ylm::Strahlkorper< Frame > |
A star-shaped surface expanded in spherical harmonics. More... | |
struct | ylm::OptionTags::Strahlkorper< Frame > |
The input file tag for a Strahlkorper. More... | |
class | FastFlow |
Fast flow method for finding apparent horizons. More... | |
Functions | |
template<typename Frame > | |
std::vector< ylm::Strahlkorper< Frame > > | ylm::read_surface_ylm (const std::string &file_name, const std::string &surface_subfile_name, size_t requested_number_of_times_from_end) |
Returns a list of ylm::Strahlkorper s constructed from reading in spherical harmonic data for a surface at a requested list of times. More... | |
std::vector< std::optional< double > > | SurfaceFinder::find_radial_surface (const Scalar< DataVector > &data, const double target, const Mesh< 3 > &mesh, const tnsr::I< DataVector, 2, Frame::ElementLogical > &angular_coords, const double relative_tolerance=1e-10, const double absolute_tolerance=1e-10) |
Function that interpolates data onto radial rays in the direction of the logical coordinates | |
double | gr::surfaces::irreducible_mass (double area) |
Irreducible mass of a 2D Strahlkorper . More... | |
double | gr::surfaces::christodoulou_mass (double dimensionful_spin_magnitude, double irreducible_mass) |
Christodoulou Mass of a 2D Strahlkorper . More... | |
template<typename Frame > | |
void | gr::surfaces::radial_distance (gsl::not_null< Scalar< DataVector > * > radial_distance, const ylm::Strahlkorper< Frame > &strahlkorper_a, const ylm::Strahlkorper< Frame > &strahlkorper_b) |
Radial distance between two Strahlkorper s. More... | |
template<typename MetricDataFrame , typename MeasurementFrame > | |
void | gr::surfaces::spin_vector (const gsl::not_null< std::array< double, 3 > * > result, double spin_magnitude, const Scalar< DataVector > &area_element, const Scalar< DataVector > &ricci_scalar, const Scalar< DataVector > &spin_function, const ylm::Strahlkorper< MetricDataFrame > &strahlkorper, const tnsr::I< DataVector, 3, MeasurementFrame > &measurement_frame_coords) |
Spin vector of a 2D Strahlkorper . More... | |
template<typename Frame > | |
double | gr::surfaces::surface_integral_of_scalar (const Scalar< DataVector > &area_element, const Scalar< DataVector > &scalar, const ylm::Strahlkorper< Frame > &strahlkorper) |
Surface integral of a scalar on a 2D Strahlkorper More... | |
template<typename Frame > | |
double | gr::surfaces::euclidean_surface_integral_of_vector (const Scalar< DataVector > &area_element, const tnsr::I< DataVector, 3, Frame > &vector, const tnsr::i< DataVector, 3, Frame > &normal_one_form, const ylm::Strahlkorper< Frame > &strahlkorper) |
Euclidean surface integral of a vector on a 2D Strahlkorper More... | |
template<typename Frame > | |
void | gr::surfaces::area_element (gsl::not_null< Scalar< DataVector > * > result, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const ylm::Tags::aliases::Jacobian< Frame > &jacobian, const tnsr::i< DataVector, 3, Frame > &normal_one_form, const Scalar< DataVector > &radius, const tnsr::i< DataVector, 3, Frame > &r_hat) |
Area element of a 2D Strahlkorper . More... | |
template<typename Frame > | |
Scalar< DataVector > | gr::surfaces::area_element (const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const ylm::Tags::aliases::Jacobian< Frame > &jacobian, const tnsr::i< DataVector, 3, Frame > &normal_one_form, const Scalar< DataVector > &radius, const tnsr::i< DataVector, 3, Frame > &r_hat) |
Area element of a 2D Strahlkorper . More... | |
template<typename Frame > | |
void | gr::surfaces::euclidean_area_element (gsl::not_null< Scalar< DataVector > * > result, const ylm::Tags::aliases::Jacobian< Frame > &jacobian, const tnsr::i< DataVector, 3, Frame > &normal_one_form, const Scalar< DataVector > &radius, const tnsr::i< DataVector, 3, Frame > &r_hat) |
Euclidean area element of a 2D Strahlkorper . More... | |
template<typename Frame > | |
Scalar< DataVector > | gr::surfaces::euclidean_area_element (const ylm::Tags::aliases::Jacobian< Frame > &jacobian, const tnsr::i< DataVector, 3, Frame > &normal_one_form, const Scalar< DataVector > &radius, const tnsr::i< DataVector, 3, Frame > &r_hat) |
Euclidean area element of a 2D Strahlkorper . More... | |
template<typename Frame > | |
void | gr::surfaces::expansion (gsl::not_null< Scalar< DataVector > * > result, const tnsr::ii< DataVector, 3, Frame > &grad_normal, const tnsr::II< DataVector, 3, Frame > &inverse_surface_metric, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature) |
Expansion of a Strahlkorper . Should be zero on apparent horizons. More... | |
template<typename Frame > | |
Scalar< DataVector > | gr::surfaces::expansion (const tnsr::ii< DataVector, 3, Frame > &grad_normal, const tnsr::II< DataVector, 3, Frame > &inverse_surface_metric, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature) |
Expansion of a Strahlkorper . Should be zero on apparent horizons. More... | |
template<typename Frame > | |
void | gr::surfaces::extrinsic_curvature (gsl::not_null< tnsr::ii< DataVector, 3, Frame > * > result, const tnsr::ii< DataVector, 3, Frame > &grad_normal, const tnsr::i< DataVector, 3, Frame > &unit_normal_one_form, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector) |
Extrinsic curvature of a 2D Strahlkorper embedded in a 3D space. More... | |
template<typename Frame > | |
tnsr::ii< DataVector, 3, Frame > | gr::surfaces::extrinsic_curvature (const tnsr::ii< DataVector, 3, Frame > &grad_normal, const tnsr::i< DataVector, 3, Frame > &unit_normal_one_form, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector) |
Extrinsic curvature of a 2D Strahlkorper embedded in a 3D space. More... | |
template<typename Frame > | |
void | gr::surfaces::grad_unit_normal_one_form (gsl::not_null< tnsr::ii< DataVector, 3, Frame > * > result, const tnsr::i< DataVector, 3, Frame > &r_hat, const Scalar< DataVector > &radius, const tnsr::i< DataVector, 3, Frame > &unit_normal_one_form, const tnsr::ii< DataVector, 3, Frame > &d2x_radius, const DataVector &one_over_one_form_magnitude, const tnsr::Ijj< DataVector, 3, Frame > &christoffel_2nd_kind) |
Computes 3-covariant gradient | |
template<typename Frame > | |
tnsr::ii< DataVector, 3, Frame > | gr::surfaces::grad_unit_normal_one_form (const tnsr::i< DataVector, 3, Frame > &r_hat, const Scalar< DataVector > &radius, const tnsr::i< DataVector, 3, Frame > &unit_normal_one_form, const tnsr::ii< DataVector, 3, Frame > &d2x_radius, const DataVector &one_over_one_form_magnitude, const tnsr::Ijj< DataVector, 3, Frame > &christoffel_2nd_kind) |
Computes 3-covariant gradient | |
template<typename Frame > | |
void | gr::surfaces::inverse_surface_metric (gsl::not_null< tnsr::II< DataVector, 3, Frame > * > result, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector, const tnsr::II< DataVector, 3, Frame > &upper_spatial_metric) |
Computes inverse 2-metric | |
template<typename Frame > | |
tnsr::II< DataVector, 3, Frame > | gr::surfaces::inverse_surface_metric (const tnsr::I< DataVector, 3, Frame > &unit_normal_vector, const tnsr::II< DataVector, 3, Frame > &upper_spatial_metric) |
Computes inverse 2-metric | |
template<typename Frame > | |
void | gr::surfaces::ricci_scalar (gsl::not_null< Scalar< DataVector > * > result, const tnsr::ii< DataVector, 3, Frame > &spatial_ricci_tensor, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature, const tnsr::II< DataVector, 3, Frame > &upper_spatial_metric) |
Intrinsic Ricci scalar of a 2D Strahlkorper . More... | |
template<typename Frame > | |
Scalar< DataVector > | gr::surfaces::ricci_scalar (const tnsr::ii< DataVector, 3, Frame > &spatial_ricci_tensor, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature, const tnsr::II< DataVector, 3, Frame > &upper_spatial_metric) |
Intrinsic Ricci scalar of a 2D Strahlkorper . More... | |
template<typename Frame > | |
void | gr::surfaces::spin_function (gsl::not_null< Scalar< DataVector > * > result, const ylm::Tags::aliases::Jacobian< Frame > &tangents, const ylm::Strahlkorper< Frame > &strahlkorper, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector, const Scalar< DataVector > &area_element, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature) |
Spin function of a 2D Strahlkorper . More... | |
template<typename Frame > | |
Scalar< DataVector > | gr::surfaces::spin_function (const ylm::Tags::aliases::Jacobian< Frame > &tangents, const ylm::Strahlkorper< Frame > &strahlkorper, const tnsr::I< DataVector, 3, Frame > &unit_normal_vector, const Scalar< DataVector > &area_element, const tnsr::ii< DataVector, 3, Frame > &extrinsic_curvature) |
Spin function of a 2D Strahlkorper . More... | |
template<typename Frame > | |
void | gr::surfaces::dimensionful_spin_magnitude (gsl::not_null< double * > result, const Scalar< DataVector > &ricci_scalar, const Scalar< DataVector > &spin_function, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const ylm::Tags::aliases::Jacobian< Frame > &tangents, const ylm::Strahlkorper< Frame > &strahlkorper, const Scalar< DataVector > &area_element) |
Spin magnitude measured on a 2D Strahlkorper . More... | |
template<typename Frame > | |
double | gr::surfaces::dimensionful_spin_magnitude (const Scalar< DataVector > &ricci_scalar, const Scalar< DataVector > &spin_function, const tnsr::ii< DataVector, 3, Frame > &spatial_metric, const ylm::Tags::aliases::Jacobian< Frame > &tangents, const ylm::Strahlkorper< Frame > &strahlkorper, const Scalar< DataVector > &area_element) |
Spin magnitude measured on a 2D Strahlkorper . More... | |
void | gr::surfaces::dimensionless_spin_magnitude (const gsl::not_null< double * > result, const double dimensionful_spin_magnitude, const double christodoulou_mass) |
Dimensionless spin magnitude of a Strahlkorper . More... | |
double | gr::surfaces::dimensionless_spin_magnitude (const double dimensionful_spin_magnitude, const double christodoulou_mass) |
Dimensionless spin magnitude of a Strahlkorper . More... | |
template<typename Frame > | |
void | gr::surfaces::unit_normal_one_form (gsl::not_null< tnsr::i< DataVector, 3, Frame > * > result, const tnsr::i< DataVector, 3, Frame > &normal_one_form, const DataVector &one_over_one_form_magnitude) |
Computes normalized unit normal one-form to a Strahlkorper. More... | |
template<typename Frame > | |
tnsr::i< DataVector, 3, Frame > | gr::surfaces::unit_normal_one_form (const tnsr::i< DataVector, 3, Frame > &normal_one_form, const DataVector &one_over_one_form_magnitude) |
Computes normalized unit normal one-form to a Strahlkorper. More... | |
Things related to surfaces.
Scalar< DataVector > gr::surfaces::area_element | ( | const tnsr::ii< DataVector, 3, Frame > & | spatial_metric, |
const ylm::Tags::aliases::Jacobian< Frame > & | jacobian, | ||
const tnsr::i< DataVector, 3, Frame > & | normal_one_form, | ||
const Scalar< DataVector > & | radius, | ||
const tnsr::i< DataVector, 3, Frame > & | r_hat | ||
) |
Area element of a 2D Strahlkorper
.
Implements Eq. (D.13), using Eqs. (D.4) and (D.5), of [14]. Specifically, computes jacobian
, normal_one_form
, radius
, and r_hat
, respectively; these input arguments depend only on the Strahlkorper, not on the metric, and can be computed from a Strahlkorper using ComputeItems in ylm::Tags
. Note that this does not include the factor of Strahlkorper
in flat space. This choice makes the area element returned here compatible with definite_integral
defined in YlmSpherePack.hpp
.
void gr::surfaces::area_element | ( | gsl::not_null< Scalar< DataVector > * > | result, |
const tnsr::ii< DataVector, 3, Frame > & | spatial_metric, | ||
const ylm::Tags::aliases::Jacobian< Frame > & | jacobian, | ||
const tnsr::i< DataVector, 3, Frame > & | normal_one_form, | ||
const Scalar< DataVector > & | radius, | ||
const tnsr::i< DataVector, 3, Frame > & | r_hat | ||
) |
Area element of a 2D Strahlkorper
.
Implements Eq. (D.13), using Eqs. (D.4) and (D.5), of [14]. Specifically, computes jacobian
, normal_one_form
, radius
, and r_hat
, respectively; these input arguments depend only on the Strahlkorper, not on the metric, and can be computed from a Strahlkorper using ComputeItems in ylm::Tags
. Note that this does not include the factor of Strahlkorper
in flat space. This choice makes the area element returned here compatible with definite_integral
defined in YlmSpherePack.hpp
.
double gr::surfaces::christodoulou_mass | ( | double | dimensionful_spin_magnitude, |
double | irreducible_mass | ||
) |
Christodoulou Mass of a 2D Strahlkorper
.
See e.g. Eq. (1) of [127]. This function computes the Christodoulou mass from the dimensionful spin angular momentum
double gr::surfaces::dimensionful_spin_magnitude | ( | const Scalar< DataVector > & | ricci_scalar, |
const Scalar< DataVector > & | spin_function, | ||
const tnsr::ii< DataVector, 3, Frame > & | spatial_metric, | ||
const ylm::Tags::aliases::Jacobian< Frame > & | tangents, | ||
const ylm::Strahlkorper< Frame > & | strahlkorper, | ||
const Scalar< DataVector > & | area_element | ||
) |
Spin magnitude measured on a 2D Strahlkorper
.
Measures the quasilocal spin magnitude of a Strahlkorper, by inserting gr::surfaces::spin_function()
, gr::surfaces::ricci_scalar()
. The spin magnitude is the Euclidean norm of the three values of spatial_metric
is the metric of the 3D spatial slice evaluated on the Strahlkorper
. The argument tangents
can be obtained from the StrahlkorperDataBox using the ylm::Tags::Tangents
tag, and the argument unit_normal_vector
can be found by raising the index of the one-form returned by gr::surfaces::unit_normal_one_form
. The argument strahlkorper
is the surface on which the spin magnitude is computed. The argument area_element
can be computed via gr::surfaces::area_element
.
void gr::surfaces::dimensionful_spin_magnitude | ( | gsl::not_null< double * > | result, |
const Scalar< DataVector > & | ricci_scalar, | ||
const Scalar< DataVector > & | spin_function, | ||
const tnsr::ii< DataVector, 3, Frame > & | spatial_metric, | ||
const ylm::Tags::aliases::Jacobian< Frame > & | tangents, | ||
const ylm::Strahlkorper< Frame > & | strahlkorper, | ||
const Scalar< DataVector > & | area_element | ||
) |
Spin magnitude measured on a 2D Strahlkorper
.
Measures the quasilocal spin magnitude of a Strahlkorper, by inserting gr::surfaces::spin_function()
, gr::surfaces::ricci_scalar()
. The spin magnitude is the Euclidean norm of the three values of spatial_metric
is the metric of the 3D spatial slice evaluated on the Strahlkorper
. The argument tangents
can be obtained from the StrahlkorperDataBox using the ylm::Tags::Tangents
tag, and the argument unit_normal_vector
can be found by raising the index of the one-form returned by gr::surfaces::unit_normal_one_form
. The argument strahlkorper
is the surface on which the spin magnitude is computed. The argument area_element
can be computed via gr::surfaces::area_element
.
double gr::surfaces::dimensionless_spin_magnitude | ( | const double | dimensionful_spin_magnitude, |
const double | christodoulou_mass | ||
) |
Dimensionless spin magnitude of a Strahlkorper
.
This function computes the dimensionless spin magnitude
void gr::surfaces::dimensionless_spin_magnitude | ( | const gsl::not_null< double * > | result, |
const double | dimensionful_spin_magnitude, | ||
const double | christodoulou_mass | ||
) |
Dimensionless spin magnitude of a Strahlkorper
.
This function computes the dimensionless spin magnitude
Scalar< DataVector > gr::surfaces::euclidean_area_element | ( | const ylm::Tags::aliases::Jacobian< Frame > & | jacobian, |
const tnsr::i< DataVector, 3, Frame > & | normal_one_form, | ||
const Scalar< DataVector > & | radius, | ||
const tnsr::i< DataVector, 3, Frame > & | r_hat | ||
) |
Euclidean area element of a 2D Strahlkorper
.
This is useful for computing a flat-space integral over an arbitrarily-shaped Strahlkorper
.
Implements Eq. (D.13), using Eqs. (D.4) and (D.5), of [14]. Specifically, computes jacobian
, normal_one_form
, radius
, and r_hat
, respectively; these input arguments depend only on the Strahlkorper, not on the metric, and can be computed from a Strahlkorper using ComputeItems in ylm::Tags
. Note that this does not include the factor of Strahlkorper
. This choice makes the area element returned here compatible with definite_integral
defined in YlmSpherePack.hpp
.
void gr::surfaces::euclidean_area_element | ( | gsl::not_null< Scalar< DataVector > * > | result, |
const ylm::Tags::aliases::Jacobian< Frame > & | jacobian, | ||
const tnsr::i< DataVector, 3, Frame > & | normal_one_form, | ||
const Scalar< DataVector > & | radius, | ||
const tnsr::i< DataVector, 3, Frame > & | r_hat | ||
) |
Euclidean area element of a 2D Strahlkorper
.
This is useful for computing a flat-space integral over an arbitrarily-shaped Strahlkorper
.
Implements Eq. (D.13), using Eqs. (D.4) and (D.5), of [14]. Specifically, computes jacobian
, normal_one_form
, radius
, and r_hat
, respectively; these input arguments depend only on the Strahlkorper, not on the metric, and can be computed from a Strahlkorper using ComputeItems in ylm::Tags
. Note that this does not include the factor of Strahlkorper
. This choice makes the area element returned here compatible with definite_integral
defined in YlmSpherePack.hpp
.
double gr::surfaces::euclidean_surface_integral_of_vector | ( | const Scalar< DataVector > & | area_element, |
const tnsr::I< DataVector, 3, Frame > & | vector, | ||
const tnsr::i< DataVector, 3, Frame > & | normal_one_form, | ||
const ylm::Strahlkorper< Frame > & | strahlkorper | ||
) |
Euclidean surface integral of a vector on a 2D Strahlkorper
Computes the surface integral Strahlkorper
with area element normal_one_form
is not assumed to be normalized; the denominator of the integrand effectively normalizes it using the Euclidean metric. The area element can be computed via gr::surfaces::euclidean_area_element()
.
Scalar< DataVector > gr::surfaces::expansion | ( | const tnsr::ii< DataVector, 3, Frame > & | grad_normal, |
const tnsr::II< DataVector, 3, Frame > & | inverse_surface_metric, | ||
const tnsr::ii< DataVector, 3, Frame > & | extrinsic_curvature | ||
) |
Expansion of a Strahlkorper
. Should be zero on apparent horizons.
Implements Eq. (5) in [14]. The input argument grad_normal
is the quantity returned by gr::surfaces::grad_unit_normal_one_form
, and inverse_surface_metric
is the quantity returned by gr::surfaces::inverse_surface_metric
.
void gr::surfaces::expansion | ( | gsl::not_null< Scalar< DataVector > * > | result, |
const tnsr::ii< DataVector, 3, Frame > & | grad_normal, | ||
const tnsr::II< DataVector, 3, Frame > & | inverse_surface_metric, | ||
const tnsr::ii< DataVector, 3, Frame > & | extrinsic_curvature | ||
) |
Expansion of a Strahlkorper
. Should be zero on apparent horizons.
Implements Eq. (5) in [14]. The input argument grad_normal
is the quantity returned by gr::surfaces::grad_unit_normal_one_form
, and inverse_surface_metric
is the quantity returned by gr::surfaces::inverse_surface_metric
.
tnsr::ii< DataVector, 3, Frame > gr::surfaces::extrinsic_curvature | ( | const tnsr::ii< DataVector, 3, Frame > & | grad_normal, |
const tnsr::i< DataVector, 3, Frame > & | unit_normal_one_form, | ||
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector | ||
) |
Extrinsic curvature of a 2D Strahlkorper
embedded in a 3D space.
Implements Eq. (D.43) of Carroll's Spacetime and Geometry text. Specifically, grad_normal
is the quantity gr::surfaces::grad_unit_normal_one_form
, and unit_normal_vector
is
void gr::surfaces::extrinsic_curvature | ( | gsl::not_null< tnsr::ii< DataVector, 3, Frame > * > | result, |
const tnsr::ii< DataVector, 3, Frame > & | grad_normal, | ||
const tnsr::i< DataVector, 3, Frame > & | unit_normal_one_form, | ||
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector | ||
) |
Extrinsic curvature of a 2D Strahlkorper
embedded in a 3D space.
Implements Eq. (D.43) of Carroll's Spacetime and Geometry text. Specifically, grad_normal
is the quantity gr::surfaces::grad_unit_normal_one_form
, and unit_normal_vector
is
std::vector< std::optional< double > > SurfaceFinder::find_radial_surface | ( | const Scalar< DataVector > & | data, |
const double | target, | ||
const Mesh< 3 > & | mesh, | ||
const tnsr::I< DataVector, 2, Frame::ElementLogical > & | angular_coords, | ||
const double | relative_tolerance = 1e-10 , |
||
const double | absolute_tolerance = 1e-10 |
||
) |
Function that interpolates data onto radial rays in the direction of the logical coordinates
We assume the element is part of a wedge block, so that the
data | data to find the contour in. |
target | target value for the contour level in the data. |
mesh | mesh for the element. |
angular_coords | tensor containing the |
relative_tolerance | relative tolerance for toms748 rootfind. |
absolute_tolerance | relative tolerance for toms748 rootfind. |
tnsr::ii< DataVector, 3, Frame > gr::surfaces::grad_unit_normal_one_form | ( | const tnsr::i< DataVector, 3, Frame > & | r_hat, |
const Scalar< DataVector > & | radius, | ||
const tnsr::i< DataVector, 3, Frame > & | unit_normal_one_form, | ||
const tnsr::ii< DataVector, 3, Frame > & | d2x_radius, | ||
const DataVector & | one_over_one_form_magnitude, | ||
const tnsr::Ijj< DataVector, 3, Frame > & | christoffel_2nd_kind | ||
) |
Computes 3-covariant gradient
See Eqs. (1–9) of [14]. Here r_hat
, radius
, and d2x_radius
depend on the Strahlkorper but not on the metric, and can be computed from a Strahlkorper using ComputeItems in ylm::Tags
. The input argument one_over_one_form_magnitude
is ylm::Tags::NormalOneForm
(i.e. the unnormalized one-form to the Strahlkorper); it can be computed using (one over) the magnitude
function. The input argument unit_normal_one_form
is
void gr::surfaces::grad_unit_normal_one_form | ( | gsl::not_null< tnsr::ii< DataVector, 3, Frame > * > | result, |
const tnsr::i< DataVector, 3, Frame > & | r_hat, | ||
const Scalar< DataVector > & | radius, | ||
const tnsr::i< DataVector, 3, Frame > & | unit_normal_one_form, | ||
const tnsr::ii< DataVector, 3, Frame > & | d2x_radius, | ||
const DataVector & | one_over_one_form_magnitude, | ||
const tnsr::Ijj< DataVector, 3, Frame > & | christoffel_2nd_kind | ||
) |
Computes 3-covariant gradient
See Eqs. (1–9) of [14]. Here r_hat
, radius
, and d2x_radius
depend on the Strahlkorper but not on the metric, and can be computed from a Strahlkorper using ComputeItems in ylm::Tags
. The input argument one_over_one_form_magnitude
is ylm::Tags::NormalOneForm
(i.e. the unnormalized one-form to the Strahlkorper); it can be computed using (one over) the magnitude
function. The input argument unit_normal_one_form
is
tnsr::II< DataVector, 3, Frame > gr::surfaces::inverse_surface_metric | ( | const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector, |
const tnsr::II< DataVector, 3, Frame > & | upper_spatial_metric | ||
) |
Computes inverse 2-metric
See Eqs. (1–9) of [14]. Here unit_normal_vector
is
void gr::surfaces::inverse_surface_metric | ( | gsl::not_null< tnsr::II< DataVector, 3, Frame > * > | result, |
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector, | ||
const tnsr::II< DataVector, 3, Frame > & | upper_spatial_metric | ||
) |
Computes inverse 2-metric
See Eqs. (1–9) of [14]. Here unit_normal_vector
is
double gr::surfaces::irreducible_mass | ( | double | area | ) |
Irreducible mass of a 2D Strahlkorper
.
See Eqs. (15.38) [88]. This function computes the irreducible mass from the area of a horizon. Specifically, computes
void gr::surfaces::radial_distance | ( | gsl::not_null< Scalar< DataVector > * > | radial_distance, |
const ylm::Strahlkorper< Frame > & | strahlkorper_a, | ||
const ylm::Strahlkorper< Frame > & | strahlkorper_b | ||
) |
Radial distance between two Strahlkorper
s.
Computes the pointwise radial distance strahlkorper_a
and strahlkorper_b
that have the same center, first (if the Strahlkorpers' resolutions are unequal) prolonging the lower-resolution Strahlkorper to the same resolution as the higher-resolution Strahlkorper.
std::vector< ylm::Strahlkorper< Frame > > ylm::read_surface_ylm | ( | const std::string & | file_name, |
const std::string & | surface_subfile_name, | ||
size_t | requested_number_of_times_from_end | ||
) |
Returns a list of ylm::Strahlkorper
s constructed from reading in spherical harmonic data for a surface at a requested list of times.
The ylm::Strahlkorper
s are constructed by reading in data from an H5 subfile that is expected to be in the format described by intrp::callbacks::ObserveSurfaceData
. It is assumed that
file_name | name of the H5 file containing the surface's spherical harmonic data |
surface_subfile_name | name of the subfile (with no leading slash nor the .dat extension) within file_name that contains the surface's spherical harmonic data to read in |
requested_number_of_times_from_end | the number of times to read in starting backwards from the final time found in surface_subfile_name |
Scalar< DataVector > gr::surfaces::ricci_scalar | ( | const tnsr::ii< DataVector, 3, Frame > & | spatial_ricci_tensor, |
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector, | ||
const tnsr::ii< DataVector, 3, Frame > & | extrinsic_curvature, | ||
const tnsr::II< DataVector, 3, Frame > & | upper_spatial_metric | ||
) |
Intrinsic Ricci scalar of a 2D Strahlkorper
.
Implements Eq. (D.51) of Sean Carroll's Spacetime and Geometry textbook (except correcting sign errors: both extrinsic curvature terms are off by a minus sign in Carroll's text but correct in Carroll's errata). unit_normal_vector
is
void gr::surfaces::ricci_scalar | ( | gsl::not_null< Scalar< DataVector > * > | result, |
const tnsr::ii< DataVector, 3, Frame > & | spatial_ricci_tensor, | ||
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector, | ||
const tnsr::ii< DataVector, 3, Frame > & | extrinsic_curvature, | ||
const tnsr::II< DataVector, 3, Frame > & | upper_spatial_metric | ||
) |
Intrinsic Ricci scalar of a 2D Strahlkorper
.
Implements Eq. (D.51) of Sean Carroll's Spacetime and Geometry textbook (except correcting sign errors: both extrinsic curvature terms are off by a minus sign in Carroll's text but correct in Carroll's errata). unit_normal_vector
is
Scalar< DataVector > gr::surfaces::spin_function | ( | const ylm::Tags::aliases::Jacobian< Frame > & | tangents, |
const ylm::Strahlkorper< Frame > & | strahlkorper, | ||
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector, | ||
const Scalar< DataVector > & | area_element, | ||
const tnsr::ii< DataVector, 3, Frame > & | extrinsic_curvature | ||
) |
Spin function of a 2D Strahlkorper
.
See Eqs. (2) and (10) of [151]. This function computes the "spin function," which is an ingredient for horizon surface integrals that measure quasilocal spin. This function is proportional to the imaginary part of the horizon's complex scalar curvature. For Kerr black holes, the spin function is proportional to the horizon vorticity. It is also useful for visualizing the direction of a black hole's spin. Specifically, this function computes Strahlkorper
to compute area_element
can be computed via gr::surfaces::area_element
. The argument unit_normal_vector
can be found by raising the index of the one-form returned by gr::surfaces::unit_normal_oneform
. The argument tangents
is a Tangents that can be obtained from the StrahlkorperDataBox using the ylm::Tags::Tangents
tag.
void gr::surfaces::spin_function | ( | gsl::not_null< Scalar< DataVector > * > | result, |
const ylm::Tags::aliases::Jacobian< Frame > & | tangents, | ||
const ylm::Strahlkorper< Frame > & | strahlkorper, | ||
const tnsr::I< DataVector, 3, Frame > & | unit_normal_vector, | ||
const Scalar< DataVector > & | area_element, | ||
const tnsr::ii< DataVector, 3, Frame > & | extrinsic_curvature | ||
) |
Spin function of a 2D Strahlkorper
.
See Eqs. (2) and (10) of [151]. This function computes the "spin function," which is an ingredient for horizon surface integrals that measure quasilocal spin. This function is proportional to the imaginary part of the horizon's complex scalar curvature. For Kerr black holes, the spin function is proportional to the horizon vorticity. It is also useful for visualizing the direction of a black hole's spin. Specifically, this function computes Strahlkorper
to compute area_element
can be computed via gr::surfaces::area_element
. The argument unit_normal_vector
can be found by raising the index of the one-form returned by gr::surfaces::unit_normal_oneform
. The argument tangents
is a Tangents that can be obtained from the StrahlkorperDataBox using the ylm::Tags::Tangents
tag.
void gr::surfaces::spin_vector | ( | const gsl::not_null< std::array< double, 3 > * > | result, |
double | spin_magnitude, | ||
const Scalar< DataVector > & | area_element, | ||
const Scalar< DataVector > & | ricci_scalar, | ||
const Scalar< DataVector > & | spin_function, | ||
const ylm::Strahlkorper< MetricDataFrame > & | strahlkorper, | ||
const tnsr::I< DataVector, 3, MeasurementFrame > & | measurement_frame_coords | ||
) |
Spin vector of a 2D Strahlkorper
.
Computes the spin vector of a Strahlkorper
in a MeasurementFrame
, such as Frame::Inertial
. The result is a std::array<double, 3>
containing the Cartesian components (in MeasurementFrame
) of the spin vector whose magnitude is spin_magnitude
. spin_vector
will return the dimensionless spin components if spin_magnitude
is the dimensionless spin magnitude, and it will return the dimensionful spin components if spin_magnitude
is the dimensionful spin magnitude. The spin vector is given by a surface integral over the horizon gr::surfaces::area_element
), gr::surfaces::spin_function
), MeasurementFrame
coordinates of points on the Strahlkorper
, MeasurementFrame
coordinates of the center of the Strahlkorper, Strahlkorper
(via gr::surfaces::ricci_scalar
). Note that measuring positions on the horizon relative to
result | The computed spin vector in MeasurementFrame . |
spin_magnitude | The spin magnitude. |
area_element | The area element on strahlkorper 's collocation points. |
ricci_scalar | The intrinsic ricci scalar on strahlkorper 's collocation points. |
spin_function | The spin function on strahlkorper 's collocation points. |
strahlkorper | The Strahlkorper in the MetricDataFrame frame. |
measurement_frame_coords | The Cartesian coordinates of strahlkorper 's collocation points, mapped to MeasurementFrame . |
Note that spin_vector
uses two frames: the Strahlkorper and all of the metric quantities are in MetricDataFrame
and are used for doing integrals, but the measurement_frame_coordinates
are in MeasurementFrame
and are used for making sure the result is in the appropriate frame. The two frames MeasurementFrame
and MetricDataFrame
may or may not be the same. In principle, spin_vector could be written using only a single frame (MeasurementFrame
) but that would require that the metric quantities are known on the collocation points of a Strahlkorper in MeasurementFrame
, which would involve more interpolation.
double gr::surfaces::surface_integral_of_scalar | ( | const Scalar< DataVector > & | area_element, |
const Scalar< DataVector > & | scalar, | ||
const ylm::Strahlkorper< Frame > & | strahlkorper | ||
) |
Surface integral of a scalar on a 2D Strahlkorper
Computes the surface integral Strahlkorper
with area element gr::surfaces::area_element()
.
tnsr::i< DataVector, 3, Frame > gr::surfaces::unit_normal_one_form | ( | const tnsr::i< DataVector, 3, Frame > & | normal_one_form, |
const DataVector & | one_over_one_form_magnitude | ||
) |
Computes normalized unit normal one-form to a Strahlkorper.
The input argument normal_one_form
one_over_one_form_magnitude
is magnitude
function.
void gr::surfaces::unit_normal_one_form | ( | gsl::not_null< tnsr::i< DataVector, 3, Frame > * > | result, |
const tnsr::i< DataVector, 3, Frame > & | normal_one_form, | ||
const DataVector & | one_over_one_form_magnitude | ||
) |
Computes normalized unit normal one-form to a Strahlkorper.
The input argument normal_one_form
one_over_one_form_magnitude
is magnitude
function.