diff options
Diffstat (limited to 'Carpet/CarpetLib')
-rw-r--r-- | Carpet/CarpetLib/src/dh.cc | 6 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/gh.cc | 66 | ||||
-rw-r--r-- | Carpet/CarpetLib/src/gh.hh | 38 |
3 files changed, 64 insertions, 46 deletions
diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc index 13a780a18..0502342d3 100644 --- a/Carpet/CarpetLib/src/dh.cc +++ b/Carpet/CarpetLib/src/dh.cc @@ -93,7 +93,7 @@ void dh<D>::allocate_bboxes() { for (int c=0; c<h.components(rl); ++c) { boxes.at(rl).at(c).resize(h.mglevels(rl,c)); for (int ml=0; ml<h.mglevels(rl,c); ++ml) { - const ibbox intr = h.extents.at(rl).at(c).at(ml); + const ibbox intr = h.extents().at(rl).at(c).at(ml); dboxes & b = boxes.at(rl).at(c).at(ml); // Interior @@ -107,8 +107,8 @@ void dh<D>::allocate_bboxes() { // the exterior is redundant) ivect ldist(lghosts), udist(ughosts); for (int d=0; d<D; ++d) { - if (h.outer_boundaries.at(rl).at(c)[d][0]) ldist[d] = 0; - if (h.outer_boundaries.at(rl).at(c)[d][1]) udist[d] = 0; + if (h.outer_boundaries().at(rl).at(c)[d][0]) ldist[d] = 0; + if (h.outer_boundaries().at(rl).at(c)[d][1]) udist[d] = 0; } b.exterior = intr.expand(ldist, udist); diff --git a/Carpet/CarpetLib/src/gh.cc b/Carpet/CarpetLib/src/gh.cc index 26f831337..bce6afc92 100644 --- a/Carpet/CarpetLib/src/gh.cc +++ b/Carpet/CarpetLib/src/gh.cc @@ -41,9 +41,9 @@ void gh<D>::recompose (const rexts& exts, { DECLARE_CCTK_PARAMETERS; - extents = exts; - outer_boundaries = outer_bounds; - processors = procs; + _extents = exts; + _outer_boundaries = outer_bounds; + _processors = procs; // Consistency checks @@ -76,11 +76,11 @@ void gh<D>::recompose (const rexts& exts, template<int D> void gh<D>::check_processor_number_consistency () { for (int rl=0; rl<reflevels(); ++rl) { - assert (processors.size() == extents.size()); - assert (outer_boundaries.size() == extents.size()); + assert (processors().size() == extents().size()); + assert (outer_boundaries().size() == extents().size()); for (int c=0; c<components(rl); ++c) { - assert (processors.at(rl).size() == extents.at(rl).size()); - assert (outer_boundaries.at(rl).size() == extents.at(rl).size()); + assert (processors().at(rl).size() == extents().at(rl).size()); + assert (outer_boundaries().at(rl).size() == extents().at(rl).size()); } } } @@ -91,14 +91,14 @@ void gh<D>::check_multigrid_consistency () { for (int c=0; c<components(rl); ++c) { assert (mglevels(rl,c)>0); for (int ml=1; ml<mglevels(rl,c); ++ml) { - assert (all(extents.at(rl).at(c).at(ml).stride() - == ivect(mgfact) * extents.at(rl).at(c).at(ml-1).stride())); + assert (all(extents().at(rl).at(c).at(ml).stride() + == ivect(mgfact) * extents().at(rl).at(c).at(ml-1).stride())); // TODO: put the check back in, taking outer boundaries into // account #if 0 - assert (extents.at(rl).at(c).at(ml) - .contracted_for(extents.at(rl).at(c).at(ml-1)) - .is_contained_in(extents.at(rl).at(c).at(ml-1))); + assert (extents().at(rl).at(c).at(ml) + .contracted_for(extents().at(rl).at(c).at(ml-1)) + .is_contained_in(extents().at(rl).at(c).at(ml-1))); #endif } } @@ -111,12 +111,12 @@ void gh<D>::check_component_consistency () { assert (components(rl)>0); for (int c=0; c<components(rl); ++c) { for (int ml=0; ml<mglevels(rl,c); ++ml) { - ibbox &b = extents.at(rl).at(c).at(ml); - ibbox &b0 = extents.at(rl).at(0).at(ml); + const ibbox &b = extents().at(rl).at(c).at(ml); + const ibbox &b0 = extents().at(rl).at(0).at(ml); assert (all(b.stride() == b0.stride())); assert (b.is_aligned_with(b0)); for (int cc=c+1; cc<components(rl); ++cc) { - assert ((b & extents.at(rl).at(cc).at(ml)).empty()); + assert ((b & extents().at(rl).at(cc).at(ml)).empty()); } } } @@ -130,7 +130,7 @@ void gh<D>::check_base_grid_extent () { // TODO: put the check back in, taking outer boundaries into // account #if 0 - assert (extents.at(0).at(c).at(0).is_contained_in(baseextent)); + assert (extents().at(0).at(c).at(0).is_contained_in(baseextent)); #endif } } @@ -139,19 +139,19 @@ void gh<D>::check_base_grid_extent () { template<int D> void gh<D>::check_refinement_levels () { for (int rl=1; rl<reflevels(); ++rl) { - assert (all(extents.at(rl-1).at(0).at(0).stride() - == ivect(reffact) * extents.at(rl).at(0).at(0).stride())); + assert (all(extents().at(rl-1).at(0).at(0).stride() + == ivect(reffact) * extents().at(rl).at(0).at(0).stride())); // Check contained-ness: // first take all coarse grids ... bboxset<int,D> all; for (int c=0; c<components(rl-1); ++c) { - all |= extents.at(rl-1).at(c).at(0); + all |= extents().at(rl-1).at(c).at(0); } // ... remember their size ... const int sz = all.size(); // ... then add the coarsified fine grids ... for (int c=0; c<components(rl); ++c) { - all |= extents.at(rl).at(c).at(0).contracted_for(extents.at(rl-1).at(0).at(0)); + all |= extents().at(rl).at(c).at(0).contracted_for(extents().at(rl-1).at(0).at(0)); } // ... and then check the sizes: assert (all.size() == sz); @@ -160,17 +160,17 @@ void gh<D>::check_refinement_levels () { template<int D> void gh<D>::calculate_base_extents_of_all_levels () { - bases.resize(reflevels()); + _bases.resize(reflevels()); for (int rl=0; rl<reflevels(); ++rl) { if (components(rl)==0) { - bases.at(rl).resize(0); + _bases.at(rl).resize(0); } else { - bases.at(rl).resize(mglevels(rl,0)); + _bases.at(rl).resize(mglevels(rl,0)); for (int ml=0; ml<mglevels(rl,0); ++ml) { - bases.at(rl).at(ml) = ibbox(); - ibbox &bb = bases.at(rl).at(ml); + _bases.at(rl).at(ml) = ibbox(); + ibbox &bb = _bases.at(rl).at(ml); for (int c=0; c<components(rl); ++c) { - bb = bb.expanded_containing(extents.at(rl).at(c).at(ml)); + bb = bb.expanded_containing(extents().at(rl).at(c).at(ml)); } } } @@ -222,9 +222,9 @@ void gh<D>::do_output_bboxes (ostream& os) const { os << endl; os << "gh bboxes:" << endl; os << "rl=" << rl << " c=" << c << " ml=" << ml << endl; - os << "extent=" << extents.at(rl).at(c).at(ml) << endl; - os << "outer_boundary=" << outer_boundaries.at(rl).at(c) << endl; - os << "processor=" << processors.at(rl).at(c) << endl; + os << "extent=" << extents().at(rl).at(c).at(ml) << endl; + os << "outer_boundary=" << outer_boundaries().at(rl).at(c) << endl; + os << "processor=" << processors().at(rl).at(c) << endl; } } } @@ -238,7 +238,7 @@ void gh<D>::do_output_bases (ostream& os) const { os << endl; os << "gh bases:" << endl; os << "rl=" << rl << " ml=" << ml << endl; - os << "base=" << bases.at(rl).at(ml) << endl; + os << "base=" << bases().at(rl).at(ml) << endl; } } } @@ -249,9 +249,9 @@ ostream& gh<D>::output (ostream& os) const { os << "gh<" << D << ">:" << "reffactor=" << reffact << ",refcentering=" << refcent << "," << "mgfactor=" << mgfact << ",mgcentering=" << mgcent << "," - << "extents=" << extents << "," - << "outer_boundaries=" << outer_boundaries << "," - << "processors=" << processors << "," + << "extents=" << extents() << "," + << "outer_boundaries=" << outer_boundaries() << "," + << "processors=" << processors() << "," << "dhs={"; int cnt=0; for (typename list<dh<D>*>::const_iterator d = dhs.begin(); diff --git a/Carpet/CarpetLib/src/gh.hh b/Carpet/CarpetLib/src/gh.hh index 0bad3540a..462564f5c 100644 --- a/Carpet/CarpetLib/src/gh.hh +++ b/Carpet/CarpetLib/src/gh.hh @@ -62,14 +62,15 @@ public: // should be readonly const centering mgcent; // default (vertex or cell centered) const ibbox baseextent; - vector<vector<ibbox> > bases; // [rl][ml] - // TODO: invent structure for this - rexts extents; // extents of all grids - rbnds outer_boundaries; // boundary descriptions of all grids - rprocs processors; // processor numbers of all grids private: + vector<vector<ibbox> > _bases; // [rl][ml] + // TODO: invent structure for this + rexts _extents; // extents of all grids + rbnds _outer_boundaries; // boundary descriptions of all grids + rprocs _processors; // processor numbers of all grids + list<th<D>*> ths; // list of all time hierarchies list<dh<D>*> dhs; // list of all data hierarchies @@ -87,26 +88,42 @@ public: void recompose (const rexts& exts, const rbnds& outer_bounds, const rprocs& procs, const bool do_prolongate); + + const rexts & extents() const { + return _extents; + } + + const rbnds & outer_boundaries() const { + return _outer_boundaries; + } + + const rprocs & processors() const { + return _processors; + } + + const vector<vector<ibbox> > & bases() const { + return _bases; + } // Accessors int reflevels () const { - return (int)extents.size(); + return (int)_extents.size(); } int components (const int rl) const { - return (int)extents.at(rl).size(); + return (int)_extents.at(rl).size(); } int mglevels (const int rl, const int c) const { - return (int)extents.at(rl).at(c).size(); + return (int)_extents.at(rl).at(c).size(); } bvect outer_boundary (const int rl, const int c) const { - return outer_boundaries.at(rl).at(c); + return _outer_boundaries.at(rl).at(c); } int proc (const int rl, const int c) const { - return processors.at(rl).at(c); + return _processors.at(rl).at(c); } bool is_local (const int rl, const int c) const { @@ -137,6 +154,7 @@ private: void calculate_base_extents_of_all_levels (); void do_output_bboxes (ostream& os) const; void do_output_bases (ostream& os) const; + }; |