SpECTRE
v2024.12.16
|
Redistributes gridpoints within the unit sphere. More...
#include <SpecialMobius.hpp>
Public Member Functions | |
SpecialMobius (double mu) | |
SpecialMobius (SpecialMobius &&)=default | |
SpecialMobius (const SpecialMobius &)=default | |
SpecialMobius & | operator= (const SpecialMobius &)=default |
SpecialMobius & | operator= (SpecialMobius &&)=default |
template<typename T > | |
std::array< tt::remove_cvref_wrap_t< T >, 3 > | operator() (const std::array< T, 3 > &source_coords) const |
std::optional< std::array< double, 3 > > | inverse (const std::array< double, 3 > &target_coords) const |
Returns std::nullopt for target_coords outside the unit sphere. The inverse function is only callable with doubles because the inverse might fail if called for a point out of range, and it is unclear what should happen if the inverse were to succeed for some points in a DataVector but fail for other points. | |
template<typename T > | |
tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFrame > | jacobian (const std::array< T, 3 > &source_coords) const |
template<typename T > | |
tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFrame > | inv_jacobian (const std::array< T, 3 > &source_coords) const |
void | pup (PUP::er &p) |
bool | is_identity () const |
Static Public Attributes | |
static constexpr size_t | dim = 3 |
Friends | |
bool | operator== (const SpecialMobius &lhs, const SpecialMobius &rhs) |
Redistributes gridpoints within the unit sphere.
A special case of the conformal Mobius transformation that maps the unit ball to itself. This map depends on a single parameter, mu
We define the auxiliary variables
and
The map corresponding to this transformation in cartesian coordinates is then given by:
The inverse map is the same as the forward map with
This map is intended to be used only inside the unit sphere. A point inside the unit sphere maps to another point inside the unit sphere. The map can have undesirable behavior at certain points outside the unit sphere: The map is singular at
A general Mobius transformation is a function on the complex plane, and takes the form
The special case used in this map is the function
The three-dimensional version of this map is obtained by rotating the disk in the plane about the x-axis.
This map is useful for performing transformations along the x-axis that preserve the unit disk. A concrete example of this is in the BBH domain, where two BBHs with a center-of-mass at x=