Block-Structured AMR Software Framework
amrex::BoxList Class Reference

A class for managing a List of Boxes that share a common IndexType. This class implements operations for sets of Boxes. This is a concrete class, not a polymorphic one. More...

#include <AMReX_BoxList.H>

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

Public Types

using iterator = Vector< Box >::iterator
 
using const_iterator = Vector< Box >::const_iterator
 

Public Member Functions

 BoxList ()
 Construct an empty BoxList with IndexType::TheCellType(). More...
 
 BoxList (const Box &bx)
 Make a boxList consisting of a single Box. More...
 
 BoxList (IndexType _btype)
 Construct an empty BoxList with IndexType _btype. More...
 
 BoxList (const BoxArray &ba)
 Construct a BoxList from a BoxArray. More...
 
 BoxList (Vector< Box > &&bxs)
 Construct a boxlist from a rvalue Vector<Box>. More...
 
 BoxList (const Box &bx, const IntVect &tilesize)
 Make a boxList consisting of non-overlapping tile box from a single Box. More...
 
 BoxList (const Box &bx, int nboxes)
 Make a BoxList consisting of nboxes Boxes from a single Box. More...
 
 BoxList (const Box &bx, int nboxes, Direction dir)
 Make a BoxList consisting of nboxes Boxes chopped in dir-direction from a single Box. More...
 
 ~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)
 
void push_back (const Box &bn)
 Append a Box to this BoxList. More...
 
Boxfront () noexcept
 
const Boxfront () const noexcept
 
void join (const BoxList &blist)
 Join the BoxList to ourselves. More...
 
void join (const Vector< Box > &barr)
 Join the Array of Boxes to ourselves. More...
 
void catenate (BoxList &blist)
 Catenate the BoxList to ourselves. Removes entries from blist. More...
 
void clear ()
 Remove all Boxes from this BoxList. More...
 
Long size () const noexcept
 The number of Boxes in this BoxList. More...
 
std::size_t capacity () const noexcept
 
iterator begin () noexcept
 
const_iterator begin () const noexcept
 
const_iterator cbegin () const noexcept
 
iterator end () noexcept
 
const_iterator end () const noexcept
 
const_iterator cend () const noexcept
 
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. More...
 
bool operator== (const BoxList &rhs) const
 Is this BoxList equal to rhs? More...
 
bool operator!= (const BoxList &rhs) const
 Is this BoxList notequal to rhs? More...
 
bool isEmpty () const noexcept
 Is this BoxList empty? More...
 
bool isNotEmpty () const noexcept
 Is this BoxList not empty? More...
 
bool isDisjoint () const
 True if the set of intersecting Boxes is empty. More...
 
bool contains (const BoxList &bl) const
 True if all Boxes in bl are contained in this BoxList. More...
 
BoxListintersect (const Box &b)
 Modify this BoxList to contain only its intersection with Box b. More...
 
BoxListintersect (const BoxList &bl)
 Modify this BoxList to contain only its intersection with BoxList bl. More...
 
BoxListremoveEmpty ()
 Remove empty Boxes from this BoxList. More...
 
BoxListcomplementIn (const Box &b, const BoxList &bl)
 
BoxListcomplementIn (const Box &b, BoxList &&bl)
 
BoxListcomplementIn (const Box &b, const BoxArray &ba)
 
BoxListparallelComplementIn (const Box &b, const BoxList &bl)
 
BoxListparallelComplementIn (const Box &b, BoxList &&bl)
 
BoxListparallelComplementIn (const Box &b, const BoxArray &ba)
 
BoxListrefine (int ratio)
 Refine each Box in the BoxList by the ratio. More...
 
BoxListrefine (const IntVect &ratio)
 Refine each Box in the BoxList by the ratio. More...
 
BoxListcoarsen (int ratio)
 Coarsen each Box in the BoxList by the ratio. More...
 
BoxListcoarsen (const IntVect &ratio)
 Coarsen each Box in the BoxList by the ratio. More...
 
BoxListaccrete (int sz)
 Grow each Box in the BoxList by size sz. More...
 
BoxListaccrete (const IntVect &sz)
 
BoxListshift (int dir, int nzones)
 Applies Box::shift(int,int) to each Box in the BoxList. More...
 
BoxListshiftHalf (int dir, int num_halfs)
 Applies Box::shiftHalf(int,int) to each Box in the BoxList. More...
 
BoxListshiftHalf (const IntVect &iv)
 Applies Box::shiftHalf(IntVect) to each Box in BoxList. More...
 
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). More...
 
int ordered_simplify ()
 Assuming the boxes are nicely ordered. More...
 
BoxListmaxSize (int chunk)
 Forces each Box in the BoxList to have sides of length <= chunk. More...
 
BoxListmaxSize (const IntVect &chunk)
 Forces each Box in the BoxList to have dimth side of length <= chunk[dim]. More...
 
Box minimalBox () const
 Returns smallest Box that contains all Boxes in this BoxList. More...
 
IndexType ixType () const noexcept
 Returns the IndexType of Boxes in this BoxList. More...
 
