SpECTRE  v2026.04.01
Loading...
Searching...
No Matches
domain::creators::Cylinder Class Reference

Create a 3D Domain in the shape of a cylinder where the cross-section is a square surrounded by four two-dimensional wedges (see Wedge). More...

#include <Cylinder.hpp>

Classes

struct  BoundaryConditions
struct  DistributionInZ
struct  InitialGridPoints
struct  InitialRefinement
struct  InnerRadius
struct  IsPeriodicInZ
struct  LowerZBound
struct  LowerZBoundaryCondition
struct  MantleBoundaryCondition
struct  OuterRadius
struct  PartitioningInZ
struct  RadialDistribution
struct  RadialPartitioning
struct  UpperZBound
struct  UpperZBoundaryCondition
struct  UseEquiangularMap

Public Types

using maps_list
template<typename Metavariables>
using options

Public Member Functions

 Cylinder (double inner_radius, double outer_radius, double lower_z_bound, double upper_z_bound, bool is_periodic_in_z, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_equiangular_map, std::vector< double > radial_partitioning={}, std::vector< double > partitioning_in_z={}, std::vector< domain::CoordinateMaps::Distribution > radial_distribution={domain::CoordinateMaps::Distribution::Linear}, std::vector< domain::CoordinateMaps::Distribution > distribution_in_z={domain::CoordinateMaps::Distribution::Linear}, const Options::Context &context={})
 Cylinder (double inner_radius, double outer_radius, double lower_z_bound, double upper_z_bound, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > lower_z_boundary_condition, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > upper_z_boundary_condition, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > mantle_boundary_condition, const typename InitialRefinement::type &initial_refinement, const typename InitialGridPoints::type &initial_number_of_grid_points, bool use_equiangular_map, std::vector< double > radial_partitioning={}, std::vector< double > partitioning_in_z={}, std::vector< domain::CoordinateMaps::Distribution > radial_distribution={domain::CoordinateMaps::Distribution::Linear}, std::vector< domain::CoordinateMaps::Distribution > distribution_in_z={domain::CoordinateMaps::Distribution::Linear}, const Options::Context &context={})
 Cylinder (const Cylinder &)=delete
 Cylinder (Cylinder &&)=default
Cylinderoperator= (const Cylinder &)=delete
Cylinderoperator= (Cylinder &&)=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.
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::stringblock_names () const override
 A human-readable name for every block, or empty if the domain creator doesn't support block names (yet).
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.
Public Member Functions inherited from DomainCreator< 3 >
DomainCreator< VolumeDim > & operator= (const DomainCreator< VolumeDim > &)=delete
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.
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.

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 in the shape of a cylinder where the cross-section is a square surrounded by four two-dimensional wedges (see Wedge).

The outer shell can be split into sub-shells and the cylinder can be split into disks along its height. The block numbering starts at the inner square and goes counter-clockwise, starting with the eastern wedge (+x-direction), through consecutive shells, then repeats this pattern for all layers bottom to top.

The Cylinder Domain.

Member Typedef Documentation

◆ maps_list

using domain::creators::Cylinder::maps_list
Initial value:
A coordinate map or composition of coordinate maps.
Definition CoordinateMap.hpp:314
Maps in the 1D interval to in the interval according to a domain::CoordinateMaps::Distribution.
Definition Interval.hpp:82
Product of two codimension=0 CoordinateMaps.
Definition ProductMaps.hpp:35
Product of three one-dimensional CoordinateMaps.
Definition ProductMaps.hpp:92
Definition IndexType.hpp:42
Definition IndexType.hpp:46

◆ options

template<typename Metavariables>
using domain::creators::Cylinder::options
Initial value:
tmpl::append<
tmpl::list<InnerRadius, OuterRadius, LowerZBound, UpperZBound>,
tmpl::conditional_t<
domain::BoundaryConditions::has_boundary_conditions_base_v<
typename Metavariables::system>,
tmpl::list<
typename Metavariables::system>>,
typename Metavariables::system>>,
typename Metavariables::system>>>,
tmpl::list<IsPeriodicInZ>>,
typename detail::get_boundary_conditions_base< T >::type get_boundary_conditions_base
Returns T::boundary_condition_base or a placeholder class.
Definition GetBoundaryConditionsBase.hpp:32
Boundary condition on the lower base.
Definition AngularCylinder.hpp:202
Boundary condition on the radial boundary.
Definition AngularCylinder.hpp:228
Boundary condition on the upper base.
Definition AngularCylinder.hpp:215
Definition BinaryCompactObject.hpp:422
Definition BinaryCompactObject.hpp:442

Member Function Documentation

◆ block_groups()

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

Implements DomainCreator< 3 >.

◆ external_boundary_conditions()

std::vector< DirectionMap< 3, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > domain::creators::Cylinder::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::Cylinder::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::Cylinder::initial_refinement_levels ( ) const
overridevirtual

Obtain the initial refinement levels of the blocks.

Implements DomainCreator< 3 >.

Member Data Documentation

◆ help

Options::String domain::creators::Cylinder::help
staticconstexpr
Initial value:
{
"Creates a right circular Cylinder with a square prism surrounded by \n"
"wedges. \n"
"The cylinder can be partitioned radially into multiple cylindrical \n"
"shells as well as partitioned along the cylinder's height into \n"
"multiple layers. Including this partitioning, the number of Blocks is \n"
"given by (1 + 4*(1+n_s)) * (1+n_z), where n_s is the \n"
"length of RadialPartitioning and n_z the length of \n"
"HeightPartitioning. The block numbering starts at the inner square \n"
"and goes counter-clockwise, starting with the eastern wedge \n"
"(+x-direction) through consecutive shells, then repeats this pattern \n"
"for all layers bottom to top. The wedges are named as follows: \n"
" +x-direction: East \n"
" +y-direction: North \n"
" -x-direction: West \n"
" -y-direction: South \n"
"The circularity of the wedge changes from 0 to 1 within the first \n"
"shell.\n"
"Equiangular coordinates give better gridpoint spacings in the angular\n"
"direction, while equidistant coordinates give better gridpoint\n"
"spacings in the center block."}

The documentation for this class was generated from the following file:
  • src/Domain/Creators/Cylinder.hpp