|
| 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 SwshTransforms given a list of Spectral::Swsh::Tags::Derivative<Tag, Derivative> that need to be computed. The SwshTransforms constructed by this type alias correspond to the Tags 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 SwshTransforms or InverseSwshTransforms 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 SwshTransforms or InverseSwshTransforms 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 [88]. 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 [88] 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 [88] 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 [88]. 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 [88]. 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 [88]. 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 [88]) 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 [88]) 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 [88]) 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 [88]) 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.