SpECTRE  2021.08.02
domain::creators::Shell Class Reference

Creates a 3D Domain in the shape of a hollow spherical shell consisting of six wedges. More...

#include <Shell.hpp>

Classes

struct  AspectRatio
 
struct  BoundaryConditions
 
struct  InitialGridPoints
 
struct  InitialRefinement
 
struct  InnerBoundaryCondition
 
struct  InnerRadius
 
struct  OuterBoundaryCondition
 
struct  OuterRadius
 
struct  RadialDistribution
 
struct  RadialPartitioning
 
struct  TimeDependence
 
struct  UseEquiangularMap
 
struct  WhichWedges
 

Public Types

using maps_list = tmpl::list< domain::CoordinateMap< Frame::Logical, Frame::Inertial, CoordinateMaps::Wedge< 3 >, CoordinateMaps::EquatorialCompression, CoordinateMaps::ProductOf2Maps< CoordinateMaps::Affine, CoordinateMaps::Identity< 2 > > > >
 
using basic_options = tmpl::list< InnerRadius, OuterRadius, InitialRefinement, InitialGridPoints, UseEquiangularMap, AspectRatio, RadialPartitioning, RadialDistribution, WhichWedges, TimeDependence >
 
template<typename Metavariables >
using options = tmpl::conditional_t< domain::BoundaryConditions::has_boundary_conditions_base_v< typename Metavariables::system >, tmpl::push_back< basic_options, InnerBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > >, OuterBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > > >, basic_options >
 

Public Member Functions

 Shell (double inner_radius, double outer_radius, size_t initial_refinement, std::array< size_t, 2 > initial_number_of_grid_points, bool use_equiangular_map=true, double aspect_ratio=1.0, std::vector< double > radial_partitioning={}, std::vector< domain::CoordinateMaps::Distribution > radial_distribution={domain::CoordinateMaps::Distribution::Linear}, ShellWedges=ShellWedges::All, std::unique_ptr< domain::creators::time_dependence::TimeDependence< 3 > > time_dependence=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > inner_boundary_condition=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={})
 
 Shell (const Shell &)=delete
 
 Shell (Shell &&) noexcept=default
 
Shelloperator= (const Shell &)=delete
 
Shelloperator= (Shell &&) noexcept=default
 
Domain< 3 > create_domain () const noexcept override
 
std::vector< std::array< size_t, 3 > > initial_extents () const noexcept override
 Obtain the initial grid extents of the Elements in each block. More...
 
std::vector< std::array< size_t, 3 > > initial_refinement_levels () const noexcept override
 Obtain the initial refinement levels of the blocks. More...
 
auto functions_of_time () const noexcept -> std::unordered_map< std::string, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > > override
 Retrieve the functions of time used for moving meshes. More...
 
- Public Member Functions inherited from DomainCreator< 3 >
 DomainCreator (const DomainCreator< VolumeDim > &)=delete
 
 DomainCreator (DomainCreator< VolumeDim > &&) noexcept=default
 
DomainCreator< VolumeDim > & operator= (const DomainCreator< VolumeDim > &)=delete
 
DomainCreator< VolumeDim > & operator= (DomainCreator< VolumeDim > &&) noexcept=default
 

Static Public Attributes

static constexpr Options::String help
 

Detailed Description

Creates a 3D Domain in the shape of a hollow spherical shell consisting of six wedges.

The orientation of each wedge in Shell.

Member Function Documentation

◆ create_domain()

Domain< 3 > domain::creators::Shell::create_domain ( ) const
overridevirtualnoexcept

Implements DomainCreator< 3 >.

◆ functions_of_time()

auto domain::creators::Shell::functions_of_time ( ) const -> std::unordered_map< std::string, std::unique_ptr<domain::FunctionsOfTime::FunctionOfTime>>
overridevirtualnoexcept

Retrieve the functions of time used for moving meshes.

Reimplemented from DomainCreator< 3 >.

◆ initial_extents()

std::vector< std::array< size_t, 3 > > domain::creators::Shell::initial_extents ( ) const
overridevirtualnoexcept

Obtain the initial grid extents of the Elements in each block.

Implements DomainCreator< 3 >.

◆ initial_refinement_levels()

std::vector< std::array< size_t, 3 > > domain::creators::Shell::initial_refinement_levels ( ) const
overridevirtualnoexcept

Obtain the initial refinement levels of the blocks.

Implements DomainCreator< 3 >.

Member Data Documentation

◆ help

constexpr Options::String domain::creators::Shell::help
staticconstexpr
Initial value:
{
"Creates a 3D spherical shell with 6 Blocks. `UseEquiangularMap` has\n"
"a default value of `true` because there is no central Block in this\n"
"domain. Equidistant coordinates are best suited to Blocks with\n"
"Cartesian grids. However, the option is allowed for testing "
"purposes. The `aspect_ratio` moves grid points on the shell towards\n"
"the equator for values greater than 1.0, and towards the poles for\n"
"positive values less than 1.0. The user may also choose to use only a "
"single wedge (along the -x direction), or four wedges along the x-y "
"plane using the `WhichWedges` option. Using the RadialPartitioning "
"option, a user may set the locations of boundaries of radial "
"partitions, each of which will have the grid points and refinement "
"specified from the previous options. The RadialDistribution option "
"specifies whether the radial grid points are distributed linearly or "
"logarithmically for each radial partition. Therefore, there must be N+1 "
"radial distributions specified for N radial partitions. For simple "
"h-refinement where the number but not the locations of the radial "
"boundaries are important, the InitialRefinement option should be used "
"instead of RadialPartitioning."}