|
template<typename DerivativeTagList , ComplexRepresentation Representation = ComplexRepresentation::Interleaved> |
using | AngularDerivatives = detail::AngularDerivativesImpl< DerivativeTagList, typename detail::unique_derived_from_list< DerivativeTagList >::type, Representation > |
| A DataBox mutate-compatible computational struct for computing a set of spin-weighted spherical harmonic derivatives by grouping and batch-computing spin-weighted spherical harmonic transforms. More...
|
|
template<typename DerivativeTag > |
using | coefficient_buffer_tags_for_derivative_tag = tmpl::list< Spectral::Swsh::Tags::SwshTransform< typename DerivativeTag::derivative_of >, Spectral::Swsh::Tags::SwshTransform< DerivativeTag > > |
| A metafunction for determining the coefficient buffers needed by angular_derivatives() to avoid repeatedly allocating space for modal data each time a derivative is taken. More...
|
|
template<int Spin, typename TagList > |
using | get_tags_with_spin = tmpl::remove_duplicates< tmpl::filter< TagList, detail::has_spin< tmpl::_1, std::integral_constant< int, Spin > > > > |
| Extract from TagList the subset of those tags that have a static int member spin equal to the template parameter Spin . More...
|
|
template<int Spin, typename TagList > |
using | get_prefix_tags_that_wrap_tags_with_spin = tmpl::filter< TagList, tmpl::bind< detail::wrapped_has_spin, tmpl::_1, std::integral_constant< int, Spin > > > |
| Extract from TagList the subset of those tags that wrap a tag that has a static int member spin equal to the template parameter Spin . More...
|
|
template<ComplexRepresentation Representation, typename DerivativeTagList > |
using | make_transform_list_from_derivative_tags = typename detail::make_transform_list_impl< -2, Representation, tmpl::transform< DerivativeTagList, tmpl::bind< db::remove_tag_prefix, tmpl::_1 > >, decltype(std::make_integer_sequence< int, 5 >{})>::type |
| Assemble a tmpl::list of SwshTransform s given a list of Spectral::Swsh::Tags::Derivative<Tag, Derivative> that need to be computed. The SwshTransform s constructed by this type alias correspond to the Tag s in the list. More...
|
|
|
template<ComplexRepresentation Representation, typename TagList > |
using | make_transform_list = typename detail::make_transform_list_impl< -2, Representation, TagList, decltype(std::make_integer_sequence< int, 5 >{})>::type |
| Assemble a tmpl::list of SwshTransform s or InverseSwshTransform s given a list of tags TagList that need to be transformed. The Representation is the Spectral::Swsh::ComplexRepresentation to use for the transformations. More...
|
|
template<ComplexRepresentation Representation, typename TagList > |
using | make_inverse_transform_list = typename detail::make_inverse_transform_list_impl< -2, Representation, TagList, decltype(std::make_integer_sequence< int, 5 >{})>::type |
| Assemble a tmpl::list of SwshTransform s or InverseSwshTransform s given a list of tags TagList that need to be transformed. The Representation is the Spectral::Swsh::ComplexRepresentation to use for the transformations. More...
|
|
|
constexpr size_t | size_of_libsharp_coefficient_vector (const size_t l_max) |
| Convenience function for determining the number of spin-weighted spherical harmonics coefficients that are stored for a given l_max More...
|
|
constexpr double | sharp_swsh_sign_change (const int from_spin_weight, const int to_spin_weight, const bool real) |
| Compute the relative sign change necessary to convert between the libsharp basis for spin weight from_spin_weight to the basis for spin weight to_spin_weight , for the real component coefficients if real is true, otherwise for the imaginary component coefficients. The sign change for a given coefficient is equivalent to the product of sharp_swsh_sign(from_spin, m, real) * sharp_swsh_sign(to_spin, m,
real) . Due to the form of the signs, it does not end up depending on m (the m's in the power of \(-1\)'s cancel). For full details of the libsharp sign conventions, see the documentation for TransformJob. More...
|
|
constexpr double | sharp_swsh_sign (const int spin_weight, const int m, const bool real) |
| Compute the sign change between the libsharp convention and the set of spin-weighted spherical harmonics given by the relation to the Wigner rotation matrices. More...
|
|
const CoefficientsMetadata & | cached_coefficients_metadata (size_t l_max) |
| Generation function for obtaining a CoefficientsMetadata object which is computed by the libsharp calls only once, then lazily cached as a singleton via a static member of a function template. This is the preferred method for obtaining a CoefficientsMetadata when the l_max is not very large. More...
|
|
template<int Spin> |
std::complex< double > | libsharp_mode_to_goldberg (size_t l, int m, size_t l_max, const SpinWeighted< ComplexModalVector, Spin > &libsharp_modes, size_t radial_offset) |
| Compute the mode coefficient for the convention of [81]. See the documentation for TransformJob for complete details on the libsharp and Goldberg coefficient representations. More...
|
|
template<int Spin> |
void | goldberg_modes_to_libsharp_modes_single_pair (const LibsharpCoefficientInfo &coefficient_info, gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > libsharp_modes, size_t radial_offset, std::complex< double > goldberg_plus_m_mode_value, std::complex< double > goldberg_minus_m_mode_value) |
| Set modes of a libsharp-compatible data structure by specifying the modes in the [81] representation. More...
|
|
template<int Spin> |
void | goldberg_modes_to_libsharp_modes_single_pair (size_t l, int m, size_t l_max, gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > libsharp_modes, size_t radial_offset, std::complex< double > goldberg_plus_m_mode_value, std::complex< double > goldberg_minus_m_mode_value) |
| Set modes of a libsharp-compatible data structure by specifying the modes in the [81] representation. More...
|
|
constexpr size_t | goldberg_mode_index (const size_t l_max, const size_t l, const int m, const size_t radial_offset=0) |
| Returns the index into a vector of modes consistent with [81]. More...
|
|
constexpr size_t | number_of_swsh_collocation_points (const size_t l_max) |
| Convenience function for determining the number of spin-weighted spherical harmonic collocation values that are stored for a given l_max for a libsharp-compatible set of collocation points.
|
|
constexpr size_t | number_of_swsh_theta_collocation_points (const size_t l_max) |
| Returns the number of spin-weighted spherical harmonic collocation values in \(\theta\) for a libsharp-compatible set of collocation points. More...
|
|
constexpr size_t | number_of_swsh_phi_collocation_points (const size_t l_max) |
| Returns the number of spin-weighted spherical harmonic collocation values in \(\phi\) for a libsharp-compatible set of collocation points. More...
|
|
Mesh< 3 > | swsh_volume_mesh_for_radial_operations (const size_t l_max, const size_t number_of_radial_points) |
| Obtain the three-dimensional mesh associated with a libsharp-compatible sequence of spherical nodal shells. More...
|
|
template<ComplexRepresentation Representation> |
const CollocationMetadata< Representation > & | cached_collocation_metadata (size_t l_max) |
| precomputation function for those collocation grids that are requested More...
|
|
void | create_angular_and_cartesian_coordinates (const gsl::not_null< tnsr::i< DataVector, 3 > * > cartesian_coordinates, const gsl::not_null< tnsr::i< DataVector, 2, ::Frame::Spherical<::Frame::Inertial > > * > angular_coordinates, size_t l_max) |
| Store the libsharp-compatible collocation grid and corresponding unit-sphere cartesian grid in the supplied buffers.
|
|
template<int Spin> |
auto | swsh_buffer (const size_t l_max, const size_t number_of_radial_points) |
| Produces a SpinWeighted<ComplexModalVector, Spin> of the appropriate size to be used as a modal buffer for Spectral::Swsh::AngularDerivatives or Spectral::Swsh::angular_derivatives . More...
|
|
template<typename DerivativeKindList , ComplexRepresentation Representation = ComplexRepresentation::Interleaved, typename... ArgumentTypes> |
void | angular_derivatives (const size_t l_max, const size_t number_of_radial_points, const ArgumentTypes &... arguments) |
| Evaluate all of the spin-weighted derivatives in DerivKindList on input SpinWeighted<ComplexDataVector, Spin> collocation data, returning by pointer. More...
|
|
template<typename DerivKind , ComplexRepresentation Representation = ComplexRepresentation::Interleaved, int Spin> |
SpinWeighted< ComplexDataVector, Tags::derivative_spin_weight< DerivKind >+Spin > | angular_derivative (size_t l_max, size_t number_of_radial_points, const SpinWeighted< ComplexDataVector, Spin > &to_differentiate) |
| Evaluate the spin-weighted derivative DerivKind on the provided SpinWeighted<ComplexDataVector, Spin> collocation data, returning by value.
|
|
template<ComplexRepresentation Representation = ComplexRepresentation::Interleaved, int Spin, typename... ModalThenNodalTypes> |
void | swsh_transform (const size_t l_max, const size_t number_of_radial_points, const gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > first_coefficient, const ModalThenNodalTypes &... coefficients_then_collocations) |
| Perform a forward libsharp spin-weighted spherical harmonic transform on any number of supplied SpinWeighted<ComplexDataVector, Spin> . More...
|
|
template<ComplexRepresentation Representation = ComplexRepresentation::Interleaved, int Spin> |
SpinWeighted< ComplexModalVector, Spin > | swsh_transform (size_t l_max, size_t number_of_radial_points, const SpinWeighted< ComplexDataVector, Spin > &collocation) |
| Perform a forward libsharp spin-weighted spherical harmonic transform on a single supplied SpinWeighted<ComplexDataVector, Spin> . More...
|
|
template<ComplexRepresentation Representation = ComplexRepresentation::Interleaved, int Spin, typename... NodalThenModalTypes> |
void | inverse_swsh_transform (const size_t l_max, const size_t number_of_radial_points, const gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > first_collocation, const NodalThenModalTypes &... collocations_then_coefficients) |
| Perform an inverse libsharp spin-weighted spherical harmonic transform on any number of supplied SpinWeighted<ComplexModalVector, Spin> . More...
|
|
template<ComplexRepresentation Representation = ComplexRepresentation::Interleaved, int Spin> |
SpinWeighted< ComplexDataVector, Spin > | inverse_swsh_transform (size_t l_max, size_t number_of_radial_points, const SpinWeighted< ComplexModalVector, Spin > &libsharp_coefficients) |
| Perform an inverse libsharp spin-weighted spherical harmonic transform on a single supplied SpinWeighted<ComplexModalVector, Spin> . More...
|
|
template<int Spin> |
void | interpolate_to_collocation (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > target, const SpinWeighted< ComplexDataVector, Spin > &source, size_t target_l_max, size_t source_l_max, size_t number_of_radial_points) |
| Convert spin-weighted spherical harmonic data to a new set of collocation points (either downsampling or upsampling)
|
|
|
template<int Spin> |
std::complex< double > | libsharp_mode_to_goldberg_plus_m (const LibsharpCoefficientInfo &coefficient_info, const SpinWeighted< ComplexModalVector, Spin > &libsharp_modes, size_t radial_offset) |
| Compute the mode coefficient for the convention of [81]. More...
|
|
template<int Spin> |
std::complex< double > | libsharp_mode_to_goldberg_minus_m (const LibsharpCoefficientInfo &coefficient_info, const SpinWeighted< ComplexModalVector, Spin > &libsharp_modes, size_t radial_offset) |
| Compute the mode coefficient for the convention of [81]. More...
|
|
|
template<int Spin> |
void | libsharp_to_goldberg_modes (gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > goldberg_modes, const SpinWeighted< ComplexModalVector, Spin > &libsharp_modes, size_t l_max) |
| Compute the set of Goldberg Spin-weighted spherical harmonic modes (in the convention of [81]) from a libsharp-compatible series of modes. More...
|
|
template<int Spin> |
SpinWeighted< ComplexModalVector, Spin > | libsharp_to_goldberg_modes (const SpinWeighted< ComplexModalVector, Spin > &libsharp_modes, size_t l_max) |
| Compute the set of Goldberg Spin-weighted spherical harmonic modes (in the convention of [81]) from a libsharp-compatible series of modes. More...
|
|
|
template<int Spin> |
void | goldberg_to_libsharp_modes (gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > libsharp_modes, const SpinWeighted< ComplexModalVector, Spin > &goldberg_modes, size_t l_max) |
| Compute the set of libsharp-compatible spin-weighted spherical harmonic modes from a set of Goldberg modes (following the convention of [81]) More...
|
|
template<int Spin> |
SpinWeighted< ComplexModalVector, Spin > | goldberg_to_libsharp_modes (const SpinWeighted< ComplexModalVector, Spin > &goldberg_modes, size_t l_max) |
| Compute the set of libsharp-compatible spin-weighted spherical harmonic modes from a set of Goldberg modes (following the convention of [81]) More...
|
|
|
template<int Spin> |
void | filter_swsh_volume_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_max_l, double exponential_alpha, size_t exponential_half_power, gsl::not_null< ComplexDataVector * > buffer, gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > transform_buffer) |
| Filter a volume collocation set in the form of consecutive libsharp-compatible spherical shells. More...
|
|
template<int Spin> |
void | filter_swsh_volume_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_max_l, double exponential_alpha, size_t exponential_half_power) |
| Filter a volume collocation set in the form of consecutive libsharp-compatible spherical shells. More...
|
|
|
template<int Spin> |
void | filter_swsh_volume_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_min_l, size_t filter_max_l, double exponential_alpha, size_t exponential_half_power, gsl::not_null< ComplexDataVector * > buffer, gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > transform_buffer) |
| Filter a volume collocation set in the form of consecutive libsharp-compatible spherical shells. More...
|
|
template<int Spin> |
void | filter_swsh_volume_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_min_l, size_t filter_max_l, double exponential_alpha, size_t exponential_half_power) |
| Filter a volume collocation set in the form of consecutive libsharp-compatible spherical shells. More...
|
|
|
template<int Spin> |
void | filter_swsh_boundary_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_max_l, gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > transform_buffer) |
| Filter a libsharp-compatible set of collocation points on a spherical surface. More...
|
|
template<int Spin> |
void | filter_swsh_boundary_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_max_l) |
| Filter a libsharp-compatible set of collocation points on a spherical surface. More...
|
|
|
template<int Spin> |
void | filter_swsh_boundary_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_min_l, size_t filter_max_l, gsl::not_null< SpinWeighted< ComplexModalVector, Spin > * > transform_buffer) |
| Filter a libsharp-compatible set of collocation points on a spherical surface. More...
|
|
template<int Spin> |
void | filter_swsh_boundary_quantity (gsl::not_null< SpinWeighted< ComplexDataVector, Spin > * > to_filter, size_t l_max, size_t filter_min_l, size_t filter_max_l) |
| Filter a libsharp-compatible set of collocation points on a spherical surface. More...
|
|
Namespace for spin-weighted spherical harmonic utilities.