CHArray.H File Reference


Detailed Description

A multi-dimensional array class for Chombo.

#include <iomanip>
#include "CHArray_fwd.H"
#include <cassert>

Include dependency graph for CHArray.H:

Go to the source code of this file.

Namespaces

namespace  ArSp

Classes

class  IntVect
 An integer Vector in SpaceDim-dimensional space. More...
class  Box
 A Rectangular Domain on an Integer Lattice. More...
struct  CHRange
 Defines a range of subscripts. More...
class  ArSp::TypeTr< T >
 Test for class type. More...
struct  ArSp::TypeTr< T >::Two
struct  ArSp::ArSp::AllocRawPolicy< T, true >
 If elements are class type, allocate using placement new. More...
struct  ArSp::ArSp::AllocRawPolicy< T, false >
 If element are not class type, just assign the address. More...
struct  ArSp::ArSp::ReleaseRawPolicy< T, true >
 If elements are class type, invoke destructor on each element. More...
struct  ArSp::ArSp::ReleaseRawPolicy< T, false >
 If elements are not class type, do nothing. More...
class  ArSp::DefaultArrayAlloc< T >
 Default allocator. More...
class  ArSp::IndexerData< Rank, DimT >
 Any rank and a zero-based subscript. More...
class  ArSp::ArSp::IndexerData< Rank, CHRange >
 Any rank and a subscript range. More...
class  ArSp::ArSp::IndexerData< 1, DimT >
 Rank 1 and a zero-based subscript (no data). More...
class  ArSp::ArSp::IndexerData< 1, CHRange >
 Rank 1 and a subscript range. More...
class  ArSp::RSIndexer< Rank, DimT >
 Rank > 2 for zero-based subscripts and > 1 for subscript ranges. More...
class  ArSp::ArSp::RSIndexer< 1, DimT >
 Specialization for Rank 1 (any type of subscript). More...
class  ArSp::ArSp::RSIndexer< 2, USz_t >
 Full specialization for Rank 2 and zero-based subscripts. More...
class  ArSp::CSIndexer< Rank, DimT >
 Rank > 2 for zero-based subscripts and > 1 for subscript ranges. More...
class  ArSp::ArSp::CSIndexer< 1, DimT >
 Specialization for Rank 1 (any type of subscript). More...
class  ArSp::ArSp::CSIndexer< 2, USz_t >
 Full specialization for Rank 2 and zero-based subscripts. More...
struct  ArSp::ArSp::ArTr< Rank, ArZeroRow >
struct  ArSp::ArSp::ArTr< Rank, ArZeroCol >
struct  ArSp::ArSp::ArTr< Rank, ArRangeRow >
struct  ArSp::ArSp::ArTr< Rank, ArRangeCol >
class  CHArray< T, Rank, ArConf, Alloc >
 Multidimensional array class. More...
struct  CHArray< T, Rank, ArConf, Alloc >::Array_impl
class  ArSp::NewArrayAlloc< T >
 Allocator that only permits allocation by new. More...
class  ArSp::ArrayOfMatrixAlloc
 Allocator for an array of matrices contiguous in memory. More...

Defines

#define CH_assert(cond)   assert(cond)
#define SpaceDim   2
#define D_DECL6(a, b, c, d, e, f)   a,b
#define D_TERM6(a, b, c, d, e, f)   a b
#define D_DEFIV
#define D_DEFBOX
#define D_IXIV

Typedefs

typedef double Real
typedef int ArSp::IIx_t
typedef unsigned ArSp::USz_t
 Type of unsigned int for a size.
typedef CHArray< Real,
1, ArZeroCol,
ArSp::DefaultArrayAlloc< Real > > 
CHVector
 Vector definition.
typedef CHArray< Real,
2, ArZeroCol,
ArSp::DefaultArrayAlloc< Real > > 
CHMatrix
 Matrix defined with column-ordered storage.

Functions

template<typename T>
USz_t ArSp::sizeOfDim (const T &dim)
 Get the size of a dimension.
