SpECTRE  v2026.11.11
Loading...
Searching...
No Matches
domain::creators::BinaryNeutronStars Class Reference

A domain for a binary of two filled (non-excised) objects, such as two neutron stars. More...

#include <BinaryNeutronStars.hpp>

Classes

struct  B2InitialAngularGridPoints
 Initial number of angular grid points for the ZernikeB2 cross-section of the filled cylinders. More...
struct  Bulge
 Whether to use bulging coordinate maps for the deformed-cube wedges and the hollow cylinders. More...
struct  CubeInitialGridPoints
 Initial number of grid points for each cubed-cylinder group. More...
struct  CubeInitialXRefinement
 Initial \(x\) refinement for each cubed-cylinder group. More...
struct  CubeInitialYZRefinement
 Initial \(y\) and \(z\) refinement for each cubed-cylinder group. More...
struct  CylinderInitialRadialGridPoints
 Initial number of grid points for the filled and hollow cylinders in the direction from the cubed cylinders out to CylinderOuterRadius More...
struct  CylinderInitialRadialRefinement
 Initial refinement for the filled and hollow cylinders in the direction from the cubed cylinders out to CylinderOuterRadius More...
struct  CylinderOuterRadius
 Grid-coordinate radius of the sphere, centered at the origin, formed by the outer faces of the cylinders. More...
struct  HollowCylinderInitialAngularGridPoints
 Initial number of grid points for the hollow cylinders in the angular and axial directions. More...
struct  InitialSphericalHarmonicL
 Initial spherical harmonic resolution for spherical shells. More...
struct  OuterBoundaryCondition
 Outer boundary condition. More...
struct  OuterRadius
 Grid-coordinate radius of the outer boundary of the domain. More...
struct  SphericalShellsInitialRadialGridPoints
 Initial number of radial grid points for spherical shells. More...
struct  SphericalShellsInitialRadialRefinement
 Initial radial refinement of spherical shells. More...
struct  SphericalShellsRadialDistribution
 Radial distribution for spherical shells. More...
struct  SphericalShellsRadialPartitioning
 Radial partitioning of the spherical shell region. More...
struct  TimeDependentMaps
 Time dependent maps. More...
struct  WedgeInnerRadius
 Grid-coordinate distance from the \(x\)-axis to the edges of the central cubes, which is also the inner radius of the deformed-cube wedges. More...
struct  WedgeOuterRadius
 Grid-coordinate radius of the outer faces of the deformed-cube wedges. More...
struct  WedgePrismInitialRadialGridPoints
 Initial number of radial grid points for the deformed-cube wedges. More...
struct  WedgePrismInitialRadialRefinement
 Initial radial refinement for the deformed-cube wedges. More...
struct  XAxisPoints
 Grid \(x\)-coordinates of the ends of the cubed cylinders and the centers of the objects. More...

Public Types

using maps_list
template<typename Metavariables>
using options

Public Member Functions

 BinaryNeutronStars (const std::array< double, 4 > &x_axis_points, double wedge_inner_radius, double wedge_outer_radius, double cylinder_outer_radius, double outer_radius, const CubeInitialGridPoints::type &cube_grid_points, const CubeInitialXRefinement::type &cube_x_refinement, const CubeInitialYZRefinement::type &cube_yz_refinement, size_t wedge_prism_radial_grid_points, size_t wedge_prism_radial_refinement, size_t cylinder_radial_grid_points, size_t cylinder_radial_refinement, size_t b2_angular_grid_points, std::array< size_t, 2 > hollow_cylinder_angular_grid_points, const SphericalShellsInitialRadialRefinement::type &spherical_shells_radial_refinement, size_t spherical_shells_radial_grid_points, size_t spherical_harmonic_l, std::vector< double > spherical_shells_radial_partitioning, const SphericalShellsRadialDistribution::type &spherical_shells_radial_distribution, bool bulge=false, std::optional< bco::TimeDependentMapOptions< true > > time_dependent_options=std::nullopt, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={})
 BinaryNeutronStars (const BinaryNeutronStars &)=delete
 BinaryNeutronStars (BinaryNeutronStars &&)=default
BinaryNeutronStars & operator= (const BinaryNeutronStars &)=delete
BinaryNeutronStars & operator= (BinaryNeutronStars &&)=default
Domain< 3 > create_domain () const override
std::unordered_map< std::string, tnsr::I< double, 3, Frame::Grid > > grid_anchors () const override
 A set of named coordinates in the grid frame, like the center of the domain or the positions of specific objects in a domain.
std::vector< DirectionMap< 3, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > external_boundary_conditions () const override
 The set of external boundary condition for every block in the domain.
std::vector< std::array< size_t, 3 > > initial_extents () const override
 Obtain the initial grid extents of the Elements in each block.
std::vector< std::array< size_t, 3 > > initial_refinement_levels () const override
 Obtain the initial refinement levels of the blocks.
auto functions_of_time (const std::unordered_map< std::string, double > &initial_expiration_times={}) const -> std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > override
 Retrieve the functions of time used for moving meshes.
std::vector< std::string > block_names () const override
 The block names, which use left/right directionality as from a viewer looking down the \(y\)-axis.
