|
SpECTRE
v2026.06.30
|
A 3D cubed sphere. More...
#include <Sphere.hpp>
Classes | |
| struct | EquatorialCompression |
| struct | EquatorialCompressionOptions |
| Options for the EquatorialCompression map. More... | |
| struct | InitialGridPoints |
| struct | InitialRefinement |
| struct | InnerRadius |
| struct | Interior |
| struct | OuterBoundaryCondition |
| struct | OuterRadius |
| struct | RadialDistribution |
| struct | RadialPartitioning |
| struct | TimeDependentMaps |
| struct | UseEquiangularMap |
| struct | WhichWedges |
Public Types | |
| using | maps_list |
| using | Excision = detail::Excision |
| using | InnerCube = detail::InnerCube |
| using | TimeDepOptionType |
| using | basic_options |
| template<typename Metavariables> | |
| using | options |
Public Member Functions | |
| Sphere (double inner_radius, double outer_radius, std::variant< Excision, InnerCube > interior, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_equiangular_map, std::optional< EquatorialCompressionOptions > equatorial_compression={}, std::vector< double > radial_partitioning={}, const typename RadialDistribution::type &radial_distribution=domain::CoordinateMaps::Distribution::Linear, ShellWedges which_wedges=ShellWedges::All, std::optional< TimeDepOptionType > time_dependent_options=std::nullopt, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={}) | |
| Sphere (const Sphere &)=delete | |
| Sphere (Sphere &&)=default | |
| Sphere & | operator= (const Sphere &)=delete |
| Sphere & | operator= (Sphere &&)=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. | |
| 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). | |
| 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. | |
| 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. | |
| 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 |
A 3D cubed sphere.
Six wedges surround an interior region, which is either excised or filled in with a seventh block. The interior region is a (possibly deformed) sphere when excised, or a (possibly deformed) cube when filled in. Additional spherical shells, each composed of six wedges, can be added with the 'RadialPartitioning' option.
sphere." This domain creator offers one grid anchor "Center" at the origin.
The inner cube is a BulgedCube except if the inner cube sphericity is exactly 0. Then an Equiangular or Affine map is used (depending on if it's equiangular or not) to avoid a root find in the BulgedCube map.
There are two ways to add time dependent maps to the Sphere domain creator. In the input file, these are specified under the TimeDependentMaps: block.
You can use a simple TimeDependence (e.g. domain::creators::time_dependence::UniformTranslation or domain::creators::time_dependence::RotationAboutZAxis) to add time dependent maps. This method will add the same maps to all blocks in the domain. This method can be used with an inner cube or with an excision surface.
The Sphere domain creator also has the option to use some hard coded time dependent maps that may be useful in certain scenarios. This method adds the maps in domain::creators::sphere::TimeDependentMapOptions to the domain. When a shape map is specified, an excised sphere uses it on the innermost radial shell by default. A filled sphere with multiple radial shells uses it on at least the two innermost shells: the first shell turns on the deformation away from the central cube, and the subsequent selected shells roll it off. At least one outer shell must remain without a shape map, so this filled configuration requires at least three radial shells. The NumberOfRadialShellsWithShapeMap option can be used to choose more inner shells. With only one radial shell, a filled sphere does not roll off the shape map, while an excised sphere rolls it off at the outer boundary.
To not have any time dependent maps, pass a std::nullopt to the appropriate argument in the constructor. In the input file, simply have TimeDependentMaps: None.
| using domain::creators::Sphere::basic_options |
| using domain::creators::Sphere::maps_list |
| using domain::creators::Sphere::options |
|
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 >.
|
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 |