20 #include "NamespaceHeader.H" 29 s_verbose = a_verbose;
32 template <
class T>
inline 39 template <
class T>
inline 45 template <
class T>
inline 51 template <
class T>
inline 55 define( a_ivsin, a_nvarin );
60 template<
class T>
inline 76 for (ivsit.
reset(); ivsit.
ok(); ++ivsit)
109 template <
class T>
inline 118 template <
class T>
inline 146 ivsIntersect &= set2;
149 int compSize = a_srcInterval.
size();
154 for (
int icomp = 0; icomp < compSize; icomp++)
156 int isrccomp = a_srcInterval.
begin() + icomp;
157 int idstcomp = a_dstInterval.
begin() + icomp;
158 thisFAB(iv, idstcomp) = a_src(iv2, isrccomp);
172 int numberThings = subset.
numPts();
173 int retval = numberThings*
sizeof(
Real)*a_comps.
size() +
sizeof(int);
174 retval +=
SpaceDim*
sizeof(int)*numberThings;
188 for (
int idir=0; idir<
SpaceDim; idir++ ) {
194 IntVect shift = a_region.smallEnd() - ibl;
195 IntVect shift2 = a_region.bigEnd() - ibh;
198 int* iptr = (
int*)rptr;
199 int count_received = *iptr++;
201 for (
int i=0; i<count_received; i++ )
205 for (
int idir=0; idir<
SpaceDim; idir++ ) iv2[idir] = *iptr++;
211 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
227 for (
int idir=0; idir<
SpaceDim; idir++ ) {
229 *rptr++ = a_region.bigEnd(idir);
232 int* iptr = (
int*)rptr;
233 int count = subset.
numPts();
241 for (
int idir=0; idir<
SpaceDim; idir++ ) *iptr++ = iv[idir];
243 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
249 CH_assert( ((
char*)rptr) - ((
char*)a_buf) ==
size(a_region,a_comps) );
262 int numberThings = subset.
numPts();
263 int retval = numberThings*
sizeof(int)*a_comps.
size() +
sizeof(int);
264 retval +=
SpaceDim*
sizeof(int)*numberThings;
277 int* rptr = (
int*)a_buf;
278 for (
int idir=0; idir<
SpaceDim; idir++ )
281 *rptr++ = a_region.bigEnd(idir);
284 int* iptr = (
int*)rptr;
285 int count = subset.
numPts();
293 for (
int idir=0; idir<
SpaceDim; idir++ ) *iptr++ = iv[idir];
295 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
311 int* rptr = (
int*)a_buf;
312 for (
int idir=0; idir<
SpaceDim; idir++ )
319 IntVect shift = a_region.smallEnd() - ibl;
320 IntVect shift2 = a_region.bigEnd() - ibh;
323 int* iptr = (
int*)rptr;
324 int count_received = *iptr++;
326 for (
int i=0; i<count_received; i++ )
330 for (
int idir=0; idir<
SpaceDim; idir++ ) iv2[idir] = *iptr++;
336 for (
int c=a_comps.
begin(); c<=a_comps.
end(); c++ )
344 template <
class T>
inline 349 int numberThings = subset.
numPts();
356 int retval=
sizeof(int);
357 for(
int icomp=a_comps.
begin(); icomp<=a_comps.
end(); icomp++ ) {
364 retval +=
SpaceDim*
sizeof(int)*numberThings;
369 template <
class T>
inline 381 for (
int idir=0; idir<
SpaceDim; idir++ ) {
383 *rptr++ = a_region.bigEnd(idir);
386 int* iptr = (
int*)rptr;
388 int count = subset.
numPts();
393 char* cptr = (
char*)iptr;
399 for (
int idir=0; idir<
SpaceDim; idir++ ) *iptr++ = iv[idir];
402 for(
int c=a_comps.
begin(); c<=a_comps.
end(); c++ ) {
404 m_dataPtr[iloc].linearOut( (
void*)cptr );
408 if( cptr - ((
char*)a_buf) !=
size(a_region,a_comps) ) {
409 pout() <<
" region " << a_region << endl;
410 pout() <<
" comps " << a_comps.
begin() <<
" to " << a_comps.
end() << endl;
411 pout() <<
" size " <<
size(a_region,a_comps) << endl;
412 pout() <<
" ptrdiff " << (cptr - ((
char*)a_buf)) << endl;
414 CH_assert( cptr - ((
char*)a_buf) ==
size(a_region,a_comps) );
417 template <
class T>
inline 428 for (
int idir=0; idir<
SpaceDim; idir++ ) {
434 IntVect shift = a_region.smallEnd() - ibl;
435 IntVect shift2 = a_region.bigEnd() - ibh;
438 int* iptr = (
int*)rptr;
440 int count_received = *iptr++;
444 char* cptr = (
char*)iptr;
445 for (
int i=0; i<count_received; i++ )
449 for (
int idir=0; idir<
SpaceDim; idir++ ) iv2[idir] = *iptr++;
455 for(
int c=a_comps.
begin(); c<=a_comps.
end(); c++ ) {
464 template <
class T>
inline 472 int ioffset =
m_ivmap(a_iv, 0);
480 template <
class T>
inline 496 template <
class T>
inline 503 template <
class T>
inline 510 template <
class T>
inline 517 template <
class T>
inline 525 int iloc =
getIndex(a_ndin, a_comp);
529 template <
class T>
inline 532 const int& a_comp)
const 537 int iloc =
getIndex(a_ndin, a_comp);
541 template <
class T>
inline 551 template <
class T>
inline 561 template <
class T>
inline 568 template <
class T>
inline 588 #include "NamespaceFooter.H" std::ostream & pout()
Use this in place of std::cout for program output.
void clear()
Definition: BaseFabImplem.H:210
static void setVerbose(bool a_verbose)
Definition: IVSFABI.H:27
const int * hiVect() const
Definition: IVSFABI.H:570
const int * getVect() const
Definition: IntVect.H:834
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:120
void define(const IntVectSet &a_region, const int &a_nvarin)
Definition: IVSFABI.H:61
IntVect m_loVect
Definition: IVSFAB.H:180
const int * loVect() const
Definition: IVSFABI.H:563
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:418
void linearOut(void *buf, const Box &R, const Interval &comps) const
Definition: IVSFABI.H:370
int getIndex(const IntVect &a_iv, const int &a_comp) const
Definition: IVSFABI.H:466
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:111
const int SpaceDim
Definition: SPACE.H:38
bool m_isDefined
Definition: IVSFAB.H:191
int numIvs() const
Definition: IVSFABI.H:505
int size(const Box &R, const Interval &comps) const
Definition: IVSFABI.H:345
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:46
virtual void define(const Box &a_box, int a_comps, T *a_alias=NULL)
Definition: BaseFab.H:168
double Real
Definition: REAL.H:33
const IntVectSet & getIVS() const
Definition: IVSFABI.H:34
int nComp() const
Definition: IVSFABI.H:512
T & operator()(const IntVect &a_iv, const int &varlocin)
Definition: IVSFABI.H:519
static const IntVect Zero
Definition: IntVect.H:654
BaseFab< int > m_ivmap
Definition: IVSFAB.H:189
bool isDefined() const
Definition: IVSFABI.H:498
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:482
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:543
IVSFAB()
Definition: IVSFABI.H:40