template<>
USz_t ArSp::sizeOfDim< CHRange > (const CHRange &dim)
template<typename T, unsigned Rank, int ArConf, typename Alloc>
std::ostream & operator<< (std::ostream &os, const CHArray< T, Rank, ArConf, Alloc > &A)
 Output of an array.
template<>
std::ostream & operator<< (std::ostream &os, const CHMatrix &M)
 Pretty output of a matrix (should be in .cpp).
Support for describing dimensions by a range of subscripts
ArSp::USz_t operator* (const CHRange &a, const CHRange &b)
 Multiply two dimensions.
ArSp::USz_t operator* (const ArSp::USz_t &i, const CHRange &a)
ArSp::USz_t operator* (const CHRange &a, const ArSp::USz_t &i)


Define Documentation

#define CH_assert ( cond   )     assert(cond)

Referenced by List< T >::addAfter(), List< T >::addBefore(), MGLevelOp< LevelData< NodeFArrayBox > >::addCoarserObserver(), AMRMultiGrid< LevelData< T > >::addInspector(), ComputeCutCellMoments< dim >::addMomentMaps(), IFid::aggregate(), ArSp::ArrayOfMatrixAlloc::allocate(), ArSp::NewArrayAlloc< T >::allocate(), ArSp::DefaultArrayAlloc< T >::allocate(), AMRMultiGrid< T >::AMRVCycle(), MultilevelLinearOp< T >::assign(), BaseEBCellFAB< T >::assign(), BASISV_TM(), BoxLayoutData< T >::BoxLayoutData(), RootSolver::Brent(), CHRange::CHRange(), GraphNode::clear(), IndexTM< T, N >::coarsen(), AMRMultiGrid< T >::computeAMRResidualLevel(), ComputeCutCellMoments< dim >::computeMoments(), Box::contains(), Box::convert(), MiniIFFAB< T >::copy(), IVSFAB< T >::copy(), BaseIVFAB< T >::copy(), BaseIFFAB< T >::copy(), BaseFab< T >::copy(), BaseEBFaceFAB< T >::copy(), BaseEBCellFAB< T >::copy(), LevelData< T >::copyTo(), AliasDataFactory< T >::create(), GMRESSolver< T >::CycleGMRES(), MiniIFFAB< T >::dataPtr(), IVSFAB< T >::dataPtr(), BaseIVFAB< T >::dataPtr(), BaseIFFAB< T >::dataPtr(), BaseFab< T >::dataPtr(), PetscSolver< T >::define(), MultilevelLinearOp< T >::define(), MiniIVFAB< T >::define(), MiniIFFAB< T >::define(), LevelData< T >::define(), LayoutData< T >::define(), IVSFAB< T >::define(), BoxLayoutData< T >::define(), BaseIVFAB< T >::define(), BaseIFFAB< T >::define(), BaseFab< T >::define(), BaseEBFaceFAB< T >::define(), BaseEBCellFAB< T >::define(), BaseEBFaceFAB< T >::direction(), MultilevelLinearOp< T >::dotProduct(), TupleKeyMap<, ValueT >::fetch(), BaseEBCellFAB< T >::fill(), List< T >::firstElement(), EBPatchAdvect::floorPrimitives(), BoxLayoutData< T >::generalCopyTo(), BoxLayout::get(), BaseEBFaceFAB< T >::getCellRegion(), EBLevelGrid::getCFIVS(), QuadCFStencil::getCoarIVS(), LevelFluxRegister::getCoarseLocations(), EBLevelGrid::getCoveringIVS(), EBLevelGrid::getDBL(), CodimBox::getDirections(), EBLevelGrid::getDomain(), EBLevelGrid::getEBIS(), EBLevelGrid::getEBISL(), QuadCFStencil::getFineIVS(), EBLevelGrid::getGhost(), MiniIVFAB< T >::getIndex(), MiniIFFAB< T >::getIndex(), IVSFAB< T >::getIndex(), BaseIVFAB< T >::getIndex(), BaseIFFAB< T >::getLocalVecIndex(), EBLevelGrid::getMaxCoarseningRatio(), EBLevelGrid::getMaxRefinementRatio(), BaseEBCellFAB< T >::getMultiCells(), BaseEBFaceFAB< T >::getMultiValuedFAB(), BaseEBCellFAB< T >::getMultiValuedFAB(), CodimBox::getNumOrient(), BaseEBFaceFAB< T >::getRegion(), BaseEBCellFAB< T >::getRegion(), CodimBox::getSequential(), BaseEBFaceFAB< T >::getSingleValuedFAB(), BaseEBCellFAB< T >::getSingleValuedFAB(), BaseFab< T >::getVal(), ParticleVector< T, Comparator >::global_sort(), EBFluxRegister::incrementCoarse(), EBFluxRegister::incrementFine(), GraphNodeImplem::index(), Histogram::Init(), TupleKeyMap<, ValueT >::insert(), ipow(), QuadCFStencil::isEmpty(), CFIVS::isEmpty(), CFIVS::isPacked(), ArSp::ArSp::CSIndexer< 2, USz_t >::ixIndex1D(), ArSp::ArSp::CSIndexer< 1, DimT >::ixIndex1D(), ArSp::CSIndexer< Rank, DimT >::ixIndex1D(), ArSp::ArSp::RSIndexer< 2, USz_t >::ixIndex1D(), ArSp::ArSp::RSIndexer< 1, DimT >::ixIndex1D(), ArSp::RSIndexer< Rank, DimT >::ixIndex1D(), List< T >::lastElement(), LayoutData< T >::LayoutData(), MiniIVFAB< T >::linearIn(), MiniIFFAB< T >::linearIn(), IVSFAB< T >::linearIn(), BaseIVFAB< T >::linearIn(), BaseIFFAB< T >::linearIn(), MiniIVFAB< T >::linearOut(), MiniIFFAB< T >::linearOut(), IVSFAB< T >::linearOut(), BaseIVFAB< T >::linearOut(), BaseIFFAB< T >::linearOut(), CHArray< T, Rank, ArConf, Alloc >::lowerBound(), ParticleVector< T, Comparator >::memsort(), Histogram::mws_private(), BaseEBFaceFAB< T >::nComp(), BaseEBCellFAB< T >::nComp(), BaseFab< T >::nCompPtr(), MGLevelOp< LevelData< NodeFArrayBox > >::notifyObserversOfChange(), BaseFab< bool >::offset(), NeighborIterator::ok(), RefCountedPtr< T >::operator RefCountedPtr< T2 >(), Scheduler::PeriodicFunctionLessThan::operator()(), ShiftIterator::operator()(), NeighborIterator::operator()(), MiniIFFAB< T >::operator()(), ListIterator< T >::operator()(), LayoutIterator::operator()(), IVSFAB< T >::operator()(), CopyIterator::operator()(), CHArray< T, Rank, ArConf, Alloc >::operator()(), BoxIterator::operator()(), BaseIVFAB< T >::operator()(), BaseIFFAB< T >::operator()(), BaseFab< T >::operator()(), BaseEBFaceFAB< T >::operator()(), BaseEBCellFAB< T >::operator()(), ListIterator< T >::operator*(), DenseIntVectSetIterator::operator++(), operator<<(), CHArray< T, Rank, ArConf, Alloc >::operator=(), Vector< LevelTGAHelmOp< LevelData< EBCellFAB >, EBFluxFAB > * >::operator[](), Tuple< T, N >::operator[](), RealVect::operator[](), List< T >::operator[](), LayoutData< T >::operator[](), IndexTM< T, N >::operator[](), IFidTable::operator[](), BoxLayout::operator[](), BitSet::operator[](), CodimBox::orientBox(), CFIVS::packedBox(), BaseFab< T >::performCopy(), BaseFab< T >::performSetVal(), MultilevelLinearOp< T >::preCond(), BoxLayout::procID(), read(), IntVect::reflect(), IndexTM< T, N >::reflect(), EBFastFR::reflux(), AMRMultiGrid< T >::relaxOnlyHomogeneous(), List< T >::removeLink(), List< T >::replace(), MultilevelLinearOp< T >::residual(), GMRESSolver< T >::ResidualGMRES(), Box::sameSize(), CodimBox::seq2bit(), Box::setBig(), AMRMultiGrid< T >::setBottomSolverEpsCushion(), BaseEBCellFAB< T >::setCoveredCellVal(), BaseEBFaceFAB< T >::setCoveredFaceVal(), EBLevelGrid::setMaxCoarseningRatio(), EBLevelGrid::setMaxRefinementRatio(), PetscSolver< T >::setNull(), MGLevelOpObserver< LevelData< NodeFArrayBox > >::setObservee(), BitSetIterator::setpos(), BoxLayout::setProcID(), Box::setRange(), GMRESSolver< T >::setRestartLen(), Box::setSmall(), PetscSolver< T >::setup_solver(), MiniIFFAB< T >::setVal(), IVSFAB< T >::setVal(), IntVect::setVal(), IndexTM< T, N >::setVal(), BaseIVFAB< T >::setVal(), BaseIFFAB< T >::setVal(), BaseEBCellFAB< T >::setVal(), IntVect::shift(), IndexTM< T, N >::shift(), MiniIVFAB< T >::size(), MiniIFFAB< T >::size(), IVSFAB< T >::size(), CHArray< T, Rank, ArConf, Alloc >::size(), BaseIVFAB< T >::size(), BaseIFFAB< T >::size(), RelaxSolver< T >::solve(), BiCGStabSolver< T >::solve(), PetscSolver< T >::solve_private(), AMRMultiGrid< T >::solveNoInitResid(), BaseLevelHeatSolver< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::timeInterp(), List< T >::transfer(), CHArray< T, Rank, ArConf, Alloc >::undefine(), BaseFab< T >::undefine(), BaseLevelCrankNicolson< LevelData< EBCellFAB >, EBFluxFAB, EBFluxRegister >::updateSoln(), BaseLevelBackwardEuler< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::updateSoln(), BaseLevelTGA< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::updateSolnWithTimeDependentOp(), BaseLevelTGA< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::updateSolnWithTimeIndependentOp(), CHArray< T, Rank, ArConf, Alloc >::upperBound(), ListIterator< T >::value(), and write().

