SpECTRE
v2023.05.16
|
A general domain for two compact objects. More...
#include <BinaryCompactObject.hpp>
Classes | |
struct | CartesianCubeAtXCoord |
struct | Envelope |
struct | EnvelopeRadius |
struct | Excision |
Options for an excision region in the domain. More... | |
struct | InitialGridPoints |
struct | InitialRefinement |
struct | Object |
Options for one of the two objects in the binary domain. More... | |
struct | ObjectA |
struct | ObjectB |
struct | OpeningAngle |
struct | OuterBoundaryCondition |
struct | OuterRadius |
struct | OuterShell |
struct | RadialDistributionOuterShell |
struct | TimeDependentMaps |
struct | UseEquiangularMap |
struct | UseProjectiveMap |
Public Member Functions | |
BinaryCompactObject (typename ObjectA::type object_A, typename ObjectB::type object_B, double envelope_radius, double outer_radius, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_equiangular_map=true, bool use_projective_map=true, CoordinateMaps::Distribution radial_distribution_outer_shell=CoordinateMaps::Distribution::Linear, double opening_angle_in_degrees=90.0, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={}) | |
BinaryCompactObject (bco::TimeDependentMapOptions time_dependent_options, typename ObjectA::type object_A, typename ObjectB::type object_B, double envelope_radius, double outer_radius, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_equiangular_map=true, bool use_projective_map=true, CoordinateMaps::Distribution radial_distribution_outer_shell=CoordinateMaps::Distribution::Linear, double opening_angle_in_degrees=90.0, 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 |
![]() | |
static constexpr size_t | volume_dim |
A general domain for two compact objects.
Creates a 3D Domain that represents a binary compact object solution. The Domain consists of 4 or 5 nested layers of blocks; these layers are, working from the interior toward the exterior:
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 following time-dependent maps are applied:CubicScale
expansion and a Rotation
applied to all blocks from the Grid to the Inertial frame. However, if there is a size map in the block (defined below), then the expansion and rotation maps go from the Distorted to the Inertial frame.SphericalCompression
size map. The size map goes from the Grid to the Distorted frame. We will also add a shape map here.
|
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 >.
|
staticconstexpr |