|
SpECTRE
v2026.06.30
|
Maps a cylindrical shell block to a region bounded by an inner right cylinder and an outer spherical surface. More...
#include <CylindricalSphericalShell.hpp>
Public Member Functions | |
| CylindricalSphericalShell (double x_inner_lower, double x_inner_upper, double x_outer_lower, double x_outer_upper, double r_inner, double r_sphere) | |
| Construct the map. | |
| CylindricalSphericalShell (CylindricalSphericalShell &&)=default | |
| CylindricalSphericalShell (const CylindricalSphericalShell &)=default | |
| CylindricalSphericalShell & | operator= (const CylindricalSphericalShell &)=default |
| CylindricalSphericalShell & | operator= (CylindricalSphericalShell &&)=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 |
| static constexpr bool | supports_hessian {false} |
Friends | |
| bool | operator== (const CylindricalSphericalShell &lhs, const CylindricalSphericalShell &rhs) |
Maps a cylindrical shell block to a region bounded by an inner right cylinder and an outer spherical surface.
The logical coordinates are:
The physical coordinates \((x, y, z)\) are computed as follows. Let \(\alpha = (\xi+1)/2\) and \(\beta = (\zeta+1)/2\). Define
\begin{align} x_\mathrm{inner}(\beta) &= x^\mathrm{inner}_\mathrm{lower} + \beta\,(x^\mathrm{inner}_\mathrm{upper} - x^\mathrm{inner}_\mathrm{lower}), \\ x_\mathrm{outer}(\beta) &= x^\mathrm{outer}_\mathrm{lower} + \beta\,(x^\mathrm{outer}_\mathrm{upper} - x^\mathrm{outer}_\mathrm{lower}), \\ r_\mathrm{outer}(\beta) &= \sqrt{r_\mathrm{sphere}^2 - x_\mathrm{outer}(\beta)^2}. \end{align}
Then
\begin{align} x &= (1-\alpha)\,x_\mathrm{inner}(\beta) + \alpha\,x_\mathrm{outer}(\beta), \\ r &= (1-\alpha)\,r_\mathrm{inner} + \alpha\,r_\mathrm{outer}(\beta), \\ y &= r\cos\eta, \quad z = r\sin\eta. \end{align}
The six block faces have the following geometry:
| domain::CoordinateMaps::CylindricalSphericalShell::CylindricalSphericalShell | ( | double | x_inner_lower, |
| double | x_inner_upper, | ||
| double | x_outer_lower, | ||
| double | x_outer_upper, | ||
| double | r_inner, | ||
| double | r_sphere ) |
Construct the map.
| x_inner_lower | Axial coordinate \(x\) at the lower end of the inner cylinder ( \(\xi=-1, \zeta=-1\)). |
| x_inner_upper | Axial coordinate \(x\) at the upper end of the inner cylinder ( \(\xi=-1, \zeta=+1\)). |
| x_outer_lower | Axial coordinate \(x\) at the lower end of the outer spherical face ( \(\xi=+1, \zeta=-1\)). |
| x_outer_upper | Axial coordinate \(x\) at the upper end of the outer spherical face ( \(\xi=+1, \zeta=+1\)). |
| r_inner | Radius of the inner right cylinder. |
| r_sphere | Radius of the outer bounding sphere (centered at the origin). |