aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Carpet/CarpetIOHDF5/src/Output.cc30
1 files changed, 25 insertions, 5 deletions
diff --git a/Carpet/CarpetIOHDF5/src/Output.cc b/Carpet/CarpetIOHDF5/src/Output.cc
index 8bc68faa0..675c51bc6 100644
--- a/Carpet/CarpetIOHDF5/src/Output.cc
+++ b/Carpet/CarpetIOHDF5/src/Output.cc
@@ -698,11 +698,31 @@ static int AddAttributes (const cGH *const cctkGH, const char *fullname,
const ivect pos = (bbox.lower() - baseext.lower()) / bbox.stride();
- for (int d = 0; d < vdim; d++) {
- Util_TableGetReal (coord_handles[d], &origin[d], "COMPMIN");
- Util_TableGetReal (coord_handles[d], &delta[d], "DELTA");
- delta[d] /= cctkGH->cctk_levfac[d];
- origin[d] += delta[d] * (cctkGH->cctk_levoff[d] / cctkGH->cctk_levoffdenom[d] + pos[d]);
+ rvect global_lower;
+ rvect coord_delta;
+ const int m = Carpet::map;
+ if (CCTK_GroupTypeFromVarI (request->vindex) == CCTK_GF) {
+ rvect const cctk_origin_space =
+ origin_space.at(m).at(mglevel);
+ rvect const cctk_delta_space =
+ delta_space.at(m) * rvect (mglevelfact);
+ for (int d=0; d<dim; ++d) {
+ // lower boundary of Carpet's integer indexing
+ global_lower[d] = cctk_origin_space[d];
+ // grid spacing of Carpet's integer indexing
+ coord_delta[d] =
+ cctk_delta_space[d] / cctkGH->cctk_levfac[d];
+ }
+ } else {
+ for (int d=0; d<dim; ++d) {
+ global_lower[d] = 0.0;
+ coord_delta[d] = 1.0;
+ }
+ }
+
+ for (int d=0; d<dim; ++d) {
+ origin[d] = global_lower[d] + coord_delta[d] * (cctkGH->cctk_levoff[d] / cctkGH->cctk_levoffdenom[d] + pos[d]);
+ delta[d] = coord_delta[d];
}
HDF5_ERROR (attr = H5Acreate (dataset, "origin", HDF5_REAL,