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

Create a 3D filled cylinder domain with radial partitioning using a B2/I1 filled cylinder at the center and Fourier hollow cylinders surrounding it. More...

#include <AngularCylinder.hpp>

Classes

struct  BoundaryConditions
 Boundary conditions group. More...
 
struct  DistributionInZ
 Grid point distribution along the z-axis for each layer. More...
 
struct  InitialCylinderThetaGridPoints
 Initial number of \(\theta\) gridpoints for filled cylinder. The number for \(r\) is accordingly set to match spectral space sizes. This is enforced to be odd for numerical stability. More...
 
struct  InitialCylinderZGridPoints
 Initial number of z gridpoints for the cylinder. More...
 
struct  InitialHollowCylinderGridPoints
 Initial number of \([r, \theta, z]\) gridpoints for hollow cylinders. Can be one triplet which is applied to all shells, or each can be specified. The theta component must be odd for numerical stability. More...
 
struct  InitialRefinementInZ
 Initial refinement levels in the z direction. More...
 
struct  IsPeriodicInZ
 Whether the cylinder is periodic in the z direction. More...
 
struct  LowerZBound
 Lower z-coordinate of the cylinder's base. More...
 
struct  LowerZBoundaryCondition
 Boundary condition on the lower base. More...
 
struct  MantleBoundaryCondition
 Boundary condition on the radial boundary. More...
 
struct  OuterRadius
 Radius of the cylinder's outer edge. More...
 
struct  PartitioningInZ
 Z-coordinates of the boundaries splitting the domain into layers. More...
 
struct  RadialPartitioning
 Radial coordinates of the boundaries splitting elements. More...
 
struct  TimeDependence
 Time dependence of the domain. More...
 
struct  UpperZBound
 Upper z-coordinate of the cylinder's top. More...
 
struct  UpperZBoundaryCondition
 Boundary condition on the upper base. More...
 

Public Types

using maps_list = tmpl::list< domain::CoordinateMap< Frame::BlockLogical, Frame::Inertial, domain::CoordinateMaps::ProductOf3Maps< domain::CoordinateMaps::Affine, domain::CoordinateMaps::Identity< 1 >, domain::CoordinateMaps::Interval >, domain::CoordinateMaps::ProductOf2Maps< domain::CoordinateMaps::PolarToCartesian, domain::CoordinateMaps::Identity< 1 > > > >
 
using basic_options = tmpl::list< OuterRadius, LowerZBound, UpperZBound, RadialPartitioning, PartitioningInZ, InitialCylinderThetaGridPoints, InitialCylinderZGridPoints, InitialHollowCylinderGridPoints, DistributionInZ, InitialRefinementInZ, TimeDependence >
 
template<typename Metavariables >
using options = tmpl::append< basic_options, tmpl::conditional_t< domain::BoundaryConditions::has_boundary_conditions_base_v< typename Metavariables::system >, tmpl::list< LowerZBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > >, UpperZBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > >, MantleBoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > > >, tmpl::list< IsPeriodicInZ > > >
 

Public Member Functions

 AngularCylinder (typename OuterRadius::type outer_radius, typename LowerZBound::type lower_z_bound, typename UpperZBound::type upper_z_bound, typename RadialPartitioning::type radial_partitioning, typename PartitioningInZ::type partitioning_in_z, typename InitialCylinderThetaGridPoints::type initial_cylinder_theta_grid_points, typename InitialCylinderZGridPoints::type initial_cylinder_z_grid_points, typename InitialHollowCylinderGridPoints::type initial_hollow_cylinder_grid_points, typename DistributionInZ::type distribution_in_z, typename InitialRefinementInZ::type initial_refinement_in_z, std::unique_ptr< domain::creators::time_dependence::TimeDependence< 3 > > time_dependence=nullptr, bool is_periodic_in_z=false, const Options::Context &context={})
 
 AngularCylinder (typename OuterRadius::type outer_radius, typename LowerZBound::type lower_z_bound, typename UpperZBound::type upper_z_bound, typename RadialPartitioning::type radial_partitioning, typename PartitioningInZ::type partitioning_in_z, typename InitialCylinderThetaGridPoints::type initial_cylinder_theta_grid_points, typename InitialCylinderZGridPoints::type initial_cylinder_z_grid_points, typename InitialHollowCylinderGridPoints::type initial_hollow_cylinder_grid_points, typename DistributionInZ::type distribution_in_z, typename InitialRefinementInZ::type initial_refinement_in_z, std::unique_ptr< domain::creators::time_dependence::TimeDependence< 3 > > time_dependence=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > lower_z_boundary_condition=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > upper_z_boundary_condition=nullptr, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > mantle_boundary_condition=nullptr, const Options::Context &context={})
 
 AngularCylinder (const AngularCylinder &)=delete
 
 AngularCylinder (AngularCylinder &&)=default
 
AngularCylinderoperator= (const AngularCylinder &)=delete
 
AngularCylinderoperator= (AngularCylinder &&)=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...
 
- 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 filled cylinder domain with radial partitioning using a B2/I1 filled cylinder at the center and Fourier hollow cylinders surrounding it.

Member Function Documentation

◆ block_groups()

std::unordered_map< std::string, std::unordered_set< std::string > > domain::creators::AngularCylinder::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::AngularCylinder::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::AngularCylinder::create_domain ( ) const
overridevirtual

Implements DomainCreator< 3 >.

◆ external_boundary_conditions()

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

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

Implements DomainCreator< 3 >.

◆ initial_extents()

std::vector< std::array< size_t, 3 > > domain::creators::AngularCylinder::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::AngularCylinder::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::AngularCylinder::help
staticconstexpr
Initial value:
{
"Creates a cylinder using a Zernike basis radially, Fourier in the "
"angular direction, and I1 in the z direction"}

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