Block-Structured AMR Software Framework
Loading...
Searching...
No Matches
amrex::BoxDomain Class Reference

A list of disjoint boxes built on top of BoxList. More...

#include <AMReX_BoxDomain.H>

Inheritance diagram for amrex::BoxDomain:
amrex::BoxList

Public Types

using const_iterator = BoxList::const_iterator
 

Public Member Functions

 BoxDomain ()
 Construct an empty BoxDomain of IndexType::TheCellType().
 
 BoxDomain (const Box &bx)
 Make a BoxDomain out of a single Box.
 
 BoxDomain (IndexType itype)
 Construct an empty BoxDomain of IndexType itype.
 
void add (const Box &b)
 Insert a box into the domain, clipping it so the stored boxes remain disjoint.
 
void add (const BoxList &bl)
 Insert every box from bl, clipping to enforce disjointedness.
 
BoxDomainrmBox (const Box &b)
 Erase the intersection between this domain and b.
 
bool ok () const
 Returns true if this BoxDomain is valid (disjoint or empty).
 
const BoxListboxList () const
 Return a const reference to the underlying BoxList of this BoxDomain.
 
bool operator== (const BoxDomain &rhs) const
 Return true if both domains cover identical regions.
 
bool operator!= (const BoxDomain &rhs) const
 Logical negation of operator==.
 
BoxDomainrefine (int ratio)
 Refine every box by the supplied ratio.
 
BoxDomaincoarsen (int ratio)
 Coarsen every box by the supplied ratio.
 
BoxDomainintersect (const Box &b)
 Restrict the domain to the overlap with box b.
 
BoxDomainaccrete (int sz)
 Grow each stored box by sz cells on all sides.
 
BoxDomaincomplementIn (const Box &b, const BoxDomain &bl)
 Replace this domain with the indices in b that are not present in bl.
 
void clear ()
 Promoted from BoxList.
 
Long size () const noexcept
 Promoted from BoxList.
 
bool isEmpty () const noexcept
 Promoted from BoxList.
 
bool isNotEmpty () const noexcept
 Promoted from BoxList.
 
Box minimalBox () const
 Promoted from BoxList.
 
IndexType ixType () const noexcept
 Promoted from BoxList.
 
int simplify (bool best=false)
 Promoted from BoxList.
 
iterator begin () noexcept
 Promoted from BoxList.
 
const_iterator begin () const noexcept
 Promoted from BoxList.
 
iterator end () noexcept
 Promoted from BoxList.
 
const_iterator end () const noexcept
 Promoted from BoxList.
 
bool contains (const BoxList &bl) const
 Promoted from BoxList.
 
BoxListshift (int dir, int nzones)
 Promoted from BoxList.
 
BoxListshiftHalf (int dir, int num_halfs)
 Promoted from BoxList.
 
BoxListshiftHalf (const IntVect &iv)
 Promoted from BoxList.
 

Friends

class ClusterList
 

Additional Inherited Members

- Protected Types inherited from amrex::BoxList
using iterator = Vector< Box >::iterator
 
using const_iterator = Vector< Box >::const_iterator
 
- Protected Member Functions inherited from amrex::BoxList
 BoxList ()
 Construct an empty BoxList with IndexType::TheCellType().
 
 BoxList (const Box &bx)
 Make a boxList consisting of a single Box.
 
 BoxList (IndexType _btype)
 Construct an empty BoxList with IndexType _btype.
 
 BoxList (const BoxArray &ba)
 Construct a BoxList from a BoxArray.
 
 BoxList (Vector< Box > &&bxs)
 Construct a boxlist from a rvalue Vector<Box>.
 
 BoxList (const Box &bx, const IntVect &tilesize)
 Make a boxList consisting of non-overlapping tile box from a single Box.
 
 BoxList (const Box &bx, int nboxes)
 Make a BoxList consisting of nboxes Boxes from a single Box.
 
 BoxList (const Box &bx, int nboxes, Direction dir)
 Make a BoxList consisting of nboxes Boxes chopped in dir-direction from a single Box.
 
 ~BoxList ()=default
 
 BoxList (const BoxList &rhs)=default
 
 BoxList (BoxList &&rhs)=default
 
BoxListoperator= (const BoxList &rhs)=default
 
BoxListoperator= (BoxList &&rhs)=default
 
void reserve (std::size_t n)
 Reserve storage for at least n Boxes.
 
void push_back (const Box &bn)
 Append a Box to this BoxList.
 
Boxfront () noexcept
 Return a reference to the first Box in the list.
 
const Boxfront () const noexcept
 Return a const reference to the first Box in the list.
 
void join (const BoxList &blist)
 Join the BoxList to ourselves.
 
void join (const Vector< Box > &barr)
 Join the Array of Boxes to ourselves.
 
void catenate (BoxList &blist)
 Catenate the BoxList to ourselves. Removes entries from blist.
 
void clear ()
 Remove all Boxes from this BoxList.
 
Long size () const noexcept
 The number of Boxes in this BoxList.
 
std::size_t capacity () const noexcept
 Return the current allocated capacity.
 