#define SpaceDim   2

Referenced by ProblemDomain::contains(), ProblemDomain::define(), MiniIFFAB< T >::define(), BaseIFFAB< T >::define(), BaseEBFaceFAB< T >::define(), RealTensor::det(), ViscousTensorOp::diagonalScale(), EBViscousTensorOp::diagonalScale(), ViscousTensorOp::divideByIdentityCoef(), EBViscousTensorOp::divideByIdentityCoef(), ViscousBaseEBBC::getBoundaryGrad(), ViscousBaseEBBC::getChangeInSolution(), ViscousTensorOp::getFlux(), EBAMRPoissonOp::getFlux(), AMRPoissonOp::getFlux(), ViscousBaseEBBC::getFluxFromGrad(), TensorCFInterp::gradIndex(), GraphNodeImplem::index(), Correct1D2D::index(), ArSp::ArSp::RSIndexer< 2, USz_t >::ixIV(), ArSp::ArSp::RSIndexer< 1, DimT >::ixIV(), ArSp::RSIndexer< Rank, DimT >::ixIV(), RealTensor::operator()(), EBAMRPoissonOp::StencilIndexComparator::operator()(), EBFluxFAB::operator*=(), EBFluxFAB::operator+=(), EBFluxFAB::operator-=(), EBFluxFAB::operator/=(), RealTensor::operator=(), ProblemDomain::operator=(), ProblemDomain::operator==(), RealVect::operator[](), ProblemDomain::ProblemDomain(), IntVect::product(), RealTensor::RealTensor(), RealVect::RealVect(), IntVect::reflect(), IntVect::setVal(), IntVect::shift(), AMRMultiGrid< T >::solveNoInitResid(), BaseFab< T >::testBoxAndComp(), BaseLevelCrankNicolson< LevelData< EBCellFAB >, EBFluxFAB, EBFluxRegister >::updateSoln(), BaseLevelBackwardEuler< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::updateSoln(), BaseLevelTGA< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::updateSolnWithTimeDependentOp(), BaseLevelTGA< LevelData< FArrayBox >, FluxBox, LevelFluxRegister >::updateSolnWithTimeIndependentOp(), ReferenceHeightIF::value(), and RealVect::vectorLength().