void set (IndexType ixtyp) noexcept
 Set the type of the BoxList. It's an error if the BoxList isn't empty. More...
 
BoxListsurroundingNodes () noexcept
 Applies surroundingNodes(Box) to each Box in BoxArray. See the documentation of Box for details. More...
 
BoxListsurroundingNodes (int dir) noexcept
 Applies surroundingNodes(Box,int) to each Box in BoxList. See the documentation of Box for details. More...
 
BoxListenclosedCells () noexcept
 Applies Box::enclosedCells() to each Box in the BoxList. More...
 
BoxListenclosedCells (int dir) noexcept
 Applies Box::enclosedCells(int) to each Box in the BoxList. More...
 
BoxListconvert (IndexType typ) noexcept
 Applies Box::convert(IndexType) to each Box in the BoxList. More...
 
Vector< Box > & data () noexcept
 Returns a reference to the Vector<Box>. More...
 
const Vector< Box > & data () const noexcept
 Returns a constant reference to the Vector<Box>. More...
 
void swap (BoxList &rhs) noexcept
 
void Bcast ()
 

Private Member Functions

int simplify_doit (int depth)
 Core simplify routine. More...
 

Private Attributes

Vector< Boxm_lbox
 The list of Boxes. More...
 
IndexType btype
 The IndexType of Boxes in the BoxList. More...
 

Friends

class BoxDomain
 

Detailed Description

A class for managing a List of Boxes that share a common IndexType. This class implements operations for sets of Boxes. This is a concrete class, not a polymorphic one.

Member Typedef Documentation

◆ const_iterator

◆ iterator

Constructor & Destructor Documentation

◆ BoxList() [1/10]

amrex::BoxList::BoxList ( )

Construct an empty BoxList with IndexType::TheCellType().

◆ BoxList() [2/10]

amrex::BoxList::BoxList ( const Box bx)
explicit

Make a boxList consisting of a single Box.

◆ BoxList() [3/10]

amrex::BoxList::BoxList ( IndexType  _btype)
explicit

Construct an empty BoxList with IndexType _btype.

◆ BoxList() [4/10]

amrex::BoxList::BoxList ( const BoxArray ba)
explicit

Construct a BoxList from a BoxArray.

◆ BoxList() [5/10]

amrex::BoxList::BoxList ( Vector< Box > &&  bxs)
explicit

Construct a boxlist from a rvalue Vector<Box>.

◆ BoxList() [6/10]

amrex::BoxList::BoxList ( const Box bx,
const IntVect tilesize 
)

Make a boxList consisting of non-overlapping tile box from a single Box.

◆ BoxList() [7/10]

amrex::BoxList::BoxList ( const Box bx,
int  nboxes 
)

Make a BoxList consisting of nboxes Boxes from a single Box.

◆ BoxList() [8/10]

amrex::BoxList::BoxList ( const Box bx,
int  nboxes,
Direction  dir 
)

Make a BoxList consisting of nboxes Boxes chopped in dir-direction from a single Box.

◆ ~BoxList()

amrex::BoxList::~BoxList ( )
default

◆ BoxList() [9/10]

amrex::BoxList::BoxList ( const BoxList rhs)
default

◆ BoxList() [10/10]

amrex::BoxList::BoxList ( BoxList &&  rhs)
default

Member Function Documentation

◆ accrete() [1/2]

BoxList& amrex::BoxList::accrete ( const IntVect sz)

◆ accrete() [2/2]

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

Grow each Box in the BoxList by size sz.

◆ Bcast()

void amrex::BoxList::Bcast ( )

◆ begin() [1/2]

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

◆ begin() [2/2]

iterator amrex::BoxList::begin ( )
inlinenoexcept

◆ capacity()

std::size_t amrex::BoxList::capacity ( ) const
inlinenoexcept

◆ catenate()

void amrex::BoxList::catenate ( BoxList blist)

Catenate the BoxList to ourselves. Removes entries from blist.

◆ cbegin()

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

◆ cend()

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

◆ clear()

void amrex::BoxList::clear ( )

Remove all Boxes from this BoxList.

◆ coarsen() [1/2]

BoxList& amrex::BoxList::coarsen ( const IntVect ratio)

Coarsen each Box in the BoxList by the ratio.

◆ coarsen() [2/2]

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

Coarsen each Box in the BoxList by the ratio.

◆ complementIn() [1/3]

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

◆ complementIn() [2/3]

BoxList& amrex::BoxList::complementIn ( const Box b,
const BoxArray ba 
)

◆ complementIn() [3/3]

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

◆ contains()

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

True if all Boxes in bl are contained in this BoxList.

◆ convert()

BoxList& amrex::BoxList::convert ( IndexType  typ)
noexcept

Applies Box::convert(IndexType) to each Box in the BoxList.

◆ data() [1/2]

const Vector<Box>& amrex::BoxList::data ( ) const
inlinenoexcept

Returns a constant reference to the Vector<Box>.

◆ data() [2/2]

Vector<Box>& amrex::BoxList::data ( )
inlinenoexcept

Returns a reference to the Vector<Box>.

◆ enclosedCells() [1/2]

