aboutsummaryrefslogtreecommitdiff
path: root/doc
diff options
context:
space:
mode:
authortradke <tradke@b32723a9-ab3a-4a60-88e2-2e5d99d7c17a>2001-07-09 18:23:43 +0000
committertradke <tradke@b32723a9-ab3a-4a60-88e2-2e5d99d7c17a>2001-07-09 18:23:43 +0000
commit9797ddc38e26ace5eb5897388a8795a1951612fc (patch)
treec8a28168e8b26736f16fe5a85e270bc687075ebb /doc
parente50ae14e08ebd57f9a406edb84e7c9953adeba82 (diff)
Some more documentation on output of hyperslabs, defaults for 1D lines and
2D slices etc. Also added section about filereader. git-svn-id: http://svn.cactuscode.org/arrangements/CactusBase/IOUtil/trunk@125 b32723a9-ab3a-4a60-88e2-2e5d99d7c17a
Diffstat (limited to 'doc')
-rw-r--r--doc/1Dlines_in_box.eps216
-rw-r--r--doc/1Dlines_in_box.fig43
-rw-r--r--doc/1Dlines_in_xyBitant.eps216
-rw-r--r--doc/1Dlines_in_xyBitant.fig43
-rw-r--r--doc/diagonal_in_cubic.eps149
-rw-r--r--doc/diagonal_in_cubic.fig34
-rw-r--r--doc/diagonal_in_noncubic.eps149
-rw-r--r--doc/diagonal_in_noncubic.fig34
-rw-r--r--doc/documentation.tex286
9 files changed, 1069 insertions, 101 deletions
diff --git a/doc/1Dlines_in_box.eps b/doc/1Dlines_in_box.eps
new file mode 100644
index 0000000..881edba
--- /dev/null
+++ b/doc/1Dlines_in_box.eps
@@ -0,0 +1,216 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: 1Dlines_in_box.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel
+%%CreationDate: Mon Jul 9 15:15:06 2001
+%%For: tradke@nidud (Thomas Radke)
+%%BoundingBox: 0 0 654 400
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 400 moveto 0 0 lineto 654 0 lineto 654 400 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 654 0 lineto 654 400 lineto 0 400 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-35.0 487.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hypen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06299 0.06299 sc
+% Polyline
+30.000 slw
+ [120 60 15 60] 0 sd
+gs clippath
+8115 4500 m 8115 4320 l 7675 4320 l 8035 4410 l 7675 4500 l cp
+eoclip
+n 3600 4410 m
+ 8100 4410 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 7675 4500 m 8035 4410 l 7675 4320 l 7675 4500 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+ [120 60 15 60] 0 sd
+gs clippath
+6809 3939 m 6716 3785 l 6338 4011 l 6694 3903 l 6431 4165 l cp
+eoclip
+n 4950 4950 m
+ 6750 3870 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 6431 4165 m 6694 3903 l 6338 4011 l 6431 4165 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+ [120 60 15 60] 0 sd
+gs clippath
+5940 2145 m 5760 2145 l 5760 2585 l 5850 2225 l 5940 2585 l cp
+eoclip
+n 5850 6660 m
+ 5850 2160 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 5940 2585 m 5850 2225 l 5760 2585 l 5940 2585 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+15.000 slw
+n 2700 2700 m 7200 2700 l 7200 7200 l 2700 7200 l
+ cp gs col10 s gr
+% Polyline
+n 7200 7200 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+n 9000 1575 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+n 7200 2700 m
+ 9000 1575 l gs col10 s gr
+% Polyline
+n 4500 1575 m
+ 9000 1575 l gs col10 s gr
+% Polyline
+n 2700 2700 m
+ 4500 1575 l gs col10 s gr
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 9000 6075 l gs col10 s gr [] 0 sd
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 4500 1575 l gs col10 s gr [] 0 sd
+% Polyline
+ [90] 0 sd
+n 2700 7200 m
+ 4500 6075 l gs col10 s gr [] 0 sd
+/Times-Roman-iso ff 450.00 scf sf
+6840 4050 m
+gs 1 -1 sc (z) col0 sh gr
+/Times-Roman-iso ff 450.00 scf sf
+6030 2430 m
+gs 1 -1 sc (y) col0 sh gr
+/Times-Roman-iso ff 450.00 scf sf
+7740 4770 m
+gs 1 -1 sc (x) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1440 7560 m
+gs 1 -1 sc (\(-0.5, -0.5, -0.5\)) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6300 7560 m
+gs 1 -1 sc (\(0.5, -0.5, -0.5\)) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9090 6210 m
+gs 1 -1 sc (\(0.5, 0.5, -0.5\)) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+720 2700 m
+gs 1 -1 sc (\(-0.5, -0.5, 0.5\)) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/1Dlines_in_box.fig b/doc/1Dlines_in_box.fig
new file mode 100644
index 0000000..360e17f
--- /dev/null
+++ b/doc/1Dlines_in_box.fig
@@ -0,0 +1,43 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+Letter
+100.00
+Single
+-2
+1200 2
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 3600 4410 8100 4410
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 4950 4950 6750 3870
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 5850 6660 5850 2160
+2 2 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 5
+ 2700 2700 7200 2700 7200 7200 2700 7200 2700 2700
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 7200 9000 6075
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 9000 1575 9000 6075
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 2700 9000 1575
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 1575 9000 1575
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 2700 4500 1575
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 4500 1575
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 7200 4500 6075
+4 0 0 50 0 0 30 0.0000 4 210 180 6840 4050 z\001
+4 0 0 50 0 0 30 0.0000 4 315 195 6030 2430 y\001
+4 0 0 50 0 0 30 0.0000 4 210 240 7740 4770 x\001
+4 0 0 50 0 0 20 0.0000 0 255 1965 1440 7560 (-0.5, -0.5, -0.5)\001
+4 0 0 50 0 0 20 0.0000 0 255 1800 6300 7560 (0.5, -0.5, -0.5)\001
+4 0 0 50 0 0 20 0.0000 0 255 1635 9090 6210 (0.5, 0.5, -0.5)\001
+4 0 0 50 0 0 20 0.0000 0 255 1800 720 2700 (-0.5, -0.5, 0.5)\001
diff --git a/doc/1Dlines_in_xyBitant.eps b/doc/1Dlines_in_xyBitant.eps
new file mode 100644
index 0000000..4064e2b
--- /dev/null
+++ b/doc/1Dlines_in_xyBitant.eps
@@ -0,0 +1,216 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: 1Dlines_in_xyBitant.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel
+%%CreationDate: Mon Jul 9 15:06:00 2001
+%%For: tradke@nidud (Thomas Radke)
+%%BoundingBox: 0 0 648 259
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 259 moveto 0 0 lineto 648 0 lineto 648 259 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 648 0 lineto 648 259 lineto 0 259 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-41.0 487.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/reencdict 12 dict def /ReEncode { reencdict begin
+/newcodesandnames exch def /newfontname exch def /basefontname exch def
+/basefontdict basefontname findfont def /newfont basefontdict maxlength dict def
+basefontdict { exch dup /FID ne { dup /Encoding eq
+{ exch dup length array copy newfont 3 1 roll put }
+{ exch newfont 3 1 roll put } ifelse } { pop pop } ifelse } forall
+newfont /FontName newfontname put newcodesandnames aload pop
+128 1 255 { newfont /Encoding get exch /.notdef put } for
+newcodesandnames length 2 idiv { newfont /Encoding get 3 1 roll put } repeat
+newfontname newfont definefont pop end } def
+/isovec [
+8#055 /minus 8#200 /grave 8#201 /acute 8#202 /circumflex 8#203 /tilde
+8#204 /macron 8#205 /breve 8#206 /dotaccent 8#207 /dieresis
+8#210 /ring 8#211 /cedilla 8#212 /hungarumlaut 8#213 /ogonek 8#214 /caron
+8#220 /dotlessi 8#230 /oe 8#231 /OE
+8#240 /space 8#241 /exclamdown 8#242 /cent 8#243 /sterling
+8#244 /currency 8#245 /yen 8#246 /brokenbar 8#247 /section 8#250 /dieresis
+8#251 /copyright 8#252 /ordfeminine 8#253 /guillemotleft 8#254 /logicalnot
+8#255 /hypen 8#256 /registered 8#257 /macron 8#260 /degree 8#261 /plusminus
+8#262 /twosuperior 8#263 /threesuperior 8#264 /acute 8#265 /mu 8#266 /paragraph
+8#267 /periodcentered 8#270 /cedilla 8#271 /onesuperior 8#272 /ordmasculine
+8#273 /guillemotright 8#274 /onequarter 8#275 /onehalf
+8#276 /threequarters 8#277 /questiondown 8#300 /Agrave 8#301 /Aacute
+8#302 /Acircumflex 8#303 /Atilde 8#304 /Adieresis 8#305 /Aring
+8#306 /AE 8#307 /Ccedilla 8#310 /Egrave 8#311 /Eacute
+8#312 /Ecircumflex 8#313 /Edieresis 8#314 /Igrave 8#315 /Iacute
+8#316 /Icircumflex 8#317 /Idieresis 8#320 /Eth 8#321 /Ntilde 8#322 /Ograve
+8#323 /Oacute 8#324 /Ocircumflex 8#325 /Otilde 8#326 /Odieresis 8#327 /multiply
+8#330 /Oslash 8#331 /Ugrave 8#332 /Uacute 8#333 /Ucircumflex
+8#334 /Udieresis 8#335 /Yacute 8#336 /Thorn 8#337 /germandbls 8#340 /agrave
+8#341 /aacute 8#342 /acircumflex 8#343 /atilde 8#344 /adieresis 8#345 /aring
+8#346 /ae 8#347 /ccedilla 8#350 /egrave 8#351 /eacute
+8#352 /ecircumflex 8#353 /edieresis 8#354 /igrave 8#355 /iacute
+8#356 /icircumflex 8#357 /idieresis 8#360 /eth 8#361 /ntilde 8#362 /ograve
+8#363 /oacute 8#364 /ocircumflex 8#365 /otilde 8#366 /odieresis 8#367 /divide
+8#370 /oslash 8#371 /ugrave 8#372 /uacute 8#373 /ucircumflex
+8#374 /udieresis 8#375 /yacute 8#376 /thorn 8#377 /ydieresis] def
+/Times-Roman /Times-Roman-iso isovec ReEncode
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06299 0.06299 sc
+% Polyline
+30.000 slw
+ [120 60 15 60] 0 sd
+gs clippath
+8115 4500 m 8115 4320 l 7675 4320 l 8035 4410 l 7675 4500 l cp
+eoclip
+n 3600 4410 m
+ 8100 4410 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 7675 4500 m 8035 4410 l 7675 4320 l 7675 4500 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+ [120 60 15 60] 0 sd
+gs clippath
+6810 3893 m 6715 3740 l 6342 3973 l 6695 3859 l 6437 4126 l cp
+eoclip
+n 4950 4950 m
+ 6750 3825 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 6437 4126 m 6695 3859 l 6342 3973 l 6437 4126 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+ [120 60 15 60] 0 sd
+gs clippath
+5940 4395 m 5760 4395 l 5760 4835 l 5850 4475 l 5940 4835 l cp
+eoclip
+n 5850 6660 m
+ 5850 4410 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 5940 4835 m 5850 4475 l 5760 4835 l 5940 4835 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+15.000 slw
+n 7200 7200 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 9000 6075 l gs col10 s gr [] 0 sd
+% Polyline
+ [90] 0 sd
+n 2700 7200 m
+ 4500 6075 l gs col10 s gr [] 0 sd
+% Polyline
+n 2690 4934 m
+ 4490 3809 l gs col10 s gr
+% Polyline
+n 7200 4950 m
+ 9000 3825 l gs col10 s gr
+% Polyline
+n 2700 4950 m 7200 4950 l 7200 7200 l 2700 7200 l
+ cp gs col10 s gr
+% Polyline
+n 9000 3825 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 4500 3825 l gs col10 s gr [] 0 sd
+% Polyline
+n 4500 3825 m
+ 9000 3825 l gs col10 s gr
+/Times-Roman-iso ff 450.00 scf sf
+6840 4050 m
+gs 1 -1 sc (z) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+1440 7560 m
+gs 1 -1 sc (\(-0.5, -0.5, -0.5\)) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+6300 7560 m
+gs 1 -1 sc (\(0.5, -0.5, -0.5\)) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+9090 6210 m
+gs 1 -1 sc (\(0.5, 0.5, -0.5\)) col0 sh gr
+/Times-Roman-iso ff 450.00 scf sf
+6030 4770 m
+gs 1 -1 sc (y) col0 sh gr
+/Times-Roman-iso ff 450.00 scf sf
+7830 4320 m
+gs 1 -1 sc (x) col0 sh gr
+/Times-Roman-iso ff 300.00 scf sf
+810 4950 m
+gs 1 -1 sc (\(-0.5, -0.5, 0.0\)) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/1Dlines_in_xyBitant.fig b/doc/1Dlines_in_xyBitant.fig
new file mode 100644
index 0000000..34dc864
--- /dev/null
+++ b/doc/1Dlines_in_xyBitant.fig
@@ -0,0 +1,43 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+Letter
+100.00
+Single
+-2
+1200 2
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 3600 4410 8100 4410
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 4950 4950 6750 3825
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 5850 6660 5850 4410
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 7200 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 7200 4500 6075
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2690 4934 4490 3809
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 4950 9000 3825
+2 2 0 2 10 7 50 0 -1 0.000 0 0 7 0 0 5
+ 2700 4950 7200 4950 7200 7200 2700 7200 2700 4950
+2 1 0 2 10 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9000 3825 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 4500 3825
+2 1 0 2 10 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4500 3825 9000 3825
+4 0 0 50 0 0 30 0.0000 4 210 180 6840 4050 z\001
+4 0 0 50 0 0 20 0.0000 4 255 1965 1440 7560 (-0.5, -0.5, -0.5)\001
+4 0 0 50 0 0 20 0.0000 4 255 1800 6300 7560 (0.5, -0.5, -0.5)\001
+4 0 0 50 0 0 20 0.0000 4 255 1635 9090 6210 (0.5, 0.5, -0.5)\001
+4 0 0 50 0 0 30 0.0000 4 315 195 6030 4770 y\001
+4 0 0 50 0 0 30 0.0000 4 210 240 7830 4320 x\001
+4 0 0 50 0 0 20 0.0000 4 255 1800 810 4950 (-0.5, -0.5, 0.0)\001
diff --git a/doc/diagonal_in_cubic.eps b/doc/diagonal_in_cubic.eps
new file mode 100644
index 0000000..19ba270
--- /dev/null
+++ b/doc/diagonal_in_cubic.eps
@@ -0,0 +1,149 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: diagonal_in_cubic.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel
+%%CreationDate: Mon Jul 9 17:06:39 2001
+%%For: tradke@nidud (Thomas Radke)
+%%BoundingBox: 0 0 597 400
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 400 moveto 0 0 lineto 597 0 lineto 597 400 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 597 0 lineto 597 400 lineto 0 400 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-46.0 487.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06299 0.06299 sc
+% Polyline
+30.000 slw
+ [120 60 15 60] 0 sd
+gs clippath
+9070 1677 m 8951 1542 l 8622 1834 l 8952 1663 l 8742 1969 l cp
+eoclip
+n 2700 7200 m
+ 9000 1620 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 8742 1969 m 8952 1663 l 8622 1834 l 8742 1969 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+15.000 slw
+n 2700 2700 m 7200 2700 l 7200 7200 l 2700 7200 l
+ cp gs col10 s gr
+% Polyline
+n 7200 7200 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+n 9000 1575 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+n 7200 2700 m
+ 9000 1575 l gs col10 s gr
+% Polyline
+n 4500 1575 m
+ 9000 1575 l gs col10 s gr
+% Polyline
+n 2700 2700 m
+ 4500 1575 l gs col10 s gr
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 9000 6075 l gs col10 s gr [] 0 sd
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 4500 1575 l gs col10 s gr [] 0 sd
+% Polyline
+ [90] 0 sd
+n 2700 7200 m
+ 4500 6075 l gs col10 s gr [] 0 sd
+/Times-Roman ff 300.00 scf sf
+900 4950 m
+gs 1 -1 sc (\(nsize_z = 10\)) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+8370 6750 m
+gs 1 -1 sc (\(nsize_y = 10\)) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+4230 7560 m
+gs 1 -1 sc (\(nsize_x = 10\)) col0 sh gr
+/Times-Roman ff 450.00 scf sf
+5940 4680 m
+gs 1 -1 sc (d) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/diagonal_in_cubic.fig b/doc/diagonal_in_cubic.fig
new file mode 100644
index 0000000..24f5c81
--- /dev/null
+++ b/doc/diagonal_in_cubic.fig
@@ -0,0 +1,34 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+Letter
+100.00
+Single
+-2
+1200 2
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 2700 7200 9000 1620
+2 2 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 5
+ 2700 2700 7200 2700 7200 7200 2700 7200 2700 2700
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 7200 9000 6075
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 9000 1575 9000 6075
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 2700 9000 1575
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 1575 9000 1575
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 2700 4500 1575
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 4500 1575
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 7200 4500 6075
+4 0 0 50 0 0 20 0.0000 0 255 1620 900 4950 (nsize_z = 10)\001
+4 0 0 50 0 0 20 0.0000 0 255 1635 8370 6750 (nsize_y = 10)\001
+4 0 0 50 0 0 20 0.0000 0 255 1635 4230 7560 (nsize_x = 10)\001
+4 0 0 50 0 0 30 0.0000 4 300 210 5940 4680 d\001
diff --git a/doc/diagonal_in_noncubic.eps b/doc/diagonal_in_noncubic.eps
new file mode 100644
index 0000000..31357e2
--- /dev/null
+++ b/doc/diagonal_in_noncubic.eps
@@ -0,0 +1,149 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: diagonal_in_noncubic.eps
+%%Creator: fig2dev Version 3.2.3 Patchlevel
+%%CreationDate: Mon Jul 9 17:06:27 2001
+%%For: tradke@nidud (Thomas Radke)
+%%BoundingBox: 0 0 585 258
+%%Magnification: 1.0000
+%%EndComments
+/$F2psDict 200 dict def
+$F2psDict begin
+$F2psDict /mtrx matrix put
+/col-1 {0 setgray} bind def
+/col0 {0.000 0.000 0.000 srgb} bind def
+/col1 {0.000 0.000 1.000 srgb} bind def
+/col2 {0.000 1.000 0.000 srgb} bind def
+/col3 {0.000 1.000 1.000 srgb} bind def
+/col4 {1.000 0.000 0.000 srgb} bind def
+/col5 {1.000 0.000 1.000 srgb} bind def
+/col6 {1.000 1.000 0.000 srgb} bind def
+/col7 {1.000 1.000 1.000 srgb} bind def
+/col8 {0.000 0.000 0.560 srgb} bind def
+/col9 {0.000 0.000 0.690 srgb} bind def
+/col10 {0.000 0.000 0.820 srgb} bind def
+/col11 {0.530 0.810 1.000 srgb} bind def
+/col12 {0.000 0.560 0.000 srgb} bind def
+/col13 {0.000 0.690 0.000 srgb} bind def
+/col14 {0.000 0.820 0.000 srgb} bind def
+/col15 {0.000 0.560 0.560 srgb} bind def
+/col16 {0.000 0.690 0.690 srgb} bind def
+/col17 {0.000 0.820 0.820 srgb} bind def
+/col18 {0.560 0.000 0.000 srgb} bind def
+/col19 {0.690 0.000 0.000 srgb} bind def
+/col20 {0.820 0.000 0.000 srgb} bind def
+/col21 {0.560 0.000 0.560 srgb} bind def
+/col22 {0.690 0.000 0.690 srgb} bind def
+/col23 {0.820 0.000 0.820 srgb} bind def
+/col24 {0.500 0.190 0.000 srgb} bind def
+/col25 {0.630 0.250 0.000 srgb} bind def
+/col26 {0.750 0.380 0.000 srgb} bind def
+/col27 {1.000 0.500 0.500 srgb} bind def
+/col28 {1.000 0.630 0.630 srgb} bind def
+/col29 {1.000 0.750 0.750 srgb} bind def
+/col30 {1.000 0.880 0.880 srgb} bind def
+/col31 {1.000 0.840 0.000 srgb} bind def
+
+end
+save
+newpath 0 258 moveto 0 0 lineto 585 0 lineto 585 258 lineto closepath clip newpath
+% Fill background color
+0 0 moveto 585 0 lineto 585 258 lineto 0 258 lineto
+closepath 1.00 1.00 1.00 setrgbcolor fill
+
+-58.0 487.0 translate
+1 -1 scale
+
+/cp {closepath} bind def
+/ef {eofill} bind def
+/gr {grestore} bind def
+/gs {gsave} bind def
+/sa {save} bind def
+/rs {restore} bind def
+/l {lineto} bind def
+/m {moveto} bind def
+/rm {rmoveto} bind def
+/n {newpath} bind def
+/s {stroke} bind def
+/sh {show} bind def
+/slc {setlinecap} bind def
+/slj {setlinejoin} bind def
+/slw {setlinewidth} bind def
+/srgb {setrgbcolor} bind def
+/rot {rotate} bind def
+/sc {scale} bind def
+/sd {setdash} bind def
+/ff {findfont} bind def
+/sf {setfont} bind def
+/scf {scalefont} bind def
+/sw {stringwidth} bind def
+/tr {translate} bind def
+/tnt {dup dup currentrgbcolor
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add
+ 4 -2 roll dup 1 exch sub 3 -1 roll mul add srgb}
+ bind def
+/shd {dup dup currentrgbcolor 4 -2 roll mul 4 -2 roll mul
+ 4 -2 roll mul srgb} bind def
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+%%Page: 1 1
+10 setmiterlimit
+ 0.06299 0.06299 sc
+% Polyline
+30.000 slw
+ [120 60 15 60] 0 sd
+gs clippath
+5920 4467 m 5801 4332 l 5472 4624 l 5802 4453 l 5592 4759 l cp
+eoclip
+n 2700 7200 m
+ 5850 4410 l gs col4 s gr gr
+ [] 0 sd
+% arrowhead
+n 5592 4759 m 5802 4453 l 5472 4624 l 5592 4759 l cp gs col4 1.00 shd ef gr col4 s
+% Polyline
+15.000 slw
+n 7200 7200 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 9000 6075 l gs col10 s gr [] 0 sd
+% Polyline
+ [90] 0 sd
+n 2700 7200 m
+ 4500 6075 l gs col10 s gr [] 0 sd
+% Polyline
+n 2700 4950 m 7200 4950 l 7200 7200 l 2700 7200 l
+ cp gs col10 s gr
+% Polyline
+n 9000 3825 m
+ 9000 6075 l gs col10 s gr
+% Polyline
+n 2700 4950 m
+ 4500 3825 l gs col10 s gr
+% Polyline
+n 7200 4966 m
+ 9000 3841 l gs col10 s gr
+% Polyline
+n 4500 3825 m
+ 9000 3825 l gs col10 s gr
+% Polyline
+ [90] 0 sd
+n 4500 6075 m
+ 4500 3825 l gs col10 s gr [] 0 sd
+/Times-Roman ff 300.00 scf sf
+8370 6750 m
+gs 1 -1 sc (\(nsize_y = 10\)) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+4230 7560 m
+gs 1 -1 sc (\(nsize_x = 10\)) col0 sh gr
+/Times-Roman ff 450.00 scf sf
+5940 4680 m
+gs 1 -1 sc (d) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+1080 6120 m
+gs 1 -1 sc (\(nsize_z = 5\)) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/diagonal_in_noncubic.fig b/doc/diagonal_in_noncubic.fig
new file mode 100644
index 0000000..8ce2040
--- /dev/null
+++ b/doc/diagonal_in_noncubic.fig
@@ -0,0 +1,34 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+Letter
+100.00
+Single
+-2
+1200 2
+2 1 3 3 4 7 50 0 -1 8.000 0 0 7 1 0 2
+ 1 1 3.00 180.00 360.00
+ 2700 7200 5850 4410
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 7200 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 9000 6075
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 7200 4500 6075
+2 2 0 2 10 7 50 0 -1 0.000 0 0 7 0 0 5
+ 2700 4950 7200 4950 7200 7200 2700 7200 2700 4950
+2 1 0 2 10 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9000 3825 9000 6075
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 2700 4950 4500 3825
+2 1 0 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 7200 4966 9000 3841
+2 1 0 2 10 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4500 3825 9000 3825
+2 1 1 2 10 7 50 0 -1 6.000 0 0 7 0 0 2
+ 4500 6075 4500 3825
+4 0 0 50 0 0 20 0.0000 0 255 1635 8370 6750 (nsize_y = 10)\001
+4 0 0 50 0 0 20 0.0000 0 255 1635 4230 7560 (nsize_x = 10)\001
+4 0 0 50 0 0 30 0.0000 4 300 210 5940 4680 d\001
+4 0 0 50 0 0 20 0.0000 0 255 1485 1080 6120 (nsize_z = 5)\001
diff --git a/doc/documentation.tex b/doc/documentation.tex
index 6a9a6f5..9be2e93 100644
--- a/doc/documentation.tex
+++ b/doc/documentation.tex
@@ -1,4 +1,6 @@
\documentclass{article}
+\usepackage{graphicx}
+
\begin{document}
\title{IOUtil}
@@ -10,31 +12,31 @@
This document details the thorns provided in the standard Cactus
distribution for the output of grid variables, and describes how to
-set parameters for IO and checkpointing using these thorns.
+set parameters for I/O and checkpointing using these thorns.
-Input and Output of data (IO) in Cactus is provided by infrastructure thorns,
+Input and Output of data (I/O) in Cactus is provided by infrastructure thorns,
which interact with the flesh via a fixed interface, which is described in
the Users Guide.
The standard release of Cactus contains a number of thorns
-which provide parallel IO using a variety of data formats and methods.
-All these provided IO methods use thorn {\tt CactusBase/IOUtil} which
-provides general utilities for IO (such as parsing parameter strings to
+which provide parallel I/O using a variety of data formats and methods.
+All these provided I/O methods use thorn {\tt CactusBase/IOUtil} which
+provides general utilities for I/O (such as parsing parameter strings to
decide which variables to output), and a general set of parameters which
-are inherited by the different IO methods (such as the output directory).
-Thorn {\tt IOUtil} by itself provides no IO methods.
+are inherited by the different I/O methods (such as the output directory).
+Thorn {\tt IOUtil} by itself provides no I/O methods.
-More information about IO and Visualisation of Cactus data can be found in
-the individual IO thorns, and in the {\tt Visualization-HOWTO} available
+More information about I/O and Visualisation of Cactus data can be found in
+the individual I/O thorns, and in the {\tt Visualization-HOWTO} available
on the Cactus web pages.
-\section{IO methods in Cactus}
+\section{I/O methods in Cactus}
-Cactus has several IO modes for the output of grid variables in different
+Cactus has several I/O modes for the output of grid variables in different
formats.
-Each IO method comes with its own parameters by which it can be customised,
+Each I/O method comes with its own parameters by which it can be customised,
and all methods are registered with the flesh, satisfying the
Cactus API, allowing them to be called directly from application thorns.
-An IO method registers itself with the flesh along with it's name, and
+An I/O method registers itself with the flesh along with it's name, and
these registered names are the labels we now use to describe the various
methods.
@@ -43,7 +45,7 @@ methods.
\label{one}
\begin{tabular}{|l|p{4.5cm}|l|}
\hline
- {\bf IO method} & {\bf Description} & {\bf Providing Thorn}\\
+ {\bf I/O method} & {\bf Description} & {\bf Providing Thorn}\\
\hline
{\tt Scalar} &
output of scalars or grid array reductions in xgraph or gnuplot format &
@@ -82,16 +84,16 @@ methods.
\\
\hline
\end{tabular}
-\caption{Standard IO methods provided with the Cactus distribution}
+\caption{Standard I/O methods provided with the Cactus distribution}
\end{table}
-The standard provided Cactus IO methods are shown in Table~\ref{one}.
-As described above, each of these IO thorns inherit parameters from thorn
+The standard provided Cactus I/O methods are shown in Table~\ref{one}.
+As described above, each of these I/O thorns inherit parameters from thorn
{\tt CactusBase/IOUtil}, which must be included in your ThornList
-and activated in your parameter files before any of these IO methods
+and activated in your parameter files before any of these I/O methods
can be used. {\tt CactusBase/IOUtil} allows you to set the default
-behaviour for all the IO methods described above, for examples, setting
-the parameter {\tt IO::out\_every=1} will result in any chosen IO method
+behaviour for all the I/O methods described above, for examples, setting
+the parameter {\tt IO::out\_every=1} will result in any chosen I/O method
providing output on each iteration. The default behaviour can be overriden
by specific parameters for each method.
For example, you may want scalar and 1D output at every iteration
@@ -103,7 +105,7 @@ with these files going into another directory on a scratch partition.
NOTE: This section will not be filled out properly until the new treatment of external
packages is implemented.
-Some of the IO methods used by Cactus require that external packages are installed and available
+Some of the I/O methods used by Cactus require that external packages are installed and available
on your machine.
\begin{itemize}
@@ -123,35 +125,35 @@ to control output.
\begin{itemize}
\item{\tt IO::outdir}\\
- The name of the directory to be used for output. All the IO
+ The name of the directory to be used for output. All the I/O
methods described here will write by default to this directory.
Individual methods have parameters
which can direct their output to a different directory.
\item{\tt IO::out\_every}\\
- How often, in terms of iterations, each of the Cactus IO methods will
+ How often, in terms of iterations, each of the Cactus I/O methods will
write output. Again, individual methods can set there own parameter
to override this. The default is to never write output.
\end{itemize}
-\section{IO modes}
+\section{I/O modes}
\label{iomodes}
For a run on multiple processors, scalar, 1D, and 2D output will always be
written from only processor zero (that is, required data from all other
processors will be sent to processor zero, who then outputs all the gathered
data).
For 3D output this may become a quite expensive operation since output
-by only a single processor will probably result in a IO bottleneck and delay
+by only a single processor will probably result in a I/O bottleneck and delay
further computation.
-For this reason Cactus offers different IO modes for 3D output which can be
+For this reason Cactus offers different I/O modes for 3D output which can be
controlled by the {\tt IO::out\_3Dmode} parameter, in combination with
{\tt IO::out\_unchunked} and {\tt IO::out3D\_np}. These parameters allow
-IO to be optimised for your particular machine architecture and needs:
+I/O to be optimised for your particular machine architecture and needs:
\begin{itemize}
\item {\tt IO::out3D\_mode = "onefile"}\\
- As for the 1D and 2D IO methods, writing to file is performed only
+ As for the 1D and 2D I/O methods, writing to file is performed only
by processor zero.
This processor gathers all the output data from the other processors
and writes to a single file. The gathered grid array data from each
@@ -163,7 +165,7 @@ IO to be optimised for your particular machine architecture and needs:
\item {\tt IO::out3D\_mode = "np"}\\
3D output is written in parallel for groups of processors. Each group
consists of {\tt IO::out3D\_procs} processors which have assigned one
- IO processor which writes the gathers data from the group and writes it
+ I/O processor which writes the gathers data from the group and writes it
to file. The chunked output will go into {\tt IO::out3D\_procs} files.
The default number of processors in a group is eight.
\item {\tt IO::out3D\_mode = "proc"}\\
@@ -172,14 +174,14 @@ IO to be optimised for your particular machine architecture and needs:
\end{itemize}
Probably the single processor {\tt proc} mode is the most efficient 3D output mode on
-machines with a fast IO subsystem and many IO nodes (eg. an Origin 2000)
+machines with a fast I/O subsystem and many I/O nodes (eg. an Origin 2000)
because it provides the highest
parallelity for outputting data. Note that on very large numbers of processors
you mave have to fall back to {\tt np}, output from groups of processors,
mode if the system limit of
maximum open file descriptors is exceeded (this is true for large jobs on a
T3E).\\
-While the {\tt np} and {\tt proc} IO modes are fast for outputting large
+While the {\tt np} and {\tt proc} I/O modes are fast for outputting large
amounts of data from all or a group of processors in parallel, they have
the disadvantage of writing chunked files. These files have to be
{\tt recombined}
@@ -188,9 +190,75 @@ visualized by standard tools. For that purpose a recombiner utility program is
provided by thorn {\tt CactusPUGHIO/IOFlexIO}.
Note that {\tt CactusPUGHIO/IOHDF5} does not provide such a utility yet.
+\section{Output of Hyperslab Data}
+
+While some I/O methods ({\tt IOHDF5\_3D, IOFlexIO\_3D}) can dump the full
+contents of a multidimensional CCTK variable, others such as
+{\tt IOASCII\_1D} and {\tt IOASCII\_2D} will output only a subset of the data
+(eg. 1D lines or 2D planes of 3D grid funtions).
+Such a subset (called a {\it hyperslab}) is generally defined as an orthogonal
+region into the multidimensional dataset, with a startpoint and a length in any
+direction, and an optional downsampling factor.
+
+Thorn {\tt IOUtil} defines a set of hyperslab parameters for all
+I/O methods which determine the default positions of 1D line or 2D slice output
+along the axes. I/O thorns can also define their own hyperslab parameters
+which then will overwrite the defaults provided by {\tt IOUtil}.
+
+\begin{itemize}
+ \item {\tt IO::out\_[xyz]line\_[xyz]}\\
+ specifies the slice center for 1D x,y,z-line output by coordinate values
+ of the underlying physical grid
+ \item {\tt IO::out\_[xyz]line\_[xyz]i}\\
+ specifies the slice center of 1D x,y,z-line output by index points
+ of the underlying computational grid
+ \item {\tt IO::out\_[\{xy\}\{xz\}\{yz\}]plane\_[xyz]}\\
+ specifies the slice center of 2D xy,xz,yz-plane output by coordinate values
+ of the underlying physical grid
+ \item {\tt IO::out\_[\{xy\}\{xz\}\{yz\}]plane\_[xyz]}i\\
+ specifies the slice center of 2D xy,xz,yz-plane output by index points
+ of the underlying computational grid
+ \item {\tt IO::out3D\_downsample\_[xyz]}\\
+ specifies the downsampling factor for 3D output in every direction
+\end{itemize}
+
+Setting the index points for the slice centers in a parameter file
+has precedence over setting their location by coordinate values.
+If nothing was specified the default values of {\tt IO::out\_[xyz]line\_[xyz]}
+and {\tt IO::out\_[\{xy\}\{xz\}\{yz\}]plane\_[xyz]} will be used.
+These are set to be all zeros which causes the output to go through the
+coordinate system's origin or the closest grid point to this (see figure
+\ref{default_1D_output} for an example).
+
+\begin{figure}[ht]
+\begin{center}
+\includegraphics[width=6cm]{1Dlines_in_box.eps}
+\includegraphics[width=6cm]{1Dlines_in_xyBitant.eps}
+\end{center}
+\caption{Default 1D {\it x,y,z}-line output for a 3D grid in box mode (left) and {\it xy}-bitant mode (right)}
+\label{default_1D_output}
+\end{figure}
+
+Although they are not hyperslabs by the above definition, output of 1D
+diagonals for 3D grid arrays is also supported by I/O method {\tt IOASCII\_1D}
+but has the restriction that the line will always start in the bottom-left
+corner of the computational grid and steadily rise by one grid point in
+every direction (see figure \ref{default_diagonal_output} for an example).
+
+\begin{figure}[ht]
+\begin{center}
+\includegraphics[width=6cm]{diagonal_in_cubic.eps}
+\includegraphics[width=6cm]{diagonal_in_noncubic.eps}
+\end{center}
+\caption{1D diagonal output for a 3D cubical (left) and non-cubical (right)
+computational grid}
+\label{default_diagonal_output}
+\end{figure}
+
+
\section{Checkpointing and Recovery in Cactus}
-The IO methods for 3D output also provide functionality for {\it checkpointing}
+The I/O methods for 3D output also provide functionality for {\it checkpointing}
and {\it recovery}. A checkpoint is a snapshot of the current state of the
simulation ({\it ie} the contents of all the grid variables and the parameter
settings) at a chosen timestep. Each checkpoint is saved into a
@@ -225,7 +293,7 @@ parameters. The most important ones are:
\end{itemize}
To checkpoint your simulation, you need to enable checkpointing by setting
-the Boolean parameter {\tt checkpoint}, for one of the 3D IO methods to
+the Boolean parameter {\tt checkpoint}, for one of the 3D I/O methods to
{\tt yes}.
Checkpoint filenames consist of a basename (as specified in
{\tt IO::checkpoint\_file}) followed by {\tt ".chkpt.it\_$<$iteration\_number$>$"}
@@ -237,11 +305,11 @@ recover from the latest checkpoint file found in the recovery directory.
In this case {\tt IO::recover\_file} should contain the basename only.
Use the {\tt "manual"} mode to recover from a specific checkpoint file
by adding the iteration number to the basename parameter.\\
-Because the same IO methods implement both output of 3D data and
-checkpoint files, the same IO modes are used (see Section~\ref{iomodes}).
+Because the same I/O methods implement both output of 3D data and
+checkpoint files, the same I/O modes are used (see Section~\ref{iomodes}).
Note that the recovery routines in Cactus can process both chunked and
unchunked checkpoint files if you restart on the same number of processors.
-That's why you should always use one of the parallel IO modes for
+That's why you should always use one of the parallel I/O modes for
checkpointing. If you want to restart on a different number of processors, you first need to
{\it recombine} the data in the checkpoint file(s) to create a single file with
unchunked data.
@@ -259,87 +327,103 @@ checkpointing and recovery, simply perform one run of say 10 timesteps, and comp
with a checkpointed and recovered run at say the 5th timestep. The output data should match
exactly if recovery was successful.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\section{Reading Data from Files into Cactus}
+
+The very same routines which implement checkpointing/recovery functionality
+in the {\tt IOHDF5} and {\tt IOFlexIO} thorns are also used to provide
+filereader capabilities within Cactus. They enable a user to read variables,
+which contents was written to files in HDF5 or IEEEIO data format, back into
+Cactus at a later time. This is especially useful if compute-intensive
+initial data is calculated only once and stored in a file. Such data
+can then be read back in at startup and immediately used by following evolution
+runs.
+
+The following {\tt IOUtil} parameters exist to specify what variables should be
+read from file(s) as initial data:
+
+\begin{itemize}
+ \item {\tt IO::recover\_ID\_files}\\
+ list of files to read in as initial data (multiple filenames must be separated by spaces)\\
+ The same file naming conventions (what I/O mode used, which iteration number)
+ apply as for checkpoint files.
+ \item {\tt IO::recover\_ID\_vars}\\
+ list of CCTK variables to read in from the given initial data files (variables
+ are identified by their full name, multiple variable names must be separated by spaces)\\
+ This is useful if a datafile contains multiple variables but only some of
+ them should be read. Thus it is possible to recover distinguished
+ variables from a full checkpoint file. Note that if the file contains several
+ timesteps of the same variable only the last one is taken.
+\end{itemize}
+
+Thorn {\tt IOUtil} also provides a filereader routine which can be called
+by any application thorn at any time. It gets passed the equivalent information
+to the filereader parameters, plus a pointer to the underlying CCTK grid hierarchy.
+
+\begin{verbatim}
+void IOUtil_RecoverVarsFromDatafiles (cGH *GH,
+ const char *in_files,
+ const char *in_vars);
+\end{verbatim}
+
+If data is to be imported from files which were not created by
+{\tt IOHDF5} or {\tt IOFlexIO} it needs to be converted first into the
+appropriate HDF5 or IEEEIO file format and the file layout
+which either one of these thorns uses. This is described in detail in the
+thorns' documentation, along with a simple C source file which can be used as a
+template to build your own data converter program.
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\section{Data Filenames and Filename Extensions}
-The standard IO thorns in Cactus make use of a consistent set of filenames and extensions, which
-identify the variables and data format used in the file. The filenames are listed in Table~\ref{two},
-and the extensions in Table~\ref{three}
+The standard I/O thorns in Cactus make use of a consistent set of filenames
+and extensions, which identify the variables and data format used in the file.
+The filenames are listed in the following tables.
+%The filenames are listed in Table~\ref{filename_table},
+%and the extensions in Table~\ref{filename_extensions_table}
\begin{center}
-\begin{table}
-\label{two}
+\begin{table}[htb]
+\label{filename_table}
\begin{tabular}{|l|l|}
\hline
- {\bf IO method} & {\bf Filename for output of variable {\tt phi}}\\
+ {\bf I/O method} & {\bf Filename for output of variable {\tt phi}}\\
\hline
- {\tt Scalar} &
-phi\_nm1.tl, phi\_nm2.tl phi\_max.tl phi\_min.tl
-\\
- {\tt Info} &
-Provides no output file (the same data is available with {\tt Scalar} output)
-\\
- {\tt IOASCII\_1D} &
-phi.xl, phi.yl, phi.zl, phi.tl
-\\
- {\tt IOASCII\_2D} &
-??
-\\
- {\tt IOHDF5\_2D} &
-phi2d.h5
-\\
- {\tt IOHDF5\_3D} &
-phi3d.h5
-\\
- {\tt IOFlexIO\_2D} &
-phi2d.ieee
-\\
- {\tt IOFlexIO\_3D} &
-phi3d.ieee
-\\
+ {\tt Scalar} & phi\_nm1.tl, phi\_nm2.tl phi\_max.tl phi\_min.tl\\
+ {\tt Info} & Provides no output file (the same data is available with {\tt Scalar} output)\\
+ {\tt IOASCII\_1D} & phi.xl, phi.yl, phi.zl, phi.dl\\
+ {\tt IOASCII\_2D} & phi\_2d\_xy.gnuplot, phi\_2d\_xz.gnuplot, phi\_2d\_yz.gnuplot\\
+ {\tt IOHDF5\_3D} & phi\_3d.h5\\
+ {\tt IOFlexIO\_2D} & phi\_2d.ieee\\
+ {\tt IOFlexIO\_3D} & phi\_3d.ieee\\
\hline
\end{tabular}
-\caption{Filenames used by standard IO thorns}
+\caption{Filenames used by standard I/O thorns}
\end{table}
\end{center}
+
\begin{center}
-\begin{table}
-\label{three}
+\begin{table}[htb]
+\label{filename_extensions_table}
\begin{tabular}{|c|p{4.5cm}|l|}
\hline
{\bf Extension} & {\bf Description} & {\bf Thorn} \\
- {\tt .xl}
- &
- &
- {\tt CactusBase/IOASCII}
-\\
- {\tt .yl}
- &
- &
- {\tt CactusBase/IOASCII}
-\\
-{\tt .zl}
- &
- &
- {\tt CactusBase/IOASCII}
-\\
-{\tt .dl}
- &
- &
- {\tt CactusBase/IOASCII}
-\\
-{\tt .tl}
- &
- &
- {\tt CactusBase/IOASCII}
-\\ \hline
+ \hline
+ {\tt .xl} & 1D line plots in {\it x}-direction & {\tt CactusBase/IOASCII}\\
+ {\tt .yl} & 1D line plots in {\it y}-direction & {\tt CactusBase/IOASCII}\\
+ {\tt .zl} & 1D line plots in {\it z}-direction & {\tt CactusBase/IOASCII}\\
+ {\tt .dl} & 1D diagonal line plots & {\tt CactusBase/IOASCII}\\
+ {\tt .tl} & traceline plots over time & {\tt CactusBase/IOBasic}\\
+ \hline
\end{tabular}
-\caption{File extensions used by the standard IO thorns in the Cactus distribution}
+\caption{File extensions used by the standard I/O thorns in the Cactus distribution}
\end{table}
\end{center}
\section{Example Parameter Files}
-Here we give examples of the parameters for the different IO methods.
+Here we give examples of the parameters for the different I/O methods.
\begin{itemize}
\item{\bf Screen Information {\tt info}}
@@ -378,7 +462,7 @@ ioascii::out1d_every = 100
iobasic::outscalar_vars = "evolve::vars"
\end{verbatim}
-\item{\bf HDF5 2D and 3D Output {\tt iohdf5\_2d}, {\tt iohdf5\_3d}}
+\item{\bf HDF5 3D Output {\tt iohdf5\_3d}}
\begin{verbatim}
ActiveThorns = "iohdf5 ioutil pughslab ..."
@@ -388,10 +472,10 @@ iohdf5::out2d_every = 100
# Output vars using ascii 3d method on iteration 0, 5, 10, ...
iohdf5::out3d_every = 5
-# Standard IO directory for 2D output
+# Standard I/O directory for 2D output
io::outdir = "test"
-# Special IO directory for 3D output
+# Special I/O directory for 3D output
iohdf5::outdir3D = "/scratch/tmp"
# 3D Output unchunked to one file
@@ -420,10 +504,10 @@ ioflexio::out2d_every = 100
# Output vars using 3D FlexIO method on iteration 0, 5, 10, ...
ioflexio::out3d_every = 5
-# Standard IO directory for 2D output
+# Standard I/O directory for 2D output
io::outdir = "test"
-# Special IO directory for 3D output
+# Special I/O directory for 3D output
ioflexio::outdir3D = "/scratch/tmp"
# 3D Output chunked to one file for every eight processors