#define D_DECL6 ( a,
b,
c,
d,
e,
 )     a,b

#define D_TERM6 ( a,
b,
c,
d,
e,
 )     a b

#define D_DEFIV

Value:

D_DECL6(DimT(iv[Indexer::ixIV(0)]), \
                         DimT(iv[Indexer::ixIV(1)]), \
                         DimT(iv[Indexer::ixIV(2)]), \
                         DimT(iv[Indexer::ixIV(3)]), \
                         DimT(iv[Indexer::ixIV(4)]), \
                         DimT(iv[Indexer::ixIV(5)]))

Referenced by CHArray< T, Rank, ArConf, Alloc >::define().

#define D_DEFBOX

Value:

D_DECL6(DimT(box.smallEnd(Indexer::ixIV(0)), \
                                 box.bigEnd(Indexer::ixIV(0))), \
                          DimT(box.smallEnd(Indexer::ixIV(1)), \
                                 box.bigEnd(Indexer::ixIV(1))), \
                          DimT(box.smallEnd(Indexer::ixIV(2)), \
                                 box.bigEnd(Indexer::ixIV(2))), \
                          DimT(box.smallEnd(Indexer::ixIV(3)), \
                                 box.bigEnd(Indexer::ixIV(3))), \
                          DimT(box.smallEnd(Indexer::ixIV(4)), \
                                 box.bigEnd(Indexer::ixIV(4))), \
                          DimT(box.smallEnd(Indexer::ixIV(5)), \
                                 box.bigEnd(Indexer::ixIV(5))))

