19 #include "NamespaceHeader.H" 28 s_verbose = a_verbose;
31 template <
class T>
inline 38 template <
class T>
inline 44 template <
class T>
inline 50 template <
class T>
inline 54 define( a_ivsin, a_nvarin );
59 template<
class T>
inline 75 for (ivsit.
reset(); ivsit.
ok(); ++ivsit)
108 template <
class T>
inline 117 template <
class T>
inline 145 ivsIntersect &= set2;
148 int compSize = a_srcInterval.
size();
153 for (
int icomp = 0; icomp < compSize; icomp++)
155 int isrccomp = a_srcInterval.
begin() + icomp;
156 int idstcomp = a_dstInterval.
begin() + icomp;
157 thisFAB(iv, idstcomp) = a_src(iv2, isrccomp);
171 int numberThings = subset.
numPts();
172 int retval = numberThings*
sizeof(
Real)*a_comps.
size() +
sizeof(int);
173 retval +=
SpaceDim*
sizeof(int)*numberThings;
187 for (
int idir=0; idir<
SpaceDim; idir++ ) {
193 IntVect shift = a_region.smallEnd() - ibl;
194 IntVect shift2 = a_region.bigEnd() - ibh;
197 int* iptr = (
int*)rptr;
198 int count_received = *iptr++;
200 for (
int i=0; i<count_received; i++ )
204 for (
int idir=0; idir<
SpaceDim; idir++ ) iv2[idir] = *iptr++;
210 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
226 for (
int idir=0; idir<
SpaceDim; idir++ ) {
228 *rptr++ = a_region.bigEnd(idir);
231 int* iptr = (
int*)rptr;
232 int count = subset.
numPts();
240 for (
int idir=0; idir<
SpaceDim; idir++ ) *iptr++ = iv[idir];
242 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
248 CH_assert( ((
char*)rptr) - ((
char*)a_buf) ==
size(a_region,a_comps) );
261 int numberThings = subset.
numPts();
262 int retval = numberThings*
sizeof(int)*a_comps.
size() +
sizeof(int);
263 retval +=
SpaceDim*
sizeof(int)*numberThings;
276 int* rptr = (
int*)a_buf;
277 for (
int idir=0; idir<
SpaceDim; idir++ )
280 *rptr++ = a_region.bigEnd(idir);
283 int* iptr = (
int*)rptr;
284 int count = subset.
numPts();
292 for (
int idir=0; idir<
SpaceDim; idir++ ) *iptr++ = iv[idir];
294 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
310 int* rptr = (
int*)a_buf;
311 for (
int idir=0; idir<
SpaceDim; idir++ )
318 IntVect shift = a_region.smallEnd() - ibl;
319 IntVect shift2 = a_region.bigEnd() - ibh;
322 int* iptr = (
int*)rptr;
323 int count_received = *iptr++;
325 for (
int i=0; i<count_received; i++ )
329 for (
int idir=0; idir<
SpaceDim; idir++ ) iv2[idir] = *iptr++;
335 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
343 template <
class T>
inline 348 int numberThings = subset.
numPts();
355 int retval=
sizeof(int);
356 for(
int icomp=a_comps.
begin(); icomp<=a_comps.
end(); icomp++ ) {
363 retval +=
SpaceDim*
sizeof(int)*numberThings;
368 template <
class T>
inline 380 for (
int idir=0; idir<
SpaceDim; idir++ ) {
382 *rptr++ = a_region.bigEnd(idir);
385 int* iptr = (
int*)rptr;
387 int count = subset.
numPts();
392 char* cptr = (
char*)iptr;
398 for (
int idir=0; idir<
SpaceDim; idir++ ) *iptr++ = iv[idir];
401 for(
int c=a_comps.
begin(); c<=a_comps.
end(); c++ ) {
403 m_dataPtr[iloc].linearOut( (
void*)cptr );
407 if( cptr - ((
char*)a_buf) !=
size(a_region,a_comps) ) {
408 pout() <<
" region " << a_region << endl;
409 pout() <<
" comps " << a_comps.
begin() <<
" to " << a_comps.
end() << endl;
410 pout() <<
" size " <<
size(a_region,a_comps) << endl;
411 pout() <<
" ptrdiff " << (cptr - ((
char*)a_buf)) << endl;
413 CH_assert( cptr - ((
char*)a_buf) ==
size(a_region,a_comps) );
416 template <
class T>
inline 427 for (
int idir=0; idir<
SpaceDim; idir++ ) {
433 IntVect shift = a_region.smallEnd() - ibl;
434 IntVect shift2 = a_region.bigEnd() - ibh;
437 int* iptr = (
int*)rptr;
439 int count_received = *iptr++;
443 char* cptr = (
char*)iptr;
444 for (
int i=0; i<count_received; i++ )
448 for (
int idir=0; idir<
SpaceDim; idir++ ) iv2[idir] = *iptr++;
454 for(
int c=a_comps.
begin(); c<=a_comps.
end(); c++ ) {
463 template <
class T>
inline 471 int ioffset =
m_ivmap(a_iv, 0);
479 template <
class T>
inline 495 template <
class T>
inline 502 template <
class T>
inline 509 template <
class T>
inline 516 template <
class T>
inline 524 int iloc =
getIndex(a_ndin, a_comp);
528 template <
class T>
inline 531 const int& a_comp)
const 536 int iloc =
getIndex(a_ndin, a_comp);
540 template <
class T>
inline 550 template <
class T>
inline 560 template <
class T>
inline 567 template <
class T>
inline 587 #include "NamespaceFooter.H" std::ostream & pout()
Use this in place of std::cout for program output.
void clear()
Definition: BaseFabImplem.H:252
static void setVerbose(bool a_verbose)
Definition: IVSFABI.H:26
const int * hiVect() const
Definition: IVSFABI.H:569
const int * getVect() const
Definition: IntVect.H:843
An irregular domain on an integer lattice.
Definition: IntVectSet.H:44
#define CH_SPACEDIM
Definition: SPACE.H:51
#define CH_assert(cond)
Definition: CHArray.H:37
void copy(const Box &a_fromBox, const Interval &a_destInterval, const Box &a_toBox, const IVSFAB< T > &a_src, const Interval &a_srcInterval)
Definition: IVSFABI.H:119
void define(const IntVectSet &a_region, const int &a_nvarin)
Definition: IVSFABI.H:60
IntVect m_loVect
Definition: IVSFAB.H:180
const int * loVect() const
Definition: IVSFABI.H:562
int size() const
Definition: Interval.H:75
IntVectSet m_ivs
Definition: IVSFAB.H:190
IntVect m_hiVect
Definition: IVSFAB.H:181
int begin() const
Definition: Interval.H:97
T * m_dataPtr
Definition: IVSFAB.H:177
void linearIn(void *buf, const Box &R, const Interval &comps)
Definition: IVSFABI.H:417
void linearOut(void *buf, const Box &R, const Interval &comps) const
Definition: IVSFABI.H:369
int getIndex(const IntVect &a_iv, const int &a_comp) const
Definition: IVSFABI.H:465
void makeEmpty()
Modifies this IntVectSet to be empty.
int m_nComp
Definition: IVSFAB.H:178
int numPts() const
Returns the number of IntVects in this IntVectSet.
void reset()
same as begin()
Definition: IntVectSet.H:722
bool ok() const
returns true if this iterator is still in its IntVectSet
Definition: IntVectSet.H:711
void setVal(const T &value)
Definition: IVSFABI.H:110
const int SpaceDim
Definition: SPACE.H:38
bool m_isDefined
Definition: IVSFAB.H:191
int numIvs() const
Definition: IVSFABI.H:504
int size(const Box &R, const Interval &comps) const
Definition: IVSFABI.H:344
const IntVect & bigEnd() const
Definition: Box.H:1768
int m_nIvs
Definition: IVSFAB.H:179
Structure for passing component ranges in code.
Definition: Interval.H:23
static const IntVect Unit
Definition: IntVect.H:659
const IntVect & smallEnd() const
{ Accessors}
Definition: Box.H:1754
~IVSFAB()
Definition: IVSFABI.H:45
virtual void define(const Box &a_box, int a_comps, T *a_alias=NULL)
Definition: BaseFab.H:169
double Real
Definition: REAL.H:33
const IntVectSet & getIVS() const
Definition: IVSFABI.H:33
int nComp() const
Definition: IVSFABI.H:511
T & operator()(const IntVect &a_iv, const int &varlocin)
Definition: IVSFABI.H:518
static const IntVect Zero
Definition: IntVect.H:654
BaseFab< int > m_ivmap
Definition: IVSFAB.H:189
bool isDefined() const
Definition: IVSFABI.H:497
A Rectangular Domain on an Integer Lattice.
Definition: Box.H:465
An integer Vector in SpaceDim-dimensional space.
Definition: CHArray.H:42
int end() const
Definition: Interval.H:102
Iterator for an IntVectSet.
Definition: IntVectSet.H:640
void clear()
Definition: IVSFABI.H:481
const Box & minBox() const
Returns the minimum enclosing box of this IntVectSet.
bool contains(const IntVect &iv) const
Returns true if this IntVectSet contains iv.
bool isEmpty() const
Returns true if no IntVects are in this IntVectSet.
void shift(const IntVect &iv)
Increment all the IntVects in this IntVectSet by the IntVect iv.
const T * dataPtr(const int &a_comp) const
Definition: IVSFABI.H:542
IVSFAB()
Definition: IVSFABI.H:39