SpECTRE  v2021.11.01
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  BoundaryConditions
 
struct  EquatorialCompression
 
struct  EquatorialCompressionOptions
 Options for the EquatorialCompression map. More...
 
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::BlockLogical, Frame::Inertial, CoordinateMaps::Wedge< 3 >, CoordinateMaps::EquatorialCompression, CoordinateMaps::ProductOf2Maps< CoordinateMaps::Affine, CoordinateMaps::Identity< 2 > > > >
 
using basic_options = tmpl::list< InnerRadius, OuterRadius, InitialRefinement, InitialGridPoints, UseEquiangularMap, EquatorialCompression, 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, std::optional< domain::creators::Shell::EquatorialCompressionOptions > equatorial_compression={}, 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 &&)=default
 
Shelloperator= (const Shell &)=delete
 
Shelloperator= (Shell &&)=default
 
Domain< 3 > create_domain () const override
 
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...
 
auto functions_of_time () const -> 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 > &&)=default
 
DomainCreator< VolumeDim > & operator= (const DomainCreator< VolumeDim > &)=delete
 
DomainCreator< VolumeDim > & operator= (DomainCreator< VolumeDim > &&)=default
 
virtual Domain< VolumeDim > create_domain () const=0
 
virtual std::vector< std::stringblock_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, std::unique_ptr< domain::FunctionsOfTime::FunctionOfTime > >
 Retrieve the functions of time used for moving meshes. More...
 

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
overridevirtual

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>>
overridevirtual

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
overridevirtual

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
overridevirtual

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 specify the axis\n"
"along which this compression is applied. The user may also choose to\n"
"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."}

The documentation for this class was generated from the following file: