SpECTRE
v2025.03.17
|
Map from a 3D unit right cylindrical shell to a volume that connects portions of two spherical surfaces. More...
#include <CylindricalSide.hpp>
Public Member Functions | |
CylindricalSide (const std::array< double, 3 > ¢er_one, const std::array< double, 3 > ¢er_two, const std::array< double, 3 > &proj_center, double radius_one, double radius_two, double z_lower, double z_upper) | |
CylindricalSide (CylindricalSide &&)=default | |
CylindricalSide (const CylindricalSide &)=default | |
CylindricalSide & | operator= (const CylindricalSide &)=default |
CylindricalSide & | operator= (CylindricalSide &&)=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 |
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) |
Static Public Member Functions | |
static bool | is_identity () |
Static Public Attributes | |
static constexpr size_t | dim = 3 |
Friends | |
bool | operator== (const CylindricalSide &lhs, const CylindricalSide &rhs) |
Map from a 3D unit right cylindrical shell to a volume that connects portions of two spherical surfaces.
Consider two spheres with centers
Note that Sphere 1 and Sphere 2 are not equivalent, because the mapped portion of Sphere 1 is bounded by planes of constant
CylindricalSide maps a 3D unit right cylindrical shell (with coordinates
CylindricalSide is described briefly in the Appendix of [33]. CylindricalSide is used to construct the blocks labeled 'CA cylinder', 'EA cylinder', 'CB cylinder', 'EE cylinder', and 'EB cylinder' in Figure 20 of that paper. Note that 'CA cylinder', 'CB cylinder', and 'EE cylinder' have Sphere 1 contained in Sphere2, and 'EA cylinder' and 'EB cylinder' have Sphere 2 contained in Sphere 1.
CylindricalSide is implemented using FocallyLiftedMap
and FocallyLiftedInnerMaps::Side
; see those classes for details.
We demand that: