SpECTRE  v2022.09.02
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 $$C_1$$ and radius $$R_1$$. Also consider a sphere with center $$C_2$$, and radius $$R_2$$. Also let there be a projection point $$P$$.

CylindricalFlatEndcap maps a 3D unit right cylinder (with coordinates $$(\bar{x},\bar{y},\bar{z})$$ such that $$-1\leq\bar{z}\leq 1$$ and $$\bar{x}^2+\bar{y}^2 \leq 1$$) to the shaded area in the figure above (with coordinates $$(x,y,z)$$). The "bottom" of the cylinder $$\bar{z}=-1$$ is mapped to the interior of the circle of radius $$R_1$$. Curves of constant $$(\bar{x},\bar{y})$$ are mapped to portions of lines that pass through $$P$$. Along each of these curves, $$\bar{z}=-1$$ is mapped to a point on the circle and $$\bar{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 [24]. 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 $$R_2$$ but not more than 5 times the sphere radius $$R_2$$.
• $$P$$ is inside the sphere but not too close to its surface; specifically, we demand that $$|P-C_2|\leq 0.95 R_2$$.
• The ratio $$R_1/R_2$$ is between 10 and 1/10, inclusive.
• The x and y components of $$C_2-C_1$$ both have magnitudes smaller than or equal to $$R_1+R_2$$.

The documentation for this class was generated from the following file:
• src/Domain/CoordinateMaps/CylindricalFlatEndcap.hpp