From de92e48965a04e3ef0a79bc10db1c4f488e41723 Mon Sep 17 00:00:00 2001 From: Thomas Radke Date: Mon, 11 Apr 2005 14:42:00 +0000 Subject: CarpetLib: remove erroneous assert statements in the collective buffers communication code darcs-hash:20050411144255-776a0-cfa22ce6876ff5f598d55f2da2d8b0d474c85ab0.gz --- Carpet/CarpetLib/src/gdata.cc | 38 +++++++++++++++++++++++--------------- 1 file changed, 23 insertions(+), 15 deletions(-) (limited to 'Carpet/CarpetLib/src') diff --git a/Carpet/CarpetLib/src/gdata.cc b/Carpet/CarpetLib/src/gdata.cc index f5e3ac081..b50a40584 100644 --- a/Carpet/CarpetLib/src/gdata.cc +++ b/Carpet/CarpetLib/src/gdata.cc @@ -270,13 +270,17 @@ void gdata::copy_from_wait (comm_state& state, void gdata::copy_into_sendbuffer (comm_state& state, const gdata* src, const ibbox& box) { - // copy to remote processor - assert (src->has_storage()); - assert (proc() < state.collbufs.size()); - int fillstate = (state.collbufs[proc()].sendbuf + - box.size()*state.vartypesize) - - state.collbufs[proc()].sendbufbase; - assert (fillstate <= state.collbufs[proc()].sendbufsize*state.vartypesize); + if (proc() == src->proc()) { + // copy on same processor + copy_from_innerloop (src, box); + } else { + // copy to remote processor + assert (src->_has_storage); + assert (src->_owns_storage); + assert (state.collbufs.at(proc()).sendbuf - + state.collbufs.at(proc()).sendbufbase <= + (state.collbufs.at(proc()).sendbufsize - box.size()) * + state.vartypesize); // copy this processor's data into the send buffer const ibbox& ext = src->extent(); @@ -465,14 +469,18 @@ void gdata const int order_space, const int order_time) { - // interpolate to remote processor - const gdata* src = srcs.at(0); - assert (src->has_storage()); - assert (proc() < state.collbufs.size()); - int fillstate = (state.collbufs[proc()].sendbuf + - box.size()*state.vartypesize) - - state.collbufs[proc()].sendbufbase; - assert (fillstate <= state.collbufs[proc()].sendbufsize*state.vartypesize); + 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 + assert (srcs.at(0)->_has_storage); + assert (srcs.at(0)->_owns_storage); + assert (state.collbufs.at(proc()).sendbuf - + state.collbufs.at(proc()).sendbufbase <= + (state.collbufs.at(proc()).sendbufsize - box.size()) * + state.vartypesize); // interpolate this processor's data into the send buffer gdata* tmp = src->make_typed (varindex, transport_operator, tag); -- cgit v1.2.3