SpECTRE  2021.08.02
domain::creators::FrustalCloak Class Reference

Create a 3D cubical domain with two equal-sized abutting excised cubes in the center. This is done by combining ten frusta. More...

#include <FrustalCloak.hpp>

Classes

struct  BoundaryCondition
 
struct  InitialGridPoints
 
struct  InitialRefinement
 
struct  LengthInnerCube
 
struct  LengthOuterCube
 
struct  OriginPreimage
 
struct  ProjectionFactor
 
struct  UseEquiangularMap
 

Public Types

using maps_list = tmpl::list< domain::CoordinateMap< Frame::Logical, Frame::Inertial, domain::CoordinateMaps::Frustum > >
 
using basic_options = tmpl::list< InitialRefinement, InitialGridPoints, UseEquiangularMap, ProjectionFactor, LengthInnerCube, LengthOuterCube, OriginPreimage >
 
template<typename Metavariables >
using options = tmpl::conditional_t< domain::BoundaryConditions::has_boundary_conditions_base_v< typename Metavariables::system >, tmpl::push_back< basic_options, BoundaryCondition< domain::BoundaryConditions::get_boundary_conditions_base< typename Metavariables::system > > >, basic_options >
 

Public Member Functions

 FrustalCloak (typename InitialRefinement::type initial_refinement_level, typename InitialGridPoints::type initial_number_of_grid_points, typename UseEquiangularMap::type use_equiangular_map=false, typename ProjectionFactor::type projection_factor=1.0, typename LengthInnerCube::type length_inner_cube=0.0, typename LengthOuterCube::type length_outer_cube=0.0, typename OriginPreimage::type origin_preimage={{0.0, 0.0, 0.0}}, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > boundary_condition=nullptr, const Options::Context &context={})
 
 FrustalCloak (const FrustalCloak &)=delete
 
 FrustalCloak (FrustalCloak &&) noexcept=default
 
FrustalCloakoperator= (const FrustalCloak &)=delete
 
FrustalCloakoperator= (FrustalCloak &&) noexcept=default
 
Domain< 3 > create_domain () const noexcept override
 
std::vector< std::array< size_t, 3 > > initial_extents () const noexcept override
 Obtain the initial grid extents of the Elements in each block. More...
 
std::vector< std::array< size_t, 3 > > initial_refinement_levels () const noexcept override
 Obtain the initial refinement levels of the blocks. More...
 
- Public Member Functions inherited from DomainCreator< 3 >
 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 3D cubical domain with two equal-sized abutting excised cubes in the center. This is done by combining ten frusta.

A slice through the frustal cloak.

Member Function Documentation

◆ create_domain()

Domain< 3 > domain::creators::FrustalCloak::create_domain ( ) const
overridevirtualnoexcept

Implements DomainCreator< 3 >.

◆ initial_extents()

std::vector< std::array< size_t, 3 > > domain::creators::FrustalCloak::initial_extents ( ) const
overridevirtualnoexcept

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::FrustalCloak::initial_refinement_levels ( ) const
overridevirtualnoexcept

Obtain the initial refinement levels of the blocks.

Implements DomainCreator< 3 >.

Member Data Documentation

◆ help

constexpr Options::String domain::creators::FrustalCloak::help
staticconstexpr
Initial value:
{
"Creates a cubical domain with two equal-sized abutting excised cubes\n"
"in the center. This is done by combining ten frusta. The parameter\n"
"`UseEquiangularMap` can be used to apply a tangent mapping to the xi\n"
"and eta logical coordinates of each frustum, while the parameter\n"
"`ProjectionFactor` can be used to apply a projective map to the zeta\n"
"logical coordinate of each frustum. Increasing the\n"
"`ProjectionFactor` value can give better gridpoint spacings in the\n"
"z direction. The user also specifies values for `LengthInnerCube` and\n"
"`LengthOuterCube`. This will create a cubical Domain of side"
"length `LengthOuterCube` with the center excised. The size of the\n"
"excised region is determined by the value set for `LengthInnerCube`.\n"
"`OriginPreimage` moves the blocks such that the origin preimage is\n"
"mapped to the origin. Note that the abutting excised cubes share a\n"
"face in the x-direction. This Domain is primarily for testing the\n"
"frustal cloak in the BinaryCompactObject Domain."}