From 5e27b083c681c45de9d1af5048b946d8e742b80d Mon Sep 17 00:00:00 2001 From: Erik Schnetter Date: Sat, 3 Feb 2007 20:58:00 +0000 Subject: CarpetLib: Use AT to index std::vector Define a macro AT() to index into std::vector. Depending on the macro NDEBUG, AT() is defined either as at(), providing index checking, or as operator[], providing no checking. darcs-hash:20070203205854-dae7b-a1999c88c95ba12b1ee66505f712aefdd67d7e6f.gz --- Carpet/CarpetLib/src/commstate.cc | 22 +++--- Carpet/CarpetLib/src/data.cc | 46 ++++++------ Carpet/CarpetLib/src/defs.hh | 11 +++ Carpet/CarpetLib/src/dh.cc | 64 ++++++++-------- Carpet/CarpetLib/src/gdata.cc | 54 +++++++------- Carpet/CarpetLib/src/gf.cc | 4 +- Carpet/CarpetLib/src/ggf.cc | 149 +++++++++++++++++++------------------- Carpet/CarpetLib/src/ggf.hh | 2 +- Carpet/CarpetLib/src/gh.cc | 26 +++---- Carpet/CarpetLib/src/gh.hh | 12 +-- Carpet/CarpetLib/src/mem.cc | 8 +- Carpet/CarpetLib/src/mem.hh | 2 +- Carpet/CarpetLib/src/th.cc | 20 ++--- Carpet/CarpetLib/src/th.hh | 8 +- 14 files changed, 220 insertions(+), 208 deletions(-) diff --git a/Carpet/CarpetLib/src/commstate.cc b/Carpet/CarpetLib/src/commstate.cc index 0ac7b21de..9eecec8f2 100644 --- a/Carpet/CarpetLib/src/commstate.cc +++ b/Carpet/CarpetLib/src/commstate.cc @@ -48,8 +48,8 @@ comm_state::comm_state () { \ T dummy; \ int type = dist::c_datatype (dummy); \ - typebufs.at(type).datatypesize = sizeof (dummy); \ - typebufs.at(type).mpi_datatype = dist::datatype (dummy); \ + typebufs.AT(type).datatypesize = sizeof (dummy); \ + typebufs.AT(type).mpi_datatype = dist::datatype (dummy); \ } #include "instantiate" #undef INSTANTIATE @@ -253,15 +253,15 @@ bool comm_state::AllPostedCommunicationsFinished () if (reduce_mpi_waitall) { size_t nreqs = 0; for (size_t i=0; i reqs(nreqs); nreqs = 0; for (size_t i=0; i reqs(nreqs); nreqs = 0; for (size_t i=0; i vector srcs (gsrcs.size()); for (size_t t=0; t (gsrcs.at(t)); + srcs.AT(t) = dynamic_cast (gsrcs.AT(t)); } assert (srcs.size() == times.size() and srcs.size() > 0); for (size_t t=0; thas_storage()); - assert (proc() == srcs.at(t)->proc()); + assert (srcs.AT(t)->has_storage()); + assert (proc() == srcs.AT(t)->proc()); } assert (dist::rank() == proc()); @@ -508,7 +508,7 @@ void data } if (timelevel == -1) { for (size_t tl=0; tl for (size_t tl=0; tlvarindex, this->cent, this->transport_operator); - tmps.at(tl)->allocate (box, this->proc()); + tmps.AT(tl)->allocate (box, this->proc()); - tmps.at(tl)->interpolate_p_r (srcs.at(tl), box, order_space); + tmps.AT(tl)->interpolate_p_r (srcs.AT(tl), box, order_space); } time_interpolate (tmps, box, times, time, order_time); for (size_t tl=0; tl case 1: assert (times.size() >= 2); - interpolate_3d_2tl (static_cast (srcs.at(0)->storage()), - times.at(0), - static_cast (srcs.at(1)->storage()), - times.at(1), - srcs.at(0)->shape(), + interpolate_3d_2tl (static_cast (srcs.AT(0)->storage()), + times.AT(0), + static_cast (srcs.AT(1)->storage()), + times.AT(1), + srcs.AT(0)->shape(), static_cast (this->storage()), time, this->shape(), - srcs.at(0)->extent(), + srcs.AT(0)->extent(), this->extent(), box); break; case 2: assert (times.size() >= 3); - interpolate_3d_3tl (static_cast (srcs.at(0)->storage()), - times.at(0), - static_cast (srcs.at(1)->storage()), - times.at(1), - static_cast (srcs.at(2)->storage()), - times.at(2), - srcs.at(0)->shape(), + interpolate_3d_3tl (static_cast (srcs.AT(0)->storage()), + times.AT(0), + static_cast (srcs.AT(1)->storage()), + times.AT(1), + static_cast (srcs.AT(2)->storage()), + times.AT(2), + srcs.AT(0)->shape(), static_cast (this->storage()), time, this->shape(), - srcs.at(0)->extent(), + srcs.AT(0)->extent(), this->extent(), box); break; diff --git a/Carpet/CarpetLib/src/defs.hh b/Carpet/CarpetLib/src/defs.hh index 3ae0b8261..afbabfba5 100644 --- a/Carpet/CarpetLib/src/defs.hh +++ b/Carpet/CarpetLib/src/defs.hh @@ -36,6 +36,17 @@ using namespace std; +// Use this macro AT instead of vector's operator[] or at(). +// Depending on the macro NDEBUG, this macro AT either checks for +// valid indices or not. +#ifndef NDEBUG +# define AT(index) at(index) +#else +# define AT(index) operator[](index) +#endif + + + // Begin a new line without flushing the output buffer char const * const eol = "\n"; diff --git a/Carpet/CarpetLib/src/dh.cc b/Carpet/CarpetLib/src/dh.cc index 67c2a94f7..6fdde0a20 100644 --- a/Carpet/CarpetLib/src/dh.cc +++ b/Carpet/CarpetLib/src/dh.cc @@ -108,12 +108,12 @@ void dh::allocate_bboxes () { boxes.resize(h.mglevels()); for (int ml=0; ml intr.upper()[d]; if (is_empty) { @@ -147,7 +147,7 @@ void dh::allocate_bboxes () bnd -= h.extent(ml,rl,cc); } bool const is_interproc = bnd.empty(); - boxes.at(ml).at(rl).at(c).is_interproc[d][f] = is_interproc; + boxes.AT(ml).AT(rl).AT(c).is_interproc[d][f] = is_interproc; if (! is_empty and ! is_interproc) { dist[f][d] += buffers[f][d]; odist[f][d] = dist[f][d]; @@ -171,19 +171,19 @@ void dh::allocate_bboxes () // Make owned regions disjoint for (int c=0; c*op)(box, rl, c, ml); // evaluate member function } } @@ -238,7 +238,7 @@ void dh::setup_sync_boxes (dh::dboxes & box, // Sync boxes for (int cc=0; cc0) { - dboxes & bbox = boxes.at(ml-1).at(rl).at(c); + dboxes & bbox = boxes.AT(ml-1).AT(rl).AT(c); const ibbox intrf = bbox.interior; const ibbox extrf = bbox.exterior; // Restriction (interior) @@ -303,7 +303,7 @@ void dh::setup_refinement_prolongation_boxes (dh::dboxes & box, // Refinement boxes if (rl0) { - dbases & base = bases.at(ml).at(rl); + dbases & base = bases.AT(ml).AT(rl); cout << endl; cout << "dh bases:" << endl; cout << "ml=" << ml << " rl=" << rl << endl; diff --git a/Carpet/CarpetLib/src/gdata.cc b/Carpet/CarpetLib/src/gdata.cc index 207cc2624..7180c2ce9 100644 --- a/Carpet/CarpetLib/src/gdata.cc +++ b/Carpet/CarpetLib/src/gdata.cc @@ -128,15 +128,15 @@ void gdata::copy_from (comm_state& state, if (proc() != src->proc()) { // if this is a destination processor: advance its recv buffer size vector& procbufs = - state.typebufs.at(c_datatype()).procbufs; + state.typebufs.AT(c_datatype()).procbufs; if (proc() == dist::rank()) { - procbufs.at(src->proc()).recvbufsize += box.size(); - state.typebufs.at(c_datatype()).in_use = true; + procbufs.AT(src->proc()).recvbufsize += box.size(); + state.typebufs.AT(c_datatype()).in_use = true; } // if this is a source processor: increment its send buffer size if (src->proc() == dist::rank()) { - procbufs.at(proc()).sendbufsize += box.size(); - state.typebufs.at(c_datatype()).in_use = true; + procbufs.AT(proc()).sendbufsize += box.size(); + state.typebufs.AT(c_datatype()).in_use = true; } } break; @@ -157,7 +157,7 @@ void gdata::copy_from (comm_state& state, // if this is a destination processor and data has already been received // from the source processor: copy it from the recv buffer if (proc() == dist::rank() and - state.recvbuffers_ready.at(dist::size()*c_datatype() + src->proc())) { + state.recvbuffers_ready.AT(dist::size()*c_datatype() + src->proc())) { copy_from_recvbuffer (state, src, box); } break; @@ -258,7 +258,7 @@ void gdata::copy_from_wait (comm_state& state, ivect items = (box.upper() - box.lower()) / box.stride() + 1; ivect offs = (box.lower() - ext.lower()) / ext.stride(); const char* recv_buffer = (const char*) b->pointer(); - int& datatypesize = state.typebufs.at(c_datatype()).datatypesize; + int& datatypesize = state.typebufs.AT(c_datatype()).datatypesize; for (int k = 0; k < items[2]; k++) { for (int j = 0; j < items[1]; j++) { @@ -293,9 +293,9 @@ void gdata::copy_into_sendbuffer (comm_state& state, } else { // copy to remote processor assert (src->_has_storage); - int datatypesize = state.typebufs.at(c_datatype()).datatypesize; + int const datatypesize = state.typebufs.AT(c_datatype()).datatypesize; comm_state::procbufdesc& procbuf = - state.typebufs.at(c_datatype()).procbufs.at(proc()); + state.typebufs.AT(c_datatype()).procbufs.AT(proc()); assert (procbuf.sendbuf - procbuf.sendbufbase <= ((int)procbuf.sendbufsize - box.size()) * datatypesize); int const fillstate = procbuf.sendbuf + (int)box.size()*datatypesize - @@ -324,7 +324,7 @@ void gdata::copy_into_sendbuffer (comm_state& state, if (fillstate == (int)procbuf.sendbufsize * datatypesize) { wtime_commstate_isend.start(); MPI_Isend (procbuf.sendbufbase, procbuf.sendbufsize, - state.typebufs.at(c_datatype()).mpi_datatype, + state.typebufs.AT(c_datatype()).mpi_datatype, proc(), c_datatype(), dist::comm(), &state.srequests.at(dist::size()*c_datatype() + proc())); wtime_commstate_isend.stop(procbuf.sendbufsize * datatypesize); @@ -339,9 +339,9 @@ void gdata::copy_into_sendbuffer (comm_state& state, void gdata::copy_from_recvbuffer (comm_state& state, const gdata* src, const ibbox& box) { - int& datatypesize = state.typebufs.at(c_datatype()).datatypesize; + int& datatypesize = state.typebufs.AT(c_datatype()).datatypesize; comm_state::procbufdesc& procbuf = - state.typebufs.at(c_datatype()).procbufs.at(src->proc()); + state.typebufs.AT(c_datatype()).procbufs.AT(src->proc()); assert (procbuf.recvbuf - procbuf.recvbufbase <= ((int)procbuf.recvbufsize-box.size()) * datatypesize); @@ -385,12 +385,12 @@ void gdata assert (all((box.lower()-extent().lower())%box.stride() == 0)); assert (srcs.size() == times.size() and srcs.size()>0); for (int t=0; t<(int)srcs.size(); ++t) { - assert (srcs.at(t)->has_storage()); - assert (all(box.lower()>=srcs.at(t)->extent().lower())); - assert (all(box.upper()<=srcs.at(t)->extent().upper())); + assert (srcs.AT(t)->has_storage()); + assert (all(box.lower()>=srcs.AT(t)->extent().lower())); + assert (all(box.upper()<=srcs.AT(t)->extent().upper())); } assert (not box.empty()); - const gdata* src = srcs.at(0); + const gdata* src = srcs.AT(0); if (dist::rank() != proc() and dist::rank() != src->proc()) return; switch (state.thestate) { @@ -413,15 +413,15 @@ void gdata if (proc() != src->proc()) { // if this is a destination processor: increment its recv buffer size vector& procbufs = - state.typebufs.at(c_datatype()).procbufs; + state.typebufs.AT(c_datatype()).procbufs; if (proc() == dist::rank()) { - procbufs.at(src->proc()).recvbufsize += box.size(); - state.typebufs.at(c_datatype()).in_use = true; + procbufs.AT(src->proc()).recvbufsize += box.size(); + state.typebufs.AT(c_datatype()).in_use = true; } // if this is a source processor: increment its send buffer size if (src->proc() == dist::rank()) { - procbufs.at(proc()).sendbufsize += box.size(); - state.typebufs.at(c_datatype()).in_use = true; + procbufs.AT(proc()).sendbufsize += box.size(); + state.typebufs.AT(c_datatype()).in_use = true; } } break; @@ -443,7 +443,7 @@ void gdata // from the source processor: copy it from the recv buffer // (the processor-local case is not handled here) if (proc() == dist::rank() and - state.recvbuffers_ready.at(dist::size()*c_datatype() + src->proc())) { + state.recvbuffers_ready.AT(dist::size()*c_datatype() + src->proc())) { copy_from_recvbuffer(state, src, box); } break; @@ -462,7 +462,7 @@ void gdata const int order_space, const int order_time) { - const gdata* src = srcs.at(0); + const gdata* src = srcs.AT(0); if (dist::rank() == proc()) { // interpolate from other processor @@ -514,17 +514,17 @@ void gdata { DECLARE_CCTK_PARAMETERS; - if (proc() == srcs.at(0)->proc()) { + if (proc() == srcs.AT(0)->proc()) { // interpolate on same processor interpolate_from_innerloop (srcs, times, box, time, order_space, order_time); } else { // interpolate to remote processor - const gdata* src = srcs.at(0); + const gdata* src = srcs.AT(0); assert (src->_has_storage); - int& datatypesize = state.typebufs.at(c_datatype()).datatypesize; + int& datatypesize = state.typebufs.AT(c_datatype()).datatypesize; comm_state::procbufdesc& procbuf = - state.typebufs.at(c_datatype()).procbufs.at(proc()); + state.typebufs.AT(c_datatype()).procbufs.AT(proc()); assert (procbuf.sendbuf - procbuf.sendbufbase <= ((int)procbuf.sendbufsize - box.size()) * datatypesize); assert (src->has_storage()); diff --git a/Carpet/CarpetLib/src/gf.cc b/Carpet/CarpetLib/src/gf.cc index 26fa00f38..50bb0f661 100644 --- a/Carpet/CarpetLib/src/gf.cc +++ b/Carpet/CarpetLib/src/gf.cc @@ -58,7 +58,7 @@ const data* gf::operator() (int tl, int rl, int c, int ml) const assert (c>=0 and c=0 and ml=0 and tl*)storage.at(ml).at(rl).at(c).at(tl); + return (const data*)storage.AT(ml).AT(rl).AT(c).AT(tl); } template @@ -68,7 +68,7 @@ data* gf::operator() (int tl, int rl, int c, int ml) assert (c>=0 and c=0 and ml=0 and tl*)storage.at(ml).at(rl).at(c).at(tl); + return (data*)storage.AT(ml).AT(rl).AT(c).AT(tl); } diff --git a/Carpet/CarpetLib/src/ggf.cc b/Carpet/CarpetLib/src/ggf.cc index e81a3811f..895cf941d 100644 --- a/Carpet/CarpetLib/src/ggf.cc +++ b/Carpet/CarpetLib/src/ggf.cc @@ -38,7 +38,7 @@ ggf::ggf (const int varindex_, const operator_type transport_operator_, timelevels_.resize(d.h.mglevels()); for (int ml=0; ml=0 and ml<(int)storage.size()); - assert (rl>=0 and rl<(int)storage.at(ml).size()); + assert (rl>=0 and rl<(int)storage.AT(ml).size()); assert (new_timelevels >= 0); if (new_timelevels < timelevels(ml,rl)) { - for (int c=0; c<(int)storage.at(ml).at(rl).size(); ++c) { + for (int c=0; c<(int)storage.AT(ml).AT(rl).size(); ++c) { for (int tl=new_timelevels; tl timelevels(ml,rl)) { - for (int c=0; c<(int)storage.at(ml).at(rl).size(); ++c) { - storage.at(ml).at(rl).at(c).resize (new_timelevels); + for (int c=0; c<(int)storage.AT(ml).AT(rl).size(); ++c) { + storage.AT(ml).AT(rl).AT(c).resize (new_timelevels); for (int tl=timelevels(ml,rl); tlallocate - (d.boxes.at(ml).at(rl).at(c).exterior, h.processor(rl,c)); + storage.AT(ml).AT(rl).AT(c).AT(tl) = typed_data(tl,rl,c,ml); + storage.AT(ml).AT(rl).AT(c).AT(tl)->allocate + (d.boxes.AT(ml).AT(rl).AT(c).exterior, h.processor(rl,c)); } // for tl } // for c } - timelevels_.at(ml).at(rl) = new_timelevels; + timelevels_.AT(ml).AT(rl) = new_timelevels; } @@ -95,14 +95,14 @@ void ggf::recompose_crop () { // Free storage that will not be needed for (int ml=0; mlallocate - (d.boxes.at(ml).at(rl).at(c).exterior, h.processor(rl,c)); + storage.AT(ml).AT(rl).AT(c).AT(tl) = typed_data(tl,rl,c,ml); + storage.AT(ml).AT(rl).AT(c).AT(tl)->allocate + (d.boxes.AT(ml).AT(rl).AT(c).exterior, h.processor(rl,c)); } // for tl } // for c } // for ml @@ -147,20 +147,20 @@ void ggf::recompose_fill (comm_state& state, const int rl, // Find out which regions need to be prolongated // (Copy the exterior because some variables are not prolongated) // TODO: do this once in the dh instead of for each variable here - ibset work (d.boxes.at(ml).at(rl).at(c).exterior); + ibset work (d.boxes.AT(ml).AT(rl).AT(c).exterior); // Copy from old storage, if possible // TODO: copy only from interior regions? - if (rl<(int)oldstorage.at(ml).size()) { - for (int cc=0; cc<(int)oldstorage.at(ml).at(rl).size(); ++cc) { + if (rl<(int)oldstorage.AT(ml).size()) { + for (int cc=0; cc<(int)oldstorage.AT(ml).AT(rl).size(); ++cc) { // TODO: prefer same processor, etc., see dh.cc ibset ovlp - = work & oldstorage.at(ml).at(rl).at(cc).at(tl)->extent(); + = work & oldstorage.AT(ml).AT(rl).AT(cc).AT(tl)->extent(); ovlp.normalize(); work -= ovlp; for (ibset::const_iterator r=ovlp.begin(); r!=ovlp.end(); ++r) { - storage.at(ml).at(rl).at(c).at(tl)->copy_from - (state, oldstorage.at(ml).at(rl).at(cc).at(tl), *r); + storage.AT(ml).AT(rl).AT(c).AT(tl)->copy_from + (state, oldstorage.AT(ml).AT(rl).AT(cc).AT(tl), *r); } } // for cc } // if rl @@ -178,21 +178,21 @@ void ggf::recompose_fill (comm_state& state, const int rl, vector tls(numtl); vector times(numtl); for (int i=0; i gsrcs(numtl); for (int i=0; iextent() == gsrcs.at(0)->extent()); + gsrcs.AT(i) = storage.AT(ml).AT(rl-1).AT(cc).AT(tls.AT(i)); + assert (gsrcs.AT(i)->extent() == gsrcs.AT(0)->extent()); } const CCTK_REAL time = t.time(tl,rl,ml); // TODO: choose larger regions first // TODO: prefer regions from the same processor const iblist& list - = d.boxes.at(ml).at(rl).at(c).recv_ref_coarse.at(cc); + = d.boxes.AT(ml).AT(rl).AT(c).recv_ref_coarse.AT(cc); for (iblist::const_iterator iter=list.begin(); iter!=list.end(); ++iter) { @@ -202,7 +202,7 @@ void ggf::recompose_fill (comm_state& state, const int rl, for (ibset::const_iterator r=ovlp.begin(); r!=ovlp.end(); ++r) { - storage.at(ml).at(rl).at(c).at(tl)->interpolate_from + storage.AT(ml).AT(rl).AT(c).AT(tl)->interpolate_from (state, gsrcs, times, *r, time, pos, pot); } // for r } // for iter @@ -225,12 +225,12 @@ void ggf::recompose_free (const int rl) { // Delete old storage for (int ml=0; ml<(int)oldstorage.size(); ++ml) { - for (int c=0; c<(int)oldstorage.at(ml).at(rl).size(); ++c) { + for (int c=0; c<(int)oldstorage.AT(ml).AT(rl).size(); ++c) { for (int tl=0; tl=0 and ml1=0 and tl1=0 and rl2=0 and tl2copy_from(state, src, recv); } @@ -338,15 +338,15 @@ void ggf::copycat (comm_state& state, assert (tl1>=0 and tl1=0 and rl2=0 and tl2copy_from(state, src, *r); } } @@ -390,22 +390,22 @@ void ggf::intercat (comm_state& state, assert (ml1>=0 and ml1=0 and tl1=0 and rl2=0 and ml2=0 and tl2s.at(i)=0 and tl2s.AT(i) gsrcs(tl2s.size()); vector times(tl2s.size()); for (int i=0; i<(int)gsrcs.size(); ++i) { - gsrcs.at(i) = storage.at(ml2).at(rl2).at(c2).at(tl2s.at(i)); - times.at(i) = t.time(tl2s.at(i),rl2,ml2); + gsrcs.AT(i) = storage.AT(ml2).AT(rl2).AT(c2).AT(tl2s.AT(i)); + times.AT(i) = t.time(tl2s.AT(i),rl2,ml2); } - const ibbox recv = d.boxes.at(ml1).at(rl1).at(c1).*recv_list; + ibbox const & recv = d.boxes.AT(ml1).AT(rl1).AT(c1).*recv_list; // interpolate the content - storage.at(ml1).at(rl1).at(c1).at(tl1)->interpolate_from + storage.AT(ml1).AT(rl1).AT(c1).AT(tl1)->interpolate_from (state, gsrcs, times, recv, time, d.prolongation_order_space, prolongation_order_time); } @@ -422,26 +422,26 @@ void ggf::intercat (comm_state& state, assert (ml1>=0 and ml1=0 and tl1=0 and rl2=0 and ml2=0 and tl2s.at(i)=0 and tl2s.AT(i) gsrcs(tl2s.size()); vector times(tl2s.size()); for (int i=0; i<(int)gsrcs.size(); ++i) { - gsrcs.at(i) = storage.at(ml2).at(rl2).at(c2).at(tl2s.at(i)); - times.at(i) = t.time(tl2s.at(i),rl2,ml2); + gsrcs.AT(i) = storage.AT(ml2).AT(rl2).AT(c2).AT(tl2s.AT(i)); + times.AT(i) = t.time(tl2s.AT(i),rl2,ml2); } - const iblist recv = d.boxes.at(ml1).at(rl1).at(c1).*recv_list; + iblist const & recv = d.boxes.AT(ml1).AT(rl1).AT(c1).*recv_list; // walk all boxes for (iblist::const_iterator r=recv.begin(); r!=recv.end(); ++r) { // (use the send boxes for communication) // interpolate the content - storage.at(ml1).at(rl1).at(c1).at(tl1)->interpolate_from + storage.AT(ml1).AT(rl1).AT(c1).AT(tl1)->interpolate_from (state, gsrcs, times, *r, time, d.prolongation_order_space, prolongation_order_time); } @@ -460,7 +460,7 @@ void ggf::intercat (comm_state& state, assert (tl1>=0 and tl1=0 and rl2=0 and tl2s.at(i)=0 and tl2s.AT(i) gsrcs(tl2s.size()); vector times(tl2s.size()); for (int i=0; i<(int)gsrcs.size(); ++i) { - gsrcs.at(i) = storage.at(ml2).at(rl2).at(c2).at(tl2s.at(i)); - times.at(i) = t.time(tl2s.at(i),rl2,ml2); + gsrcs.AT(i) = storage.AT(ml2).AT(rl2).AT(c2).AT(tl2s.AT(i)); + times.AT(i) = t.time(tl2s.AT(i),rl2,ml2); } - const iblist recv = (d.boxes.at(ml1).at(rl1).at(c1).*recv_listvect).at(c2); + iblist const &recv = + (d.boxes.AT(ml1).AT(rl1).AT(c1).*recv_listvect).AT(c2); // walk all boxes for (iblist::const_iterator r=recv.begin(); r!=recv.end(); ++r) { // (use the send boxes for communication) // interpolate the content int const pos = d.prolongation_order_space; - int const pot - = transport_operator == op_copy ? 0 : prolongation_order_time; - storage.at(ml1).at(rl1).at(c1).at(tl1)->interpolate_from + int const pot = + transport_operator == op_copy ? 0 : prolongation_order_time; + storage.AT(ml1).AT(rl1).AT(c1).AT(tl1)->interpolate_from (state, gsrcs, times, *r, time, pos, pot); } } @@ -529,11 +530,11 @@ void ggf::ref_bnd_prolongate (comm_state& state, } assert (timelevels(ml,rl) >= prolongation_order_time+1); tl2s.resize(prolongation_order_time+1); - for (int i=0; i<=prolongation_order_time; ++i) tl2s.at(i) = i; + for (int i=0; i<=prolongation_order_time; ++i) tl2s.AT(i) = i; } else { assert (timelevels(ml,rl) >= 1); tl2s.resize(1); - tl2s.at(0) = 0; + tl2s.AT(0) = 0; } intercat (state, tl ,rl ,c,ml, &dh::dboxes::recv_ref_bnd_coarse, diff --git a/Carpet/CarpetLib/src/ggf.hh b/Carpet/CarpetLib/src/ggf.hh index 9e47dfcff..3163983af 100644 --- a/Carpet/CarpetLib/src/ggf.hh +++ b/Carpet/CarpetLib/src/ggf.hh @@ -82,7 +82,7 @@ public: // Querying int timelevels (int const ml, int const rl) const { - return timelevels_.at(ml).at(rl); + return timelevels_.AT(ml).AT(rl); } diff --git a/Carpet/CarpetLib/src/gh.cc b/Carpet/CarpetLib/src/gh.cc index bb9f96e7d..159aa1e3d 100644 --- a/Carpet/CarpetLib/src/gh.cc +++ b/Carpet/CarpetLib/src/gh.cc @@ -28,10 +28,10 @@ gh::gh (const vector & reffacts_, const centering refcent_, assert (reffacts.size() >= 1); assert (all (reffacts.front() == 1)); for (size_t n = 1; n < reffacts.size(); ++ n) { - assert (all (reffacts.at(n) >= reffacts.at(n-1))); - assert (all (reffacts.at(n) % reffacts.at(n-1) == 0)); + assert (all (reffacts.AT(n) >= reffacts.AT(n-1))); + assert (all (reffacts.AT(n) % reffacts.AT(n-1) == 0)); } - assert (all (baseextent.stride() % reffacts.at(reffacts.size()-1) == 0)); + assert (all (baseextent.stride() % reffacts.AT(reffacts.size()-1) == 0)); } // Destructors @@ -91,8 +91,8 @@ bool gh::recompose (const int rl, // Overwrite old with new grid hierarchy for (int ml=0; ml=0 and rl= (int)_oldregions.at(ml).size()) return true; - if (_regions.at(ml).at(rl).size() != _oldregions.at(ml).at(rl).size()) { + if (rl >= (int)_oldregions.AT(ml).size()) return true; + if (_regions.AT(ml).AT(rl).size() != _oldregions.AT(ml).AT(rl).size()) { return true; } for (int c=0; c=0 and rl=0 and ml=0 and rl=0 and ml=0 and rl=0 and ml=0 and rl=0 and ml