SpECTRE  v2025.03.17
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Modules Pages
domain::CoordinateMaps::CylindricalFlatEndcap Class Reference

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 > &center_one, const std::array< double, 3 > &center_two, const std::array< double, 3 > &proj_center, double radius_one, double radius_two)
 
 CylindricalFlatEndcap (CylindricalFlatEndcap &&)=default
 
 CylindricalFlatEndcap (const CylindricalFlatEndcap &)=default
 
CylindricalFlatEndcapoperator= (const CylindricalFlatEndcap &)=default
 
CylindricalFlatEndcapoperator= (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::NoFramejacobian (const std::array< T, 3 > &source_coords) const
 
template<typename T >
tnsr::Ij< tt::remove_cvref_wrap_t< T >, 3, Frame::NoFrameinv_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)
 

Detailed Description

Map from 3D unit right cylinder to a volume that connects a portion of a circle to a portion of a spherical surface.

A cylinder maps to the shaded region.

Details

Consider a 2D circle in 3D space that is normal to the z axis and has (3D) center C1 and radius R1. Also consider a sphere with center C2, and radius R2. Also let there be a projection point P.

CylindricalFlatEndcap maps a 3D unit right cylinder (with coordinates (x¯,y¯,z¯) such that 1z¯1 and x¯2+y¯21) to the shaded area in the figure above (with coordinates (x,y,z)). The "bottom" of the cylinder z¯=1 is mapped to the interior of the circle of radius R1. Curves of constant (x¯,y¯) are mapped to portions of lines that pass through P. Along each of these curves, z¯=1 is mapped to a point on the circle and z¯=+1 is mapped to a point on the sphere.

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.

Restrictions on map parameters.

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

  • The plane containing the circle is below (i.e. at a smaller value of z than) the sphere, by an amount at least 5% of the sphere radius R2 but not more than 5 times the sphere radius R2.
  • P is inside the sphere but not too close to its surface; specifically, we demand that |PC2|0.95R2.
  • The ratio R1/R2 is between 10 and 1/10, inclusive.
  • The x and y components of C2C1 both have magnitudes smaller than or equal to R1+R2.

The documentation for this class was generated from the following file: