|
SpECTRE
v2025.08.19
|
This holds all options related to the time dependent maps of the binary compact object domains. More...
#include <BinaryCompactObject.hpp>
Classes | |
| struct | InitialTime |
| The initial time of the functions of time. More... | |
Public Types | |
| using | maps_list = tmpl::append< tmpl::list< detail::di_map< Identity > >, detail::produce_all_maps< Frame::Grid, Frame::Inertial, Shape, Expansion, Rotation >, detail::produce_all_maps< Frame::Grid, Frame::Distorted, Shape >, detail::produce_all_maps< Frame::Distorted, Frame::Inertial, Expansion, Rotation >, detail::produce_all_maps< Frame::Grid, Frame::Inertial, Shape, RotScaleTrans >, detail::produce_all_maps< Frame::Grid, Frame::Inertial, Shape, Skew, RotScaleTrans >, detail::produce_all_maps< Frame::Distorted, Frame::Inertial, RotScaleTrans >, detail::produce_all_maps< Frame::Distorted, Frame::Inertial, Skew, RotScaleTrans > > |
| using | ExpansionMapOptions = domain::creators::time_dependent_options::ExpansionMapOptions< false > |
| Options for the expansion map. The outer boundary radius of the map is always set to the outer boundary of the Domain, so there is no option here to set the outer boundary radius. | |
| using | ExpansionMapOptionType = typename ExpansionMapOptions::type::value_type |
| using | RotationMapOptions = domain::creators::time_dependent_options::RotationMapOptions< false > |
| Options for the rotation map. | |
| using | RotationMapOptionType = typename RotationMapOptions::type::value_type |
| using | TranslationMapOptions = domain::creators::time_dependent_options::TranslationMapOptions< 3 > |
| Options for the Translation Map, the outer radius is always set to the outer boundary of the Domain, so there's no option needed for outer boundary. | |
| using | TranslationMapOptionType = typename TranslationMapOptions::type::value_type |
| using | SkewMapOptions = domain::creators::time_dependent_options::SkewMapOptions |
| Options for the Skew map. | |
| using | SkewMapOptionType = typename SkewMapOptions::type::value_type |
| template<domain::ObjectLabel Object> | |
| using | ShapeMapOptions = domain::creators::time_dependent_options::ShapeMapOptions< not IsCylindrical, Object > |
| Options for the shape map. | |
| template<domain::ObjectLabel Object> | |
| using | ShapeMapOptionType = typename ShapeMapOptions< Object >::type::value_type |
| using | GridCentersOptions = time_dependent_options::GridCentersOptions |
| Options for tracking the grid centers. More... | |
| using | GridCentersOptionType = typename GridCentersOptions::type::value_type |
| using | options = tmpl::list< InitialTime, ExpansionMapOptions, RotationMapOptions, TranslationMapOptions, SkewMapOptions, ShapeMapOptions< domain::ObjectLabel::A >, ShapeMapOptions< domain::ObjectLabel::B >, GridCentersOptions > |
| using | IncludeDistortedMapType = tmpl::conditional_t< IsCylindrical, bool, std::optional< size_t > > |
Type to pass to grid_to_distorted_map() and grid_to_inertial_map(). More... | |
Public Member Functions | |
| TimeDependentMapOptions (double initial_time, ExpansionMapOptionType expansion_map_options, RotationMapOptionType rotation_map_options, TranslationMapOptionType translation_map_options, SkewMapOptionType skew_map_options, ShapeMapOptionType< domain::ObjectLabel::A > shape_options_A, ShapeMapOptionType< domain::ObjectLabel::B > shape_options_B, GridCentersOptionType grid_centers, const Options::Context &context={}) | |
| template<bool UseWorldtube = false> | |
| std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > | create_functions_of_time (const std::unordered_map< std::string, double > &initial_expiration_times) const |
| Create the function of time map using the options that were provided to this class. More... | |
| void | build_maps (const std::array< std::array< double, 3 >, 2 > &object_centers, const std::optional< std::array< double, 3 > > &cube_A_center, const std::optional< std::array< double, 3 > > &cube_B_center, const std::array< double, 3 > ¢er_of_mass, const std::optional< std::array< double, IsCylindrical ? 2 :3 > > &object_A_radii, const std::optional< std::array< double, IsCylindrical ? 2 :3 > > &object_B_radii, bool object_A_filled, bool object_B_filled, double envelope_radius, double domain_outer_radius) |
| Construct the actual maps that will be used. More... | |
| bool | has_distorted_frame_options (domain::ObjectLabel object) const |
| Check whether options were specified in the constructor for the shape map of this object. | |
| template<domain::ObjectLabel Object> | |
| MapType< Frame::Distorted, Frame::Inertial > | distorted_to_inertial_map (const IncludeDistortedMapType &include_distorted_map, bool use_rigid_map) const |
This will construct the map from Frame::Distorted to Frame::Inertial More... | |
| template<domain::ObjectLabel Object> | |
| MapType< Frame::Grid, Frame::Distorted > | grid_to_distorted_map (const IncludeDistortedMapType &include_distorted_map) const |
This will construct the maps from the Frame::Grid to the Frame::Distorted. More... | |
| template<domain::ObjectLabel Object> | |
| MapType< Frame::Grid, Frame::Inertial > | grid_to_inertial_map (const IncludeDistortedMapType &include_distorted_map, bool use_rigid_map, bool return_excision_map=false) const |
This will construct the entire map from the Frame::Grid to the Frame::Inertial. More... | |
Static Public Attributes | |
| static constexpr Options::String | help |
| static const std::string | expansion_name {"Expansion"} |
| static const std::string | expansion_outer_boundary_name |
| static const std::string | rotation_name {"Rotation"} |
| static const std::string | translation_name {"Translation"} |
| static const std::string | skew_name {"Skew"} |
| static const std::array< std::string, 2 > | size_names {{"SizeA", "SizeB"}} |
| static const std::array< std::string, 2 > | shape_names |
| static const std::string | grid_centers_name {"GridCenters"} |
This holds all options related to the time dependent maps of the binary compact object domains.
Since both domains will have the same (overall) time dependent maps, their options are going to be the same as well. The options won't be exactly the same though, so there is a IsCylindrical template parameter to distinguish.
This class will create the FunctionsOfTime needed for the binary compact object domains as well as the actual CoordinateMaps themselves
| using domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::GridCentersOptions = time_dependent_options::GridCentersOptions |
Options for tracking the grid centers.
This is only used in binary neutron star simulations right now.
| using domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::IncludeDistortedMapType = tmpl::conditional_t<IsCylindrical, bool, std::optional<size_t> > |
Type to pass to grid_to_distorted_map() and grid_to_inertial_map().
If IsCylindrical is true, pass a bool for whether to include a shape map or not. If it's false, pass a std::optional<size_t>. If this has a value, then it includes a shape map. The size_t represents the relative block number around each object in the BinaryCompactObject domain. It should go from 0 to 11 for the 12 blocks surrounding each object.
| void domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::build_maps | ( | const std::array< std::array< double, 3 >, 2 > & | object_centers, |
| const std::optional< std::array< double, 3 > > & | cube_A_center, | ||
| const std::optional< std::array< double, 3 > > & | cube_B_center, | ||
| const std::array< double, 3 > & | center_of_mass, | ||
| const std::optional< std::array< double, IsCylindrical ? 2 :3 > > & | object_A_radii, | ||
| const std::optional< std::array< double, IsCylindrical ? 2 :3 > > & | object_B_radii, | ||
| bool | object_A_filled, | ||
| bool | object_B_filled, | ||
| double | envelope_radius, | ||
| double | domain_outer_radius | ||
| ) |
Construct the actual maps that will be used.
Currently, this constructs a:
domain::CoordinateMaps::TimeDependent::SkewRotScaleTrans<3>Shape (with size FunctionOfTime)If the radii for an object are std::nullopt, this means that a Shape map is not constructed for that object. An identity map will be used instead. This happens when the object is covered by a Cartesian cube, rather than a sphere. If IsCylindrical is true, only pass two radii for the inner/outer radius of the object sphere. If it is false, pass three radii corresponding to the excision radius, the outer radius of the inner sphere, and the radius of the surrounding cube.
If a shape map is requested and the object is excised, then the shape map will deform the inner excision surface of the object. This deformation either extends to the outer radius of the sphere, or further to the edge of the cube that surrounds the sphere, depending on the TransitionEndsAtCube option. If the object is filled, then the shape map will deform the outer radius of the sphere that covers the object and the TransitionEndsAtCube option must be true.
| std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::create_functions_of_time | ( | const std::unordered_map< std::string, double > & | initial_expiration_times | ) | const |
Create the function of time map using the options that were provided to this class.
Currently, this will add:
PiecewisePolynomial<2>PiecewisePolynomial<2>FixedSpeedCubicQuaternionFunctionOfTime<3>PiecewisePolynomial<3>PiecewisePolynomial<3>PiecewisePolynomial<2>GridCenters: PiecewisePolynomial<2>
When UseWorldtube is set to true, they are
IntegratedFunctionOfTimeFixedSpeedCubicIntegratedFunctionOfTimePiecewisePolynomial<2> | MapType< Frame::Distorted, Frame::Inertial > domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::distorted_to_inertial_map | ( | const IncludeDistortedMapType & | include_distorted_map, |
| bool | use_rigid_map | ||
| ) | const |
This will construct the map from Frame::Distorted to Frame::Inertial
If we are including a shape map, then this will be a RotScaleTrans map. If we aren't, this returns a nullptr.
| MapType< Frame::Grid, Frame::Distorted > domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::grid_to_distorted_map | ( | const IncludeDistortedMapType & | include_distorted_map | ) | const |
This will construct the maps from the Frame::Grid to the Frame::Distorted.
If we are including a shape map, then this will be a Shape map (with size FunctionOfTime) for the templated Object. If we aren't, then this returns a nullptr.
| MapType< Frame::Grid, Frame::Inertial > domain::creators::bco::TimeDependentMapOptions< IsCylindrical >::grid_to_inertial_map | ( | const IncludeDistortedMapType & | include_distorted_map, |
| bool | use_rigid_map, | ||
| bool | return_excision_map = false |
||
| ) | const |
This will construct the entire map from the Frame::Grid to the Frame::Inertial.
If we are including a shape map, then this map will have a composition of a Shape (with size FunctionOfTime) and RotScaleTrans map. If not, there will only be a RotScaleTrans map.
If return_excision_map is true, this will use a special shape map within the excision. Also if return_excision_map is true, then include_distorted_map must be either 'true' (if IsCylindrical is true) or have a value less than 6, but it doesn't matter what value (because inside the excision isn't a specific block).
|
inlinestatic |
|
staticconstexpr |
|
inlinestatic |