aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/gdata.cc
diff options
context:
space:
mode:
authorThomas Radke <tradke@aei.mpg.de>2005-04-11 14:42:00 +0000
committerThomas Radke <tradke@aei.mpg.de>2005-04-11 14:42:00 +0000
commitde92e48965a04e3ef0a79bc10db1c4f488e41723 (patch)
tree1f65f637386bbe63c7eb0e71447cd9d41669120d /Carpet/CarpetLib/src/gdata.cc
parent51ee75534026ba344b0952978b251c6402fc4a83 (diff)
CarpetLib: remove erroneous assert statements in the collective buffers communication code
darcs-hash:20050411144255-776a0-cfa22ce6876ff5f598d55f2da2d8b0d474c85ab0.gz
Diffstat (limited to 'Carpet/CarpetLib/src/gdata.cc')
-rw-r--r--Carpet/CarpetLib/src/gdata.cc38
1 files changed, 23 insertions, 15 deletions
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);