BoxList& amrex::BoxList::enclosedCells ( )
noexcept

Applies Box::enclosedCells() to each Box in the BoxList.

◆ enclosedCells() [2/2]

BoxList& amrex::BoxList::enclosedCells ( int  dir)
noexcept

Applies Box::enclosedCells(int) to each Box in the BoxList.

◆ end() [1/2]

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

◆ end() [2/2]

iterator amrex::BoxList::end ( )
inlinenoexcept

◆ front() [1/2]

const Box& amrex::BoxList::front ( ) const
inlinenoexcept

◆ front() [2/2]

Box& amrex::BoxList::front ( )
inlinenoexcept

◆ intersect() [1/2]

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

Modify this BoxList to contain only its intersection with Box b.

◆ intersect() [2/2]

BoxList& amrex::BoxList::intersect ( const BoxList bl)

Modify this BoxList to contain only its intersection with BoxList bl.

◆ isDisjoint()

bool amrex::BoxList::isDisjoint ( ) const

True if the set of intersecting Boxes is empty.

◆ isEmpty()

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

Is this BoxList empty?

◆ isNotEmpty()

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

Is this BoxList not empty?

◆ ixType()

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

Returns the IndexType of Boxes in this BoxList.

◆ join() [1/2]

void amrex::BoxList::join ( const BoxList blist)

Join the BoxList to ourselves.

◆ join() [2/2]

void amrex::BoxList::join ( const Vector< Box > &  barr)

Join the Array of Boxes to ourselves.

◆ maxSize() [1/2]

BoxList& amrex::BoxList::maxSize ( const IntVect chunk)

Forces each Box in the BoxList to have dimth side of length <= chunk[dim].

◆ maxSize() [2/2]

BoxList& amrex::BoxList::maxSize ( int  chunk)

Forces each Box in the BoxList to have sides of length <= chunk.

◆ minimalBox()

Box amrex::BoxList::minimalBox ( ) const

Returns smallest Box that contains all Boxes in this BoxList.

◆ ok()

bool amrex::BoxList::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.

◆ operator!=()

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

Is this BoxList notequal to rhs?

◆ operator=() [1/2]

BoxList& amrex::BoxList::operator= ( BoxList &&  rhs)
default

◆ operator=() [2/2]

BoxList& amrex::BoxList::operator= ( const BoxList rhs)
default

◆ operator==()

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

Is this BoxList equal to rhs?

◆ ordered_simplify()

int amrex::BoxList::ordered_simplify ( )

Assuming the boxes are nicely ordered.

◆ parallelComplementIn() [1/3]

BoxList& amrex::BoxList::parallelComplementIn ( const Box b,
BoxList &&  bl 
)

◆ parallelComplementIn() [2/3]

BoxList& amrex::BoxList::parallelComplementIn ( const Box b,
const BoxArray ba 
)

◆ parallelComplementIn() [3/3]

BoxList& amrex::BoxList::parallelComplementIn ( const Box b,
const BoxList bl 
)

◆ push_back()

void amrex::BoxList::push_back ( const Box bn)
inline

Append a Box to this BoxList.

◆ refine() [1/2]

BoxList& amrex::BoxList::refine ( const IntVect ratio)

Refine each Box in the BoxList by the ratio.

◆ refine() [2/2]

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

Refine each Box in the BoxList by the ratio.

◆ removeEmpty()

BoxList& amrex::BoxList::removeEmpty ( )

Remove empty Boxes from this BoxList.

◆ reserve()

void amrex::BoxList::reserve ( std::size_t  n)
inline

◆ set()

void amrex::BoxList::set ( IndexType  ixtyp)
inlinenoexcept

Set the type of the BoxList. It's an error if the BoxList isn't empty.

◆ shift()

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

Applies Box::shift(int,int) to each Box in the BoxList.

◆ shiftHalf() [1/2]

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

Applies Box::shiftHalf(IntVect) to each Box in BoxList.

◆ shiftHalf() [2/2]

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

Applies Box::shiftHalf(int,int) to each Box in the BoxList.

◆ simplify()

int amrex::BoxList::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).

◆ simplify_doit()

int amrex::BoxList::simplify_doit ( int  depth)
private

Core simplify routine.

◆ size()

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

The number of Boxes in this BoxList.

◆ surroundingNodes() [1/2]

BoxList& amrex::BoxList::surroundingNodes ( )
noexcept

Applies surroundingNodes(Box) to each Box in BoxArray. See the documentation of Box for details.

◆ surroundingNodes() [2/2]

BoxList& amrex::BoxList::surroundingNodes ( int  dir)
noexcept

Applies surroundingNodes(Box,int) to each Box in BoxList. See the documentation of Box for details.

◆ swap()

void amrex::BoxList::swap ( BoxList rhs)
inlinenoexcept

Friends And Related Function Documentation

◆ BoxDomain

friend class BoxDomain
friend

Member Data Documentation

◆ btype

IndexType amrex::BoxList::btype
private

The IndexType of Boxes in the BoxList.

◆ m_lbox

Vector<Box> amrex::BoxList::m_lbox
private

The list of Boxes.


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