std::unordered_map< std::string, std::unordered_set< std::string > > block_groups () const override
 The block groups, which are CubedCylinders, Wedges, Cylinders, and SphericalShells. The Wedges group is the subset of CubedCylinders consisting of the deformed cube wedges surrounding the central cubes.
Public Member Functions inherited from DomainCreator< 3 >
DomainCreator< VolumeDim > & operator= (const DomainCreator< VolumeDim > &)=delete

Static Public Attributes

static constexpr Options::String help
Static Public Attributes inherited from DomainCreator< 3 >
static constexpr size_t volume_dim

Detailed Description

A domain for a binary of two filled (non-excised) objects, such as two neutron stars.

Domain with bulge set to true or false.

Details

The XAxisPoints option gives four \(x\)-coordinates [ \(x_{\rm left}\), \(x_B\), \(x_A\), \(x_{\rm right}\)]. If doing subcell, ideally these value plus \(x=0\) would be equally spaced, with the object centers lying on the \(x\)-axis at \(x_A\) and \(x_B\), with \(x_B < 0 < x_A\). The cubed cylinders extend from \(x_{\rm left} < x_B\) to \(x_{\rm right} > x_A\). The domain has three layers, from the inside out:

  1. Cubed cylinders. Four groups of five blocks each surround the \(x\)-axis out to WedgeOuterRadius (see Bulge below for the shape of their outer faces). From left to right, the groups (BLeft, BRight, ALeft, ARight) span \(x\) in [ \(x_{\rm left}\), \(x_B\)], [ \(x_B\), 0], [0, \(x_A\)], and [ \(x_A\), \(x_{\rm right}\)]. Each group has a central cube with half-width WedgeInnerRadius \(/\sqrt{2}\) in \(y\) and \(z\) (so its edges lie at radius WedgeInnerRadius from the \(x\)-axis) and four deformed-cube wedges around it.
  2. Cylinders. A hollow cylinder surrounds each of the four cubed-cylinder groups, and a filled cylinder (with a ZernikeB2 cross-section) caps each end, at \(x = x_{\rm left}\) and \(x = x_{\rm right}\). The outer faces of these six blocks together form a sphere of radius CylinderOuterRadius centered at the origin.
  3. Spherical shells. One or more spherical shells extend from CylinderOuterRadius to OuterRadius. The number of shells is set by SphericalShellsRadialPartitioning.

The interfaces between the cubed cylinders and the cylinders, and between the cylinders and the innermost spherical shell, are non-conforming.

The Bulge option selects the maps for the deformed-cube wedges and the hollow cylinders. When false, the wedges are extruded 2D wedges, so their outer faces lie on a circular cylinder of radius WedgeOuterRadius. When true, the wedges use FlatOffsetWedge maps whose outer faces lie on spheres centered on each object. The sphere around the object farther from the origin has radius WedgeOuterRadius, and the radius of the other sphere is chosen so that the two spheres meet the \(x = 0\) plane in the same circle.

Time-dependent maps (expansion, rotation, and translation) are supported through TimeDependentMaps. Shape maps are not supported, because there are no excision surfaces. The time-dependent maps are a RotScaleTrans map centered at the origin. All blocks inside CylinderOuterRadius are mapped rigidly. In the spherical shells the expansion transitions to ExpansionOuterBoundary and the translation falls off to zero at OuterRadius, while the rotation is applied everywhere.

Member Typedef Documentation

◆ options

template<typename Metavariables>
using domain::creators::BinaryNeutronStars::options
Initial value:
tmpl::append<
tmpl::list<
tmpl::conditional_t<
domain::BoundaryConditions::has_boundary_conditions_base_v<
typename Metavariables::system>,
typename Metavariables::system>>>,
tmpl::list<>>>
typename detail::get_boundary_conditions_base< T >::type get_boundary_conditions_base
Returns T::boundary_condition_base or a placeholder class.
Definition GetBoundaryConditionsBase.hpp:32
Boundary condition at the outer radius.
Definition AngularCartoonSphere2D.hpp:162
Definition BinaryCompactObject.hpp:394
Definition BinaryCompactObject.hpp:518
Initial number of angular grid points for the ZernikeB2 cross-section of the filled cylinders.
Definition BinaryNeutronStars.hpp:356
Whether to use bulging coordinate maps for the deformed-cube wedges and the hollow cylinders.
Definition BinaryNeutronStars.hpp:443
Initial number of grid points for each cubed-cylinder group.
Definition BinaryNeutronStars.hpp:261
Initial refinement for each cubed-cylinder group.
Definition BinaryNeutronStars.hpp:276
Initial and refinement for each cubed-cylinder group.
Definition BinaryNeutronStars.hpp:293
Initial number of grid points for the filled and hollow cylinders in the direction from the cubed cyl...
Definition BinaryNeutronStars.hpp:328
Initial refinement for the filled and hollow cylinders in the direction from the cubed cylinders out ...
Definition BinaryNeutronStars.hpp:341
Grid-coordinate radius of the sphere, centered at the origin, formed by the outer faces of the cylind...
Definition BinaryNeutronStars.hpp:237
Initial number of grid points for the hollow cylinders in the angular and axial directions.
Definition BinaryNeutronStars.hpp:371
Initial spherical harmonic resolution for spherical shells.
Definition BinaryNeutronStars.hpp:400
Initial number of radial grid points for spherical shells.
Definition BinaryNeutronStars.hpp:392
Initial radial refinement of spherical shells.
Definition BinaryNeutronStars.hpp:381
Radial distribution for spherical shells.
Definition BinaryNeutronStars.hpp:421
Radial partitioning of the spherical shell region.
Definition BinaryNeutronStars.hpp:410
Grid-coordinate distance from the -axis to the edges of the central cubes, which is also the inner ra...
Definition BinaryNeutronStars.hpp:205
Grid-coordinate radius of the outer faces of the deformed-cube wedges.
Definition BinaryNeutronStars.hpp:222
Initial number of radial grid points for the deformed-cube wedges.
Definition BinaryNeutronStars.hpp:304
Initial radial refinement for the deformed-cube wedges.
Definition BinaryNeutronStars.hpp:313
Grid -coordinates of the ends of the cubed cylinders and the centers of the objects.
Definition BinaryNeutronStars.hpp:190

