summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--doc/UsersGuide/1dnoghost.eps253
-rw-r--r--doc/UsersGuide/1dnoghost.fig249
-rw-r--r--doc/UsersGuide/Appendices.tex24
-rw-r--r--doc/UsersGuide/FunctionReference.tex8
-rw-r--r--doc/UsersGuide/Infrastructure.tex4
-rw-r--r--doc/UsersGuide/Preface.tex10
-rw-r--r--doc/UsersGuide/RunningCactus.tex233
-rw-r--r--doc/UsersGuide/ThornWriters.tex593
-rw-r--r--doc/UsersGuide/UsersGuide.tex3
-rw-r--r--doc/UsersGuide/withghost.eps360
-rw-r--r--doc/UsersGuide/withghost.fig168
11 files changed, 1273 insertions, 632 deletions
diff --git a/doc/UsersGuide/1dnoghost.eps b/doc/UsersGuide/1dnoghost.eps
index 93559b47..edb8606a 100644
--- a/doc/UsersGuide/1dnoghost.eps
+++ b/doc/UsersGuide/1dnoghost.eps
@@ -1,9 +1,9 @@
%!PS-Adobe-2.0 EPSF-2.0
%%Title: 1dnoghost.eps
-%%Creator: fig2dev Version 3.2.3 Patchlevel
-%%CreationDate: Wed Jul 19 02:12:20 2000
-%%For: goodale@saraband.aei-potsdam.mpg.de (Tom Goodale)
-%%BoundingBox: 0 0 573 118
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Fri Dec 7 09:37:51 2001
+%%For: rideout@nbdell05.aei.mpg.de (David P. Rideout)
+%%BoundingBox: 0 0 588 225
%%Magnification: 1.0000
%%EndComments
/$F2psDict 200 dict def
@@ -45,12 +45,8 @@ $F2psDict /mtrx matrix put
end
save
-newpath 0 118 moveto 0 0 lineto 573 0 lineto 573 118 lineto closepath clip newpath
-% Fill background color
-0 0 moveto 573 0 lineto 573 118 lineto 0 118 lineto
-closepath 1.00 1.00 1.00 setrgbcolor fill
-
--132.0 275.0 translate
+newpath 0 225 moveto 0 0 lineto 588 0 lineto 588 225 lineto closepath clip newpath
+-107.0 338.0 translate
1 -1 scale
/cp {closepath} bind def
@@ -91,163 +87,180 @@ $F2psBegin
%%Page: 1 1
10 setmiterlimit
0.06000 0.06000 sc
+%
+% Fig objects follow
+%
% Polyline
-7.500 slw
-n 2500 4000 m
- 2900 4400 l gs col4 s gr
+15.000 slw
+gs clippath
+2711 4439 m 2661 4548 l 2983 4697 l 2736 4517 l 3033 4588 l cp
+eoclip
+n 4650 5400 m
+ 2700 4500 l gs col0 s gr gr
+
+% arrowhead
+n 3033 4588 m 2736 4517 l 2983 4697 l 2953 4617 l 3033 4588 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+11280 4553 m 11247 4438 l 10907 4535 l 11212 4511 l 10940 4651 l cp
+eoclip
+n 8100 5400 m
+ 11250 4500 l gs col0 s gr gr
+
+% arrowhead
+n 10940 4651 m 11212 4511 l 10907 4535 l 10981 4576 l 10940 4651 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 2400 4200 m
+ 6600 4200 l gs col0 s gr
+% Polyline
+n 2400 3000 m
+ 6600 3000 l gs col0 s gr
+% Polyline
+n 11550 3000 m
+ 7350 3000 l gs col0 s gr
+% Polyline
+n 7350 4200 m
+ 11550 4200 l gs col0 s gr
% Polyline
n 2900 4000 m
2500 4400 l gs col4 s gr
% Polyline
-n 3100 4000 m
- 3500 4400 l gs col4 s gr
+n 2500 4000 m
+ 2900 4400 l gs col4 s gr
% Polyline
n 3500 4000 m
3100 4400 l gs col4 s gr
% Polyline
-n 3700 4000 m
- 4100 4400 l gs col4 s gr
+n 3100 4000 m
+ 3500 4400 l gs col4 s gr
% Polyline
n 4100 4000 m
3700 4400 l gs col4 s gr
% Polyline
-n 4300 4000 m
- 4700 4400 l gs col4 s gr
+n 3700 4000 m
+ 4100 4400 l gs col4 s gr
% Polyline
n 4700 4000 m
4300 4400 l gs col4 s gr
% Polyline
-n 4900 4000 m
- 5300 4400 l gs col4 s gr
+n 4300 4000 m
+ 4700 4400 l gs col4 s gr
% Polyline
n 5300 4000 m
4900 4400 l gs col4 s gr
% Polyline
-n 5500 4000 m
- 5900 4400 l gs col4 s gr
+n 4900 4000 m
+ 5300 4400 l gs col4 s gr
% Polyline
n 5900 4000 m
5500 4400 l gs col4 s gr
% Polyline
-n 6100 4000 m
- 6500 4400 l gs col4 s gr
+n 5500 4000 m
+ 5900 4400 l gs col4 s gr
% Polyline
n 6500 4000 m
6100 4400 l gs col4 s gr
% Polyline
-15.000 slw
-n 2400 4200 m
- 6600 4200 l gs col0 s gr
-% Polyline
-7.500 slw
-n 7450 4000 m
- 7850 4400 l gs col4 s gr
+n 6100 4000 m
+ 6500 4400 l gs col4 s gr
% Polyline
n 7850 4000 m
7450 4400 l gs col4 s gr
% Polyline
-n 8050 4000 m
- 8450 4400 l gs col4 s gr
+n 7450 4000 m
+ 7850 4400 l gs col4 s gr
% Polyline
n 8450 4000 m
8050 4400 l gs col4 s gr
% Polyline
-n 8650 4000 m
- 9050 4400 l gs col4 s gr
+n 8050 4000 m
+ 8450 4400 l gs col4 s gr
% Polyline
n 9050 4000 m
8650 4400 l gs col4 s gr
% Polyline
-n 9250 4000 m
- 9650 4400 l gs col4 s gr
+n 8650 4000 m
+ 9050 4400 l gs col4 s gr
% Polyline
n 9650 4000 m
9250 4400 l gs col4 s gr
% Polyline
-n 9850 4000 m
- 10250 4400 l gs col4 s gr
+n 9250 4000 m
+ 9650 4400 l gs col4 s gr
% Polyline
n 10250 4000 m
9850 4400 l gs col4 s gr
% Polyline
-n 10450 4000 m
- 10850 4400 l gs col4 s gr
+n 9850 4000 m
+ 10250 4400 l gs col4 s gr
% Polyline
n 10850 4000 m
10450 4400 l gs col4 s gr
% Polyline
-n 11050 4000 m
- 11450 4400 l gs col4 s gr
+n 10450 4000 m
+ 10850 4400 l gs col4 s gr
% Polyline
n 11450 4000 m
11050 4400 l gs col4 s gr
% Polyline
-15.000 slw
-n 7350 4200 m
- 11550 4200 l gs col0 s gr
-% Polyline
-n 2400 3000 m
- 6600 3000 l gs col0 s gr
-% Polyline
-7.500 slw
-n 2500 2800 m
- 2900 3200 l gs col4 s gr
+n 11050 4000 m
+ 11450 4400 l gs col4 s gr
% Polyline
n 2900 2800 m
2500 3200 l gs col4 s gr
% Polyline
-n 3100 2800 m
- 3500 3200 l gs col4 s gr
+n 2500 2800 m
+ 2900 3200 l gs col4 s gr
% Polyline
n 3500 2800 m
3100 3200 l gs col4 s gr
% Polyline
-n 3700 2800 m
- 4100 3200 l gs col4 s gr
+n 3100 2800 m
+ 3500 3200 l gs col4 s gr
% Polyline
n 4100 2800 m
3700 3200 l gs col4 s gr
% Polyline
-n 4300 2800 m
- 4700 3200 l gs col4 s gr
+n 3700 2800 m
+ 4100 3200 l gs col4 s gr
% Polyline
n 4700 2800 m
4300 3200 l gs col4 s gr
% Polyline
-n 4900 2800 m
- 5300 3200 l gs col4 s gr
+n 4300 2800 m
+ 4700 3200 l gs col4 s gr
% Polyline
n 5300 2800 m
4900 3200 l gs col4 s gr
% Polyline
-n 5500 2800 m
- 5900 3200 l gs col4 s gr
+n 4900 2800 m
+ 5300 3200 l gs col4 s gr
% Polyline
n 5900 2800 m
5500 3200 l gs col4 s gr
% Polyline
-n 6100 2800 m
- 6500 3200 l gs col2 s gr
+n 5500 2800 m
+ 5900 3200 l gs col4 s gr
% Polyline
-n 6500 2800 m
- 6100 3200 l gs col2 s gr
+n 8450 2800 m
+ 8050 3200 l gs col4 s gr
% Polyline
-15.000 slw
-n 11550 3000 m
- 7350 3000 l gs col0 s gr
+n 8050 2800 m
+ 8450 3200 l gs col4 s gr
% Polyline
-7.500 slw
-n 11450 2800 m
- 11050 3200 l gs col4 s gr
+n 9050 2800 m
+ 8650 3200 l gs col4 s gr
% Polyline
-n 11050 2800 m
- 11450 3200 l gs col4 s gr
+n 8650 2800 m
+ 9050 3200 l gs col4 s gr
% Polyline
-n 10850 2800 m
- 10450 3200 l gs col4 s gr
+n 9250 2800 m
+ 9650 3200 l gs col4 s gr
% Polyline
-n 10450 2800 m
- 10850 3200 l gs col4 s gr
+n 9650 2800 m
+ 9250 3200 l gs col4 s gr
% Polyline
n 10250 2800 m
9850 3200 l gs col4 s gr
@@ -255,28 +268,80 @@ n 10250 2800 m
n 9850 2800 m
10250 3200 l gs col4 s gr
% Polyline
-n 9650 2800 m
- 9250 3200 l gs col4 s gr
+n 10850 2800 m
+ 10450 3200 l gs col4 s gr
% Polyline
-n 9250 2800 m
- 9650 3200 l gs col4 s gr
+n 10450 2800 m
+ 10850 3200 l gs col4 s gr
% Polyline
-n 9050 2800 m
- 8650 3200 l gs col4 s gr
+n 11450 2800 m
+ 11050 3200 l gs col4 s gr
% Polyline
-n 8650 2800 m
- 9050 3200 l gs col4 s gr
+n 11050 2800 m
+ 11450 3200 l gs col4 s gr
% Polyline
-n 8450 2800 m
- 8050 3200 l gs col4 s gr
+7.500 slw
+ [60] 0 sd
+n 6500 2800 m
+ 6100 3200 l gs col3 s gr [] 0 sd
% Polyline
-n 8050 2800 m
- 8450 3200 l gs col4 s gr
+ [60] 0 sd
+n 6100 2800 m
+ 6500 3200 l gs col3 s gr [] 0 sd
% Polyline
+ [60] 0 sd
n 7850 2800 m
- 7450 3200 l gs col2 s gr
+ 7450 3200 l gs col3 s gr [] 0 sd
% Polyline
+ [60] 0 sd
n 7450 2800 m
- 7850 3200 l gs col2 s gr
+ 7850 3200 l gs col3 s gr [] 0 sd
+% Polyline
+15.000 slw
+gs clippath
+2010 3135 m 1890 3135 l 1890 3490 l 1950 3190 l 2010 3490 l cp
+eoclip
+n 1950 3750 m
+ 1950 3150 l gs col0 s gr gr
+
+% arrowhead
+n 2010 3490 m 1950 3190 l 1890 3490 l 1950 3430 l 2010 3490 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+6620 3241 m 6554 3341 l 6794 3501 l 6628 3318 l 6860 3401 l cp
+eoclip
+n 8100 3600 m 7050 3600 l
+ 6600 3300 l gs col0 s gr gr
+
+% arrowhead
+n 6860 3401 m 6628 3318 l 6794 3501 l col0 s
+% Polyline
+gs clippath
+7681 3246 m 7596 3331 l 7800 3535 l 7673 3323 l 7885 3450 l cp
+eoclip
+n 7950 3600 m
+ 7650 3300 l gs col0 s gr gr
+
+% arrowhead
+n 7885 3450 m 7673 3323 l 7800 3535 l col0 s
+/Times-Roman ff 300.00 scf sf
+3825 2100 m
+gs 1 -1 sc (processor 0) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+8925 2100 m
+gs 1 -1 sc (processor 1) col0 sh gr
+/Times-Roman ff 270.00 scf sf
+4800 5550 m
+gs 1 -1 sc (boundary of physical domain) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1800 4050 m
+gs 1 -1 sc (time) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+8250 3600 m
+gs 1 -1 sc (insufficient data available to) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+8250 3885 m
+gs 1 -1 sc (update field at these locations) col0 sh gr
$F2psEnd
rs
diff --git a/doc/UsersGuide/1dnoghost.fig b/doc/UsersGuide/1dnoghost.fig
index 172632b1..fa1a4598 100644
--- a/doc/UsersGuide/1dnoghost.fig
+++ b/doc/UsersGuide/1dnoghost.fig
@@ -7,159 +7,144 @@ Letter
Single
-2
1200 2
-6 2250 3900 6750 4500
-6 2400 3900 3000 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 2500 4000 2900 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 0 7 50 0 -1 0.000 0 0 7 1 0 2
+ 2 1 2.00 120.00 240.00
+ 4650 5400 2700 4500
+2 1 0 2 0 7 50 0 -1 0.000 0 0 7 1 0 2
+ 2 1 2.00 120.00 240.00
+ 8100 5400 11250 4500
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2400 4200 6600 4200
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2400 3000 6600 3000
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 11550 3000 7350 3000
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7350 4200 11550 4200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
2900 4000 2500 4400
--6
-6 3000 3900 3600 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 3100 4000 3500 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 2500 4000 2900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
3500 4000 3100 4400
--6
-6 3600 3900 4200 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 3700 4000 4100 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3100 4000 3500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
4100 4000 3700 4400
--6
-6 4200 3900 4800 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 4300 4000 4700 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3700 4000 4100 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
4700 4000 4300 4400
--6
-6 4800 3900 5400 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 4900 4000 5300 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4300 4000 4700 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
5300 4000 4900 4400
--6
-6 5400 3900 6000 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 5500 4000 5900 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4900 4000 5300 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
5900 4000 5500 4400
--6
-6 6000 3900 6600 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 6100 4000 6500 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5500 4000 5900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
6500 4000 6100 4400
--6
-2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
- 2400 4200 6600 4200
--6
-6 7200 3900 11700 4500
-6 7350 3900 7950 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 7450 4000 7850 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6100 4000 6500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
7850 4000 7450 4400
--6
-6 7950 3900 8550 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 8050 4000 8450 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7450 4000 7850 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
8450 4000 8050 4400
--6
-6 8550 3900 9150 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 8650 4000 9050 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8050 4000 8450 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
9050 4000 8650 4400
--6
-6 9150 3900 9750 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 9250 4000 9650 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8650 4000 9050 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
9650 4000 9250 4400
--6
-6 9750 3900 10350 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 9850 4000 10250 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9250 4000 9650 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
10250 4000 9850 4400
--6
-6 10350 3900 10950 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 10450 4000 10850 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9850 4000 10250 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
10850 4000 10450 4400
--6
-6 10950 3900 11550 4500
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 11050 4000 11450 4400
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10450 4000 10850 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
11450 4000 11050 4400
--6
-2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
- 7350 4200 11550 4200
--6
-6 2250 2700 6750 3300
-2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
- 2400 3000 6600 3000
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 2500 2800 2900 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11050 4000 11450 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
2900 2800 2500 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 3100 2800 3500 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 2500 2800 2900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
3500 2800 3100 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 3700 2800 4100 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3100 2800 3500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
4100 2800 3700 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 4300 2800 4700 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3700 2800 4100 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
4700 2800 4300 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 4900 2800 5300 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4300 2800 4700 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
5300 2800 4900 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 5500 2800 5900 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4900 2800 5300 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
5900 2800 5500 3200
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
- 6100 2800 6500 3200
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
- 6500 2800 6100 3200
--6
-6 7200 2700 11700 3300
-2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
- 11550 3000 7350 3000
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 11450 2800 11050 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 11050 2800 11450 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 10850 2800 10450 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 10450 2800 10850 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 10250 2800 9850 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 9850 2800 10250 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 9650 2800 9250 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 9250 2800 9650 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 9050 2800 8650 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
- 8650 2800 9050 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5500 2800 5900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
8450 2800 8050 3200
-2 1 0 1 4 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
8050 2800 8450 3200
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9050 2800 8650 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8650 2800 9050 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9250 2800 9650 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9650 2800 9250 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10250 2800 9850 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9850 2800 10250 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10850 2800 10450 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10450 2800 10850 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11450 2800 11050 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11050 2800 11450 3200
+2 1 1 1 3 7 50 0 -1 4.000 0 0 7 0 0 2
+ 6500 2800 6100 3200
+2 1 1 1 3 7 50 0 -1 4.000 0 0 7 0 0 2
+ 6100 2800 6500 3200
+2 1 1 1 3 7 50 0 -1 4.000 0 0 7 0 0 2
7850 2800 7450 3200
-2 1 0 1 2 7 50 0 -1 0.000 0 0 -1 0 0 2
+2 1 1 1 3 7 50 0 -1 4.000 0 0 7 0 0 2
7450 2800 7850 3200
--6
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 1950 3750 1950 3150
+2 1 0 2 0 7 50 0 -1 6.000 0 0 -1 1 0 3
+ 0 0 2.00 120.00 240.00
+ 8100 3600 7050 3600 6600 3300
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 0 0 2.00 120.00 240.00
+ 7950 3600 7650 3300
+4 0 0 50 0 0 20 0.0000 4 255 1275 3825 2100 processor 0\001
+4 0 0 50 0 0 20 0.0000 4 255 1275 8925 2100 processor 1\001
+4 0 0 50 0 0 18 0.0000 4 255 3180 4800 5550 boundary of physical domain\001
+4 0 0 50 0 0 16 0.0000 4 165 450 1800 4050 time\001
+4 0 0 50 0 0 16 0.0000 4 165 2805 8250 3600 insufficient data available to\001
+4 0 0 50 0 0 16 0.0000 4 225 2910 8250 3885 update field at these locations\001
diff --git a/doc/UsersGuide/Appendices.tex b/doc/UsersGuide/Appendices.tex
index 2571ba91..5913c2d1 100644
--- a/doc/UsersGuide/Appendices.tex
+++ b/doc/UsersGuide/Appendices.tex
@@ -11,29 +11,33 @@
\renewcommand{\thepage}{\Alph{part}\arabic{page}}
\chapter{Glossary}
+\label{sec:glossary}
\begin{Lentry}
\item[{\tt arrangement}] A collection of thorns.
\item[{\tt autoconf}] A GNU program which builds a configuration
- script which can be used to make a Makefile
+ script which can be used to make a Makefile.
\item[{\tt Cactus}] A green fleshy plant with lots of thorns, usually painful if touched.
\item[{\tt CCTK}] Cactus Computational Tool Kit (The Cactus flesh and
computational thorns).
\item[{\tt CCL}] The {\tt Cactus Configuration Language}, this is the language
that the thorn configuration files are written in.
\item[{\tt configuration}]
-\item[{\tt checkout}] Get a copy of the code or thorns from CVS
-\item[{\tt checkpointing}] Save the entire state of a run to file so that it can be restarted at a later time
+\item[{\tt checkout}] Get a copy of the code or thorns from CVS.
+\item[{\tt checkpointing}] Save the entire state of a run to file so that it can be restarted at a later time.
\item[{\tt convergence}]
+\item[{\tt CST}] This stands for Cactus Specification Tool, which is
+the perl scripts which parse the thorns' configuration files (those
+that have a \texttt{.ccl} extension).
\item[{\tt CVS}] The {\em "Concurrent Versioning System"} is the
favoured distribution system for Cactus and can be
downloaded from your favorite GNU site.
-\item[{\tt driver}] A thorn which creates and handles grid hierachies
+\item[{\tt driver}] A thorn which creates and handles grid hierachies.
\item[{\tt flesh}] The routines which hold all the thorns together, this
is what you get if you check out {\tt Cactus} from our CVS repository.
\item[{\tt friend}]
-\item[{\tt GF}] Shorthand for a {\tt grid function}
+\item[{\tt GF}] Shorthand for a {\tt grid function}.
\item[{\tt gmake}]
\item[{\tt ghostzone}]
\item[{\tt grid function}]
@@ -42,7 +46,7 @@ is what you get if you check out {\tt Cactus} from our CVS repository.
\item[{\tt grid variable}]
\item[{\tt GNATS}] The GNU program we use for reporting and tracking bugs,
comments and suggestions.
-\item[{\tt HDF5}] Hierarchical Data Format version 5
+\item[{\tt HDF5}] Hierarchical Data Format version 5.
\item[{\tt implementation}]
\item[{\tt inherit}]
\item[{\tt interpolation}]
@@ -51,13 +55,13 @@ is what you get if you check out {\tt Cactus} from our CVS repository.
\item[{\tt processor topology}]
\item[{\tt PUGH}] The default parallel driver for Cactus which uses MPI.
\item[{\tt PVM}] {\tt Parallel Virtual Machine}, provides interprocessor
- communication
+ communication.
\item[{\tt reduction}]
\item[{\tt TAGS}]
\item[{\tt target}]
\item[{\tt thorn}] A collection of subroutines with a definite interface
and purpose.
-\item[{\tt WMPI}] Win32 Message Passing Interface
+\item[{\tt WMPI}] Win32 Message Passing Interface.
\end{Lentry}
@@ -169,7 +173,7 @@ The default value is {\t DIM=3}.
of the letters {\tt M}, {\tt C}, {\tt P} depending on whether the layout in
that direction is on the {\tt M}inus face, {\tt C}entre, or {\tt P}lus face
of the cell in that dimension.
-\item{} The block following the group declaration line contains a list of
+\item{} The (optional) block following the group declaration line contains a list of
variables contained in the group. All variables in a group have
the same data type, variable type and dimension. The list can be
separated by spaces, commas, or new lines. The variable names
@@ -789,7 +793,7 @@ emacs if you add either of the following lines to your {\tt .emacs} file:\\
where {\tt CACTUS\_HOME } is your Cactus directory.\\
You can now easily navigate your Cactus Flesh and Toolkits by searching for
-functions or "tags":
+functions or ``tags'':
\begin{enumerate}
\item \textbf{ Alt.} will find a tag
\item \textbf{ Alt,} will find the next matching tag
diff --git a/doc/UsersGuide/FunctionReference.tex b/doc/UsersGuide/FunctionReference.tex
index abd9fba9..0e0fb780 100644
--- a/doc/UsersGuide/FunctionReference.tex
+++ b/doc/UsersGuide/FunctionReference.tex
@@ -289,7 +289,7 @@ from Fortran.
Provides the number of variables in a group from the group index
\item[CCTK\_NumVarsInGroup]
- [\pageref{CCTK-NumVarsInGroup}]
+ [\pageref{CCTK-NumVarsInGroup}]
Provides the number of variables in a group from the group name
\item[CCTK\_nProcs]
@@ -1004,7 +1004,7 @@ system.}
\showargs
\begin{params}
\parameter{ierr}{Error code}
-\parameter{dimension}{Direction of coordinate in coordinate system}
+\parameter{direction}{Direction of coordinate in coordinate system}
\parameter{gvname}{Name of grid variable associated with coordinate}
\parameter{coordname}{Name of this coordinate}
\parameter{systemname}{Name of this coordinate system}
@@ -2457,7 +2457,7 @@ file is created.
% IOOverloadables.h
\begin{CCTKFunc}{CCTK\_OutputVarByMethod}{}
-\label{CCTK-OutputVarAsMethod}
+\label{CCTK-OutputVarByMethod}
\subroutine{int}{}{istat}
\argument{cGH *}{}{cctkGH}
\argument{const char *}{character*(*)}{variable}
@@ -2930,7 +2930,7 @@ IO methods should be registered at {\t CCTK\_STARTUP}.
% cctk_GHExtensions.h
\begin{CCTKFunc}{CCTK\_RegisterGHExtensionScheuldeTraverseGH}{Register a GH extension schedule traversal routine}
-\label{CCTK-RegisterGHExtensionrfrTraverseGH}
+\label{CCTK-RegisterGHExtensionScheduleTraverseGH}
\function{int}{}{istat}
\argument{int}{}{handle}
\argument{int}{}{(*func)(cGH *,const char *)}
diff --git a/doc/UsersGuide/Infrastructure.tex b/doc/UsersGuide/Infrastructure.tex
index 04d92d3a..8f2bcfb6 100644
--- a/doc/UsersGuide/Infrastructure.tex
+++ b/doc/UsersGuide/Infrastructure.tex
@@ -62,7 +62,7 @@ and the flesh-provided IO functions operate on all registered IO methods.
\chapter{GH Extensions}
-A GH extension is created by calling {\tt CCTK\_RegisterGHExtension} , with the
+A GH extension is created by calling {\tt CCTK\_RegisterGHExtension}, with the
name of the extension. This returns a unique handle that identifies the extension.
(This handle can be retrieved at any time by a call to {\tt CCTK\_GHExtensionHandle}.)
@@ -396,7 +396,7 @@ structures for the communication.
\chapter{Adding an IO layer}
-\chapter{Adding a timers}
+\chapter{Adding a timer}
To add a Cactus timer you need to write several functions to provide the
timer functionality, and then register these functions with the flesh, with a name for the timer using {\t CCTK\_TimerRegister}.
diff --git a/doc/UsersGuide/Preface.tex b/doc/UsersGuide/Preface.tex
index ff393abe..25f12d81 100644
--- a/doc/UsersGuide/Preface.tex
+++ b/doc/UsersGuide/Preface.tex
@@ -19,7 +19,7 @@
This document will eventually be a complete guide to using and
developing with the Cactus Code. However, it is currently under
development, so please be patient if you can't find what you need.
-Please contact report omissions, errors, or suggestions to
+Please report omissions, errors, or suggestions to
and of our contact addresses below, and we will
try and fix them as soon as possible.
@@ -50,7 +50,7 @@ This guide covers the following topics
as {\em additional output routines, drivers, etc.} [This part is not
yet complete, and is currently under construction.]
-\item [{\bf Part D: Function Reference.}] Here all Cactus functions which
+\item [{\bf Part D: Function Reference.}] Here all Cactus flesh functions which
are available to thorn writers in C and Fortran are described.
\item [\bf Part E: Appendices.] These contain a description of the
@@ -64,7 +64,7 @@ Other topics to be discussed in separate documents include:
\begin{Lentry}
\item [{\bf Computational Thorn Guide}] This will contain details about the
-arrangements and thorns making up the standard Cactus Computation Tool Kit
+arrangements and thorns making up the standard Cactus Computational Tool Kit.
\item [{\bf Relativity Thorn Guide}] This will contain details about the arrangements and thorns making up the Cactus Relativity Tool Kit, one of the major
motivators, and still the driving force, for the Cactus Code.
@@ -104,8 +104,8 @@ bug tracking system at {\tt www.cactuscode.org}, or via email to
The Cactus Team\\
Albert Einstein Institute\\
Max Planck Institute for Gravitational Physics\\
-Am M\"{u}hlenberg, 1\\
-Potsdam\\
+Am M\"{u}hlenberg 1\\
+D-14476 Golm\\
Germany
diff --git a/doc/UsersGuide/RunningCactus.tex b/doc/UsersGuide/RunningCactus.tex
index cdae1bc1..1d995aa4 100644
--- a/doc/UsersGuide/RunningCactus.tex
+++ b/doc/UsersGuide/RunningCactus.tex
@@ -49,7 +49,7 @@ to just run as a preprocessor.
\end{Lentry}
\noindent
-To use Cactus, with the default driver ({\tt CactusPUGH/PUGH}) on multiple
+To use Cactus, with the default driver\footnote{For help with unfamiliar terms, please consult the glossary, Appendix \ref{sec:glossary}.} ({\tt CactusPUGH/PUGH}) on multiple
processors you also need:
\begin{Lentry}
\item[{\tt MPI}] the {\it Message Passing Interface (MPI)}
@@ -88,7 +88,7 @@ While not required for compiling or running Cactus, for thorn development
it is useful to install
\begin{Lentry}
\item[{\tt ctags/etags}] The program Tags enables you browse through the calling structure
- of a program by help of function call database. Navigating the flesh and
+ of a program by help of a function call database. Navigating the flesh and
arrangements becomes very easy. Emacs and vi both support this method. See
\ref{sec:usta} for a short guide to ``tags''.
\end{Lentry}
@@ -98,33 +98,55 @@ it is useful to install
\section{Supported architectures}
\label{sec:suar}
-Cactus runs on many machines, under a large number of Unix operating
-systems. Here we list all the machines we have compiled and verified
-Cactus on, including some architecture specific notes.
-A comlete list of architectures supported by Cactus can be found on
+Cactus runs on many machines, under a large number of operating
+systems. Here we list the machines we have compiled and verified
+Cactus on, including some architecture specific notes. A complete
+list of architectures supported by Cactus, along with more notes, can
+be found at
\begin{center}
{\tt http://www.cactuscode.org/Documentation/Architectures.html}.
\end{center}
\begin{Lentry}
-\item[{\bf SGI Origin 2000} running Irix]
-\item[{\bf SGI} 32 or 64 bit running Irix]
-\item[{\bf Cray T3E}]
-\item[{\bf Dec Alpha}] Dec operating system and Linux. Single processor
- mode and {\tt MPI} supported. The Decs need to have the GNU {\tt C/C++}
- compilers installed
-\item[{\bf Linux (ia32, ia64, ppc, alpha)}] There is a
- free Linux F90 compiler available from {\tt http://www.psrv.com}
- -- the only free we know of; please note the comment about installing this in the FAQ.
- Single processor mode and MPI ({\tt MPICH} and {\tt LAM}) supported.
-\item[{\bf Windows NT}] Compiles with Cygwin. Single processor mode and MPI ({\tt WMPI},
-{\tt HPVM}, and {\tt MPIPro}) supported. Please read doc/README.NT for details.
-\item[{\bf Macintosh PowerPC (MacOS X)}]
+\item[{\bf SGI}] 32 or 64 bit running Irix.
+\item[{\bf Cray T3E}]
+\item[{\bf Compaq Alpha}] Compaq operating system and Linux. Single processor
+ mode and {\tt MPI} supported. The Alphas need to have the GNU {\tt C/C++}
+ compilers installed.
+\item[\textbf{IA32}] running Linux or Windows 2000/NT. Single
+processor mode and MPI ({\tt MPICH} and {\tt LAM}) supported.\\On
+Windows Cactus compiles with Cygwin. MPI
+({\tt WMPI}, {\tt HPVM}, and {\tt MPIPro}) supported. Please read
+doc/README.NT for details.
+\item[\textbf{IA64}] running Linux.
+\item[{\bf Macintosh PowerPC}] (MacOS X and Linux PPC)
\item[{\bf IBM SP2}]
\item[{\bf Hitachi SR8000-F1}]
-\item[{\bf Sun Solaris}]
+\item[{\bf Sun} Solaris]
+\item[{\bf Fujitsu}]
\end{Lentry}
+%\begin{Lentry}
+%\item[{\bf SGI Origin 2000} running Irix]
+%\item[{\bf SGI} 32 or 64 bit running Irix]
+%\item[{\bf Cray T3E}]
+%\item[{\bf Dec Alpha}] Dec operating system and Linux. Single processor
+% mode and {\tt MPI} supported. The Decs need to have the GNU {\tt C/C++}
+% compilers installed
+%\item[{\bf Linux (ia32, ia64, ppc, alpha)}] There is a
+% free Linux F90 compiler available from {\tt http://www.psrv.com}
+% -- the only free we know of; please note the comment about installing this in
+%the FAQ.
+% Single processor mode and MPI ({\tt MPICH} and {\tt LAM}) supported.
+%\item[{\bf Windows NT}] Compiles with Cygwin. Single processor mode and MPI ({\t
+%t WMPI},
+%{\tt HPVM}, and {\tt MPIPro}) supported. Please read doc/README.NT for details.
+%\item[{\bf Macintosh PowerPC (MacOS X)}]
+%\item[{\bf IBM SP2}]
+%\item[{\bf Hitachi SR8000-F1}]
+%\item[{\bf Sun Solaris}]
+%\end{Lentry}
+
The following machines are only partially supported
\begin{Lentry}
\item[{\bf HP Exemplar}]
@@ -152,7 +174,7 @@ appendix basic CVS commands.
The space required for an installation depends on the arrangements and
thorns used. The flesh on its own requires less than 5 MB.
-The script for checking out the flesh and thorns, {\tt GetCactus} is available
+The script for checking out the flesh and thorns, {\tt GetCactus}, is available
from the website at
{\tt http://www.cactuscode.org/Download/GetCactus}
@@ -183,11 +205,11 @@ following subdirectories:
\begin{Lentry}
-\item[{\tt CVS}] the CVS book-keeping directory, present in every subdirectory.
+\item[{\tt CVS}] the CVS book-keeping directory, present in every subdirectory
\item[{\tt doc}] Cactus documentation
-\item[{\tt lib}] contains libraries.
+\item[{\tt lib}] contains libraries
\item[{\tt src}] contains the source code for Cactus
@@ -287,35 +309,39 @@ to override some parts of the procedure.
\subsection{Configuration options}
-There are two ways to pass options to the configuration process from the
-gmake command line.
+There are three ways to pass options to the configuration process.
+% from the gmake command line.
\begin{enumerate}
-\item{} Add the options to a configuration file and use,
-
-{\tt gmake <config>-config options=<filename>}
+\item{} Create a file \texttt{\~{ }/.cactus/config}.
-All available configuration options may be set in the file {\tt filename},
-any which are not set will take a default value. The options file
-should contain lines of the form:
+All available configuration options may be set in the file {\tt
+\~{ }/.cactus/config}, any which are not set will take a default value.
+The file should contain lines of the form:
{\tt <option> [=] ...}
The equals sign is optional.
-\item{} Pass the options individually on the command line,
+\item{} Add the options to a configuration file and use,\\
+{\tt gmake <config>-config options=<filename>}
+The options file has the same format as {\tt \~/.cactus/config}.
+\item{} Pass the options individually on the command line,\\
{\tt gmake <configuration name>-config <option name>=<chosen value>, ...}
-Not all configuration options can be set on the command line. Those than can
+Not all configuration options can be set on the command line. Those that can
be set are indicated in the table below.
-
\end{enumerate}
-Note that if a configuration file is used, and options are also passed
-on the command line, the command line options will override those from the configuration file.
+They are listed here in order of increasing precedence, e.g. options
+set on the command line will take priority over (potentially
+conflicting) options set in \texttt{\~{ }/.cactus/config}.
+%Note that if a configuration file is used, and options are also passed
+%on the command line, the command line options will override those from
+%the configuration file.
It is important to note that these methods cannot be used to, for example add
-options to the default values for {\tt CFLAGS}. Setting {\tt CFLAGS} in the
-configuration file, or the command line will overwrite completely the
+options to the default values for {\tt CFLAGS}. Setting {\tt CFLAGS} in the
+configuration file or the command line will overwrite completely the
default values.
\subsection{Available options}
@@ -332,9 +358,9 @@ is automatically created, and the users prompted for any changes.
\begin{Lentry}
-\item [{\tt THORNLIST}] Name of file containing a list of thorns with the syntax
- {\tt <arrangement name>/<thorn name>}, lines beginning with \# or ! are
- ignored.
+\item [{\tt THORNLIST}] Name of file containing a list of thorns with
+the syntax {\tt <arrangement name>/<thorn name>}, lines beginning with
+\# or ! are ignored.
\item [{\tt THORNLIST\_DIR}] Location of directory containing {\tt THORNLIST}.
@@ -352,13 +378,13 @@ by * may be specified on the command line.
\item [{\tt CC}]
* The C compiler.
\item [{\tt CXX}]
-The C++ compiler
+The C++ compiler.
\item [{\tt F90}]
-* The Fortran 90 compiler
+* The Fortran 90 compiler.
\item [{\tt F77}]
* The FORTRAN 77 compiler.
\item [{\tt CPP}]
- The preprocessor used to generate dependencies and to preprocess Fortran code
+ The preprocessor used to generate dependencies and to preprocess Fortran code.
\item [{\tt LD}]
* The linker.
\item [{\tt AR}]
@@ -368,7 +394,7 @@ The archive indexer to use.
\item [{\tt MKDIR}]
The program to use to create a directory.
\item [{\tt PERL}]
-The name of the perl executable
+The name of the perl executable.
\end{Lentry}
@@ -378,24 +404,24 @@ Flags which are passed to the compilers and the tools.
\begin{Lentry}
\item [{\tt CFLAGS}]
-Flags for the C compiler
+Flags for the C compiler.
\item [{\tt CXXFLAGS}]
-Flags for the C++ compiler
+Flags for the C++ compiler.
\item [{\tt F90FLAGS}]
-* Flags for the Fortran 90 compiler
+* Flags for the Fortran 90 compiler.
\item [{\tt F77FLAGS}]
-* Flags for the FORTRAN 77 compiler
+* Flags for the FORTRAN 77 compiler.
\item [{\tt MKDIRFLAGS}]
- Flags for MKDIR so that no error is given if the directory exists
+ Flags for MKDIR so that no error is given if the directory exists.
\item [{\tt LDFLAGS}]
-* Flags for the linker
+* Flags for the linker.
\item [{\tt ARLAGS}]
-Flags for the archiver
+Flags for the archiver.
\item [{\tt DEBUG}]
* Specifies what type of debug mode should be used,
@@ -462,7 +488,7 @@ Used to specify auxiliary libraries and directories to find them in.
\begin{Lentry}
\item [{\tt SYS\_INC\_DIRS}]
-Used to specify any additional directories for system include files
+Used to specify any additional directories for system include files.
\end{Lentry}
@@ -475,19 +501,18 @@ values will be valid on all architectures.
\begin{Lentry}
\item [{\tt REAL\_PRECISION}]
-* Allowed values are 16, 8, 4 .
+* Allowed values are 16, 8, 4.
\item [{\tt INTEGER\_PRECISION}]
-* Allowed values are 8, 4 and 2 .
+* Allowed values are 8, 4 and 2.
\end{Lentry}
\item {\tt Executable name}
\begin{Lentry}
-\item [{\tt EXEDIR}] The directory in which to place the executable
-\item [{\tt EXE}]
-The name of the executable.
+\item [{\tt EXEDIR}] The directory in which to place the executable.
+\item [{\tt EXE}] The name of the executable.
\end{Lentry}
\item{\tt Extra packages}
@@ -498,13 +523,13 @@ which should be consulted for the full range of configuration options.
\begin{Lentry}
\item [{\tt MPI} *] The {\tt MPI} package to use, if required. Supported values are
- {\tt CUSTOM}, {\tt NATIVE}, {\tt MPICH} or {\tt LAM}
+ {\tt CUSTOM}, {\tt NATIVE}, {\tt MPICH} or {\tt LAM}.
\item [{\tt HDF5}]
-Supported values are {\it yes}
+Supported values are {\it yes}.
\item [{\tt PTHREADS}]
-Supported values are {\it yes}
+Supported values are {\it yes}.
\end{Lentry}
@@ -520,7 +545,7 @@ Supported values are {\it yes}
\subsubsection{MPI: Message Passing Interface}
-{\tt MPI} (the {\it Message Passing Interface}) can provides inter-processor
+{\tt MPI} (the {\it Message Passing Interface}) provides inter-processor
communication. It can either be implemented natively on a machine
(this is usual on most supercomputers), or through a standard package
such as {\tt MPICH}, {\tt LAM}, {WMPI}, or {PACX}.
@@ -536,20 +561,20 @@ may be specified on the configuration command line):
\item[{\tt CUSTOM}] For a custom {\tt MPI} configuration set the variables
\begin{Lentry}
- \item [{\tt MPI\_LIBS} *] libraries
- \item [{\tt MPI\_LIB\_DIRS} *] library directories
- \item [{\tt MPI\_INC\_DIRS} *] include file directories
+ \item [{\tt MPI\_LIBS} *] libraries.
+ \item [{\tt MPI\_LIB\_DIRS} *] library directories.
+ \item [{\tt MPI\_INC\_DIRS} *] include file directories.
\end{Lentry}
\item[{\tt NATIVE}] Use the native {\tt MPI} for this machine, as indicated in
the {\tt known-architectures} directory
- ({\tt lib/make/known-architectures})
+ ({\tt lib/make/known-architectures}).
\item[{\tt MPICH}]
Use MPICH ({\tt http://www-unix.mcs.anl.gov/mpi/mpich}). This is controlled
by the options
\begin{Lentry}
- \item [{\tt MPICH\_ARCH} *] machine architecture
+ \item [{\tt MPICH\_ARCH} *] machine architecture.
\item [{\tt MPICH\_DIR} *] directory in which {\tt MPICH} is installed.
If this option is not defined it will be searched for.
\item [{\tt MPICH\_DEVICE} *] the device used by {\tt MPICH}. If not
@@ -565,13 +590,13 @@ by the options
If {\tt MPICH\_DEVICE} is chosen to be {\tt globus}, ({\tt www.globus.org}),
an additional variable must be set
\begin{Lentry}
- \item[{\tt GLOBUS\_LIB\_DIR} *] directory in which Globus libraries are installed
+ \item[{\tt GLOBUS\_LIB\_DIR} *] directory in which Globus libraries are installed.
\end{Lentry}
If {\tt MPICH\_DEVICE} is chosen to be {\tt ch\_gm}, ({\tt www.myri.com}),
an additional variable must be set
\begin{Lentry}
- \item[{\tt MYRINET\_DIR} *] directory in which Myrinet libraries are installed
+ \item[{\tt MYRINET\_DIR} *] directory in which Myrinet libraries are installed.
\end{Lentry}
\item[{\tt LAM}]
@@ -596,7 +621,7 @@ Use WMPI (Win32 Message Passing Interface, {\tt http://dsg.dei.uc.pt/w32mpi/intr
\end{Lentry}
\item[{\tt HPVM}]
-Use HPVM (High Performance Virtual Machine, {\tt http://www-csag.ucsd.edu/projects/hpvm.html}). This is controlled by the variable
+Use HPVM (High Performance Virtual Machine,\\{\tt http://www-csag.ucsd.edu/projects/hpvm.html}). This is controlled by the variable
\begin{Lentry}
\item[{\tt HPVM\_DIR} *] directory in which {\tt HPVM} is installed.
\end{Lentry}
@@ -647,8 +672,6 @@ library (either libpthread or libpthreads) and set preprocessor
defines necessary for compiling multithreaded code.
-
-
\subsection{File layout}
The configuration process sets up various subdirectories and files in the
@@ -721,8 +744,14 @@ An empty directory which will contain the libraries created for each thorn.
An empty directory which will contain the object files generated for this
configuration, and preprocessed source files.
-\item [{\tt config-info}]
-An file containing information about the configuration.
+\item [{\tt config-info}]
+A file containing information about the configuration.
+
+\item [{\tt bindings}] A directory which contains all the files
+generated by the CST from the \texttt{.ccl} files.
+
+\item [{\tt scratch}]
+A scratch directory which is used to accomodate Fortran 90 modules.
\end{Lentry}
@@ -773,11 +802,12 @@ is to do. The command {\tt gmake help} lists all gmake targets:
\item [{\tt gmake <config>-examples}] copies all the example parameter files relevant for this configuration to the directory {\tt examples} in the Cactus home directory. If a file of the same name is already there, it will not overwrite it.
\item [{\tt gmake <config>-realclean}] removes from a configuration
- all object and dependency files,
- as well as files generated from the CST (that is, only the files
- generated by configure and the ThornList files remain).
+all object and dependency files, as well as files generated from the
+CST (stands for Cactus Specification Tool, which is the perl scripts
+which parse the thorn configuration files). Only the files generated
+by configure and the ThornList file remain.
-\item [{\tt gmake <config>-rebuild}] rebuilds a configuration (reruns the CST -- the perl scripts which parse the thorn configuration files).
+\item [{\tt gmake <config>-rebuild}] rebuilds a configuration (reruns the CST).
\item [{\tt gmake <config>-testsuite}] runs the test programs associated with
each thorn in the configuration. See section \ref{sec:te} for information about the
@@ -790,6 +820,10 @@ is to do. The command {\tt gmake help} lists all gmake targets:
\item[{\tt gmake <config>-ThornGuide}] builds documentation for the thorns
in this configuration.
+\item[{\tt gmake <config>-configinfo}] displays the options used to build the configuration.
+
+\item[{\tt gmake <config>-cvsupdate}] updates the Flesh and this configuration's Thorns from the CVS repositories.
+
\end{Lentry}
@@ -845,8 +879,11 @@ it how it should make a {\tt target}. Note that the final result is always
the same.
\begin{Lentry}
-
-\item [{\tt gmake <target> THORNLIST=<file> [THORNLIST\_DIR=<dir>]}] uses the file {\tt dir/file} as the ThornList for the configuration. The directory defaults to the current directory.
+% This works as either a config or a build option:
+\item [{\tt gmake <target> PROMPT=no}] turns off all prompts from the
+make system.
+% This should be a config option:
+%\item [{\tt gmake <target> THORNLIST=<file> [THORNLIST\_DIR=<dir>]}] uses the file {\tt dir/file} as the ThornList for the configuration. The directory defaults to the current directory.
\item [{\tt gmake <target> SILENT=no}] print the commands that gmake is executing.
\item [{\tt gmake <target> WARN=yes}] show compiler warnings during compilation.
\item [{\tt gmake <target> FJOBS=<number>}] compile in parallel, across files within each thorn.
@@ -869,7 +906,10 @@ Note that with more modern versions of gmake, it is sufficient to pass the norma
\item [{\tt gmake help}] lists all make options.
-\item [{\tt gmake checkout}] allows you to easily checkout Cactus arrangements and thorns.
+\item [{\tt gmake checkout}] allows you to easily checkout Cactus
+arrangements and thorns. For example it can checkout all the thorns
+in any thornlist file found in the \texttt{thornlists} subdirectory of
+the Cactus root directory. % (usually \texttt{Cactus}).
\item [{\tt gmake cvsdiff}] differences between checked out version of Cactus and that in the CVS repositories.
@@ -881,7 +921,7 @@ Note that with more modern versions of gmake, it is sufficient to pass the norma
\item [{\tt gmake distclean}] delete your {\tt configs} directory and hence all your configurations.
-\item [{\tt gmake downsize}] removes non essential files as documents
+\item [{\tt gmake downsize}] removes non-essential files as documents
and testsuites to allow for minimal installation size.
\item [{\tt gmake newthorn}] creates a new thorn, prompting for the necessary
@@ -899,6 +939,9 @@ Note that with more modern versions of gmake, it is sufficient to pass the norma
\item [{\tt gmake MaintGuide}] runs LaTeX to produce a copy of the Maintainers' Guide.
+\item [{\tt gmake configinfo}] prints configuration options for every
+configuration found in user's \texttt{configs} subdirectory.
+
\end{Lentry}
@@ -918,7 +961,7 @@ These testsuites serve the dual purpose of
i.e. making sure that changes to the thorn or the flesh don't affect the
output from a known parameter file.
\item [Portability testing]
-i.e. checking that the results are independent of the architecture - this
+i.e. checking that the results are independent of the architecture --- this
is also of use when trying to get Cactus to work on a new architecture.
\end{Lentry}
@@ -930,9 +973,9 @@ is also of use when trying to get Cactus to work on a new architecture.
Cactus executables always run from a parameter file (which may be a
physical file or taken from standard input), which specifies which
Thorns to use and set the values of any parameters which are different
-to the default values. Any accepted filename can be used for the name
+from the default values. Any accepted filename can be used for the name
of the parameter file, although standard convention is to use the file
-extension {\tt .par}. Optional command line arguments can be used
+extension {\tt .par}. Optional command line arguments can be used
to customise runtime behaviour, and to provide information about the
Thorns used in the executable. The general syntax for running Cactus from
a physical parameter file is
@@ -944,9 +987,9 @@ or if the parameter file should be taken from standard input
{\tt ./cactus\_<config> [command line options] -}
-This chapter covers all aspects for running your Cactus executable.
-These include: command line options; parameter file syntax; understanding
-screen output and environment variables.
+The remainder of this chapter covers all aspects for running your
+Cactus executable. These include: command line options, parameter
+file syntax, understanding screen output, and environment variables.
\section{Command Line Options}
\label{sec:coliop}
@@ -958,7 +1001,7 @@ The cactus executable accepts numerous command line arguments:
\hline
Short Version & Long Version \\
\hline
- -O & -describe-all-parameters \\
+ -O[v] & -describe-all-parameters \\
\hline
-o <param> & -describe-parameter <param> \\
\hline
@@ -992,7 +1035,7 @@ along with descriptions and allowed values. This can take an optional extra
parameter {\tt v} (i.e. {\tt -Ov} to give verbose information about
all parameters).
\item [{\tt -o <param>} or {\tt -describe-parameter <param>}]
-Produces the description and allowed values for a given parameter - takes one
+Produces the description and allowed values for a given parameter --- takes one
argument.
\item [{\tt -T} or {\tt -list-thorns}]
Produces a list of all the thorns which were compiled in.
@@ -1005,7 +1048,7 @@ Produces version information of the code.
\item [{\tt -x <nprocs>} or {\tt -test-parameters <nprocs>}]
Runs the code far enough to check the consistency of the parameters. If
given a numeric argument it will attempt to simulate being on that number
-of processors. [To be implemented]
+of processors. [To be implemented.]
\item [{\tt -W <level>} or {\tt -waring-level <level>}]
Sets the warning level of the code. All warning messages are given a level ---
the lower the level the greater the severity. This parameter controls the
@@ -1033,7 +1076,7 @@ Set the level of parameter checking to be used, either {\tt strict}, {\tt normal
The parameter file is used to control the behaviour of the code at runtime.
It is a text file with lines which are either comments, denoted
-by a `\#', or parameter statements. A parameter statement consists
+by a `\#' or `!', or parameter statements. A parameter statement consists
of one or more parameter names, followed by
an `=', followed by the value(s) for this (these) parameter(s).
Note that all string parameters are case insensitive.
@@ -1140,7 +1183,7 @@ As the program runs, the normal output provides the following information:
\item [Active thorns]
A report is made as each of the thorns in the {\tt ActiveThorns} parameters from the parameter file is attempted to be activated. This report
shows whether the activation was successful, and if successful gives the
-thorns implementation. For example
+thorn's implementation. For example
{\tt
\begin{verbatim}
@@ -1179,7 +1222,7 @@ order that they will be executed. For example
IOASCII: Startup routine
IOBasic: Startup routine
IOUtil: IOUtil startup routine
- PUGH: Startup routine.
+ PUGH: Startup routine
WaveToyC: Register banner
Parameter checking routines
@@ -1213,7 +1256,7 @@ order that they will be executed. For example
Output methods in Cactus are all provided by thorns. Any number
of output methods can be used for each run. The behaviour of
the output thorns in the standard arrangements are described in
-those thorns documentation. In general, these thorns decide
+those thorns' documentation. In general, these thorns decide
what to output by parsing a string parameter containing the
names of those grid variables, or groups of variables, for
which output is required. The names should be fully qualified
diff --git a/doc/UsersGuide/ThornWriters.tex b/doc/UsersGuide/ThornWriters.tex
index 62966c96..c1fc2b22 100644
--- a/doc/UsersGuide/ThornWriters.tex
+++ b/doc/UsersGuide/ThornWriters.tex
@@ -78,7 +78,7 @@ belonging to the arrangement.
\label{sec:im}
One of the key concepts for thorns is the concept of the {\bf implementation}.
-Relationships between thorns are all based upon relationship between the
+Relationships among thorns are all based upon relationships among the
{\bf implementations} they provide.
In principle it should be possible to swap one thorn providing an
implementation with another thorn providing that implementation,
@@ -121,7 +121,7 @@ functions, variables, etc. See \ref{sec:in}.
parameters needed from other thorns. See
\ref{sec:pa}.
\item[{\tt schedule.ccl}] scheduling information for routines called by
-the flesh. See \ref{sec:sc}
+the flesh. See \ref{sec:sc}.
\end{Lentry}
Thorns can also contain
@@ -176,7 +176,7 @@ called. It also handles memory and communication assignment for grid variables.
\subsection{General syntax of CCL files}
-CCL {\bf Cactus Configuration Language} files are simple text files
+{\bf Cactus Configuration Language} (CCL) files are simple text files
used to define configuration information for a thorn. CCL files are
case independent, and may contain comments introduced by the `\#' character,
which indicates that the rest of the line is a comment. If the last non-blank character of a line in a CCL file is a backslash {\tt $\backslash$}, the following line is treated as a continuation of the current line.
@@ -312,11 +312,12 @@ A boolean type which can take values 1, `t', `true', `yes' or
\item a {\tt description} of the parameter
-\item an allowed value block ---
-This consists of a brace delimited block of lines
-describing the allowed values of the parameter. Each range may
-have a description associated with it by placing a :: on the line and
-putting the description afterwards.
+\item an allowed value block --- This consists of a brace delimited
+block of lines\footnote{The begining brace (\{) must sit on a line by
+itself; the ending brace (\}) must be preceeded by a carriage return.}
+describing the allowed values of the parameter. Each range may have a
+description associated with it by placing a :: on the line and putting
+the description afterwards.
\item the default value ---
This must be one of the allowed values.
@@ -468,9 +469,6 @@ Convergence stuff.
\end{Lentry}
-%These time bins can be given in the {\tt schedule.ccl} file with
-%or without the initial {\tt CCTK\_}, and in any case.
-%[[ This is redundant. ]]
\item[{\tt STORAGE}] The {\tt STORAGE} keyword specifies any groups for
which memory should be
@@ -549,12 +547,12 @@ In both cases the group of variables {\tt scalarfield} are synchronised
across processes when the routine is exited.
\begin{verbatim}
-schedule WaveToyF77\_Evolution AS WaveToy\_Evolution AT evol \\
-{ \\
- LANG: Fortran \\
- STORAGE: scalartmps \\
- SYNC: scalarfield \\
-} "Evolution of 3D wave equation" \\
+schedule WaveToyF77_Evolution AS WaveToy\_Evolution AT evol
+{
+ LANG: Fortran
+ STORAGE: scalartmps
+ SYNC: scalarfield
+} "Evolution of 3D wave equation"
schedule WaveToyC_Evolution AS WaveToy_Evolution AT evol
{
@@ -603,7 +601,7 @@ Extension & Coding Language \\
\hline
{\t .F} & Fortran90 fixed form \\
{\t .f} & (no preprocessing) Fortran90 fixed form\\
-{\t .F90} & Fortran90 free form form\\
+{\t .F90} & Fortran90 free form\\
{\t .f90} & (no preprocessing) Fortran90 free form\\
{\t .F77} & Fortran77 \\
{\t .f77} & (no preprocessing) Fortran77\\
@@ -633,7 +631,7 @@ yourself.
\subsection{{\tt make.code.defn} based thorn building}
\label{sec:mabathbu}
-This is the standard way to do compile your thorn's source files.
+This is the standard way to compile your thorn's source files.
The Cactus make system looks for a file called {\tt make.code.defn} in that
directory (if there is no file called {\tt Makefile} in the {\tt src} directory). At its simplest, this file contains two lines
@@ -675,7 +673,7 @@ The makefile is passed the following variables
\item [{\tt \$(SCRATCH\_BUILD)}] the scratch directory where Fortran90 module
files should end up if they need to be seen by other thorns.
-\item [{\tt \$(NAME)}]
+\item [{\tt \$(NAME)}] the name of the library to be built
\end{Lentry}
@@ -705,12 +703,12 @@ Cactus variables are sorted into {\tt groups}. All variables in a group
are of the same type, and have
the same attributes, and most Cactus operations act on a group as a whole.
-Cactus variables are used instead of local variables for a number of reasons
+Cactus variables are used instead of local variables for a number of reasons:
\begin{itemize}
\item Cactus variables can be made visable to other thorns, allowing
thorns to communicate and share data,
\item Cactus variables can be distributed and communicated
- between processors, allowing parallel computation,
+ among processors, allowing parallel computation,
\item A database of Cactus variables, and their attributes, is held by
the Flesh, and this information is used by thorns, for example for
obtaining a list of variables for checkpointing,
@@ -766,7 +764,7 @@ Groups can be either {\tt scalars}, {\tt grid functions (GFs)}, or {\tt grid arr
\item[SCALAR]
This is just a single number, e.g. the total energy of some field. These
variables aren't communicated between processors --- what would be the
-result of such communication ?
+result of such communication?
\item[GF]
This is the most common group type. A GF is a an array with a
specific size, set at run-time in the parameter file, which is distributed
@@ -784,8 +782,8 @@ quicker methods available for GFs.
\section{Timelevels}
-These are best introduced by an example using finite differencing,
-take the 1-D wave equation
+These are best introduced by an example using finite differencing.
+Consider the 1-D wave equation
\begin{equation}
\frac{\partial^2 \phi}{\partial t^2} = \frac{\partial^2 \phi}{\partial x^2}
\end{equation}
@@ -794,12 +792,12 @@ an equation relating the solution at different times. There are many ways
to do this, one of which produces the following difference equation
\begin{equation}
\label{equation:difference}
-\phi(t+\Delta t,x) -2\phi(t,x) +\phi(t-\Delta t,x) = \frac{\Delta t}{\Delta x^2} \lbrace{\phi(t,x+\Delta x) -2\phi(t,x) +\phi(t,x-\Delta x)}\rbrace
+\phi(t+\Delta t,x) -2\phi(t,x) +\phi(t-\Delta t,x) = \frac{\Delta t^2}{\Delta x^2} \lbrace{\phi(t,x+\Delta x) -2\phi(t,x) +\phi(t,x-\Delta x)}\rbrace
\end{equation}
which relates the three timelevels $t+\Delta t$, $t$, and $t-\Delta t$.
Obviously the code could just use three variables, one for each timelevel.
-This turns out, however, to be inefficient as, as soon as the time is
+This turns out, however, to be inefficient, because as soon as the time is
incremented to $t+\Delta t$, it would be necessary to copy data from the
$t$ variable to the $t-\Delta t$ variable and from the $t+\Delta t$ variable
to the $t$ variable.
@@ -823,7 +821,7 @@ loop:
it = it + 1
prestep
evolve
- poststep
+ poststep
analysis
\end{verbatim}
@@ -835,13 +833,13 @@ not be used until they have been updated.
All timelevels, except the current level, should be considered {\bf read-only} during evolution, that is their values should not be changed by thorns.
The exception to this rule is for function initialisation, when the
-values at the previous timelevels do need to be explicately filled out.
+values at the previous timelevels do need to be explicitly filled out.
\section{Size and Distrib}
-A Cactus array has a size set at runtime by parameters.
+A Cactus grid function or array has a size set at runtime by parameters.
This size can either be the global size of the array across all processors
({\tt DISTRIB=DEFAULT}),
or, if {\tt DISTRIB=CONSTANT} the specified
@@ -851,22 +849,25 @@ responsible for assigning the size on each processor.
\section{Ghost Size}
-Cactus is based upon a {\tt distributed computing} paradigm. That is
-the problem domain is split into blocks, each of which is assigned to a
-processor. For
-hyperbolic and parabolic problems the blocks only need to communicate at the edges.
-
-To illustrate this, take the example of the wave equation again, equation \ref{equation:difference}
-describes a possible time-evolution scheme. On examination you can see that to
-generate the data at the point ($t+\Delta t$, $x$) we need data from the four points
-($t$, $x$), ($t-\Delta t$, $x$), ($t$, $x+\Delta x$) and ($t$, $x-\Delta x$) only.
-Ignoring the points at $x$, which are obviously always available, you can see that the
-algorithm requires a point on either side of the point $x$, i.e. this algorithm
-has {\tt stencil size} 1. Similarly algorithms requiring two points on either side
-have stencil size 2, etc.
-
-Now, if you evolve the above scheme, it becomes apparent that at each iteration the number
-of grid points you can evolve decreases by one at each edge (see figure \ref{fig:noghost}).
+Cactus is based upon a {\tt distributed computing} paradigm. That is,
+the problem domain is split into blocks, each of which is assigned to
+a processor. For hyperbolic and parabolic problems the blocks only
+need to communicate at the edges.
+
+To illustrate this, take the example of the wave equation again.
+Equation \ref{equation:difference} describes a possible time-evolution
+scheme. On examination you can see that to generate the data at the
+point ($t+\Delta t$, $x$) we need data from the four points ($t$,
+$x$), ($t-\Delta t$, $x$), ($t$, $x+\Delta x$) and ($t$, $x-\Delta x$)
+only. Ignoring the points at $x$, which are obviously always
+available on a given processor, you can see that the algorithm
+requires a point on either side of the point $x$, i.e. this algorithm
+has {\tt stencil size} 1. Similarly algorithms requiring two points
+on either side have stencil size 2, etc.
+
+Now, if you evolve the above scheme, it becomes apparent that at each
+iteration the number of grid points you can evolve decreases by one at
+each edge (see figure \ref{fig:noghost}).
\begin{figure}[ht]
\begin{center}
@@ -875,23 +876,36 @@ of grid points you can evolve decreases by one at each edge (see figure \ref{fig
\includegraphics[angle=0,width=8cm]{1dnoghost.eps}
\fi
\end{center}
-%\caption[]{}
-% I know this figure is rubbish, but it's after 2am and I'll fix it up later.
+\caption{Distributed wave equation with no ghostzones}
\label{fig:noghost}
\end{figure}
-At the outer boundary of the physical domain the data for the boundary point can be
-generated by the boundary conditions, however at internal boundaries the data has to
-be copied from the adjacent processor. It would be inefficient to copy each point
-individually, so instead, a number of {\tt ghostzones} are created at the internal boundaries.
-A ghostzone consists of a copy of the whole plane (in 3d, line in 2d, point in 1d) of the data
-from the adjacent processor. I.e. the array on each processor is augmented with copies of
-points from the adjacent processors, thus allowing the algorithm to proceed {\tt on the
-points owned by this processor} without having to worry about copying data. Once the
-data has been evolved one step, the data in the ghostzones can be exchanged (or
-{\tt synchronised}) between processors in one fell swoop before the next evolution step.
-(See figure \ref{fig:withghost}.) Note that you should have at least as many ghostzones as
-your stencil-size requires.
+At the outer boundary of the physical domain the data for the boundary
+point can be generated by the boundary conditions, however at internal
+boundaries the data has to be copied from the adjacent processor. It
+would be inefficient to copy each point individually, so instead, a
+number of {\bf ghostzones} are created at the internal boundaries. A
+ghostzone consists of a copy of the whole plane (in 3d, line in 2d,
+point in 1d) of the data from the adjacent processor. I.e. the array
+on each processor is augmented with copies of points from the adjacent
+processors, thus allowing the algorithm to proceed {\bf on the points
+owned by this processor} without having to worry about copying data.
+Once the data has been evolved one step, the data in the ghostzones
+can be exchanged (or {\bf synchronised}) between processors in one
+fell swoop before the next evolution step. (See figure
+\ref{fig:withghost}.) Note that you should have at least as many
+ghostzones as your stencil-size requires.
+
+\begin{figure}[ht]
+\begin{center}
+\ifpdf
+\else
+\includegraphics[angle=0,width=8cm]{withghost.eps}
+\fi
+\end{center}
+\caption{Distributed wave equation with ghostzones}
+\label{fig:withghost}
+\end{figure}
\section{Staggering}
@@ -899,7 +913,7 @@ The staggering of a gridfunction or array describes the {\em physical}
placement of that gridfunction relative to the supporting grid
structure. For example, a gridfunction does not have to
be placed at the intersection
-of the ``grid lines''. It can moved by half a grid spacing in
+of the ``grid lines''. It can be moved by half a grid spacing in
any or all dimensions. In the latter case, it will be placed in
the center of a cell.
@@ -915,7 +929,7 @@ used.
The type of staggering applied to a gridfunction can be specified in
the {\tt interface.ccl} file by the attribute {\tt stagger} (see
-\ref{sec:in}). Cactus supports three kind of staggering
+\ref{sec:in}). Cactus supports three kinds of staggering
per dimension. The physical location of a gridfunction is shifted
relative to the default position by adding the following values to the
stagger attribute:
@@ -924,20 +938,20 @@ stagger attribute:
relative to the default gridpoint.
\item[{\tt C}] centre staggering. The physical location is offset by
half of the grid spacing in the positive direction (or to the right).
-\item[{\tt P}] full staggerd. P refers to plus. The physical location
+\item[{\tt P}] full staggered. P refers to plus. The physical location
is offset by a full gridspacing in the positive direction (or the
right).
\end{Lentry}
For multi dimensional gridfunctions you concatenate the code
characters in xyz order. In Figure \ref{fig:stagger1} we show four different
-staggerings of a two dimensional grid functions. The solid black grid
-circles show the default location of the grid functions at the
+staggerings of a two dimensional grid function. The solid black grid
+circles show the default location of the grid function at the
intersections of the grid lines. In (A) we show an additional grid
function of type {\tt stagger=MC}: no staggering in x direction,
center staggered in y direction. In (B) we have {\tt stagger=CM} and
staggering each direction ({\tt stagger=CC}) is shown in (C). The full
-staggering in (D) ({\tt stagger=PP}) obeyes the same rules, but is
-rather unusual; included here for completeness.
+staggering in (D) ({\tt stagger=PP}) obeys the same rules, but is
+rather unusual; it is included here for completeness.
\begin{figure}[ht]
\def\epsfsize#1#2{0.45#1}
@@ -964,7 +978,7 @@ points (arrows) are accessed by the same indices.}
Parameters are the means by which the user specifies the run-time behaviour of
the code. The user specifies values for parameters in the parameter file, and
then the flesh validates these values against the ranges the thorn writers have
-specified to be valid. Once validated, parameters values are fixed, and cannot
+specified to be valid. Once validated, parameter values are fixed, and cannot
be changed (unless the parameter is specified to be steerable, see below).
The full specification for a parameter decalaration is
@@ -987,9 +1001,9 @@ Parameters can be of several types:
\item[String] Can have any string value
\end{Lentry}
-Each parameter can be validated against a set of allowed values or ranges, each
-of which has a description associated with it. The type of range is determined
-by the type of parameter.
+Each parameter can be validated against a set of allowed values or
+ranges, each of which has a description associated with it. The type
+of range is determined by the type of parameter.
\subsection{Integer}
@@ -1002,34 +1016,24 @@ lower:upper:stride
\end{verbatim}
where {\em lower} and {\em upper} specify the lower and upper allowed
-range, and {\em stride} allows numbers to be be missed out.
-
-e.g.
-
+range, and {\em stride} allows numbers to be be missed out. e.g.
\begin{verbatim}
-
1:21:2
-
\end{verbatim}
+means the value must be an odd number between one and twenty-one
+(inclusive).
-means the value must be between one and twenty-one (inclusive), and
-must be of the form $1+2n$ where $n$ is an integer.
-
-A missing end of range (or a `\*') implies negative or positive
+A missing end of range (or a `*') implies negative or positive
infinity, and the default stride is one.
\subsection{Real}
The range specification is of the form
-
\begin{verbatim}
-
lower:upper
-
\end{verbatim}
-
where {\em lower} and {\em upper} specify the lower and upper allowed
-range. A missing end of range (or a `\*') implies negative or positive
+range. A missing end of range (or a `*') implies negative or positive
infinity. The above is inclusive of the end-points. A '(' (or ')')
before (or after) the lower (or upper) range specifies an open end-point.
@@ -1051,7 +1055,7 @@ to be portable.
\section{Scope}
Parameters can be {\em GLOBAL}, {\em RESTRICTED}, or {\em PRIVATE}.
-Global parameters are visible to all thorns. A restricted parameters
+Global parameters are visible to all thorns. Restricted parameters
are visible to any thorn which chooses to {\em USE} or {\em EXTEND}
it. A private parameter is only visible to the thorn which declares
it.
@@ -1122,24 +1126,25 @@ allowing other thorns to operate independently of which one is active.
\section{The Schedule Block}
-The schedule block specifies further details of the scheduled function or group.
+The schedule block specifies further details of the scheduled function
+or group.
\begin{Lentry}
-\item[LANG]
+\item[\texttt{LANG}]
This specifies the language of the routine. Currently this is either
C or Fortran.
-\item[{\tt STORAGE}] The {\tt STORAGE} keyword specifies groups for
-which memory should be
-allocated for the duration of the routine or schedule group.
-The storage status reverts to its previous status after the
-\item[TRIGGER]
+\item[\texttt{STORAGE}] The {\tt STORAGE} keyword specifies groups for
+which memory should be allocated for the duration of the routine or
+schedule group. The storage status reverts to its previous status
+after completion of the routine or schedule group.
+\item[\texttt{TRIGGER}]
This is only used for items scheduled at {\em CCTK\_ANALYSIS}. The
item will only be executed if output is due for at least one
variable in one of the listed groups.
-\item[SYNC]
+\item[\texttt{SYNC}]
On exit from this item the ghost zones of the listed groups will be
exchanged.
-\item[OPTIONS]
+\item[\texttt{OPTIONS}]
This is for miscellaneous options. The only currently supported
option is {\em GLOBAL} which tells the driver that this routine does
not use a local grid, but instead uses global operations to process
@@ -1173,12 +1178,13 @@ choosing a language to work in
\begin{itemize}
\item All functions designed for application thorn writers are available
- in all languages, however some of interfaces for infrastructure
+ in all languages, however some interfaces for infrastructure
thorn writing are only available from {\tt C} or {\tt C++}.
-\item If you are writing in {\tt FORTRAN}, use {\tt F77} is you want
- to distribute your code to people who may not be able to afford
- to buy proprietory {\tt F90} compilers.
+% This is no longer relevant?
+%\item If you are writing in {\tt FORTRAN}, use {\tt F77} if you want
+% to distribute your code to people who may not be able to afford
+% to buy proprietory {\tt F90} compilers.
\item Stick to {\tt C} rather than {\tt C++}, unless you really need
features from {\tt C++}, this will help you with portability.
@@ -1192,7 +1198,7 @@ use machine dependent extensions.
\section{What the Flesh provides}
-The flesh provides for thorns.
+The flesh provides for thorns:
\begin{Lentry}
\item [{\tt Variables}]
\item [{\tt Parameters}]
@@ -1230,12 +1236,12 @@ top of the file the header
\end{verbatim}
A Cactus macro {\tt CCTK\_ARGUMENTS} is defined for each thorn
-to contain
+to contain:
\begin{itemize}
\item General information about the grid hierarchy, for example
the number of grid points used. See Section \ref{sec:cava2} for a
complete list.
-\item All the grid variables defined in the thorns {\tt interface.ccl}
+\item All the grid variables defined in the thorn's {\tt interface.ccl}
\item All the grid variables required from other thorns as requested by
the {\tt inherits} and {\tt friend} lines in the {\tt interface.ccl}
\end{itemize}
@@ -1264,7 +1270,7 @@ the top of the file the header
\end{verbatim}
In Fortran, special care should be taken with string valued parameters.
-This parameters are passed as C pointers, and can not be treated as
+These parameters are passed as C pointers, and can not be treated as
normal Fortran strings. To compare a string valued parameter and Fortran
string use the function {\tt CCTK\_Equals}. To print the value of a string
valued parameter to screen, use the subroutine {\tt CCTK\_PrintString}.
@@ -1343,11 +1349,10 @@ that it may be necessary to cast the arguements to {\it e.g}
when a {\tt CCTK\_INT} parameter and the Cactus variable {\tt cctk\_iteration}
(which is declared to be {\tt INTEGER}) are used,
in which case the correct code is
-{\tt
\begin{verbatim}
MOD(cctk_iteration,INT(MyParameter))
\end{verbatim}
-}
+
\subsection{C Routines}
@@ -1369,10 +1374,10 @@ top of the file the header
A Cactus macro {\tt CCTK\_ARGUMENTS} is defined for each thorn
to contain
\begin{itemize}
-\item General information about the grid hierachy, for example
- the number of grid points on the processor. See Section \ref{sec:cava2} for a
- complete list.
-\item All the grid variables defined in the thorns {\tt interface.ccl}
+\item General information about the grid hierachy, for example the
+number of grid points on the processor. See Section \ref{sec:cava2}
+for a complete list.
+\item All the grid variables defined in the thorn's {\tt interface.ccl}
\item All the grid variables required from other thorns as requested by
the {\tt inherits} and {\tt friend} lines in the {\tt interface.ccl}
\end{itemize}
@@ -1403,7 +1408,7 @@ using them with the macro {\tt DECLARE\_CCTK\_PARAMETERS}
\subsubsection{Example}
-The C routine "MyCRoutine" is scheduled in the {\tt schedule.ccl} file,
+The C routine ``MyCRoutine'' is scheduled in the {\tt schedule.ccl} file,
and uses Cactus parameters. The source file should look like
\begin{verbatim}
#include "cctk.h"
@@ -1428,17 +1433,16 @@ functionality available in Fortran. These functions are {\tt CCTK\_Cmplx},
{\tt CCTK\_CmplxReal}, {\tt CCTK\_CmplxImag}, {\tt CCTK\_CmplxConjg},
{\tt CCTK\_CmplxAdd}, {\tt CCTK\_CmplxSub}, {\tt CCTK\_CmplxMul},
{\tt CCTK\_CmplxDiv}, {\tt CCTK\_CmplxExp}, {\tt CCTK\_CmplSin},
-{\tt CCTK\_CmplxAbs}, {\tt CCTK\_CmplxLog}, {\tt CCTK\_CmplSqrt}.
+{\tt CCTK\_CmplxAbs}, {\tt CCTK\_CmplxLog}, and {\tt CCTK\_CmplSqrt}.
\subsubsection{Specifically for C Programmers}
Grid functions are held in memory as 1D C arrays. These are laid
out in memory as in Fortran. This means that the first index should
-be incremented through most rapidly. As can be seen in the example
+be incremented through most rapidly. This is illustrated in the example
below.
-
Cactus provides
macros to find the 1D index which is needed from the multidimensional
indices which are usually used. There is a macro for each dimension of
@@ -1456,9 +1460,8 @@ for (k=0; k<cctk_lsh[2]; k++)
}
}
\end{verbatim}
-
+%
Here, {\tt CCTK\_GFINDEX3D(cctkGH,i,j,k)]} expands to
-
\begin{verbatim}
((i) + cctkGH->cctk_lsh[0]*((j)+cctkGH->cctk_lsh[1]*(k)))
\end{verbatim}
@@ -1466,22 +1469,27 @@ Here, {\tt CCTK\_GFINDEX3D(cctkGH,i,j,k)]} expands to
\subsection{Cactus Variables}
\label{sec:cava2}
-The Cactus variables which are passed through the macros
-{\tt CCTK\_ARGUMENTS}, etc are
+The Cactus variables which are passed through the macro
+{\tt CCTK\_ARGUMENTS} are
\begin{Lentry}
\item [{\tt cctk\_dim}] An integer with the number of dimensions
- used for this grid hierarchy
+ used for this grid hierarchy.
\item [{\tt cctk\_lsh}] An array of {\tt cctk\_dim} integers
- with the local grid size on this processor
+ with the local grid size on this processor.
\item [{\tt cctk\_gsh}] An array of {\tt cctk\_dim} integers
- with the {\it global} grid size.
-\item [{\tt cctk\_delta\_time}] A {\tt CCTK\_REAL} with the timestep
-\item [{\tt cctk\_time}] A {\tt CCTK\_REAL} with the current time
-\item [{\tt cctk\_delta\_space}] An array of {\tt cctk\_dim} {\tt CCTK\_REAL}s with
- the grid spacing in each direction
+ with the {\it global} grid size.
+\item [\texttt{cctk\_iteration}] The current iteration number.
+\item [{\tt cctk\_delta\_time}] A {\tt CCTK\_REAL} with the timestep.
+\item [{\tt cctk\_time}] A {\tt CCTK\_REAL} with the current time.
+\item [{\tt cctk\_delta\_space}] An array of {\tt cctk\_dim} {\tt
+CCTK\_REAL}s with the grid spacing in each direction.
\item [{\tt cctk\_nghostzones}] An array of {\tt cctk\_dim} integers with
- the number of ghostzones used in each direction
-\item [{\tt cctkGH}] A C pointer identifying the grid hierachy
+ the number of ghostzones used in each direction.
+\item [{\tt cctkGH}] A C pointer identifying the grid hierachy.
+%\item [{\tt cctk\_from}] The index value from which the user should start loops.
+%\item [{\tt cctk\_to}] ... end loops.
+%\item [{\tt cctk\_origin\_space}] The coordinates of the spatial origin?
+%\item [{\tt cctk\_lssh}] This is an internal array used to hold array extents for staggering. One should use the macro CCTK_LSSH(,) to access its elements.
\end{Lentry}
The following variables describe the location of the local
@@ -1490,7 +1498,7 @@ the global grid.
\begin{itemize}
\item {\tt cctk\_lbnd}
An array of {\tt cctk\_dim} integers
- containing the lowest index (in each direction)
+ containing the lowest index (in each direction)
of the local grid, as seen on the global grid. Note that these indices
start from zero, so you need to add one when using them in
Fortran thorns.
@@ -1524,7 +1532,7 @@ The following variable is used for identifing convergence levels. {\tt NOTE:} Co
The variables {\tt cctk\_delta\_space} and {\tt cctk\_delta\_time}
denote the grid spacings on the {\em base} grid. If you are using
-a grid refinement method, you need yo calculate the grid spacings
+a grid refinement method, you need to calculate the grid spacings
on the grid you are on. There are Cactus macros provided for this,
with the syntax {\tt CCTK\_DELTA\_SPACE(dir)} and {\tt CCTK\_DELTA\_TIME}
for both C and Fortran. It is recommended that these macros are
@@ -1575,26 +1583,25 @@ different architectures or configurations.
\subsection{Staggering}
\label{sec:st}
-
{\bf Indexing, ghostzones, etc.}
Note that staggering does not make any changes to the indexing of a
-gridfunction: the black solid circles in diagramm \ref{fig:stagger2} and their
+gridfunction: the black solid circles in diagram \ref{fig:stagger2} and their
associated staggered gridfunctions (connected by arrows) have the same index!
Since the gridfunction does not ``know'' anything about the physical
-location (it's only addressed by indeces) why add staggering if the
-indexing is the same ?
+location (it's only addressed by indices) why add staggering if the
+indexing is the same?
Indeed, you could roll your own, but there compelling reasons:
-Readabilty and you are able to query the staggertype of a
+Readabilty and the fact that you are able to query the staggertype of a
gridfunction. More important: in the way the grid is laid out, there is one grid
point {\em less} for {\tt M} and {\tt P} staggered grid functions. This is
illustrated in picture \ref{fig:stagger2}, which shows 15 gridpoints distributed
-across 3 processors. The solid black cirlces show the default
+across 3 processors. The solid black circles show the default
location of the gridfunctions, the grey circles depict the ghostzones.
Note that the number of center staggered gridpoints (fat crosses)
-corresponds to the number of default gridpoint on all processors but
-the last one. (Same is true for full staggered gridpoints).
+corresponds to the number of default gridpoints on all processors but
+the last one. (The same is true for full staggered gridpoints).
{\bf Staggertypes}
The string specifying the staggering is encoded in a number called
@@ -1612,7 +1619,7 @@ x-direction: {\em directional staggerindex} = CCTK\_STAGGER\_C (value 1).
\item[{\tt CCTK\_NO\_STAGGER}] value to indicate no staggering
\item[{\tt CCTK\_STAGGER}] value to indicate staggering
\item[{\tt CCTK\_NSTAGGER}] number of coded staggerings (3)
-\item[{\tt CCTK\_STAGGER\_ERROR}] failed stagger operation , negative
+%\item[{\tt CCTK\_STAGGER\_ERROR}] failed stagger operation, negative
\end{Lentry}
@@ -1634,8 +1641,8 @@ treat this case in a easy way is explained below. }
\end{figure}
When a thorn programmer uses staggered gridpoints, he has to be aware
-of this gridpoint anomaly. This can be done easiest by using the {\tt
-CCTL\_LSSH(<dir\_staggertype>,<direction>)} macro. For a given staggertype
+of this gridpoint anomaly. This can be done most easily by using the {\tt
+CCTK\_LSSH(<dir\_staggertype>,<direction>)} macro. For a given staggertype
and direction, this 2d array returns the local number of gridpoints,
including ghostzones and the necessary change for the staggering on
the outermost processor.
@@ -1658,57 +1665,49 @@ ranging from $1 \ldots$.}
Several functions exist to derive the staggertype for a given group
and for a certain direction.
\begin{Lentry}
-\item[{\tt int CCTK\_GroupStaggerIndexGI(int group\_index)}] returns the
-{\em staggerindex} for a given group index.
+\item[{\tt int CCTK\_GroupStaggerIndexGI(int group\_index)}] %returns the
+%{\em staggerindex} for a given group index.
\item[{\tt call CCTK\_GroupStaggerIndexGI(int staggerindex, int
group\_index)}] returns the {\em staggerindex} for a given group index.
\end{Lentry}
\vskip .45cm
\begin{Lentry}
-\item[{\tt int CCTK\_GroupStaggerIndexGN(char *group\_name)}] returns the
-{\em staggerindex} for a given group name.
+\item[{\tt int CCTK\_GroupStaggerIndexGN(char *group\_name)}] %returns the
+%{\em staggerindex} for a given group name.
\item[{\tt call CCTK\_GroupStaggerIndexGN(int staggerindex, char *group\_name)}] returns the
{\em staggerindex} for a given group name. \vskip .25cm
\end{Lentry}
\vskip .45cm
\begin{Lentry}
-\item[{\tt int CCTK\_GroupStaggerIndexVI(int variable\_index)}] returns the
-{\em staggerindex} for a given variable index.
+\item[{\tt int CCTK\_GroupStaggerIndexVI(int variable\_index)}] %returns the
+%{\em staggerindex} for a given variable index.
\item[{\tt call CCTK\_GroupStaggerIndexVI(int staggerindex, int variable\_index)}] returns the
{\em staggerindex} for a given variable index.
\end{Lentry}
\vskip .45cm
\begin{Lentry}
-\item[{\tt int CCTK\_GroupStaggerIndexVN(char *variable\_name)}] returns the
-{\em staggerindex} for a given variable name.
+\item[{\tt int CCTK\_GroupStaggerIndexVN(char *variable\_name)}] %returns the
+%{\em staggerindex} for a given variable name.
\item[{\tt call CCTK\_GroupStaggerIndexVN(int staggerindex, char *variable\_name)}] returns the
{\em staggerindex} for a given variable name.
\end{Lentry}
\vskip .45cm
\begin{Lentry}
-\item[{\tt int CCTK\_StaggerIndex(char *stagger\_string)}] return the {\em
-staggerindex} for a given stagger string.
+\item[{\tt int CCTK\_StaggerIndex(char *stagger\_string)}] %return the {\em
+%staggerindex} for a given stagger string.
\item[{\tt call CCTK\_StaggerIndex(int staggerindex, char *stagger\_string)}] return the {\em
staggerindex} for a given stagger string.
\end{Lentry}
\vskip .45cm
\begin{Lentry}
-\item[{\tt int CCTK\_StaggerIndex(char *stagger\_string)}] return the {\em
-staggerindex} for a given stagger string.
-\item[{\tt call CCTK\_StaggerIndex(int staggerindex, char *stagger\_string)}] return the {\em
-staggerindex} for a given stagger string.
-\end{Lentry}
-\vskip .45cm
-
-\begin{Lentry}
\item[{\tt int CCTK\_DirStaggerIndex(int direction, char *stagger\_string)}]
-returns the {\em directional staggerindex} for a given direction and
-stagger string.
+%returns the {\em directional staggerindex} for a given direction and
+%stagger string.
\item[{\tt call CCTK\_DirStaggerIndex(int dir\_staggerindex, int direction, char *stagger\_string)}]
returns the {\em directional staggerindex} for a given direction and
stagger string.
@@ -1717,8 +1716,8 @@ stagger string.
\begin{Lentry}
\item[{\tt int CCTK\_DirStaggerIndexI(int direction, char *stagger\_type)}]
-returns the {\em directional staggerindex} for a given direction and
-staggerindex.
+%returns the {\em directional staggerindex} for a given direction and
+%staggerindex.
\item[{\tt call CCTK\_DirStaggerIndexI(int dir\_direction, char *stagger\_type)}]
returns the {\em directional staggerindex} for a given direction and
staggerindex.
@@ -1749,7 +1748,7 @@ is a parallel unigrid driver.
\begin{Lentry}
\item[{\tt CCTK\_nProcs}] Returns the number of processors being used
\item[{\tt CCTK\_MyProc}] Returns the processor number (this starts at
- processor number zero
+ processor number zero)
\item[{\tt CCTK\_SyncGroup}] Synchronises a group of variables by
exchanging the values held in each processor ghostzones with the
physical values of their neighbours
@@ -1766,7 +1765,7 @@ is a parallel unigrid driver.
The flesh provides utility routines for registering and querying coordinate
information. The flesh does not provide any coordinates itself, these must be
supplied by a thorn. Thorns are not required to register coordinates to the
-flesh, but registering coordinates provides a means for infrastructure thorns,
+flesh, but registering coordinates provides a means for infrastructure thorns
to make use of coordinate information.
Coordinate support is still being developed in the Cactus flesh. At the moment,
@@ -1780,7 +1779,7 @@ Coordinates can be registered, with any chosen name, with an existing coordinate
system, along with their direction or index in the coordinate system.
Optionally, the coordinate can also be associated with a given grid variable.
A separate call can register the global range for a coordinate on a given grid
-hierachy.
+hierarchy.
A registered coordinate system can be refered to by both its name and an
associated handle. Passing such an integer handle instead of the name string
@@ -1836,7 +1835,7 @@ Provides the global range of a coordinate on a given grid hierachy
\item[{\tt CCTK\_CoordLocalRange}]
Provides the local range of a coordinate on a processor for
- a given grid hierachy. WARNING: This utility only currently works for regular cartesian grids!!
+ a given grid hierachy. WARNING: This utility only currently works for regular cartesian grids.
\end{Lentry}
@@ -1846,7 +1845,7 @@ Provides the local range of a coordinate on a processor for
To allow flexible IO, the flesh itself does not provide any output
routines, however it provides a mechanism for thorns to register
-different routines as IO methods (see chapter \ref{chap:io_methods}).
+different routines as IO methods. % (see chapter \ref{chap:io_methods}). -- there is no such chapter
Application thorns can interact with the different IO methods through
the following function calls:
@@ -1909,7 +1908,7 @@ invocation of interpolation operators.
Interpolation is done on arrays which can be either processor-local or
distributed among all processors in the computational domain. Thorns
can register an interpolation operator under a unique name as a set of
-2 routines -- one for every array type. If an operator cannot handle
+2 routines -- one for each array type. If an operator cannot handle
both types, the corresponding routine may be left unregistered. At
registration every interpolation operator gets assigned a unique
integer number which is used as a handle to refer to the operator
@@ -1951,11 +1950,11 @@ The flesh routines for invoking an interpolation operator are:
\label{sec:reop}
A reduction operation can be defined as an operation on variables
-distributed across multiple processor resulting in a single number.
-Typical reduction operations are: sum, minimum/maximum value, boolean
-operations. A typical application is, for example,
-finding the maximum reduction from processor local error estimates,
-therefor making the previous processor local error known to all processors.
+distributed across multiple processors resulting in a single number.
+Typical reduction operations are sum, minimum/maximum value, and boolean
+operations. A typical application is, for example,
+sending to each processor the maximum value of the grid function holding the
+truncation error.
The exchange of
information across processors needs the functionality of a
@@ -1964,83 +1963,80 @@ reduction operation itself is not part of the flesh, instead Cactus (again)
provides a registration mechanism for thorns to register routines they
provide as reduction operators. The different operators are
identified by their name and/or a unique number, called a {\em handle}.
-
The registration mechanism gives the advantage of a common
interface while hiding the individual communication calls in the
layer.
In Cactus, reduction operators can in principle be applied to
-grid functions, arrays and scalars, as well as to local arrays. Note that
+grid functions, arrays and scalars, as well as to local (non CCTK-) arrays. Note that
different implementations of reduction operators may be limited in
-the objects they can be applied to.
-There is a fundamental difference between the reduction operation on
-grid functions and quantities as arrays.
+the types of objects to which they can be applied.
+There is a fundamental difference between a reduction operation on
+CCTK variables (grid functions, arrays, scalars) and arbitrary
+(non-CCTK, local) arrays (which includes a single variable as a special case
+of a one element array).
-\vskip .25cm
+\vskip .25cm
{\bf Obtaining the reduction handle}
Before calling the routine which performs the reduction operation,
-the handle, which indentifies the operation must be derived from its
-registered name.
-
+the handle, which indentifies the operation, must be derived from its
+registered name. To obtain a handle for the reduction of a CCTK variable, use
+%
\begin{verbatim}
-
int CCTK_ReductionHandle(const char *reduction_name);
+call CCTK_ReductionHandle(reduction_handle, reduction_name)
integer reduction_handle
character*(*) reduction_name
-call CCTK_ReductionHandle(reduction_handle, reduction_name)
-
-
+\end{verbatim}
+%
+(for C or Fortran respectively), while for a local, non-CCTK-array, use
+%
+\begin{verbatim}
int CCTK_ReductionArrayHandle(const char *reduction_name);
+call CCTK_ReductionArrayHandle(reduction_handle, reduction_name)
integer reduction_handle
character*(*) reduction_name
-call CCTK_ReductionArrayHandle(reduction_handle, reduction_name)
-
\end{verbatim}
-
-\vskip .25cm
-
\begin{Lentry}
-\item[{\tt reduction\_handle}]
-In Fortran the name of the variable will
-contain the handle value after the call. In C this value is the
-function value.
+\item[{\tt reduction\_handle}] Each function returns a reduction
+handle. In Fortran the result will be stored in this parameter.
+A negative handle value indicates failure to
+identify the correct operator.
+
\item[{\tt reduction\_name}]
is the name under which the operator has
been registered by the providing thorn. The only thorn in the standard
Computational Toolkit release which provides reduction operators is
{\tt CactusPUGH/PUGHReduce}.
-\item[{\bf error checking}]
-negative handle value indicates failure to
-identify the correct operator.
\end{Lentry}
-Get a integer handle corresponding to a given reduction operator.
-The operator is identified by the name it was registered with.
+%Get a integer handle corresponding to a given reduction operator.
+%The operator is identified by the name it was registered with.
(Note that although it would appear to be far more convenient to
pass the name of the reduction operator directly to the following
function call to {\t CCTK\_Reduce} this causes problems with the
translation of strings from {\t FORTRAN} to {\t C} with variable
argument lists).
-\vskip 0.25cm
-
+\vskip 0.25cm
{\bf The general reduction interface}
-The main interfaces for reduction operations are quite powerful (and
-hence rather complicated) To ease the use of these main interfaces, wrappers
-designed for specific and more restricted use are described below. If
-uncertain, you should use these.
-{\t
-\begin{verbatim}
+The main interfaces for reduction operations described here are quite
+powerful (and hence rather complicated). To ease the use of these
+main interfaces, wrappers designed for specific and more restricted
+use are described in the next section. If uncertain, you should use
+those simpler interfaces.
+To reduce any CCTK variable, use
+\begin{verbatim}
int CCTK_Reduce( cGH *GH,
- int proc,
+ int processor,
int operation_handle,
int num_out_vals,
int type_out_vals,
@@ -2048,19 +2044,21 @@ int CCTK_Reduce( cGH *GH,
int num_in_fields,
...);
-
-call CCTK_Reduce( int returnvalue,
- cctkGH,
- int processor,
- int operation_handle,
- int num_out_vals,
- int type_out_vals,
- out_vals,
- int num_in_fields,
+call CCTK_Reduce( integer returnvalue,
+ CCTK_POINTER cctkGH,
+ integer processor,
+ integer operation_handle,
+ integer num_out_vals,
+ integer type_out_vals,
+ CCTK_POINTER out_vals,
+ integer num_in_fields,
... )
-
+\end{verbatim}
+(for C or Fortran respectively).
+To reduce any non-CCTK (local) variable, use
+\begin{verbatim}
int CCTK_ReduceArray( cGH *GH,
- int proc,
+ int processor,
int operation_handle,
int num_out_vals,
int type_out_vals,
@@ -2070,67 +2068,83 @@ int CCTK_ReduceArray( cGH *GH,
int type_in_arrays,
... )
-call CCTK_ReduceArray(int returnvalue,
- cctkGH,
- int processor,
- int operation_handle,
- int num_out_vals,
- int type_out_arrays,
- void out_vals,
- int num_dims,
- int num_in_arrays,
- int type_in_arrays,
- ... )
+call CCTK_ReduceArray( integer returnvalue,
+ CCTK_POINTER cctkGH,
+ integer processor,
+ integer operation_handle,
+ integer num_out_vals,
+ integer type_out_arrays,
+ CCTK_POINTER out_vals,
+ integer num_dims,
+ integer num_in_arrays,
+ integer type_in_arrays,
+ ... )
\end{verbatim}
-}
\begin{Lentry}
-\item[{\tt int returnvalue}]
-the return value of the operation. negative
-value indicates failure to perform reduction.
-Zero indicates successfull operation.
-\item[{\tt cctkGH}]
-in fortran the pointer to the grid hierachy
-structure. Cannot be used within Fortran but
-can be used from within
-C. Since this name is fixed write it out shown
-above.
-\item[{\tt cGH *GH}]
- in the C the pointer to the grid hierarchy.
-\item[{\tt int processor}]
-the processor which collects the
-information, negative value ($-1$) will distribute the data to all
+\item[{\tt returnvalue}] the return value of the operation. A
+negative value indicates a failure to perform the reduction. A zero
+indicates successfull operation.
+
+\item[{\tt GH} or {\tt cctkGH}] the pointer to the grid hierachy
+structure.
+
+\item[{\tt processor}] the processor which collects the
+information; a negative value will distribute the data to all
processors.
-\item[{\tt int operation\_handle}] the number of the reduction operation
- handle, needs to be found by calling {\tt CCTK\_ReductionHandle} or
- {\tt CCTK\_ReductionArrayHandle}.
-\item[{\tt int num\_out\_vals}] integer defining the number of ??
-\item[{\tt int type\_out\_arrays}, {\tt type\_in\_arrays}]
-specifies the type of the gridfunction
-you are communicating. Use the values as specified in
-\ref{sec:datyansi}. Note: do not {\em mix} datatypes: e.g. in
+
+\item[{\tt operation\_handle}] the reduction operation handle
+(integer). This is obtained by calling {\tt CCTK\_ReductionHandle} or
+{\tt CCTK\_ReductionArrayHandle}.
+
+\item[{\tt num\_out\_vals}] the number of values which define the
+result of the reduction operation. If reducing to an array, this
+would be the number of elements in the array. If reducing to a single
+number, this would be one.
+
+\item[{\tt type\_out\_arrays}, {\tt type\_in\_arrays}]
+specifies the type of the data
+you are communicating. Use the values as specified in
+\ref{sec:datyansi}. Note: Do not {\em mix} datatypes. For example, in
Fortran do not declare a variable as {\tt integer} and then specify
the type {\tt CCTK\_VARIABLE\_INT} in the reduction command. These
-types need not be the same on some architectures and will conflict.
-\item[{\tt out\_vals}]
-\item[{\tt int num\_in\_fields}] specifies the number of to follow
-\item[{\tt ...}] indicates a varible argument list: specify the size
-of the array in each dimension, comma separated numbers or integer
-variables. Specify the arrays which will be reduced, the number of
-specified arrays must be the same as the value of the {\tt
-num\_in\_fields} variable.
-\item[{\bf error checking}] a return value other than zero indicates
-failure to perform the operation.
-\end{Lentry}
+types may not be the same on some architectures and will conflict.
+
+\item[{\tt out\_vals}] a pointer to the buffer which will hold the
+output values.
+
+\item[{\tt num\_dims}] (CCTK\_ReduceArray only) the number of dimensions of the input and output arrays.
+
+\item[{\tt num\_in\_fields}] (CCTK\_Reduce only) specifies the number of input CCTK
+variables which will be specified in the variable argument list $<$...$>$.
+
+\item[{\tt num\_in\_arrays}] (CCTK\_ReduceArray only) specifies the
+number of imput \emph{arrays} (not the number of input \emph{fields},
+which would be $\mathrm{num\_in\_arrays}*(\mathrm{num\_dims}+1)$, see below) which
+will be specified in the variable argument list $<$...$>$.
+
+\item[{\tt ...}] indicates a varible argument list:\\
+%
+\textbf{for CCTK\_Reduce:} Specify a list of CCTK variable indicies,
+one for each variable that is to be reduced. The number of specified
+variables must be the same as the value of the {\tt num\_in\_fields}
+variable.\\
+%
+\textbf{for CCTK\_ReduceArray:} For each input array that is to be
+reduced, first specify the size of the array in each dimension,
+followed by (a pointer to) the array itself. The number of specified
+arrays must be the same as the value of the {\tt num\_in\_arrays}
+variable.
-\vskip 0.25cm
+\end{Lentry}
+\vskip 0.25cm
{\bf Special reduction interfaces}
-The routines are designed for the purpose of reducing scalars, arrays
+These routines are designed for the purpose of reducing scalars, arrays
and grid functions. They hide many of the options of the generic
-interface described above.\\
+interface described above.
{\bf Reduction of local scalars} across multiple processors, the result of
the reduction operation will be on the specified processor or on all processors.
@@ -2278,7 +2292,6 @@ result. out\_array3d[i,j,k]= Reduction(in\_array3d[i,j,k]).
\end{Lentry}
\vskip .25cm
-
{\bf Some brief examples:}
{\bf Reduction of a local scalars:} a local error is reduced across all
@@ -2340,11 +2353,12 @@ exceptions) pass through a C preprocessor, C style comments can be
used in Fortran code. (Note that C++ comments (that is //),
should only be used in C++ source code).
-The Flesh and the Cactus thorns use the {\tt grdoc} Code Documenting System
-({\tt http://jean-luc.aei.mpg.de/Codes/grdoc/} to document source code.
+The Flesh and the Cactus thorns use the {\tt grdoc} Code Documenting
+System\\(\texttt{http://jean-luc.aei.mpg.de/Codes/grdoc/}) to document
+source code.
-\section{Providing Run Time Information}
+\section{Providing Runtime Information}
\label{sec:prrutiin}
To write from thorns to standard output ({\it i.e.} the screen)
@@ -2362,10 +2376,10 @@ INFO (MyThorn): Starting Tricky Calculation
}
For a multiprocessor run, only information from processor zero
-will appear, unless the "{\tt -r"} command line option is used
+will appear, unless the ``{\tt -r}'' command line option is used
(Section~\ref{sec:coliop}).
-To output a variable using {\tt CCTK\_INFO} is currently more tricky,
+Outputing a variable using {\tt CCTK\_INFO} is currently more tricky,
since you need to build the string to be output. For example, from Fortran,
{\tt
@@ -2482,7 +2496,7 @@ used.
To include documentation from your thorn into the {\tt ThornGuide}
(obtained from using {\tt gmake <config>-ThornGuide} or
{\tt gmake ThornGuide}), include a {\tt LaTeX} file called {\tt documentation.tex}
-in the {\tt doc} directory as your thorn. Your thorn configuration
+in the {\tt doc} directory of your thorn. Your thorn configuration
files will be automatically parsed to create documentation for
Cactus parameters, variables and scheduling. The format
for the thorn documentation isn't standardized yet, for now please use
@@ -2543,16 +2557,18 @@ For details on running the test suites, see Section~\ref{sec:te}.
Cactus Timers can only currently be used in C or C++ source code,
although the API's for Fortran code are currently being added [FIXME].
-The standard timing information available during a simulation was
-described in Section~\ref{????}. [FIXME: This isn't filled in yet
-because it is being reworked] Cactus provides a flexible mechanism for
+%The standard timing information available during a simulation was
+%described in Section~\ref{????}.
+%[FIXME: This isn't filled in yet because it is being reworked]
+Cactus provides a flexible mechanism for
timing different sections of your thorns using various clocks which
have been registered with the Flesh. By default, the Flesh provides a
set of clocks (if they are available), measuring for
example wall clock time and CPU time. Additional clocks can be
-implemented by thorns and registered with the Flesh (see
-Section~\ref{????} [FIXME: clock registration to be added]
-on how to write and register your own clock).
+implemented by thorns and registered with the Flesh
+%(see
+%Section~\ref{????} [FIXME: clock registration to be added]
+%on how to write and register your own clock).
You can add any number of timers to your thorn source code, providing
each with a chosen name, for example {\tt TimeMyRoutine}, {\tt TimeNextCalculation}, and then use Cactus functions to switch on the
@@ -2907,7 +2923,8 @@ CCTK_MemTicketDelete(t2);
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-\section{Calls between different programming languages}
+\section[Calls to different language]{Calls between different programming languages}
+%\pagestyle{empty}
\subsection{Calling C routines from FORTRAN}
\label{sec:cacrofr}
@@ -3104,13 +3121,13 @@ strings from C.
\begin{itemize}
-\item{} Thorn names must not start with the word "Cactus" (in
+\item{} Thorn names must not start with the word ``Cactus'' (in
any case).
\item{} Arrangements will be ignored if their names start with \# or .
- or end in \~{} .bak or .BAK
+ or end in \~{} .bak or .BAK.
\item{} Thorns will be ignored if they are called doc or start with
- \# or . or end in \~{} .bak or .BAK
-\item{} Routine names have to be unique among all thorns.
+ \# or . or end in \~{} .bak or .BAK.
+\item{} Routine names have to be unique among all thorns.
\end{itemize}
@@ -3135,7 +3152,7 @@ allow for a homogeneous code.
\section{Data Types and Sizes}
\label{sec:datyansi}
-Cactus supports the following fixed size data types
+Cactus supports the following fixed size data types:
\begin{center}
\begin{tabular}{|c|c|c|c|}
diff --git a/doc/UsersGuide/UsersGuide.tex b/doc/UsersGuide/UsersGuide.tex
index e64d380e..5588c2ef 100644
--- a/doc/UsersGuide/UsersGuide.tex
+++ b/doc/UsersGuide/UsersGuide.tex
@@ -51,6 +51,7 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newenvironment{CCTKroutine}{\newpage}{}
\newenvironment{CCTKsyn}{\noindent\begin{tabular}{@{}p{3cm}cp{11cm}}&&\\{\bf Synopsis} \hfill&&\\}{\end{tabular}}
+% The above needs to be fixed -- sometimes it runs off the page (e.g. with cctk_complex arguments...)
\newenvironment{CCTKpar}{\noindent\begin{tabular}{@{}p{3cm}cp{11cm}}&&\\{\bf Parameters} \hfill&&\\}{\end{tabular}}
\newcommand{\CCTKname}[1]{\noindent{\t #1}\hrule}
\newcommand{\CCTKdesc}[1]{\vskip .3cm \noindent #1}
@@ -605,5 +606,3 @@ maintainers by running autoconf and autoheader respectively).
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
-
-
diff --git a/doc/UsersGuide/withghost.eps b/doc/UsersGuide/withghost.eps
new file mode 100644
index 00000000..cfc126d3
--- /dev/null
+++ b/doc/UsersGuide/withghost.eps
@@ -0,0 +1,360 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: withghost.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3c
+%%CreationDate: Fri Dec 7 09:58:03 2001
+%%For: rideout@nbdell05.aei.mpg.de (David P. Rideout)
+%%BoundingBox: 0 0 615 225
+%%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 225 moveto 0 0 lineto 615 0 lineto 615 225 lineto closepath clip newpath
+-107.0 338.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.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 7075 4000 m
+ 6675 4400 l gs col4 s gr
+% Polyline
+n 6650 4000 m
+ 7050 4400 l gs col4 s gr
+% Polyline
+n 7750 4000 m
+ 7350 4400 l gs col4 s gr
+% Polyline
+n 7400 4000 m
+ 7800 4400 l gs col4 s gr
+% Polyline
+n 7075 2800 m
+ 6675 3200 l gs col4 s gr
+% Polyline
+n 6650 2800 m
+ 7050 3200 l gs col4 s gr
+% Polyline
+n 7750 2800 m
+ 7350 3200 l gs col4 s gr
+% Polyline
+n 7400 2800 m
+ 7800 3200 l gs col4 s gr
+% Polyline
+gs clippath
+2711 4439 m 2661 4548 l 2983 4697 l 2736 4517 l 3033 4588 l cp
+eoclip
+n 4650 5400 m
+ 2700 4500 l gs col0 s gr gr
+
+% arrowhead
+n 3033 4588 m 2736 4517 l 2983 4697 l 2953 4617 l 3033 4588 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+2010 3135 m 1890 3135 l 1890 3490 l 1950 3190 l 2010 3490 l cp
+eoclip
+n 1950 3750 m
+ 1950 3150 l gs col0 s gr gr
+
+% arrowhead
+n 2010 3490 m 1950 3190 l 1890 3490 l 1950 3430 l 2010 3490 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+n 2400 4200 m
+ 6600 4200 l gs col0 s gr
+% Polyline
+n 2900 4000 m
+ 2500 4400 l gs col4 s gr
+% Polyline
+n 2500 4000 m
+ 2900 4400 l gs col4 s gr
+% Polyline
+n 3500 4000 m
+ 3100 4400 l gs col4 s gr
+% Polyline
+n 3100 4000 m
+ 3500 4400 l gs col4 s gr
+% Polyline
+n 4100 4000 m
+ 3700 4400 l gs col4 s gr
+% Polyline
+n 3700 4000 m
+ 4100 4400 l gs col4 s gr
+% Polyline
+n 4700 4000 m
+ 4300 4400 l gs col4 s gr
+% Polyline
+n 4300 4000 m
+ 4700 4400 l gs col4 s gr
+% Polyline
+n 5300 4000 m
+ 4900 4400 l gs col4 s gr
+% Polyline
+n 4900 4000 m
+ 5300 4400 l gs col4 s gr
+% Polyline
+n 5900 4000 m
+ 5500 4400 l gs col4 s gr
+% Polyline
+n 5500 4000 m
+ 5900 4400 l gs col4 s gr
+% Polyline
+n 6500 4000 m
+ 6100 4400 l gs col4 s gr
+% Polyline
+n 6100 4000 m
+ 6500 4400 l gs col4 s gr
+% Polyline
+n 7800 4200 m
+ 12000 4200 l gs col0 s gr
+% Polyline
+n 8300 4000 m
+ 7900 4400 l gs col4 s gr
+% Polyline
+n 7900 4000 m
+ 8300 4400 l gs col4 s gr
+% Polyline
+n 8900 4000 m
+ 8500 4400 l gs col4 s gr
+% Polyline
+n 8500 4000 m
+ 8900 4400 l gs col4 s gr
+% Polyline
+n 9500 4000 m
+ 9100 4400 l gs col4 s gr
+% Polyline
+n 9100 4000 m
+ 9500 4400 l gs col4 s gr
+% Polyline
+n 10100 4000 m
+ 9700 4400 l gs col4 s gr
+% Polyline
+n 9700 4000 m
+ 10100 4400 l gs col4 s gr
+% Polyline
+n 10700 4000 m
+ 10300 4400 l gs col4 s gr
+% Polyline
+n 10300 4000 m
+ 10700 4400 l gs col4 s gr
+% Polyline
+n 11300 4000 m
+ 10900 4400 l gs col4 s gr
+% Polyline
+n 10900 4000 m
+ 11300 4400 l gs col4 s gr
+% Polyline
+n 11900 4000 m
+ 11500 4400 l gs col4 s gr
+% Polyline
+n 11500 4000 m
+ 11900 4400 l gs col4 s gr
+% Polyline
+n 2400 3000 m
+ 6600 3000 l gs col0 s gr
+% Polyline
+n 2900 2800 m
+ 2500 3200 l gs col4 s gr
+% Polyline
+n 2500 2800 m
+ 2900 3200 l gs col4 s gr
+% Polyline
+n 3500 2800 m
+ 3100 3200 l gs col4 s gr
+% Polyline
+n 3100 2800 m
+ 3500 3200 l gs col4 s gr
+% Polyline
+n 4100 2800 m
+ 3700 3200 l gs col4 s gr
+% Polyline
+n 3700 2800 m
+ 4100 3200 l gs col4 s gr
+% Polyline
+n 4700 2800 m
+ 4300 3200 l gs col4 s gr
+% Polyline
+n 4300 2800 m
+ 4700 3200 l gs col4 s gr
+% Polyline
+n 5300 2800 m
+ 4900 3200 l gs col4 s gr
+% Polyline
+n 4900 2800 m
+ 5300 3200 l gs col4 s gr
+% Polyline
+n 5900 2800 m
+ 5500 3200 l gs col4 s gr
+% Polyline
+n 5500 2800 m
+ 5900 3200 l gs col4 s gr
+% Polyline
+n 12000 3000 m
+ 7800 3000 l gs col0 s gr
+% Polyline
+n 8900 2800 m
+ 8500 3200 l gs col4 s gr
+% Polyline
+n 8500 2800 m
+ 8900 3200 l gs col4 s gr
+% Polyline
+n 9500 2800 m
+ 9100 3200 l gs col4 s gr
+% Polyline
+n 9100 2800 m
+ 9500 3200 l gs col4 s gr
+% Polyline
+n 9700 2800 m
+ 10100 3200 l gs col4 s gr
+% Polyline
+n 10100 2800 m
+ 9700 3200 l gs col4 s gr
+% Polyline
+n 10700 2800 m
+ 10300 3200 l gs col4 s gr
+% Polyline
+n 10300 2800 m
+ 10700 3200 l gs col4 s gr
+% Polyline
+n 11300 2800 m
+ 10900 3200 l gs col4 s gr
+% Polyline
+n 10900 2800 m
+ 11300 3200 l gs col4 s gr
+% Polyline
+n 11900 2800 m
+ 11500 3200 l gs col4 s gr
+% Polyline
+n 11500 2800 m
+ 11900 3200 l gs col4 s gr
+% Polyline
+n 6100 2800 m
+ 6500 3200 l gs col4 s gr
+% Polyline
+n 6500 2800 m
+ 6100 3200 l gs col4 s gr
+% Polyline
+n 7900 2800 m
+ 8300 3200 l gs col4 s gr
+% Polyline
+n 8300 2800 m
+ 7900 3200 l gs col4 s gr
+% Polyline
+gs clippath
+7399 3261 m 7323 3169 l 7050 3395 l 7319 3250 l 7126 3488 l cp
+eoclip
+n 6450 3975 m
+ 7350 3225 l gs col0 s gr gr
+
+% arrowhead
+n 7126 3488 m 7319 3250 l 7050 3395 l 7134 3403 l 7126 3488 l
+ cp gs 0.00 setgray ef gr col0 s
+% Polyline
+gs clippath
+7079 3170 m 6998 3259 l 7260 3498 l 7079 3252 l 7341 3409 l cp
+eoclip
+n 7875 3975 m
+ 7050 3225 l gs col0 s gr gr
+
+% arrowhead
+n 7341 3409 m 7079 3252 l 7260 3498 l 7256 3413 l 7341 3409 l
+ cp gs 0.00 setgray ef gr col0 s
+/Times-Roman ff 300.00 scf sf
+3825 2100 m
+gs 1 -1 sc (processor 0) col0 sh gr
+/Times-Roman ff 270.00 scf sf
+4800 5550 m
+gs 1 -1 sc (boundary of physical domain) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+1800 4050 m
+gs 1 -1 sc (time) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+9300 2100 m
+gs 1 -1 sc (processor 1) col0 sh gr
+/Times-Roman ff 240.00 scf sf
+6750 4800 m
+gs 1 -1 sc (ghostzones) col0 sh gr
+/Times-Roman ff 210.00 scf sf
+7575 3675 m
+gs 1 -1 sc (copy) col0 sh gr
+/Times-Roman ff 210.00 scf sf
+6750 3825 m
+gs 1 -1 sc (copy) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/UsersGuide/withghost.fig b/doc/UsersGuide/withghost.fig
new file mode 100644
index 00000000..10289be6
--- /dev/null
+++ b/doc/UsersGuide/withghost.fig
@@ -0,0 +1,168 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter
+100.00
+Single
+-2
+1200 2
+6 6600 3900 7950 4500
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7075 4000 6675 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6650 4000 7050 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7750 4000 7350 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7400 4000 7800 4400
+-6
+6 6600 2700 7950 3300
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7075 2800 6675 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6650 2800 7050 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7750 2800 7350 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7400 2800 7800 3200
+-6
+2 1 0 2 0 7 50 0 -1 0.000 0 0 7 1 0 2
+ 2 1 2.00 120.00 240.00
+ 4650 5400 2700 4500
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 1950 3750 1950 3150
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2400 4200 6600 4200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 2900 4000 2500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 2500 4000 2900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3500 4000 3100 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3100 4000 3500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4100 4000 3700 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3700 4000 4100 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4700 4000 4300 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4300 4000 4700 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5300 4000 4900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4900 4000 5300 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5900 4000 5500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5500 4000 5900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6500 4000 6100 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6100 4000 6500 4400
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 7800 4200 12000 4200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8300 4000 7900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7900 4000 8300 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8900 4000 8500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8500 4000 8900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9500 4000 9100 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9100 4000 9500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10100 4000 9700 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9700 4000 10100 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10700 4000 10300 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10300 4000 10700 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11300 4000 10900 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10900 4000 11300 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11900 4000 11500 4400
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11500 4000 11900 4400
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 2400 3000 6600 3000
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 2900 2800 2500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 2500 2800 2900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3500 2800 3100 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3100 2800 3500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4100 2800 3700 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 3700 2800 4100 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4700 2800 4300 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4300 2800 4700 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5300 2800 4900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 4900 2800 5300 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5900 2800 5500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 5500 2800 5900 3200
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 2
+ 12000 3000 7800 3000
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8900 2800 8500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8500 2800 8900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9500 2800 9100 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9100 2800 9500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 9700 2800 10100 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10100 2800 9700 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10700 2800 10300 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10300 2800 10700 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11300 2800 10900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 10900 2800 11300 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11900 2800 11500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 11500 2800 11900 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6100 2800 6500 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 6500 2800 6100 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 7900 2800 8300 3200
+2 1 0 2 4 7 50 0 -1 0.000 0 0 7 0 0 2
+ 8300 2800 7900 3200
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 6450 3975 7350 3225
+2 1 0 2 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+ 2 1 2.00 120.00 240.00
+ 7875 3975 7050 3225
+4 0 0 50 0 0 20 0.0000 4 255 1275 3825 2100 processor 0\001
+4 0 0 50 0 0 18 0.0000 4 255 3180 4800 5550 boundary of physical domain\001
+4 0 0 50 0 0 16 0.0000 4 165 450 1800 4050 time\001
+4 0 0 50 0 0 20 0.0000 4 255 1275 9300 2100 processor 1\001
+4 0 0 50 0 0 16 0.0000 4 225 1065 6750 4800 ghostzones\001
+4 0 0 50 0 0 14 0.0000 4 150 420 7575 3675 copy\001
+4 0 0 50 0 0 14 0.0000 4 150 420 6750 3825 copy\001