SpECTRE  2021.08.02
domain::creators::RotatedRectangles Class Reference

Create a 2D Domain consisting of four rotated Blocks. More...

#include <RotatedRectangles.hpp>

Classes

struct  BoundaryCondition
 
struct  InitialGridPoints
 
struct  InitialRefinement
 
struct  IsPeriodicIn
 
struct  LowerBound
 
struct  Midpoint
 
struct  UpperBound
 

Public Types

using maps_list = tmpl::list< domain::CoordinateMap< Frame::Logical, Frame::Inertial, CoordinateMaps::ProductOf2Maps< CoordinateMaps::Affine, CoordinateMaps::Affine > >, domain::CoordinateMap< Frame::Logical, Frame::Inertial, CoordinateMaps::DiscreteRotation< 2 >, CoordinateMaps::ProductOf2Maps< CoordinateMaps::Affine, CoordinateMaps::Affine > > >
 
using common_options = tmpl::list< LowerBound, Midpoint, UpperBound, InitialRefinement, InitialGridPoints >
 
using options_periodic = tmpl::list< IsPeriodicIn >
 
template<typename Metavariables >
using options = tmpl::append< common_options, tmpl::conditional_t< domain::BoundaryConditions::has_boundary_conditions_base_v< typename Metavariables::system >, tmpl::list< BoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > > >, options_periodic > >
 

Public Member Functions

 RotatedRectangles (typename LowerBound::type lower_xy, typename Midpoint::type midpoint_xy, typename UpperBound::type upper_xy, typename InitialRefinement::type initial_refinement_level_xy, typename InitialGridPoints::type initial_number_of_grid_points_in_xy, typename IsPeriodicIn::type is_periodic_in) noexcept
 
 RotatedRectangles (typename LowerBound::type lower_xy, typename Midpoint::type midpoint_xy, typename UpperBound::type upper_xy, typename InitialRefinement::type initial_refinement_level_xy, typename InitialGridPoints::type initial_number_of_grid_points_in_xy, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > boundary_condition, const Options::Context &context={})
 
 RotatedRectangles (const RotatedRectangles &)=delete
 
 RotatedRectangles (RotatedRectangles &&) noexcept=default
 
RotatedRectanglesoperator= (const RotatedRectangles &)=delete
 
RotatedRectanglesoperator= (RotatedRectangles &&) noexcept=default
 
Domain< 2 > create_domain () const noexcept override
 
std::vector< std::array< size_t, 2 > > initial_extents () const noexcept override
 Obtain the initial grid extents of the Elements in each block. More...
 
std::vector< std::array< size_t, 2 > > initial_refinement_levels () const noexcept override
 Obtain the initial refinement levels of the blocks. More...
 
- Public Member Functions inherited from DomainCreator< 2 >
 DomainCreator (const DomainCreator< VolumeDim > &)=delete
 
 DomainCreator (DomainCreator< VolumeDim > &&) noexcept=default
 
DomainCreator< VolumeDim > & operator= (const DomainCreator< VolumeDim > &)=delete
 
DomainCreator< VolumeDim > & operator= (DomainCreator< VolumeDim > &&) noexcept=default
 
virtual auto functions_of_time () const noexcept -> 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

Create a 2D Domain consisting of four rotated Blocks.

  • The lower left block has its logical \(\xi\)-axis aligned with the grid x-axis.
  • The lower right block is rotated a half-turn (180 degrees) relative to the lower left block.
  • The upper left block is rotated a quarter-turn counterclockwise (+90 degrees) relative to the lower left block.
  • The upper right block is rotated a quarter-turn clockwise (-90 degrees) relative to the lower left block.

This DomainCreator is useful for testing code that deals with unaligned blocks.

Member Function Documentation

◆ create_domain()

Domain< 2 > domain::creators::RotatedRectangles::create_domain ( ) const
overridevirtualnoexcept

Implements DomainCreator< 2 >.

◆ initial_extents()

std::vector< std::array< size_t, 2 > > domain::creators::RotatedRectangles::initial_extents ( ) const
overridevirtualnoexcept

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

Implements DomainCreator< 2 >.

◆ initial_refinement_levels()

std::vector< std::array< size_t, 2 > > domain::creators::RotatedRectangles::initial_refinement_levels ( ) const
overridevirtualnoexcept

Obtain the initial refinement levels of the blocks.

Implements DomainCreator< 2 >.

Member Data Documentation

◆ help

constexpr Options::String domain::creators::RotatedRectangles::help
staticconstexpr
Initial value:
= {
"A DomainCreator useful for testing purposes.\n"
"RotatedRectangles uses four rotated Blocks to create the rectangle\n"
"[LowerX,UpperX] x [LowerY,UpperY]. The outermost index to\n"
"InitialGridPoints is the dimension index, and the innermost index is\n"
"the block index along that dimension."}