Member Function Documentation

◆ block_groups()

std::unordered_map< std::string, std::unordered_set< std::string > > domain::creators::BinaryNeutronStars::block_groups ( ) const
inlineoverridevirtual

The block groups, which are CubedCylinders, Wedges, Cylinders, and SphericalShells. The Wedges group is the subset of CubedCylinders consisting of the deformed cube wedges surrounding the central cubes.

Reimplemented from DomainCreator< 3 >.

◆ block_names()

std::vector< std::string > domain::creators::BinaryNeutronStars::block_names ( ) const
inlineoverridevirtual

The block names, which use left/right directionality as from a viewer looking down the \(y\)-axis.

Details

The block names start with the central cubes:

  • BLeftCubedCylinderCenter, BLeftCubedCylinderFront, BLeftCubedCylinderTop, BLeftCubedCylinderBack, BLeftCubedCylinderBottom
  • BRightCubedCylinderCenter, BRightCubedCylinderFront, ...
  • ALeftCubedCylinderCenter, ...
  • ARightCubedCylinderCenter, ...

Then there are the cylinders:

  • BFilledCylinder
  • BLeftHollowCylinder
  • BRightHollowCylinder
  • ALeftHollowCylinder
  • ARightHollowCylinder
  • AFilledCylinder

Finally, there are the spherical shells: SphericalShell0, SphericalShell1, etc., one for each radial partition of the region between CylinderOuterRadius and OuterRadius.

Reimplemented from DomainCreator< 3 >.

◆ create_domain()

Domain< 3 > domain::creators::BinaryNeutronStars::create_domain ( ) const
overridevirtual

Implements DomainCreator< 3 >.

◆ external_boundary_conditions()

std::vector< DirectionMap< 3, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > domain::creators::BinaryNeutronStars::external_boundary_conditions ( ) const
overridevirtual

The set of external boundary condition for every block in the domain.

Implements DomainCreator< 3 >.

◆ functions_of_time()

auto domain::creators::BinaryNeutronStars::functions_of_time ( const std::unordered_map< std::string, double > & initial_expiration_times = {}) const -> std::unordered_map< std::string, std::unique_ptr<domain::FunctionsOfTime::FunctionOfTime>>
overridevirtual

Retrieve the functions of time used for moving meshes.

Reimplemented from DomainCreator< 3 >.

◆ grid_anchors()

std::unordered_map< std::string, tnsr::I< double, 3, Frame::Grid > > domain::creators::BinaryNeutronStars::grid_anchors ( ) const
inlineoverridevirtual

A set of named coordinates in the grid frame, like the center of the domain or the positions of specific objects in a domain.

Reimplemented from DomainCreator< 3 >.

◆ initial_extents()

std::vector< std::array< size_t, 3 > > domain::creators::BinaryNeutronStars::initial_extents ( ) const
overridevirtual

Obtain the initial grid extents of the Elements in each block.

Implements DomainCreator< 3 >.

◆ initial_refinement_levels()

std::vector< std::array< size_t, 3 > > domain::creators::BinaryNeutronStars::initial_refinement_levels ( ) const
overridevirtual

Obtain the initial refinement levels of the blocks.

Implements DomainCreator< 3 >.

Member Data Documentation

◆ help

Options::String domain::creators::BinaryNeutronStars::help
staticconstexpr
Initial value:
{
"A domain for a binary of two filled (non-excised) objects, such as two "
"neutron stars, centered on the x-axis. Four cubed cylinders (a central "
"cube surrounded by four deformed-cube wedges) span the x-axis between "
"the points in XAxisPoints. These are surrounded by four hollow "
"cylinders and capped at each end by a filled cylinder, whose outer "
"faces together form a sphere of radius CylinderOuterRadius. Spherical "
"shells extend from there to OuterRadius. The Bulge option makes the "
"outer faces of the deformed-cube wedges spherical instead of "
"cylindrical."}

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