aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetSlab/src/slab.cc
diff options
context:
space:
mode:
Diffstat (limited to 'Carpet/CarpetSlab/src/slab.cc')
-rw-r--r--Carpet/CarpetSlab/src/slab.cc14
1 files changed, 7 insertions, 7 deletions
diff --git a/Carpet/CarpetSlab/src/slab.cc b/Carpet/CarpetSlab/src/slab.cc
index ba88e16a6..b20566d47 100644
--- a/Carpet/CarpetSlab/src/slab.cc
+++ b/Carpet/CarpetSlab/src/slab.cc
@@ -228,7 +228,8 @@ namespace CarpetSlab {
++ext_iter) {
// Copy data
- alldata->copy_from (state, mydata, *ext_iter);
+ int const proc = myhh->processor(reflevel, component);
+ alldata->copy_from (state, mydata, *ext_iter, collect_proc, proc);
}
@@ -239,26 +240,25 @@ namespace CarpetSlab {
// Copy result to all processors
if (dest_proc == -1) {
vector<gdata*> tmpdata(CCTK_nProcs(cgh));
- vector<comm_state> state;
for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) {
if (proc != collect_proc) {
void* myhdata = rank==proc ? hdata : 0;
tmpdata.at(proc) = mydata->make_typed (-1, error_centered, op_sync);
tmpdata.at(proc)->allocate (alldata->extent(), proc, myhdata);
- tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent());
}
}
- for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) {
- if (proc != collect_proc) {
- tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent());
+ for (comm_state state; not state.done(); state.step()) {
+ for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) {
+ if (proc != collect_proc) {
+ tmpdata.at(proc)->copy_from (state, alldata, alldata->extent(), proc, collect_proc);
+ }
}
}
for (int proc=0; proc<CCTK_nProcs(cgh); ++proc) {
if (proc != collect_proc) {
- tmpdata.at(proc)->copy_from (state.at(proc), alldata, alldata->extent());
delete tmpdata.at(proc);
}
}