SpECTRE  v2021.10.04
Domain< VolumeDim > Class Template Reference

A wrapper around a vector of Blocks that represent the computational domain. More...

#include <Domain.hpp>

Public Member Functions

 Domain (std::vector< Block< VolumeDim > > blocks)
 
 Domain (std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::BlockLogical, Frame::Inertial, VolumeDim > > > maps, std::vector< DirectionMap< VolumeDim, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > boundary_conditions={}, std::unordered_map< std::string, ExcisionSphere< VolumeDim > > excision_spheres={})
 
 Domain (std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::BlockLogical, Frame::Inertial, VolumeDim > > > maps, const std::vector< std::array< size_t, two_to_the(VolumeDim)> > &corners_of_all_blocks, const std::vector< PairOfFaces > &identifications={}, std::vector< DirectionMap< VolumeDim, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > > boundary_conditions={}, std::unordered_map< std::string, ExcisionSphere< VolumeDim > > excision_spheres={})
 
 Domain (const Domain &)=delete
 
 Domain (Domain &&)=default
 
Domain< VolumeDim > & operator= (const Domain< VolumeDim > &)=delete
 
Domain< VolumeDim > & operator= (Domain< VolumeDim > &&)=default
 
void inject_time_dependent_map_for_block (size_t block_id, std::unique_ptr< domain::CoordinateMapBase< Frame::Grid, Frame::Inertial, VolumeDim > > moving_mesh_inertial_map)
 
const std::vector< Block< VolumeDim > > & blocks () const
 
const std::unordered_map< std::string, ExcisionSphere< VolumeDim > > & excision_spheres () const
 
void pup (PUP::er &p)
 

Detailed Description

template<size_t VolumeDim>
class Domain< VolumeDim >

A wrapper around a vector of Blocks that represent the computational domain.

Constructor & Destructor Documentation

◆ Domain() [1/2]

template<size_t VolumeDim>
Domain< VolumeDim >::Domain ( std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::BlockLogical, Frame::Inertial, VolumeDim > > >  maps,
std::vector< DirectionMap< VolumeDim, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > >  boundary_conditions = {},
std::unordered_map< std::string, ExcisionSphere< VolumeDim > >  excision_spheres = {} 
)
explicit

Create a Domain using CoordinateMaps to encode the Orientations. This constructor does not support periodic boundary conditions.

Details

A constructor that does not require the user to provide a corner numbering scheme. Constructs a global corner numbering for each pair of abutting Blocks from their maps alone. The numbering is used to set up the corresponding Orientation, and then is discarded; the next pair of blocks uses a new global corner numbering, and so on, until all pairs of abutting Blocks have had their Orientations determined. For more information on setting up domains, see the domain creation tutorial.

Can specify either one set of boundary conditions for each Block or no boundary conditions at all.

◆ Domain() [2/2]

template<size_t VolumeDim>
Domain< VolumeDim >::Domain ( std::vector< std::unique_ptr< domain::CoordinateMapBase< Frame::BlockLogical, Frame::Inertial, VolumeDim > > >  maps,
const std::vector< std::array< size_t, two_to_the(VolumeDim)> > &  corners_of_all_blocks,
const std::vector< PairOfFaces > &  identifications = {},
std::vector< DirectionMap< VolumeDim, std::unique_ptr< domain::BoundaryConditions::BoundaryCondition > > >  boundary_conditions = {},
std::unordered_map< std::string, ExcisionSphere< VolumeDim > >  excision_spheres = {} 
)

Create a Domain using a corner numbering scheme to encode the Orientations, with an optional parameter that encodes periodic boundary conditions.

Details

Each element of corners_of_all_blocks contains the corner numbering of that block's corners according to the global corner number scheme. The details of the corner numbering scheme are described in the tutorial. identifications is for imposing periodic boundary conditions on the domain. To identify faces, identifications should contain the PairOfFaces containing the corners of each pair of faces that you wish to identify with one another. For more information on setting up domains, see the domain creation tutorial.

Requires: maps.size() == corners_of_all_blocks.size(), and identifications.size() is even.

Can specify either one set of boundary conditions for each Block or no boundary conditions at all.


The documentation for this class was generated from the following file: