aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetSlab
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2009-09-03 16:19:15 -0500
committerBarry Wardell <barry.wardell@gmail.com>2011-12-14 16:42:31 +0000
commit11c4d98017cbb86d08e15fd1b549180184b58a26 (patch)
tree2546a154c6f7bc0bec87de7316125ae7d1453569 /Carpet/CarpetSlab
parentf520477b1c14e02f1495cfa8d3e09f4e21ab34d0 (diff)
Import Carpet
Ignore-this: 309b4dd613f4af2b84aa5d6743fdb6b3
Diffstat (limited to 'Carpet/CarpetSlab')
-rw-r--r--Carpet/CarpetSlab/README6
-rw-r--r--Carpet/CarpetSlab/src/GetHyperslab.cc14
-rw-r--r--Carpet/CarpetSlab/src/slab.cc14
3 files changed, 18 insertions, 16 deletions
diff --git a/Carpet/CarpetSlab/README b/Carpet/CarpetSlab/README
index 04ae8cd8c..983f62701 100644
--- a/Carpet/CarpetSlab/README
+++ b/Carpet/CarpetSlab/README
@@ -1,7 +1,9 @@
Cactus Code Thorn CarpetSlab
-Authors : Erik Schnetter <schnetter@uni-tuebingen.de>
+Author(s) : Erik Schnetter <schnetter@cct.lsu.edu>
+Maintainer(s): Erik Schnetter <schnetter@cct.lsu.edu>
+Licence : GPLv2+
--------------------------------------------------------------------------
-Purpose of the thorn:
+1. Purpose
This thorn provides hyperslabbing for Carpet.
diff --git a/Carpet/CarpetSlab/src/GetHyperslab.cc b/Carpet/CarpetSlab/src/GetHyperslab.cc
index 9a4e07117..8f86d8568 100644
--- a/Carpet/CarpetSlab/src/GetHyperslab.cc
+++ b/Carpet/CarpetSlab/src/GetHyperslab.cc
@@ -196,7 +196,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);
}
@@ -207,26 +208,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);
}
}
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);
}
}