aboutsummaryrefslogtreecommitdiff
path: root/CarpetDev/CarpetIOF5/src/distribute.cc
diff options
context:
space:
mode:
Diffstat (limited to 'CarpetDev/CarpetIOF5/src/distribute.cc')
-rw-r--r--CarpetDev/CarpetIOF5/src/distribute.cc48
1 files changed, 24 insertions, 24 deletions
diff --git a/CarpetDev/CarpetIOF5/src/distribute.cc b/CarpetDev/CarpetIOF5/src/distribute.cc
index 05658ee42..ae3139280 100644
--- a/CarpetDev/CarpetIOF5/src/distribute.cc
+++ b/CarpetDev/CarpetIOF5/src/distribute.cc
@@ -21,10 +21,7 @@ namespace CarpetIOF5 {
int fragdesc_t::npoints() const
{
- int np = 1;
- for (int d=0; d<dim; ++d) {
- np *= imax[d] - imin[d] + 1;
- }
+ int const np = prod(imax-imin+1);
assert(np>0);
return np;
}
@@ -479,7 +476,6 @@ namespace CarpetIOF5 {
gh const& hh = *Carpet::arrdata.at(groupindex).at(fd.map).hh;
dh const& dd = *Carpet::arrdata.at(groupindex).at(fd.map).dd;
- th const& tt = *Carpet::arrdata.at(groupindex).at(fd.map).tt;
ibbox const& baseext =
hh.baseextents.AT(fd.mglevel).AT(fd.reflevel);
@@ -512,11 +508,11 @@ namespace CarpetIOF5 {
ptrdiff_t const ni = tm->fragdesc.imax[0] - tm->fragdesc.imin[0] + 1;
ptrdiff_t const nj = tm->fragdesc.imax[1] - tm->fragdesc.imin[1] + 1;
ptrdiff_t const nk = tm->fragdesc.imax[2] - tm->fragdesc.imin[2] + 1;
- ptrdiff_t const di = 1;
- ptrdiff_t const dj = ni;
- ptrdiff_t const dk = ni * nj;
- ptrdiff_t const np = ni * nj * nk;
- tm->data.resize(np * vartypesize);
+ ptrdiff_t const di = vartypesize;
+ ptrdiff_t const dj = di * ni;
+ ptrdiff_t const dk = dj * nj;
+ ptrdiff_t const np = dk * nk;
+ tm->data.resize(np);
bytes_allocated += tm->data.size();
if (verbose) {
CCTK_VInfo(CCTK_THORNSTRING,
@@ -527,21 +523,24 @@ namespace CarpetIOF5 {
ptrdiff_t const nis = fd.imax[0] - fd.imin[0] + 1;
ptrdiff_t const njs = fd.imax[1] - fd.imin[1] + 1;
ptrdiff_t const nks = fd.imax[2] - fd.imin[2] + 1;
- ptrdiff_t const dis = 1;
- ptrdiff_t const djs = nis;
- ptrdiff_t const dks = nis * njs;
- ptrdiff_t const nps = nis * njs * nks;
+ ptrdiff_t const dis = vartypesize;
+ ptrdiff_t const djs = vartypesize * nis;
+ ptrdiff_t const dks = vartypesize * nis * njs;
+ ptrdiff_t const nps = vartypesize * nis * njs * nks;
ptrdiff_t const i0s = tm->fragdesc.imin[0] - fd.imin[0];
ptrdiff_t const j0s = tm->fragdesc.imin[1] - fd.imin[1];
ptrdiff_t const k0s = tm->fragdesc.imin[2] - fd.imin[2];
ptrdiff_t const ind0s = i0s * dis + j0s * djs + k0s * dks;
- char const *const src = &((char const*)data)[vartypesize * ind0s];
+ assert(ind0s < nps);
+ char const *const src = &((char const*)data)[ind0s];
#pragma omp parallel for //collapse(2)
for (ptrdiff_t k=0; k<nk; ++k) {
for (ptrdiff_t j=0; j<nj; ++j) {
ptrdiff_t const ind = j*dj + k*dk;
ptrdiff_t const inds = j*djs + k*dks;
+ assert(ind+ni*vartypesize <= np);
+ assert(inds+ni*vartypesize <= nps);
memcpy(&dst[ind], &src[inds], ni*vartypesize);
}
}
@@ -568,7 +567,6 @@ namespace CarpetIOF5 {
gh const& hh = *Carpet::arrdata.at(groupindex).at(fd.map).hh;
dh const& dd = *Carpet::arrdata.at(groupindex).at(fd.map).dd;
- th const& tt = *Carpet::arrdata.at(groupindex).at(fd.map).tt;
ggf const& ff =
*Carpet::arrdata.at(groupindex).at(fd.map).data.at(varoffset);
int const lc = hh.get_local_component(fd.reflevel, fd.component);
@@ -592,10 +590,10 @@ namespace CarpetIOF5 {
ptrdiff_t const ni = fd.imax[0] - fd.imin[0] + 1;
ptrdiff_t const nj = fd.imax[1] - fd.imin[1] + 1;
ptrdiff_t const nk = fd.imax[2] - fd.imin[2] + 1;
- ptrdiff_t const di = 1;
- ptrdiff_t const dj = ni;
- ptrdiff_t const dk = ni * nj;
- ptrdiff_t const np = ni * nj * nk;
+ ptrdiff_t const di = vartypesize;
+ ptrdiff_t const dj = di * ni;
+ ptrdiff_t const dk = dj * nj;
+ ptrdiff_t const np = dk * nk;
char const *const src = (char const*)&tm->data[0];
ivect const lbnd = (extr.lower() - baseext.lower()) / baseext.stride();
@@ -603,10 +601,10 @@ namespace CarpetIOF5 {
ptrdiff_t const nid = lsh[0];
ptrdiff_t const njd = lsh[1];
ptrdiff_t const nkd = lsh[2];
- ptrdiff_t const did = 1;
- ptrdiff_t const djd = nid;
- ptrdiff_t const dkd = nid * njd;
- ptrdiff_t const npd = nid * njd * nkd;
+ ptrdiff_t const did = vartypesize;
+ ptrdiff_t const djd = vartypesize * nid;
+ ptrdiff_t const dkd = vartypesize * nid * njd;
+ ptrdiff_t const npd = vartypesize * nid * njd * nkd;
ptrdiff_t const i0d = fd.imin[0] - lbnd[0];
ptrdiff_t const j0d = fd.imin[1] - lbnd[1];
ptrdiff_t const k0d = fd.imin[2] - lbnd[2];
@@ -619,6 +617,8 @@ namespace CarpetIOF5 {
for (ptrdiff_t j=0; j<nj; ++j) {
ptrdiff_t const indd = j*djd + k*dkd;
ptrdiff_t const ind = j*dj + k*dk;
+ assert(indd+ni*vartypesize <= npd);
+ assert(ind+ni*vartypesize <= np);
memcpy(&dst[indd], &src[ind], ni*vartypesize);
}
}