SpECTRE
v2025.03.17
|
A FocallyLiftedInnerMap that maps a 3D unit right cylindrical shell to a volume that connects portions of two spherical surfaces. More...
#include <FocallyLiftedSide.hpp>
Public Member Functions | |
Side (const std::array< double, 3 > ¢er, const double radius, const double z_lower, const double z_upper) | |
Side (Side &&)=default | |
Side (const Side &)=default | |
Side & | operator= (const Side &)=default |
Side & | operator= (Side &&)=default |
template<typename T > | |
void | forward_map (const gsl::not_null< std::array< tt::remove_cvref_wrap_t< T >, 3 > * > target_coords, const std::array< T, 3 > &source_coords) const |
std::optional< std::array< double, 3 > > | inverse (const std::array< double, 3 > &target_coords, double sigma_in) const |
template<typename T > | |
void | jacobian (const gsl::not_null< tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFrame > * > jacobian_out, const std::array< T, 3 > &source_coords) const |
template<typename T > | |
void | inv_jacobian (const gsl::not_null< tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFrame > * > inv_jacobian_out, const std::array< T, 3 > &source_coords) const |
template<typename T > | |
void | sigma (const gsl::not_null< tt::remove_cvref_wrap_t< T > * > sigma_out, const std::array< T, 3 > &source_coords) const |
template<typename T > | |
void | deriv_sigma (const gsl::not_null< std::array< tt::remove_cvref_wrap_t< T >, 3 > * > deriv_sigma_out, const std::array< T, 3 > &source_coords) const |
template<typename T > | |
void | dxbar_dsigma (const gsl::not_null< std::array< tt::remove_cvref_wrap_t< T >, 3 > * > dxbar_dsigma_out, const std::array< T, 3 > &source_coords) const |
std::optional< double > | lambda_tilde (const std::array< double, 3 > &parent_mapped_target_coords, const std::array< double, 3 > &projection_point, bool source_is_between_focus_and_target) const |
template<typename T > | |
void | deriv_lambda_tilde (const gsl::not_null< std::array< tt::remove_cvref_wrap_t< T >, 3 > * > deriv_lambda_tilde_out, const std::array< T, 3 > &target_coords, const T &lambda_tilde, const std::array< double, 3 > &projection_point) const |
void | pup (PUP::er &p) |
Static Public Member Functions | |
static bool | is_identity () |
Static Public Attributes | |
static constexpr size_t | dim = 3 |
Friends | |
bool | operator== (const Side &lhs, const Side &rhs) |
A FocallyLiftedInnerMap that maps a 3D unit right cylindrical shell to a volume that connects portions of two spherical surfaces.
The domain of the map is a 3D unit right cylinder with coordinates
Consider a sphere with center Side
provides the following functions:
forward_map()
maps forward_map()
returns
Here
where
Note that
deriv_sigma
returns
jacobian
returns jacobian
are
inverse
takes std::optional<std::array<double, 3>>
if
If std::optional<std::array<double, 3>>
.
To get
If std::optional<std::array<double, 3>>
.
To compute
where
lambda_tilde
takes as arguments a point
Since
In solving the quadratic, we choose the larger root if std::optional<double>
.
deriv_lambda_tilde
takes as arguments
inv_jacobian
returns inv_jacobian
are
Note from Eqs. (9–12) that
By differentiating Eqs. (9–12), we find
where
which is also equal to the quantity in Eq. (12).
dxbar_dsigma
returns
From Eqs. (10) and (11) we have