|
|
| 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 |
|
RotatedBricks & | operator= (const RotatedBricks &)=delete |
|
RotatedBricks & | operator= (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::string > | block_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.
|
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.