aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetIOHDF5/src/Output.cc
diff options
context:
space:
mode:
authorChristian Reisswig <reisswig@aei.mpg.de>2008-06-11 12:40:31 +0200
committerChristian Reisswig <reisswig@aei.mpg.de>2008-06-11 12:40:31 +0200
commit7047bcd335cc1f5891bb41156a333b0891004168 (patch)
tree3a43522fafac8d1a7ab8e819340cf9ce45f9d869 /Carpet/CarpetIOHDF5/src/Output.cc
parenta8faa831478a2d382fb8ff7264057aeb711d4564 (diff)
Fixed "origin" and "delta" output attributes to work
for generalized grids.
Diffstat (limited to 'Carpet/CarpetIOHDF5/src/Output.cc')
-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,