aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorgoodale <goodale@b32723a9-ab3a-4a60-88e2-2e5d99d7c17a>2000-07-18 20:42:43 +0000
committergoodale <goodale@b32723a9-ab3a-4a60-88e2-2e5d99d7c17a>2000-07-18 20:42:43 +0000
commitb8f7f33240f7262212ef05497514e4082e69e0da (patch)
treec40b5900381ace062c20067087951eb1fc506b9e
parent1a1aa87a8f74edcd95aa662c08996983a21cb5c5 (diff)
Protecting array references for dim < 3.
Formatting changes. Tom git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/IOUtil/trunk@80 b32723a9-ab3a-4a60-88e2-2e5d99d7c17a
-rw-r--r--src/GHExtension.c55
1 files changed, 42 insertions, 13 deletions
diff --git a/src/GHExtension.c b/src/GHExtension.c
index b32c5a8..72e8749 100644
--- a/src/GHExtension.c
+++ b/src/GHExtension.c
@@ -90,33 +90,49 @@ int IOUtil_InitGH (cGH *GH)
myGH = (ioGH *) GH->extensions [CCTK_GHExtensionHandle ("IO")];
/* Create the checkpoint directory if it is different to outdir */
- if (checkpoint_every > 0 && ! CCTK_Equals (checkpoint_dir, outdir)) {
+ if (checkpoint_every > 0 && ! CCTK_Equals (checkpoint_dir, outdir))
+ {
if (CCTK_MyProc (GH) == 0)
+ {
if (CCTK_CreateDirectory (0755,checkpoint_dir) < 0)
+ {
CCTK_VWarn (1, __LINE__, __FILE__, CCTK_THORNSTRING,
"Problem creating checkpoint directory '%s'", checkpoint_dir);
+ }
+ }
}
- if (CCTK_Equals (out3D_mode, "proc")) {
+ if (CCTK_Equals (out3D_mode, "proc"))
+ {
myGH->ioproc = CCTK_MyProc (GH);
myGH->nioprocs = CCTK_nProcs (GH);
myGH->ioproc_every = 1;
- } else if (CCTK_Equals (out3D_mode, "np")) {
- if (out3D_procs > CCTK_nProcs (GH)) {
+ }
+ else if (CCTK_Equals (out3D_mode, "np"))
+ {
+ if (out3D_procs > CCTK_nProcs (GH))
+ {
myGH->ioproc_every = CCTK_nProcs (GH);
printf ("Reducing ioproc_every to %d\n", myGH->ioproc_every);
- } else
+ }
+ else
+ {
myGH->ioproc_every = out3D_procs;
+ }
myGH->nioprocs = CCTK_nProcs (GH) / myGH->ioproc_every +
(CCTK_nProcs (GH) % myGH->ioproc_every ? 1 : 0);
myGH->ioproc = CCTK_MyProc (GH) -
CCTK_MyProc (GH) % myGH->ioproc_every;
- } else if (CCTK_Equals (out3D_mode, "onefile")) {
+ }
+ else if (CCTK_Equals (out3D_mode, "onefile"))
+ {
myGH->ioproc = 0;
myGH->nioprocs = 1;
myGH->ioproc_every = CCTK_nProcs (GH);
- } else {
+ }
+ else
+ {
printf ("I don't understand out3D_mode setting. Using onefile.\n");
myGH->ioproc = 0;
myGH->nioprocs = 1;
@@ -124,25 +140,38 @@ int IOUtil_InitGH (cGH *GH)
}
/* At the moment only have unchunked for a single output file */
- if (out3D_unchunked || CCTK_nProcs (GH) == 1) {
+ if (out3D_unchunked || CCTK_nProcs (GH) == 1)
+ {
if (myGH->ioproc_every >= CCTK_nProcs (GH))
+ {
myGH->unchunked = 1;
- else {
+ }
+ else
+ {
printf ("Unchunked output not currently supported for multiple\n");
printf ("output files. Output will be chunked.\n");
myGH->unchunked = 0;
}
- } else
+ }
+ else
+ {
myGH->unchunked = 0;
+ }
/* save downsampling parameters in ioUtilGH because they are temporarily
reset during checkpointing */
myGH->downsample = (int *) malloc (CCTK_MaxDim () * sizeof (int));
/* for now we have only parameters for the first 3 dimensions
the rest is constantly initialized to 1 */
- myGH->downsample [0] = out3D_downsample_x;
- myGH->downsample [1] = out3D_downsample_y;
- myGH->downsample [2] = out3D_downsample_z;
+
+ switch(CCTK_MaxDim())
+ {
+ case 3 : myGH->downsample [2] = out3D_downsample_z;
+ case 2 : myGH->downsample [1] = out3D_downsample_y;
+ case 1 : myGH->downsample [0] = out3D_downsample_x;
+ default :
+ }
+
for (i = 3; i < CCTK_MaxDim (); i++)
myGH->downsample [i] = 1;