Referenced by CHArray< T, Rank, ArConf, Alloc >::define().

#define D_IXIV

Value:

D_DECL6(iv[Indexer::ixIV(0)], \
                        iv[Indexer::ixIV(1)], \
                        iv[Indexer::ixIV(2)], \
                        iv[Indexer::ixIV(3)], \
                        iv[Indexer::ixIV(4)], \
                        iv[Indexer::ixIV(5)])

Referenced by CHArray< T, Rank, ArConf, Alloc >::operator()().


Typedef Documentation

typedef double Real

typedef CHArray<Real, 1, ArZeroCol, ArSp::DefaultArrayAlloc<Real> > CHVector

Vector definition.

typedef CHArray<Real, 2, ArZeroCol, ArSp::DefaultArrayAlloc<Real> > CHMatrix

Matrix defined with column-ordered storage.


Function Documentation

ArSp::USz_t operator* ( const CHRange a,
const CHRange b 
) [inline]

Multiply two dimensions.

References ArSp::sizeOfDim().

ArSp::USz_t operator* ( const ArSp::USz_t i,
const CHRange a 
) [inline]

References ArSp::sizeOfDim().

ArSp::USz_t operator* ( const CHRange a,
const ArSp::USz_t i 
) [inline]

References ArSp::sizeOfDim().

template<typename T, unsigned Rank, int ArConf, typename Alloc>
std::ostream& operator<< ( std::ostream &  os,
const CHArray< T, Rank, ArConf, Alloc > &  A 
) [inline]

template<>
std::ostream& operator<< ( std::ostream &  os,
const CHMatrix M 
) [inline]

Pretty output of a matrix (should be in .cpp).

References CH_assert, CHArray< T, Rank, ArConf, Alloc >::isAllocated(), and CHArray< T, Rank, ArConf, Alloc >::size().


Generated on Thu Dec 14 03:38:05 2017 for Chombo + EB by  doxygen 1.5.5