diff options
author | goodale <goodale@b32723a9-ab3a-4a60-88e2-2e5d99d7c17a> | 2000-07-18 20:42:43 +0000 |
---|---|---|
committer | goodale <goodale@b32723a9-ab3a-4a60-88e2-2e5d99d7c17a> | 2000-07-18 20:42:43 +0000 |
commit | b8f7f33240f7262212ef05497514e4082e69e0da (patch) | |
tree | c40b5900381ace062c20067087951eb1fc506b9e | |
parent | 1a1aa87a8f74edcd95aa662c08996983a21cb5c5 (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.c | 55 |
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; |