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

Create a 3D Domain consisting of eight rotated Blocks. More...

#include <RotatedBricks.hpp>

Classes

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

Public Types

using maps_list
using common_options
using options_periodic = tmpl::list<IsPeriodicIn>
template<typename Metavariables>
using options

Public Member Functions

 RotatedBricks (typename LowerBound::type lower_xyz, typename Midpoint::type midpoint_xyz, typename UpperBound::type upper_xyz, typename InitialRefinement::type initial_refinement_level_xyz, typename InitialGridPoints::type initial_number_of_grid_points_in_xyz, typename IsPeriodicIn::type is_periodic_in)
 RotatedBricks (typename LowerBound::type lower_xyz, typename Midpoint::type midpoint_xyz, typename UpperBound::type upper_xyz, typename InitialRefinement::type initial_refinement_level_xyz, typename InitialGridPoints::type initial_number_of_grid_points_in_xyz, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > boundary_condition, const Options::Context &context={})
 RotatedBricks (const RotatedBricks &)=delete
 RotatedBricks (RotatedBricks &&)=default
RotatedBricksoperator= (const RotatedBricks &)=delete
RotatedBricksoperator= (RotatedBricks &&)=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::stringblock_names () const override
 A human-readable name for every block, or empty if the domain creator doesn't support block names (yet).
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.
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 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.
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 consisting of eight rotated Blocks.

The orientations of the blocks are described in two different ways:

  • 1 - As orientations of blocks relative to the physical cartesian axes.
  • 2 - As rotations relative to the physical cartesian axes written using Rubik's cube rotation notation, for the sake of shorter variable names.

For reference, this is the notation used:

  • U - A clockwise 90 degree rotation about the +z axis (The "up" side)
  • R - A clockwise 90 degree rotation about the +x axis (The "right" side)
  • F - A clockwise 90 degree rotation about the -y axis (The "front" side)

For reference, D, L, and B ("down", "left", and "back") are the inverse rotation to the aforementioned ones, respectively. Note: Whereas Rubik's cube rotations rotate a layer of the 3x3 puzzle cube, we are adopting the notation to apply to rotations of the cube itself.

  • The -x, -y, -z block has the aligned orientation, that is, xi is aligned with x, eta is aligned with y, and zeta with z. This has block ID 0.
  • The +x, -y, -z block has the orientation (zeta, eta, -xi). It corresponds to the orientation obtained by the rotation F. This has block ID 1.
  • The -x, +y, -z block has the orientation (xi, zeta, -eta). It corresponds to the orientation obtained by the rotation R. This has block ID 2.
  • The +x, +y, -z block has the orientation (zeta, -xi, -eta). It corresponds to the orientation obtained by the rotation F followed by the rotation R. This has block ID 3.
  • The -x, -y, +z block has the orientation (eta, -xi, zeta). It corresponds to the orientation obtained by the rotation U. This has block ID 4.
  • The +x, -y, +z block has the orientation (eta, -zeta, -xi). It corresponds to the orientation obtained by the rotation F followed by the rotation U. This has block ID 5.
  • The -x, +y, +z block has the orientation (zeta, -xi, -eta). It corresponds to the orientation obtained by the rotation R followed by the rotation U (equivalently, F followed by R). This has block ID 6.
  • The +x, +y, +z block also has the aligned orientation (xi, eta, zeta), relative to the edifice. It is not aligned relative to its neighbors. This has block ID 7.

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

Member Typedef Documentation

◆ common_options

using domain::creators::RotatedBricks::common_options
Initial value:

◆ maps_list

using domain::creators::RotatedBricks::maps_list
Initial value:
tmpl::list<
A coordinate map or composition of coordinate maps.
Definition CoordinateMap.hpp:314
Affine map from .
Definition Affine.hpp:37
A CoordinateMap that swaps/negates the coordinate axes.
Definition DiscreteRotation.hpp:32
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::RotatedBricks::options
Initial value:
tmpl::append<
common_options,
tmpl::conditional_t<
domain::BoundaryConditions::has_boundary_conditions_base_v<
typename Metavariables::system>,
tmpl::list<BoundaryCondition<
typename Metavariables::system>>>,
options_periodic>>
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 to impose on outer side.
Definition AngularDisk.hpp:102

Member Function Documentation

◆ block_names()

std::vector< std::string > domain::creators::RotatedBricks::block_names ( ) const
overridevirtual

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::RotatedBricks::create_domain ( ) const
overridevirtual

Implements DomainCreator< 3 >.

◆ external_boundary_conditions()

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

Obtain the initial refinement levels of the blocks.

Implements DomainCreator< 3 >.

Member Data Documentation

◆ help

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

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