SpECTRE
v2025.03.17
|
Map from 3D unit right cylinder to a volume that connects a portion of a circle to a portion of a spherical surface. More...
#include <CylindricalFlatEndcap.hpp>
Public Member Functions | |
CylindricalFlatEndcap (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) | |
CylindricalFlatEndcap (CylindricalFlatEndcap &&)=default | |
CylindricalFlatEndcap (const CylindricalFlatEndcap &)=default | |
CylindricalFlatEndcap & | operator= (const CylindricalFlatEndcap &)=default |
CylindricalFlatEndcap & | operator= (CylindricalFlatEndcap &&)=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 CylindricalFlatEndcap &lhs, const CylindricalFlatEndcap &rhs) |
Map from 3D unit right cylinder to a volume that connects a portion of a circle to a portion of a spherical surface.
Consider a 2D circle in 3D space that is normal to the
CylindricalFlatEndcap maps a 3D unit right cylinder (with coordinates
CylindricalFlatEndcap is intended to be composed with Wedge2D maps to construct a portion of a cylindrical domain for a binary system.
CylindricalFlatEndcap is described briefly in the Appendix of [33]. CylindricalFlatEndcap is used to construct the blocks labeled 'MA wedge' and 'MB wedge' in Figure 20 of that paper.
CylindricalFlatEndcap is implemented using FocallyLiftedMap
and FocallyLiftedInnerMaps::FlatEndcap
; see those classes for details.
The following restrictions are made so that the map is not singular or close to singular. It is possible to construct a valid map without these assumptions, but the assumptions simplify the code and avoid problematic edge cases, and the expected use cases obey these restrictions.
We demand that