aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorlanfer <lanfer@4825ed28-b72c-4eae-9704-e50c059e567d>2000-09-06 08:50:48 +0000
committerlanfer <lanfer@4825ed28-b72c-4eae-9704-e50c059e567d>2000-09-06 08:50:48 +0000
commitd390faf334f00c77ca07dc7fa40dafa7c625fb67 (patch)
treed243e46375e2ea30e9f91396142530d216ec6584 /src
parent8d2e5fdad4100a106bdd7c5f8921c0cdcaac7d65 (diff)
using the intersection center of slices for now to specify the start index of a slab
git-svn-id: http://svn.cactuscode.org/arrangements/CactusPUGHIO/IOHDF5/trunk@10 4825ed28-b72c-4eae-9704-e50c059e567d
Diffstat (limited to 'src')
-rw-r--r--src/DumpVar.c32
1 files changed, 28 insertions, 4 deletions
diff --git a/src/DumpVar.c b/src/DumpVar.c
index c92294d..f000024 100644
--- a/src/DumpVar.c
+++ b/src/DumpVar.c
@@ -664,8 +664,9 @@ static int IOHDF5_getDumpData_ND (cGH *GH, int index, int timelevel, ioHDF5Geo_t
int idim, sdim, vdim; /*iteration, slab dim, variable dim */
int *hsizes,*hsizes_global,*hsizes_offset; /* geometry information */
int sdir[3]; /* slab direction FIXME */
- int locdowns[3]; /* Holds the downsampling in the order specified
- as in slab_geo->direction[] */
+ int locdowns[3]; /* Holds the downsampling in the order
+ specified in slab_geo->direction[] */
+ int slabstart[3]; /* global start index for slab to extract */
int ip;
void *data = CCTK_VarDataPtrI (GH, timelevel, index);
@@ -681,7 +682,12 @@ static int IOHDF5_getDumpData_ND (cGH *GH, int index, int timelevel, ioHDF5Geo_t
/* Shortcuts */
vdim = slab_geo->vdim;
- sdim = slab_geo->sdim;
+ sdim = slab_geo->sdim;
+
+ if (vdim>3) {
+ CCTK_WARN(1,"Cannot treat GFs with dim>3, check with cactus support\n");
+ return(-1);
+ }
for (idim=0;idim<sdim;idim++)
locdowns[idim]=slab_geo->downs[slab_geo->direction[idim]];
@@ -749,6 +755,16 @@ static int IOHDF5_getDumpData_ND (cGH *GH, int index, int timelevel, ioHDF5Geo_t
sdir[2] = slab_geo->direction[2];
}
+ /* Get the start indeces for the slab from slab_start. */
+ /* Slab_start from the geo structure is not a true start index, it is currently
+ used as the intersection point of three surfaces , that's why two entries
+ have to be set to zero in the case of a surface (one entry for line) FIXME */
+ for (idim=0;idim<vdim;idim++)
+ slabstart[idim] = slab_geo->slab_start[idim];
+ for (idim=0;idim<sdim;idim++)
+ slabstart[slab_geo->direction[idim]]=0;
+
+
if (Hyperslab_GetLocalHyperslab (GH, index, timelevel, sdim, slab_geo->slab_start,
sdir, slab_geo->length, locdowns, outme,
hsizes, hsizes_global, hsizes_offset)< 0) {
@@ -791,7 +807,15 @@ static int IOHDF5_getDumpData_ND (cGH *GH, int index, int timelevel, ioHDF5Geo_t
printf ("Direction: ");
for (idim = 0; idim < sdim; idim++)
printf (" %d",slab_geo->direction[idim]);
- printf ("\n");
+ printf ("\n");
+ printf ("Slab Start: %d", (int) slabstart [0]);
+ for (idim = 1; idim < vdim; idim++)
+ printf (" %d", (int) slabstart[idim]);
+ printf ("\n");
+ printf ("Slab intersect cntr: %d", (int) slab_geo->slab_start[0]);
+ for (idim = 1; idim < vdim; idim++)
+ printf (" %d", (int) slab_geo->slab_start[idim]);
+ printf ("\n");
printf ("SlabDelta: ");
for (idim = 0; idim < sdim; idim++)
printf (" %f",GH->cctk_delta_space[slab_geo->direction[idim]]*locdowns[idim]);