SpECTRE
v2024.12.16
|
A general domain for two compact objects based on cylinders. More...
#include <CylindricalBinaryCompactObject.hpp>
Classes | |
struct | BoundaryConditions |
struct | CenterA |
struct | CenterB |
struct | IncludeInnerSphereA |
struct | IncludeInnerSphereB |
struct | IncludeOuterSphere |
struct | InitialGridPoints |
struct | InitialRefinement |
struct | InnerBoundaryCondition |
struct | OuterBoundaryCondition |
struct | OuterRadius |
struct | RadiusA |
struct | RadiusB |
struct | TimeDependentMaps |
struct | UseEquiangularMap |
Public Types | |
using | maps_list = implementation defined |
template<typename Metavariables > | |
using | options = implementation defined |
Public Member Functions | |
CylindricalBinaryCompactObject (std::array< double, 3 > center_A, std::array< double, 3 > center_B, double radius_A, double radius_B, bool include_inner_sphere_A, bool include_inner_sphere_B, bool include_outer_sphere, double outer_radius, bool use_equiangular_map, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_grid_points, std::optional< bco::TimeDependentMapOptions< true > > time_dependent_options=std::nullopt, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > inner_boundary_condition=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={}) | |
CylindricalBinaryCompactObject (const CylindricalBinaryCompactObject &)=delete | |
CylindricalBinaryCompactObject (CylindricalBinaryCompactObject &&)=default | |
CylindricalBinaryCompactObject & | operator= (const CylindricalBinaryCompactObject &)=delete |
CylindricalBinaryCompactObject & | operator= (CylindricalBinaryCompactObject &&)=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. More... | |
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. More... | |
std::vector< std::array< size_t, 3 > > | initial_extents () const override |
Obtain the initial grid extents of the Elements in each block. More... | |
std::vector< std::array< size_t, 3 > > | initial_refinement_levels () const override |
Obtain the initial refinement levels of the blocks. More... | |
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. More... | |
std::vector< std::string > | block_names () const override |
A human-readable name for every block, or empty if the domain creator doesn't support block names (yet). More... | |
std::unordered_map< std::string, std::unordered_set< std::string > > | block_groups () const override |
Labels to refer to groups of blocks. The groups can overlap, and they don't have to cover all blocks in the domain. The groups can be used to refer to multiple blocks at once when specifying input-file options. More... | |
Public Member Functions inherited from DomainCreator< 3 > | |
DomainCreator (const DomainCreator< VolumeDim > &)=delete | |
DomainCreator (DomainCreator< VolumeDim > &&)=default | |
DomainCreator< VolumeDim > & | operator= (const DomainCreator< VolumeDim > &)=delete |
DomainCreator< VolumeDim > & | operator= (DomainCreator< VolumeDim > &&)=default |
virtual Domain< VolumeDim > | create_domain () const=0 |
virtual std::unordered_map< std::string, tnsr::I< double, VolumeDim, Frame::Grid > > | grid_anchors () const |
A set of named coordinates in the grid frame, like the center of the domain or the positions of specific objects in a domain. More... | |
virtual std::vector< DirectionMap< VolumeDim, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > | external_boundary_conditions () const=0 |
The set of external boundary condition for every block in the domain. More... | |
virtual std::vector< std::string > | block_names () const |
A human-readable name for every block, or empty if the domain creator doesn't support block names (yet). More... | |
virtual std::unordered_map< std::string, std::unordered_set< std::string > > | block_groups () const |
Labels to refer to groups of blocks. The groups can overlap, and they don't have to cover all blocks in the domain. The groups can be used to refer to multiple blocks at once when specifying input-file options. More... | |
virtual std::vector< std::array< size_t, VolumeDim > > | initial_extents () const=0 |
Obtain the initial grid extents of the Elements in each block. More... | |
virtual std::vector< std::array< size_t, VolumeDim > > | initial_refinement_levels () const=0 |
Obtain the initial refinement levels of the blocks. More... | |
virtual 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 > > |
Retrieve the functions of time used for moving meshes. More... | |
Static Public Attributes | |
static constexpr Options::String | help |
Static Public Attributes inherited from DomainCreator< 3 > | |
static constexpr size_t | volume_dim |
A general domain for two compact objects based on cylinders.
Creates a 3D Domain that represents a binary compact object solution. This domain is described briefly in the Appendix of [32], and is illustrated in Figure 20 of that paper.
In the code and options below, ObjectA
and ObjectB
refer to the two compact objects. In the grid frame, ObjectA
is located to the right of (i.e. a more positive value of the x-coordinate than) ObjectB
. The inner edge of the Blocks surrounding each of ObjectA
and ObjectB
is spherical in grid coordinates; the user must specify the center and radius of this surface for both ObjectA
and ObjectB
, and the user must specify the outer boundary radius. The outer boundary is a sphere centered at the origin.
This domain offers some grid anchors. See domain::creators::bco::create_grid_anchors
for which ones are offered.
Note that Figure 20 of [32] illustrates additional spherical shells inside the "EA" and "EB" blocks, and the caption of Figure 20 indicates that there are additional spherical shells outside the "CA" and "CB" blocks; CylindricalBinaryCompactObject
has these extra shells inside "EA" only if the option IncludeInnerSphereA
is true, it has the extra shells inside "EB" only if the option IncludeInnerSphereB
is true, and it has the extra shells outside "CA" and "CB" only if IncludeOuterSphere
is true. If the shells are absent, then the "EA" and "EB" blocks extend to the excision boundaries and the "CA" and "CB" blocks extend to the outer boundary.
The Blocks are named as follows:
IncludeOuterSphere
is false.IncludeOuterSphere
is true, then there are more blocks named OuterSphereCAFilledCylinder, OuterSphereCBFilledCylinder, OuterSphereCACylinder, and OuterSphereCBCylinder. These are in a Block group called "OuterSphere", and all of these border the outer boundary.IncludeInnerSphereA
is false.IncludeInnerSphereA
is true, then there are new blocks InnerSphereEAFilledCylinder, InnerSphereMAFilledCylinder, and InnerSphereEACylinder. These are in a Block group called "InnerSphereA", and all of these border the inner excision boundary "A".IncludeInnerSphereB
is false.IncludeInnerSphereB
is true, then there are new blocks InnerSphereEBFilledCylinder, InnerSphereMBFilledCylinder, and InnerSphereEBCylinder. These are in a Block group called "InnerSphereB", and all of these border the inner excision boundary "B".If
All time dependent maps are optional to specify. To include a map, specify its options. Otherwise specify None
for that map. You can also turn off time dependent maps all together by specifying None
for the TimeDependentMaps
option. See domain::creators::bco::TimeDependentMapOptions
. This class must pass a template parameter of true
to domain::creators::bco::TimeDependentMapOptions
.
|
inlineoverridevirtual |
Labels to refer to groups of blocks. The groups can overlap, and they don't have to cover all blocks in the domain. The groups can be used to refer to multiple blocks at once when specifying input-file options.
Reimplemented from DomainCreator< 3 >.
|
inlineoverridevirtual |
A human-readable name for every block, or empty if the domain creator doesn't support block names (yet).
Reimplemented from DomainCreator< 3 >.
|
overridevirtual |
Implements DomainCreator< 3 >.
|
overridevirtual |
The set of external boundary condition for every block in the domain.
Implements DomainCreator< 3 >.
|
overridevirtual |
Retrieve the functions of time used for moving meshes.
Reimplemented from DomainCreator< 3 >.
|
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 >.
|
overridevirtual |
Obtain the initial grid extents of the Elements in each block.
Implements DomainCreator< 3 >.
|
overridevirtual |
Obtain the initial refinement levels of the blocks.
Implements DomainCreator< 3 >.
|
staticconstexpr |