00001 #ifdef CH_LANG_CC
00002
00003
00004
00005
00006
00007
00008
00009 #endif
00010
00011 #ifndef _PROBLEMDOMAIN_H_
00012 #define _PROBLEMDOMAIN_H_
00013
00014 #ifndef WRAPPER
00015 #include <iostream>
00016
00017 #include "Vector.H"
00018 #include "IntVect.H"
00019 #include "Box.H"
00020 #include "Misc.H"
00021 #endif
00022
00023 #include "SPACE.H"
00024 #include "NamespaceHeader.H"
00025
00026
00027
00028
00029
00030
00031
00032
00033 class ShiftIterator
00034 {
00035 public:
00036
00037 ShiftIterator();
00038
00039
00040
00041
00042
00043
00044 ShiftIterator(const bool* a_isPeriodic);
00045
00046
00047
00048
00049
00050
00051 ShiftIterator(const bool* a_isPeriodic, const IntVect& a_numWraps );
00052
00053
00054 ShiftIterator(const ShiftIterator& a_shiftIt);
00055
00056
00057 ~ShiftIterator();
00058
00059
00060 ShiftIterator& operator=(const ShiftIterator& a_src);
00061
00062
00063 void computeShifts(const bool* a_isPeriodic);
00064
00065
00066 void computeShifts(const bool* a_isPeriodic, const IntVect& a_numWraps);
00067
00068
00069
00070 inline IntVect operator()() const;
00071
00072
00073 IntVect i() const
00074 {
00075 return this->operator()();
00076 }
00077
00078 inline void operator++();
00079
00080
00081 void incr()
00082 {
00083 ++(*this);
00084 }
00085
00086
00087 inline bool ok() const;
00088
00089
00090 unsigned int index() const
00091 {
00092 return m_index;
00093 }
00094
00095 const IntVect& operator[](int index) const
00096 {
00097 return m_shift_vectors[index];
00098 }
00099
00100 inline void reset();
00101
00102
00103 inline void begin();
00104
00105
00106
00107
00108
00109 void end();
00110
00111 private:
00112
00113 unsigned int m_index;
00114
00115 Vector<IntVect> m_shift_vectors;
00116
00117 };
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135
00136
00137
00138
00139
00140
00141 class ProblemDomain
00142 {
00143 public:
00144
00145
00146
00147
00148
00149
00150 ProblemDomain ();
00151
00152
00153
00154
00155
00156 ProblemDomain(const Box& a_domBox);
00157
00158
00159
00160
00161
00162
00163
00164 ProblemDomain(const Box& a_domBox, const bool* a_isPeriodic);
00165
00166
00167
00168
00169
00170
00171 ProblemDomain (const IntVect& small,
00172 const IntVect& big);
00173
00174
00175
00176
00177
00178
00179
00180
00181 ProblemDomain (const IntVect& small,
00182 const IntVect& big,
00183 const bool* a_isPeriodic);
00184
00185
00186
00187
00188
00189
00190 ProblemDomain (const IntVect& small,
00191 const int* vec_len);
00192
00193
00194
00195
00196
00197
00198
00199
00200 ProblemDomain (const IntVect& small,
00201 const int* vec_len,
00202 const bool* a_isPeriodic);
00203
00204
00205
00206
00207 ProblemDomain (const ProblemDomain& a_src);
00208
00209
00210
00211
00212
00213 void define(const Box& a_domBox);
00214
00215
00216
00217
00218
00219
00220
00221 void define(const Box& a_domBox, const bool* a_isPeriodic);
00222
00223
00224
00225
00226
00227
00228 void define (const IntVect& small,
00229 const IntVect& big);
00230
00231
00232
00233
00234
00235
00236
00237
00238 void define (const IntVect& small,
00239 const IntVect& big,
00240 const bool* a_isPeriodic);
00241
00242
00243
00244
00245
00246
00247 void define (const IntVect& small,
00248 const int* vec_len);
00249
00250
00251
00252
00253
00254
00255
00256
00257 void define (const IntVect& small,
00258 const int* vec_len,
00259 const bool* a_isPeriodic);
00260
00261
00262
00263
00264 void define (const ProblemDomain& a_src);
00265
00266
00267
00268
00269
00270
00271 const Box& domainBox() const;
00272
00273
00274
00275
00276 bool isPeriodic(int a_dir) const;
00277
00278
00279
00280
00281 const bool* isPeriodicVect() const
00282 {return m_isPeriodic;}
00283
00284
00285
00286
00287 bool isPeriodic() const;
00288
00289
00290
00291
00292
00293
00294 ShiftIterator shiftIterator() const;
00295
00296
00297
00298
00299 bool isEmpty () const;
00300
00301
00302
00303
00304 int size (const int& a_idir) const;
00305
00306
00307
00308
00309 IntVect size () const;
00310
00311
00312
00313
00314
00315
00316
00317
00318 bool contains (const IntVect& p) const;
00319
00320
00321
00322
00323
00324
00325 bool image (IntVect& p) const;
00326
00327
00328
00329
00330
00331
00332 bool contains (const Box& b) const;
00333
00334
00335 bool contains_box(const Box& b) const
00336 {
00337 return contains(b);
00338 }
00339
00340
00341
00342
00343
00344
00345
00346
00347
00348 bool intersects (const Box& a_box) const;
00349
00350
00351
00352
00353
00354
00355
00356
00357
00358
00359 bool intersectsNotEmpty (const Box& a_box) const;
00360
00361
00362
00363
00364 bool periodicAdjacent(const Box& a_box) const;
00365
00366
00367
00368
00369 void insertImages(std::list<Box>& a_list, const Box& a_box) const;
00370
00371
00372
00373
00374
00375 bool intersects(const Box& box1, const Box& box2) const;
00376
00377
00378
00379
00380 bool operator== (const ProblemDomain& a_otherDomain) const;
00381
00382
00383
00384
00385 bool operator!= (const ProblemDomain& a_otherDomain) const;
00386
00387
00388
00389
00390 friend void operator &=(Box& a_box, const ProblemDomain& a_probdomain);
00391
00392
00393
00394
00395 friend Box operator & (const Box& a_box, const ProblemDomain& a_probdomain);
00396
00397
00398
00399
00400
00401
00402 ProblemDomain& operator= (const ProblemDomain& b);
00403
00404
00405
00406
00407 void setPeriodic(int a_dir, bool a_isPeriodic);
00408
00409
00410
00411
00412 inline ProblemDomain& grow (int i);
00413
00414
00415
00416
00417 friend inline ProblemDomain grow(const ProblemDomain& pd,
00418 int i);
00419
00420
00421
00422
00423
00424
00425 inline ProblemDomain& grow(const IntVect& v);
00426
00427
00428
00429
00430
00431
00432 friend inline ProblemDomain grow (const ProblemDomain& pd,
00433 const IntVect& v);
00434
00435
00436
00437
00438
00439
00440 inline ProblemDomain& grow(int idir, int n_cell);
00441
00442
00443
00444
00445
00446
00447 inline ProblemDomain& growLo(int idir, int n_cell=1);
00448
00449
00450
00451
00452
00453 inline ProblemDomain& growHi(int idir, int n_cell=1);
00454
00455
00456
00457
00458
00459
00460
00461
00462
00463
00464 friend Box bdryLo (const ProblemDomain& a_pd,
00465 int a_dir,
00466 int a_len);
00467
00468
00469
00470
00471
00472
00473
00474
00475
00476
00477 friend Box bdryHi (const ProblemDomain& a_pd,
00478 int a_dir,
00479 int a_len);
00480
00481
00482
00483
00484
00485
00486
00487
00488
00489
00490
00491
00492
00493
00494
00495
00496
00497
00498
00499
00500
00501
00502
00503
00504
00505
00506
00507 friend Box adjCellLo (const ProblemDomain& a_pd,
00508 int a_dir,
00509 int a_len);
00510
00511
00512
00513
00514
00515
00516
00517
00518
00519
00520
00521
00522
00523
00524
00525
00526
00527
00528
00529
00530
00531
00532
00533
00534
00535
00536
00537
00538 friend Box adjCellHi (const ProblemDomain& a_pd,
00539 int a_dir,
00540 int a_len);
00541
00542
00543
00544
00545
00546
00547
00548
00549
00550
00551 Box operator& (const Box& a_b) const;
00552
00553
00554
00555
00556
00557
00558
00559
00560 ProblemDomain& refine (int a_refinement_ratio);
00561
00562
00563
00564
00565
00566
00567
00568 friend ProblemDomain refine (const ProblemDomain& a_probdomain,
00569 int a_refinement_ratio);
00570
00571
00572
00573
00574
00575
00576 ProblemDomain& refine (const IntVect& a_refinement_ratio);
00577
00578
00579
00580
00581
00582
00583
00584
00585 friend ProblemDomain refine (const ProblemDomain& a_probdomain,
00586 const IntVect& a_refinement_ratio);
00587
00588
00589
00590
00591
00592
00593
00594
00595
00596
00597 ProblemDomain& coarsen (int a_refinement_ratio);
00598
00599
00600
00601
00602
00603
00604
00605 friend ProblemDomain coarsen (const ProblemDomain& a_probdomain,
00606 int a_refinement_ratio);
00607
00608
00609
00610
00611
00612
00613 ProblemDomain& coarsen (const IntVect& refinement_ratio);
00614
00615
00616
00617
00618
00619
00620
00621
00622 friend ProblemDomain coarsen (const ProblemDomain& a_probdomain,
00623 const IntVect& a_refinement_ratio);
00624
00625
00626 void shift(const IntVect& a_shift)
00627 {
00628 m_domainBox.shift(a_shift);
00629 }
00630
00631 bool operator<(const ProblemDomain& rhs) const
00632 {
00633 return m_domainBox < rhs.m_domainBox;
00634 }
00635
00636
00637
00638
00639
00640 friend std::ostream& operator<< (std::ostream& os,
00641 const ProblemDomain& bx);
00642
00643
00644
00645
00646 friend std::istream& operator>> (std::istream& is,
00647 ProblemDomain& bx);
00648
00649 void shiftIt(Box& a_box, int shiftIndex) const ;
00650 void unshiftIt(Box& a_box, int shiftIndex) const ;
00651
00652
00653
00654
00655 void dumpOn (std::ostream& strm) const;
00656
00657
00658 protected:
00659 friend class HDF5Handle;
00660
00661
00662
00663
00664 bool m_isPeriodic[SpaceDim];
00665
00666
00667
00668
00669 Box m_domainBox;
00670
00671
00672
00673
00674 ShiftIterator m_shiftIt;
00675 };
00676
00677 class ImageIterator
00678 {
00679 public:
00680 ImageIterator(const ProblemDomain& a_domain)
00681 {
00682 define(a_domain);
00683 }
00684
00685 void define(const ProblemDomain& a_domain);
00686
00687 void begin(const Box& a_box)
00688 {
00689 m_counter=-1;
00690 m_box = a_box;
00691 this->operator++();
00692 }
00693
00694 void operator++();
00695
00696 bool ok()
00697 {
00698 return m_shifter[m_counter] != IntVect::Zero;
00699 }
00700
00701 const Box& box() const
00702 {
00703 return m_current;
00704 }
00705
00706 const ProblemDomain& domain() const
00707 {
00708 return m_domain;
00709 }
00710
00711 void checkDefine(const ProblemDomain& a_domain)
00712 {
00713 if (!(m_domain == a_domain)) define(a_domain);
00714 }
00715
00716 protected:
00717 ProblemDomain m_domain;
00718 Box m_quadrant[D_TERM6(3,*3,*3,*3,*3,*3)];
00719 IntVect m_shifter[D_TERM6(3,*3,*3,*3,*3,*3)];
00720 Box m_box;
00721 Box m_current;
00722 int m_counter;
00723 };
00724
00725
00726
00727
00728 #ifndef WRAPPER
00729
00730 inline
00731 ShiftIterator::ShiftIterator()
00732 : m_index(100), m_shift_vectors()
00733 {
00734 }
00735
00736 inline
00737 ShiftIterator::ShiftIterator(const ShiftIterator& a_src)
00738 {
00739 m_index = a_src.m_index;
00740 m_shift_vectors = a_src.m_shift_vectors;
00741 }
00742
00743 inline
00744 ShiftIterator&
00745 ShiftIterator::operator=(const ShiftIterator& a_src)
00746 {
00747 m_index = a_src.m_index;
00748 m_shift_vectors = a_src.m_shift_vectors;
00749 return *this;
00750 }
00751
00752 inline
00753 IntVect
00754 ShiftIterator::operator()() const
00755 {
00756 CH_assert(ok());
00757 return m_shift_vectors[m_index];
00758 }
00759
00760 inline
00761 void
00762 ShiftIterator::operator++()
00763 {
00764 m_index++;
00765 }
00766
00767 inline
00768 bool
00769 ShiftIterator::ok() const
00770 {
00771 return (m_index < m_shift_vectors.size());
00772 }
00773
00774 inline
00775 void
00776 ShiftIterator::reset()
00777 {
00778 m_index = 0;
00779 }
00780
00781 inline
00782 void
00783 ShiftIterator::begin()
00784 {
00785 m_index = 0;
00786 }
00787
00788 inline
00789 void
00790 ShiftIterator::end()
00791 {
00792 m_index = m_shift_vectors.size();
00793 }
00794
00795 inline
00796 ProblemDomain::ProblemDomain ()
00797 {
00798
00799 for (int dir=0; dir<SpaceDim; dir++)
00800 {
00801 m_isPeriodic[dir] = false;
00802 }
00803
00804 }
00805
00806 inline
00807 ProblemDomain::ProblemDomain (const ProblemDomain& b)
00808 : m_domainBox(b.m_domainBox), m_shiftIt(b.m_shiftIt)
00809 {
00810 for (int dir=0; dir<SpaceDim; dir++)
00811 {
00812 m_isPeriodic[dir] = b.m_isPeriodic[dir];
00813 }
00814 }
00815
00816 inline void
00817 ProblemDomain::define(const ProblemDomain& b)
00818
00819 {
00820 m_domainBox=(b.m_domainBox);
00821 m_shiftIt = (b.m_shiftIt);
00822 for (int dir=0; dir<SpaceDim; dir++)
00823 {
00824 m_isPeriodic[dir] = b.m_isPeriodic[dir];
00825 }
00826 }
00827
00828 inline
00829 bool
00830 ProblemDomain::operator== (const ProblemDomain& a_otherDomain) const
00831 {
00832 bool result = true;
00833
00834 if (m_domainBox != a_otherDomain.m_domainBox)
00835 {
00836 result = false;
00837 }
00838 else
00839 {
00840 for (int dir=0; dir<SpaceDim; dir++)
00841 {
00842 if (m_isPeriodic[dir] != a_otherDomain.m_isPeriodic[dir])
00843 {
00844 result = false;
00845 break;
00846 }
00847 }
00848 }
00849
00850 return result;
00851 }
00852
00853 inline
00854 bool
00855 ProblemDomain::operator!= (const ProblemDomain& a_otherDomain) const
00856 {
00857 return !(*this == a_otherDomain);
00858 }
00859
00860 inline
00861 ProblemDomain&
00862 ProblemDomain::operator= (const ProblemDomain& b)
00863 {
00864 m_domainBox = b.m_domainBox;
00865 for (int dir=0; dir<SpaceDim; dir++)
00866 {
00867 m_isPeriodic[dir] = b.m_isPeriodic[dir];
00868 }
00869 m_shiftIt = b.m_shiftIt;
00870 return *this;
00871 }
00872
00873 inline void
00874 ProblemDomain::shiftIt(Box& a_box, int a_shiftIndex) const
00875 {
00876 a_box.shift(m_shiftIt[a_shiftIndex]*m_domainBox.size());
00877 }
00878
00879 inline void
00880 ProblemDomain::unshiftIt(Box& a_box, int a_shiftIndex) const
00881 {
00882 a_box.shift(- m_shiftIt[a_shiftIndex]*m_domainBox.size());
00883 }
00884
00885 inline
00886 const Box&
00887 ProblemDomain::domainBox() const
00888 {
00889 return m_domainBox;
00890 }
00891
00892 inline
00893 bool
00894 ProblemDomain::isPeriodic(int a_dir) const
00895 {
00896 return m_isPeriodic[a_dir];
00897 }
00898
00899 inline
00900 bool
00901 ProblemDomain::isPeriodic() const
00902 {
00903 return D_TERM6(m_isPeriodic[0], ||
00904 m_isPeriodic[1], ||
00905 m_isPeriodic[2], ||
00906 m_isPeriodic[3], ||
00907 m_isPeriodic[4], ||
00908 m_isPeriodic[5]);
00909 }
00910
00911 inline
00912 ProblemDomain&
00913 ProblemDomain::grow(int i)
00914 {
00915 m_domainBox.grow(i);
00916 return *this;
00917 }
00918
00919 inline
00920 ProblemDomain
00921 grow(const ProblemDomain& pd, int i)
00922 {
00923 ProblemDomain newPd(pd);
00924 newPd.grow(i);
00925 return newPd;
00926 }
00927
00928 inline
00929 ProblemDomain&
00930 ProblemDomain::grow(const IntVect& v)
00931 {
00932 m_domainBox.grow(v);
00933 return *this;
00934 }
00935
00936 inline
00937 ProblemDomain
00938 grow(const ProblemDomain& pd, const IntVect& v)
00939 {
00940 ProblemDomain newPd(pd);
00941 newPd.grow(v);
00942 return newPd;
00943 }
00944
00945 inline
00946 ProblemDomain&
00947 ProblemDomain::grow(int idir, int n_cell)
00948 {
00949 m_domainBox.grow(idir, n_cell);
00950 return *this;
00951 }
00952
00953 inline
00954 ProblemDomain&
00955 ProblemDomain::growLo(int idir, int n_cell)
00956 {
00957 m_domainBox.growLo(idir, n_cell);
00958 return *this;
00959 }
00960
00961 inline
00962 ProblemDomain&
00963 ProblemDomain::growHi(int idir, int n_cell)
00964 {
00965 m_domainBox.growHi(idir, n_cell);
00966 return *this;
00967 }
00968
00969 inline
00970 ShiftIterator
00971 ProblemDomain::shiftIterator() const
00972 {
00973 return m_shiftIt;
00974 }
00975
00976 inline
00977 bool
00978 ProblemDomain::isEmpty () const
00979 {
00980 return (m_domainBox.isEmpty());
00981 }
00982
00983 inline
00984 int
00985 ProblemDomain::size (const int& a_idir) const
00986 {
00987 return (m_domainBox.size(a_idir));
00988 }
00989
00990 inline
00991 IntVect
00992 ProblemDomain::size () const
00993 {
00994 return (m_domainBox.size());
00995 }
00996
00997 inline
00998 bool
00999 ProblemDomain::contains (const IntVect& p) const
01000 {
01001
01002
01003 return ( !isEmpty()
01004 && (D_TERM6((m_isPeriodic[0]
01005 || ( p[0] >= m_domainBox.smallEnd(0)
01006 && p[0] <= m_domainBox.bigEnd (0))),
01007 && (m_isPeriodic[1]
01008 || ( p[1] >= m_domainBox.smallEnd(1)
01009 && p[1] <= m_domainBox.bigEnd (1))),
01010 && (m_isPeriodic[2]
01011 || ( p[2] >= m_domainBox.smallEnd(2)
01012 && p[2] <= m_domainBox.bigEnd (2))),
01013 && (m_isPeriodic[3]
01014 || ( p[3] >= m_domainBox.smallEnd(3)
01015 && p[3] <= m_domainBox.bigEnd (3))),
01016 && (m_isPeriodic[4]
01017 || ( p[4] >= m_domainBox.smallEnd(4)
01018 && p[4] <= m_domainBox.bigEnd (4))),
01019 && (m_isPeriodic[5]
01020 || ( p[5] >= m_domainBox.smallEnd(5)
01021 && p[5] <= m_domainBox.bigEnd (5))))));
01022 }
01023
01024 inline
01025 bool
01026 ProblemDomain::image(IntVect& p) const
01027 {
01028 if (m_domainBox.contains(p)) return true;
01029 if (!contains(p)) return false;
01030
01031 D_TERM6(
01032 if (m_isPeriodic[0])
01033 {
01034 if (p[0]<m_domainBox.smallEnd(0)) p[0]+= m_domainBox.size(0);
01035 else if (p[0]>m_domainBox.bigEnd(0)) p[0]-= m_domainBox.size(0);
01036 },
01037 if (m_isPeriodic[1])
01038 {
01039 if (p[1]<m_domainBox.smallEnd(1)) p[1]+= m_domainBox.size(1);
01040 else if (p[1]>m_domainBox.bigEnd(1)) p[1]-= m_domainBox.size(1);
01041 },
01042 if (m_isPeriodic[2])
01043 {
01044 if (p[2]<m_domainBox.smallEnd(2)) p[2]+= m_domainBox.size(2);
01045 else if (p[2]>m_domainBox.bigEnd(2)) p[2]-= m_domainBox.size(2);
01046 },
01047 if (m_isPeriodic[3])
01048 {
01049 if (p[3]<m_domainBox.smallEnd(3)) p[3]+= m_domainBox.size(3);
01050 else if (p[3]>m_domainBox.bigEnd(3)) p[3]-= m_domainBox.size(3);
01051 },
01052 if (m_isPeriodic[4])
01053 {
01054 if (p[4]<m_domainBox.smallEnd(4)) p[4]+= m_domainBox.size(4);
01055 else if (p[4]>m_domainBox.bigEnd(4)) p[4]-= m_domainBox.size(4);
01056 },
01057 if (m_isPeriodic[5])
01058 {
01059 if (p[5]<m_domainBox.smallEnd(5)) p[5]+= m_domainBox.size(5);
01060 else if (p[5]>m_domainBox.bigEnd(5)) p[5]-= m_domainBox.size(5);
01061 });
01062
01063 return true;
01064 }
01065
01066 inline
01067 bool
01068 ProblemDomain::contains (const Box& b) const
01069 {
01070
01071 if (b.type() == m_domainBox.type())
01072 {
01073 return ( !isEmpty()
01074 && (D_TERM6((m_isPeriodic[0]
01075 || ( b.smallEnd(0) >= m_domainBox.smallEnd(0)
01076 && b.bigEnd (0) <= m_domainBox.bigEnd (0))), &&
01077 (m_isPeriodic[1]
01078 || ( b.smallEnd(1) >= m_domainBox.smallEnd(1)
01079 && b.bigEnd (1) <= m_domainBox.bigEnd (1))), &&
01080 (m_isPeriodic[2]
01081 || ( b.smallEnd(2) >= m_domainBox.smallEnd(2)
01082 && b.bigEnd (2) <= m_domainBox.bigEnd (2))), &&
01083 (m_isPeriodic[3]
01084 || ( b.smallEnd(3) >= m_domainBox.smallEnd(3)
01085 && b.bigEnd (3) <= m_domainBox.bigEnd (3))), &&
01086 (m_isPeriodic[4]
01087 || ( b.smallEnd(4) >= m_domainBox.smallEnd(4)
01088 && b.bigEnd (4) <= m_domainBox.bigEnd (4))), &&
01089 (m_isPeriodic[5]
01090 || ( b.smallEnd(5) >= m_domainBox.smallEnd(5)
01091 && b.bigEnd (5) <= m_domainBox.bigEnd (5))))));
01092 }
01093 else
01094 {
01095 Box domainBox = m_domainBox;
01096
01097
01098 for (int dir = 0; dir < SpaceDim; dir++)
01099 {
01100 if (b.type(dir) != domainBox.type(dir))
01101 {
01102 if (b.type(dir) == IndexType::NODE)
01103 {
01104 domainBox.surroundingNodes(dir);
01105 }
01106 else
01107 {
01108 domainBox.enclosedCells(dir);
01109 }
01110 }
01111 }
01112
01113 return ( !isEmpty()
01114 && (D_TERM6((m_isPeriodic[0]
01115 || ( b.smallEnd(0) >= domainBox.smallEnd(0)
01116 && b.bigEnd (0) <= domainBox.bigEnd (0))), &&
01117 (m_isPeriodic[1]
01118 || ( b.smallEnd(1) >= domainBox.smallEnd(1)
01119 && b.bigEnd (1) <= domainBox.bigEnd (1))), &&
01120 (m_isPeriodic[2]
01121 || ( b.smallEnd(2) >= domainBox.smallEnd(2)
01122 && b.bigEnd (2) <= domainBox.bigEnd (2))), &&
01123 (m_isPeriodic[3]
01124 || ( b.smallEnd(3) >= domainBox.smallEnd(3)
01125 && b.bigEnd (3) <= domainBox.bigEnd (3))), &&
01126 (m_isPeriodic[4]
01127 || ( b.smallEnd(4) >= domainBox.smallEnd(4)
01128 && b.bigEnd (4) <= domainBox.bigEnd (4))), &&
01129 (m_isPeriodic[5]
01130 || ( b.smallEnd(5) >= domainBox.smallEnd(5)
01131 && b.bigEnd (5) <= domainBox.bigEnd (5))))));
01132 }
01133 }
01134
01135
01136
01137
01138
01139
01140
01141
01142
01143
01144 Box bdryLo (const ProblemDomain& a_pd,
01145 int a_dir,
01146 int a_len=1);
01147
01148
01149
01150
01151
01152
01153
01154
01155
01156
01157 Box bdryHi (const ProblemDomain& a_pd,
01158 int a_dir,
01159 int a_len=1);
01160
01161
01162
01163
01164
01165
01166
01167
01168
01169
01170
01171
01172
01173
01174
01175
01176
01177
01178
01179
01180
01181
01182
01183
01184
01185
01186
01187 Box adjCellLo (const ProblemDomain& a_pd,
01188 int a_dir,
01189 int a_len=1);
01190
01191
01192
01193
01194
01195
01196
01197
01198
01199
01200
01201
01202
01203
01204
01205
01206
01207
01208
01209
01210
01211
01212
01213
01214
01215
01216
01217
01218 Box adjCellHi (const ProblemDomain& a_pd,
01219 int a_dir,
01220 int a_len=1);
01221
01222
01223 #endif
01224
01225 #include "NamespaceFooter.H"
01226 #endif