diff options
author | Christian Reisswig <reisswig@aei.mpg.de> | 2008-06-11 12:40:31 +0200 |
---|---|---|
committer | Christian Reisswig <reisswig@aei.mpg.de> | 2008-06-11 12:40:31 +0200 |
commit | 7047bcd335cc1f5891bb41156a333b0891004168 (patch) | |
tree | 3a43522fafac8d1a7ab8e819340cf9ce45f9d869 /Carpet/CarpetIOHDF5/src/Output.cc | |
parent | a8faa831478a2d382fb8ff7264057aeb711d4564 (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.cc | 30 |
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, |