|
|
| SphericalShells (double inner_radius, double outer_radius, size_t initial_radial_refinement, size_t initial_number_of_radial_grid_points, size_t initial_spherical_harmonic_l, std::vector< double > radial_partitioning={}, const typename RadialDistribution::type &radial_distribution=domain::CoordinateMaps::Distribution::Linear, std::optional< TimeDepOptionType > time_dependent_options=std::nullopt, std::optional< std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > inner_boundary_condition=std::nullopt, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={}) |
|
| SphericalShells (const SphericalShells &)=delete |
|
| SphericalShells (SphericalShells &&)=default |
|
SphericalShells & | operator= (const SphericalShells &)=delete |
|
SphericalShells & | operator= (SphericalShells &&)=default |
| Domain< 3 > | create_domain () const override |
| std::unordered_map< std::string, tnsr::I< double, 3, Frame::Grid > > | grid_anchors () const override |
| | A single grid anchor "Center" at the origin.
|
| 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 |
| | The block names are Shell0, Shell1, ..., starting with the innermost Block.
|
| std::unordered_map< std::string, std::unordered_set< std::string > > | block_groups () const override |
| | The block groups are Shell0, Shell1, ..., starting with the innermost Block.
|
| 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 |
A set of concentric spherical shells.
- Note
- This domain will use a spherical harmonic basis in the angular directions. It cannot be used with subcell.
- See also
- Sphere for a spherical domain compatible with subcell
Setting the inner radius to \(0\) will set the inner-most element to be a filled sphere.
This domain creator offers one grid anchor "Center" at the origin.
Time dependent maps
There are two ways to add time dependent maps to the SphericalShells domain creator. In the input file, these are specified under the TimeDependentMaps: block.
TimeDependence
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.
Hard-coded time dependent maps
The SphericalShells 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. Hard-coded time-dependent maps are currently supported only for excised domains, i.e. when InnerRadius is positive. When a shape map is specified, the innermost radial shell uses it by default, while subsequent shells have maps only between Frame::Grid and Frame::Inertial. The NumberOfRadialShellsWithShapeMap option can add distorted-frame maps to more inner shells. For domains with multiple radial shells, the final radial shell cannot use the shape map. With only one radial shell, the shape map rolls off at the outer boundary.
None
To not have any time dependent maps, pass a std::nullopt as the appropriate argument in the constructor. In the input file, simply have TimeDependentMaps: None.