SpECTRE
v2023.01.13
|
A general domain for two compact objects. More...
#include <BinaryCompactObject.hpp>
Classes | |
struct | AsymptoticVelocityOuterBoundary |
The asymptotic radial velocity of the outer boundary. More... | |
struct | DecayTimescaleOuterBoundaryVelocity |
The timescale for how fast the outer boundary velocity approaches its asymptotic value. More... | |
struct | EnvelopingCube |
struct | Excision |
Options for an excision region in the domain. More... | |
struct | ExpansionMap |
struct | ExpansionMapOuterBoundary |
The outer boundary or pivot point of the domain::CoordinateMaps::TimeDependent::CubicScale map. More... | |
struct | FrustumSphericity |
struct | InitialAngularVelocity |
The angular velocity of the rotation. More... | |
struct | InitialExpansion |
The initial value of the expansion factor. More... | |
struct | InitialExpansionVelocity |
The velocity of the expansion factor. More... | |
struct | InitialGridPoints |
struct | InitialRefinement |
struct | InitialSizeMapAccelerations |
Initial accelerations for functions of time for size maps for objects A,B. More... | |
struct | InitialSizeMapValues |
Initial values for functions of time for size maps for objects A,B. More... | |
struct | InitialSizeMapVelocities |
Initial velocities for functions of time for size maps for objects A,B. More... | |
struct | InitialTime |
The initial time of the functions of time. More... | |
struct | Object |
Options for one of the two objects in the binary domain. More... | |
struct | ObjectA |
struct | ObjectB |
struct | OuterBoundaryCondition |
struct | OuterRadius |
struct | OuterShell |
struct | RadialDistributionOuterShell |
struct | RadiusEnvelopingCube |
struct | RadiusEnvelopingSphere |
struct | RotationMap |
struct | SizeMap |
struct | TimeDependentMaps |
struct | UseProjectiveMap |
Public Member Functions | |
BinaryCompactObject (Object object_A, Object object_B, double radius_enveloping_cube, double outer_radius_domain, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_projective_map=true, double frustum_sphericity=0.0, const std::optional< double > &radius_enveloping_sphere=std::nullopt, CoordinateMaps::Distribution radial_distribution_outer_shell=CoordinateMaps::Distribution::Linear, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={}) | |
BinaryCompactObject (double initial_time, double expansion_map_outer_boundary, double initial_expansion, double initial_expansion_velocity, double asymptotic_velocity_outer_boundary, double decay_timescale_outer_boundary_velocity, std::array< double, 3 > initial_angular_velocity, std::array< double, 2 > initial_size_map_values, std::array< double, 2 > initial_size_map_velocities, std::array< double, 2 > initial_size_map_accelerations, Object object_A, Object object_B, double radius_enveloping_cube, double outer_radius_domain, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_projective_map=true, double frustum_sphericity=0.0, const std::optional< double > &radius_enveloping_sphere=std::nullopt, CoordinateMaps::Distribution radial_distribution_outer_shell=CoordinateMaps::Distribution::Linear, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={}) | |
BinaryCompactObject (const BinaryCompactObject &)=delete | |
BinaryCompactObject (BinaryCompactObject &&)=default | |
BinaryCompactObject & | operator= (const BinaryCompactObject &)=delete |
BinaryCompactObject & | operator= (BinaryCompactObject &&)=default |
Domain< 3 > | create_domain () const override |
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... | |
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... | |
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... | |
![]() | |
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::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 |
A general domain for two compact objects.
Creates a 3D Domain that represents a binary compact object solution. The Domain consists of 4, 5, or 6 nested layers of blocks; these layers are, working from the interior toward the exterior:
In the code and options below, ObjectA
and ObjectB
refer to the two compact objects, and by extension, also refer to the layers that immediately surround each compact object. Note that ObjectA
is located to the right of the origin (along the positive x-axis) and ObjectB
is located to the left of the origin. enveloping cube
refers to the outer surface of Layer 3. outer sphere
is the radius of the spherical outer boundary, which is the outer boundary of Layer 5. The enveloping cube
and outer sphere
are both centered at the origin. cutting plane
refers to the plane along which the domain divides into two hemispheres. In the final coordinates, the cutting plane always intersects the x-axis at the origin.
ObjectA
and ObjectB
should be chosen such that the center of mass is located at x=0.domain
that conforms to domain::protocols::Metavariables. If domain::enable_time_dependent_maps is either set to false
or not specified in the metavariables, then this domain will be time-independent. If domain::enable_time_dependent_maps is set to true
, then this domain also includes a time-dependent map, along with additional options (and a corresponding constructor) for initializing the time-dependent map. These options include the InitialTime
which specifies the initial time for the FunctionsOfTime controlling the map. The time-dependent map itself consists of a composition of a CubicScale expansion map and a Rotation map everywhere except possibly in layer 1; in that case, if ObjectA
or ObjectB
is excised, then the time-dependent map in the corresponding blocks in layer 1 is a composition of a SphericalCompression size map, a CubicScale expansion map, and a Rotation map.
|
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 |
Obtain the initial grid extents of the Elements in each block.
Implements DomainCreator< 3 >.
|
inlineoverridevirtual |
Obtain the initial refinement levels of the blocks.
Implements DomainCreator< 3 >.