iterator begin () noexcept
 Return an iterator to the first Box.
 
const_iterator begin () const noexcept
 Return a const iterator to the first Box.
 
const_iterator cbegin () const noexcept
 Return a const iterator to the first Box.
 
iterator end () noexcept
 Return an iterator past the last Box.
 
const_iterator end () const noexcept
 Return a const iterator past the last Box.
 
const_iterator cend () const noexcept
 Return a const iterator past the last Box.
 
bool ok () const noexcept
 True if this BoxList is valid; i.e. all the Boxes are valid and they all have the same IndexType. Also returns true if the BoxList is empty.
 
bool operator== (const BoxList &rhs) const
 Is this BoxList equal to rhs?
 
bool operator!= (const BoxList &rhs) const
 Is this BoxList notequal to rhs?
 
bool isEmpty () const noexcept
 Is this BoxList empty?
 
bool isNotEmpty () const noexcept
 Is this BoxList not empty?
 
bool isDisjoint () const
 True if the set of intersecting Boxes is empty.
 
bool contains (const BoxList &bl) const
 True if all Boxes in bl are contained in this BoxList.
 
BoxListintersect (const Box &b)
 Modify this BoxList to contain only its intersection with Box b.
 
BoxListintersect (const BoxList &bl)
 Modify this BoxList to contain only its intersection with BoxList bl.
 
BoxListremoveEmpty ()
 Remove empty Boxes from this BoxList.
 
BoxListcomplementIn (const Box &b, const BoxList &bl)
 Set this BoxList to the complement of BoxList bl in Box b.
 
BoxListcomplementIn (const Box &b, BoxList &&bl)
 Set this BoxList to the complement of BoxList bl (moved) in Box b.
 
BoxListcomplementIn (const Box &b, const BoxArray &ba)
 Set this BoxList to the complement of BoxArray ba in Box b.
 
BoxListparallelComplementIn (const Box &b, const BoxList &bl)
 Parallel version of complementIn using BoxList.
 
BoxListparallelComplementIn (const Box &b, BoxList &&bl)
 Parallel version of complementIn using BoxList (moved).
 
BoxListparallelComplementIn (const Box &b, const BoxArray &ba)
 Parallel version of complementIn using BoxArray.
 
BoxListrefine (int ratio)
 Refine each Box in the BoxList by a uniform ratio.
 
BoxListrefine (const IntVect &ratio)
 Refine each Box in the BoxList by direction-dependent ratios.
 
BoxListcoarsen (int ratio)
 Coarsen each Box in the BoxList by a uniform ratio.
 
BoxListcoarsen (const IntVect &ratio)
 Coarsen each Box in the BoxList by direction-dependent ratios.
 
BoxListaccrete (int sz)
 Grow each Box in the BoxList by sz cells in every direction.
 
BoxListaccrete (const IntVect &sz)
 Grow each Box in the BoxList by sz cells (per direction).
 
BoxListshift (int dir, int nzones)
 Apply Box::shift(dir, nzones) to every Box in the list.
 
BoxListshiftHalf (int dir, int num_halfs)
 Apply Box::shiftHalf(dir, num_halfs) to every Box in the list.
 
BoxListshiftHalf (const IntVect &iv)
 Apply Box::shiftHalf(const IntVect&) to every Box in the list.
 
int simplify (bool best=false)
 Merge adjacent Boxes in this BoxList. Return the number of Boxes merged. If "best" is specified we do a single bruteforce pass over the list checking each Box against all Boxes after it in the list to see if they can be merged. If "best" is not specified we limit how fair afield we look for possible matches. The "best" algorithm is O(N-squared) while the other algorithm is O(N).
 
int ordered_simplify ()
 Merge adjacent Boxes assuming the list is already sorted/ordered.
 
BoxListmaxSize (int chunk)
 Forces each Box in the BoxList to have sides of length <= chunk.
 
BoxListmaxSize (const IntVect &chunk)
 Forces each Box in the BoxList to have dimth side of length <= chunk[dim].
 
Box minimalBox () const
 Returns smallest Box that contains all Boxes in this BoxList.
 
IndexType ixType () const noexcept
 Returns the IndexType of Boxes in this BoxList.
 
void set (IndexType ixtyp) noexcept
 Set the type of the BoxList. It's an error if the BoxList isn't empty.
 
BoxListsurroundingNodes () noexcept
 Applies surroundingNodes(Box) to each Box in BoxArray. See the documentation of Box for details.
 
BoxListsurroundingNodes (int dir) noexcept
 Applies surroundingNodes(Box,int) to each Box in BoxList. See the documentation of Box for details.
 
BoxListenclosedCells () noexcept
 Applies Box::enclosedCells() to each Box in the BoxList.
 
BoxListenclosedCells (int dir) noexcept
 Applies Box::enclosedCells(int) to each Box in the BoxList.
 
BoxListconvert (IndexType typ) noexcept
 Applies Box::convert(IndexType) to each Box in the BoxList.
 
Vector< Box > & data () noexcept
 Returns a reference to the Vector<Box>.
 
