SpECTRE  v2025.08.19
domain::creators::CartoonSphere2D Class Reference

Create a 3D Domain with a half-disk computational domain employing axial symmetry. The third dimension uses a Cartoon basis with Killing vector along the \(\phi\) direction. More...

#include <CartoonSphere2D.hpp>

Classes

struct  InitialGridPoints
 
struct  InitialRefinement
 
struct  InnerRadius
 
struct  Interior
 
struct  OuterBoundaryCondition
 
struct  OuterRadius
 
struct  RadialPartitioning
 
struct  TimeDependence
 
struct  UseEquiangularMap
 
struct  YAxisBoundaryCondition
 

Public Types

using maps_list = tmpl::list< domain::CoordinateMap< Frame::BlockLogical, Frame::Inertial, CoordinateMaps::ProductOf2Maps< CoordinateMaps::ProductOf2Maps< CoordinateMaps::Affine, CoordinateMaps::Affine >, CoordinateMaps::Identity< 1 > > >, domain::CoordinateMap< Frame::BlockLogical, Frame::Inertial, CoordinateMaps::ProductOf2Maps< CoordinateMaps::ProductOf2Maps< CoordinateMaps::Equiangular, CoordinateMaps::Equiangular >, CoordinateMaps::Identity< 1 > > >, domain::CoordinateMap< Frame::BlockLogical, Frame::Inertial, CoordinateMaps::DiscreteRotation< 3 >, CoordinateMaps::ProductOf2Maps< CoordinateMaps::Wedge< 2 >, CoordinateMaps::Identity< 1 > > > >
 
using Excision = detail::Excision
 
using InnerSquare = detail::InnerSquare
 
using basic_options = tmpl::list< InnerRadius, OuterRadius, InitialRefinement, InitialGridPoints, RadialPartitioning, UseEquiangularMap, Interior, TimeDependence >
 
template<typename Metavariables >
using options = tmpl::conditional_t< domain::BoundaryConditions::has_boundary_conditions_base_v< typename Metavariables::system >, tmpl::push_back< basic_options, YAxisBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > >, OuterBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > > >, basic_options >
 

Public Member Functions

 CartoonSphere2D (double inner_radius, double outer_radius, typename InitialRefinement::type &&initial_refinement, typename InitialGridPoints::type &&initial_number_of_grid_points, std::vector< double > radial_partitioning, bool use_equiangular_map, std::variant< Excision, InnerSquare > interior, std::unique_ptr< domain::creators::time_dependence::TimeDependence< 3 > > time_dependence=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > y_axis_boundary_condition=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > outer_boundary_condition=nullptr, const Options::Context &context={})
 
 CartoonSphere2D (const CartoonSphere2D &)=delete
 
 CartoonSphere2D (CartoonSphere2D &&)=default
 
CartoonSphere2Doperator= (const CartoonSphere2D &)=delete
 
CartoonSphere2Doperator= (CartoonSphere2D &&)=default
 
Domain< 3 > create_domain () const override
 
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. More...
 
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...
 
std::vector< std::stringblock_names () const override
 A human-readable name for every block, or empty if the domain creator doesn't support block names (yet). More...
 
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. More...
 
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. 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::unordered_map< std::string, tnsr::I< double, VolumeDim, Frame::Grid > > grid_anchors () const
 A set of named coordinates in the grid frame, like the center of the domain or the positions of specific objects in a domain. More...
 
virtual std::vector< DirectionMap< VolumeDim, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > external_boundary_conditions () const=0
 The set of external boundary condition for every block in the domain. More...
 
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, double > &initial_expiration_times={}) 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
 
- Static Public Attributes inherited from DomainCreator< 3 >
static constexpr size_t volume_dim
 

Detailed Description

Create a 3D Domain with a half-disk computational domain employing axial symmetry. The third dimension uses a Cartoon basis with Killing vector along the \(\phi\) direction.

Member Function Documentation

◆ block_groups()

std::unordered_map< std::string, std::unordered_set< std::string > > domain::creators::CartoonSphere2D::block_groups ( ) const
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 >.

◆ block_names()

std::vector< std::string > domain::creators::CartoonSphere2D::block_names ( ) const
inlineoverridevirtual

A human-readable name for every block, or empty if the domain creator doesn't support block names (yet).

Reimplemented from DomainCreator< 3 >.

◆ create_domain()

Domain< 3 > domain::creators::CartoonSphere2D::create_domain ( ) const
overridevirtual

Implements DomainCreator< 3 >.

◆ external_boundary_conditions()

std::vector< DirectionMap< 3, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > domain::creators::CartoonSphere2D::external_boundary_conditions ( ) const
overridevirtual

The set of external boundary condition for every block in the domain.

Implements DomainCreator< 3 >.

◆ functions_of_time()

auto domain::creators::CartoonSphere2D::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>>
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::CartoonSphere2D::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::CartoonSphere2D::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::CartoonSphere2D::help
staticconstexpr
Initial value:
{
"Creates a sphere that requires/enforces axial-symmetry.\n"
"The computational domain is a 2D half-disk, consisting of an inner\n"
"half-square with two half-wedges above and below and a full wedge to\n"
"the right. This can be extended to have mulitple shells of wedges by\n"
"specifying a radial partition. The inner half-square can be excised,\n"
"in which case the inner sphericity is set to 1.\n"
"Equiangular coordinates give better gridpoint spacings in the angular\n"
"direction, while equidistant coordinates give better gridpoint\n"
"spacings in the center half-square."}

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