|
Chombo + EB + MF
3.2
|
Base class for particle data on a Box.
More...
#include <BinFab.H>

Public Member Functions | |
| BinFab () | |
| Null constructor, copy constructor and operator= can be compiler defined. More... | |
| BinFab (const Box &a_domain, const RealVect &a_mesh_spacing, const RealVect &a_origin) | |
Constructs an empty BinFab on a_domain. More... | |
| BinFab (const BinFab &a_binfab) | |
| Copy constructor. More... | |
| virtual | ~BinFab () |
| Destructor. More... | |
| virtual void | define (const Box &a_domain, const RealVect &a_mesh_spacing, const RealVect &a_origin) |
| Same as the constructor. More... | |
| virtual void | reBin () |
| Sort all the items into the appropriate bins, losing items not in the FAB's domain. More... | |
| virtual void | reBin (List< T > &a_lost, const Box &a_valid=Box(), bool a_in=true) |
Sort all the items into the appropriate bins and return items in (or not in) the Box. More... | |
| virtual void | addItem (const T &a_item) |
| Copy one item into the appropriate bin. More... | |
| virtual void | addItem (const T &a_item, const IntVect &a_bin) |
| Copy one item into the specified bin. More... | |
| virtual void | addItems (const List< T > &a_list) |
| Copy items into the appropriate bins. More... | |
| virtual void | addItemsDestructive (List< T > &a_list) |
Copy items into the appropriate bins and remove them from the List. More... | |
| virtual void | addItemsDestructive (List< T > &a_list, const Box &a_valid, bool a_in=true) |
Copy items into the appropriate bins. Remove items that are in (or not in) the Box from the List. More... | |
| virtual void | transfer (BinFab< T > &a_src, const Box &a_srcBox, const Box &a_destBox) |
Move particles from a BinFab to the overlapping cells in this one. More... | |
| virtual void | clear () |
Delete all the items in this BinFab and reset it to the null Box. More... | |
| virtual int | numItems (const Box &a_box=Box()) const |
Count the number of items in this BinFab in the specified Box. More... | |
| virtual RealVect | meshSpacing () const |
| Retrieve the mesh cell size, in physical coordinates. More... | |
| virtual void | meshSpacing (const RealVect &a_mesh_spacing) |
| Set the mesh cell size, in physical coordinates. More... | |
| RealVect | origin () const |
| Retrieve the physical coordinates of the lower corner of cell zero. More... | |
| void | origin (const RealVect &a_origin) |
| Set the physical coordinates of the lower corner of cell zero. More... | |
| virtual size_t | size (const Box &a_box, const Interval &a_comps=Interval(0, 0)) const |
| The number of bytes used by linearIn()/linearOut(). More... | |
| virtual void | linearOut (void *a_buf, const Box &a_box, const Interval &a_comps) const |
| Write a serialized (packed) representation into a_buf. More... | |
| virtual void | linearOutDestructive (void *buf, const Box &a_box, const Interval &a_comps=Interval(0, 0)) |
| Write a serialized (packed) representation into a_buf and remove from *this. More... | |
| virtual void | linearIn (void *a_buf, const Box &a_box, const Interval &a_comps=Interval(0, 0)) |
| Extract a serialized (packed) representation from a_buf. More... | |
| IntVect | size () const |
| Should be inherited from BaseFab but it isn't, sigh; code is the same. More... | |
Public Member Functions inherited from BaseFab< List< T > > | |
| virtual long | offset (const IntVect &a_iv, const int &a_ivar) const |
| { constructors, destructor and defines} More... | |
| BaseFab () | |
| BaseFab (const Box &a_bx, int a_n, List< T > *a_alias=NULL) | |
| BaseFab (const Interval &a_comps, BaseFab< List< T > > &a_original) | |
| BaseFab (BaseFab< List< T > > &&a_in) noexcept | |
| move constructor More... | |
| virtual | ~BaseFab () |
| void | resize (const Box &a_b, int a_n=1, List< T > *a_alias=NULL) |
| virtual void | define (const Box &a_box, int a_comps, List< T > *a_alias=NULL) |
| virtual void | define (const Interval &a_comps, BaseFab< List< T > > &a_original) |
| void | clear () |
| int | nComp () const |
| { accessors} More... | |
| const Box & | box () const |
| IntVect | size () const |
| const IntVect & | smallEnd () const |
| const IntVect & | bigEnd () const |
| Interval | interval () const |
| BaseFab< List< T > > & | operator= (BaseFab< List< T > > &&) noexcept |
| move assignment More... | |
| List< T > & | operator() (const IntVect &a_p, int a_N) |
| List< T > & | operator() (const IntVect &a_p) |
| const List< T > & | operator() (const IntVect &p, int N) const |
| const List< T > & | operator() (const IntVect &p) const |
| void | getVal (List< T > *a_data, const IntVect &a_pos, int a_N, int a_numcomp) const |
| void | getVal (List< T > *a_data, const IntVect &a_pos) const |
| const int * | loVect () const |
| { Fortran interface functions} More... | |
| const int * | hiVect () const |
| const int * | nCompPtr () const |
| List< T > * | dataPtr (int a_n=0) |
| const List< T > * | dataPtr (int a_n=0) const |
| bool | contains (const BaseFab< List< T > > &a_fab) const |
| { comparison functions} More... | |
| bool | contains (const Box &a_bx) const |
| void | setVal (List< T > a_x, const Box &a_bx, int a_nstart, int a_numcomp) |
| { data modification functions} More... | |
| void | setVal (List< T > a_x, const Box &a_bx, int a_n) |
| void | setVal (List< T > a_x, int a_n) |
| void | setVal (List< T > a_x) |
| BaseFab< List< T > > & | copy (const BaseFab< List< T > > &a_src, const Box &a_srcbox, int a_srccomp, const Box &a_destbox, int a_destcomp, int a_numcomp) |
| BaseFab< List< T > > & | copy (const BaseFab< List< T > > &a_src, int a_srccomp, int a_destcomp, int a_numcomp=1) |
| BaseFab< List< T > > & | copy (const BaseFab< List< T > > &a_src, const Box &a_destbox) |
| BaseFab< List< T > > & | copy (const BaseFab< List< T > > &a_src) |
| void | copy (const Box &a_RegionFrom, const Interval &a_Cdest, const Box &a_RegionTo, const BaseFab< List< T > > &a_src, const Interval &a_Csrc) |
| BaseFab< List< T > > & | shift (const IntVect &a_v) |
| { domain modification functions} More... | |
| BaseFab< List< T > > & | shift (int a_idir, int a_ncells) |
| BaseFab< List< T > > & | shiftHalf (int a_dir, int a_numHalfs) |
| BaseFab< List< T > > & | shiftHalf (const IntVect &a_v) |
| void | linearOut (void *a_buf) const |
| These functions are required for broadcast & gather. More... | |
| virtual void * | linearOut2 (void *a_buf, const Box &a_R, const Interval &a_comps) const |
| Same as linearOut, but returns the current location in the buffer. More... | |
| void | linearIn (const void *const a_buf) |
| virtual void * | linearIn2 (void *a_buf, const Box &a_R, const Interval &a_comps) |
| same as linearIn, but returns the current location in the buffer More... | |
| int | linearSize (void) const |
| void | degenerate (BaseFab< List< T > > &a_slice, const SliceSpec &a_sliceSpec) const |
| bool | isAliased () const |
| bool | isUsable () const |
Static Public Member Functions | |
| static int | preAllocatable () |
Static Public Member Functions inherited from BaseFab< List< T > > | |
| static int | preAllocatable () |
| static int | test () |
| regression test More... | |
| static int | testBoxAndComp () |
| regression test More... | |
Protected Member Functions | |
| virtual IntVect | locateBin (const T &a_item) const |
| compute the cell index containing the physical position of the item More... | |
Protected Member Functions inherited from BaseFab< List< T > > | |
| void | define () |
| void | undefine () |
| virtual void | performCopy (const BaseFab< List< T > > &a_src, const Box &a_srcbox, int a_srccomp, const Box &a_destbox, int a_destcomp, int a_numcomp) |
| void | performSetVal (List< T > a_x, const Box &a_bx, int a_nstart, int a_numcomp) |
Protected Attributes | |
| RealVect | m_origin |
| location in physical space of the 0 index More... | |
| RealVect | m_mesh_spacing |
| cell size in physical space More... | |
Protected Attributes inherited from BaseFab< List< T > > | |
| Box | m_domain |
| int | m_nvar |
| long | m_numpts |
| long | m_truesize |
| List< T > *__restrict | m_dptr |
| bool | m_aliased |
Additional Inherited Members | |
Static Protected Member Functions inherited from BaseFab< List< T > > | |
| static std::string | name () |
Static Protected Attributes inherited from BaseFab< List< T > > | |
| static Arena * | s_Arena |
Base class for particle data on a Box.
This is a class for holding and sorting particle items. Class <T> must have a RealVect <T>::position() const function which is used to place the item in an appropriate bin. See class BinItem for a base class for particles. All BinFabs are assumed to have 1 component.
Null constructor, copy constructor and operator= can be compiler defined.
Referenced by BinFab< T >::BinFab().
| BinFab< T >::BinFab | ( | const Box & | a_domain, |
| const RealVect & | a_mesh_spacing, | ||
| const RealVect & | a_origin | ||
| ) |
Constructs an empty BinFab on a_domain.
References MayDay::Abort(), BinFab< T >::BinFab(), and BaseFab< List< T > >::define().
Destructor.
References BaseFab< List< T > >::undefine().
|
virtual |
Same as the constructor.
References BaseFab< List< T > >::define(), BaseFab< List< T > >::m_domain, BinFab< T >::m_mesh_spacing, BaseFab< List< T > >::m_numpts, BaseFab< List< T > >::m_nvar, BinFab< T >::m_origin, and Box::numPts().
|
virtual |
Sort all the items into the appropriate bins, losing items not in the FAB's domain.
This is used after "pushing" particles (i.e. updating physical positions).
References Box::contains(), List< T >::isNotEmpty(), BinFab< T >::locateBin(), BaseFab< List< T > >::m_domain, BoxIterator::ok(), BaseFab< List< T > >::operator()(), and List< T >::remove().
|
virtual |
Sort all the items into the appropriate bins and return items in (or not in) the Box.
This is used after "pushing" particles, to find which have left the domain of the BinFab.
References Box::contains(), Box::isEmpty(), List< T >::isNotEmpty(), BinFab< T >::locateBin(), BaseFab< List< T > >::m_domain, BoxIterator::ok(), BaseFab< List< T > >::operator()(), List< T >::remove(), and List< T >::transfer().
|
virtual |
Copy one item into the appropriate bin.
Insert a single item into this BinFab in the appropriate cell.
References Box::contains(), BinFab< T >::locateBin(), BaseFab< List< T > >::m_domain, and BaseFab< List< T > >::operator()().
Copy one item into the specified bin.
Insert a single item into this BinFab in the specified cell.
References Box::contains(), BaseFab< List< T > >::m_domain, and BaseFab< List< T > >::operator()().
Copy items into the appropriate bins.
Insert multiple items into this BinFab.
References Box::contains(), List< T >::isNotEmpty(), BinFab< T >::locateBin(), BaseFab< List< T > >::m_domain, BaseFab< List< T > >::operator()(), and ListIterator< T >::rewind().
Copy items into the appropriate bins and remove them from the List.
Insert multiple items into BinFab and remove from source list.
References Box::contains(), List< T >::isNotEmpty(), BinFab< T >::locateBin(), BaseFab< List< T > >::m_domain, BaseFab< List< T > >::operator()(), and ListIterator< T >::rewind().
|
virtual |
Copy items into the appropriate bins. Remove items that are in (or not in) the Box from the List.
Move or copy items from arg list to *this, depending on in or not-in the given Box.
References Box::cellCentered(), CH_assert, Box::contains(), List< T >::isNotEmpty(), BinFab< T >::locateBin(), BaseFab< List< T > >::m_domain, BaseFab< List< T > >::operator()(), and ListIterator< T >::rewind().
|
virtual |
Move particles from a BinFab to the overlapping cells in this one.
Performs a point-wise transfer of the whole List<T> in src cells to the corresponding cells in *this. Notice that as a result both this and a_src are modified.
References BaseFab< List< T > >::box(), List< T >::catenate(), CH_assert, Box::contains(), BaseFab< List< T > >::nComp(), and Box::sameSize().
|
virtual |
Delete all the items in this BinFab and reset it to the null Box.
References BaseFab< List< T > >::m_domain, BinFab< T >::m_mesh_spacing, BaseFab< List< T > >::m_numpts, BaseFab< List< T > >::m_nvar, BinFab< T >::m_origin, BaseFab< List< T > >::undefine(), and RealVect::Zero.
Count the number of items in this BinFab in the specified Box.
The default is to do the whole FAB. This is slow, so use it sparingly.
References BaseFab< List< T > >::box(), Box::isEmpty(), BoxIterator::ok(), and BaseFab< List< T > >::operator()().
Referenced by BinFab< T >::linearIn(), and BinFab< T >::size().
Retrieve the mesh cell size, in physical coordinates.
References BinFab< T >::m_mesh_spacing.
Set the mesh cell size, in physical coordinates.
References BinFab< T >::m_mesh_spacing.
Retrieve the physical coordinates of the lower corner of cell zero.
References BinFab< T >::m_origin.
Set the physical coordinates of the lower corner of cell zero.
References BinFab< T >::m_origin.
|
virtual |
The number of bytes used by linearIn()/linearOut().
Returns the size, in number of bytes, of a flat linear representation of the items in the specified Box.
Reimplemented from BaseFab< List< T > >.
References BinFab< T >::numItems(), and Box::numPts().
|
virtual |
Write a serialized (packed) representation into a_buf.
Write a linear representation of the items in the specified Box. Assumes that sufficient memory for the buffer has already been allocated by the caller.
Reimplemented from BaseFab< List< T > >.
References List< T >::length(), ListIterator< T >::ok(), BoxIterator::ok(), and BaseFab< List< T > >::operator()().
|
virtual |
Write a serialized (packed) representation into a_buf and remove from *this.
Write a linear representation of the items in the specified Box and removes them from this BinFab. Assumes that sufficient memory for the buffer has already been allocated by the caller.
References List< T >::clear(), List< T >::length(), ListIterator< T >::ok(), BoxIterator::ok(), and BaseFab< List< T > >::operator()().
|
virtual |
Extract a serialized (packed) representation from a_buf.
Given a linear representation of the class data previously made using linearIn() in a_buf, set the data for this class on the specified Box.
Reimplemented from BaseFab< List< T > >.
References List< T >::append(), List< T >::clear(), BinFab< T >::numItems(), BoxIterator::ok(), and BaseFab< List< T > >::operator()().
|
inlinestatic |
Should be inherited from BaseFab but it isn't, sigh; code is the same.
needed for loop-unroll macro
References BaseFab< List< T > >::m_domain, and Box::size().
compute the cell index containing the physical position of the item
References BinFab< T >::m_mesh_spacing, BinFab< T >::m_origin, and SpaceDim.
Referenced by BinFab< T >::addItem(), BinFab< T >::addItems(), BinFab< T >::addItemsDestructive(), and BinFab< T >::reBin().
location in physical space of the 0 index
Referenced by BinFab< T >::clear(), BinFab< T >::define(), BinFab< T >::locateBin(), and BinFab< T >::origin().
cell size in physical space
Referenced by BinFab< T >::clear(), BinFab< T >::define(), BinFab< T >::locateBin(), and BinFab< T >::meshSpacing().
1.8.13