const Vector< Box > & data () const noexcept
 Returns a constant reference to the Vector<Box>.
 
void swap (BoxList &rhs) noexcept
 Swap contents with another BoxList.
 
void Bcast ()
 Broadcast this BoxList from the I/O processor to all other processors.
 

Detailed Description

A list of disjoint boxes built on top of BoxList.

The underlying BoxList is exposed selectively through promoted members.

Member Typedef Documentation

◆ const_iterator

Constructor & Destructor Documentation

◆ BoxDomain() [1/3]

amrex::BoxDomain::BoxDomain ( )

Construct an empty BoxDomain of IndexType::TheCellType().

◆ BoxDomain() [2/3]

amrex::BoxDomain::BoxDomain ( const Box bx)

Make a BoxDomain out of a single Box.

◆ BoxDomain() [3/3]

amrex::BoxDomain::BoxDomain ( IndexType  itype)
explicit

Construct an empty BoxDomain of IndexType itype.

Member Function Documentation

◆ accrete()

BoxDomain & amrex::BoxDomain::accrete ( int  sz)

Grow each stored box by sz cells on all sides.

◆ add() [1/2]

void amrex::BoxDomain::add ( const Box b)

Insert a box into the domain, clipping it so the stored boxes remain disjoint.

Parameters
bBox (matching the domain index type) to merge into the domain.

◆ add() [2/2]

void amrex::BoxDomain::add ( const BoxList bl)

Insert every box from bl, clipping to enforce disjointedness.

Parameters
blList of boxes (matching the domain index type) to merge.

◆ begin() [1/2]

const_iterator amrex::BoxList::begin ( ) const
inlinenoexcept

Promoted from BoxList.

◆ begin() [2/2]

iterator amrex::BoxList::begin ( )
inlinenoexcept

Promoted from BoxList.

◆ boxList()

const BoxList & amrex::BoxDomain::boxList ( ) const

Return a const reference to the underlying BoxList of this BoxDomain.

◆ clear()

void amrex::BoxList::clear ( )

Promoted from BoxList.

◆ coarsen()

BoxDomain & amrex::BoxDomain::coarsen ( int  ratio)

Coarsen every box by the supplied ratio.

Parameters
ratioUniform coarsening factor applied in each dimension.

◆ complementIn()

BoxDomain & amrex::BoxDomain::complementIn ( const Box b,
const BoxDomain bl 
)

Replace this domain with the indices in b that are not present in bl.

Parameters
bBounding box that defines the superset region.
blDomain of indices to subtract.
Returns
Reference to this domain for chaining.

◆ contains()

bool amrex::BoxList::contains ( const BoxList bl) const

Promoted from BoxList.

◆ end() [1/2]

const_iterator amrex::BoxList::end ( ) const
inlinenoexcept

Promoted from BoxList.

◆ end() [2/2]

iterator amrex::BoxList::end ( )
inlinenoexcept

Promoted from BoxList.

◆ intersect()

BoxDomain & amrex::BoxDomain::intersect ( const Box b)

Restrict the domain to the overlap with box b.

◆ isEmpty()

bool amrex::BoxList::isEmpty ( ) const
inlinenoexcept

Promoted from BoxList.

◆ isNotEmpty()

bool amrex::BoxList::isNotEmpty ( ) const
inlinenoexcept

Promoted from BoxList.

◆ ixType()

IndexType amrex::BoxList::ixType ( ) const
inlinenoexcept

Promoted from BoxList.

◆ minimalBox()

Box amrex::BoxList::minimalBox ( ) const

Promoted from BoxList.

◆ ok()

bool amrex::BoxDomain::ok ( ) const

Returns true if this BoxDomain is valid (disjoint or empty).

◆ operator!=()

bool amrex::BoxDomain::operator!= ( const BoxDomain rhs) const

Logical negation of operator==.

◆ operator==()

bool amrex::BoxDomain::operator== ( const BoxDomain rhs) const

Return true if both domains cover identical regions.

◆ refine()

BoxDomain & amrex::BoxDomain::refine ( int  ratio)

Refine every box by the supplied ratio.

Parameters
ratioUniform refinement factor applied in each dimension.

◆ rmBox()

BoxDomain & amrex::BoxDomain::rmBox ( const Box b)

Erase the intersection between this domain and b.

Parameters
bBox to subtract.
Returns
Reference to this domain for chaining.

◆ shift()

BoxList & amrex::BoxList::shift ( int  dir,
int  nzones 
)

Promoted from BoxList.

◆ shiftHalf() [1/2]

BoxList & amrex::BoxList::shiftHalf ( const IntVect iv)

Promoted from BoxList.

◆ shiftHalf() [2/2]

BoxList & amrex::BoxList::shiftHalf ( int  dir,
int  num_halfs 
)

Promoted from BoxList.

◆ simplify()

int amrex::BoxList::simplify ( bool  best = false)

Promoted from BoxList.

◆ size()

Long amrex::BoxList::size ( ) const
inlinenoexcept

Promoted from BoxList.

Friends And Related Symbol Documentation

◆ ClusterList

friend class ClusterList
friend

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