Added a large set of new figures.
authorOrion Lawlor <olawlor@acm.org>
Fri, 13 Dec 2002 23:29:50 +0000 (23:29 +0000)
committerOrion Lawlor <olawlor@acm.org>
Fri, 13 Dec 2002 23:29:50 +0000 (23:29 +0000)
18 files changed:
doc/fem/fig/forcedecomp.eps [new file with mode: 0644]
doc/fem/fig/forcedecomp.fig [new file with mode: 0644]
doc/fem/fig/forcedecomp.png [new file with mode: 0644]
doc/fem/fig/ghost_edge.eps [new file with mode: 0644]
doc/fem/fig/ghost_edge.fig [new file with mode: 0644]
doc/fem/fig/ghost_edge.png [new file with mode: 0644]
doc/fem/fig/ghost_node.eps [new file with mode: 0644]
doc/fem/fig/ghost_node.fig [new file with mode: 0644]
doc/fem/fig/ghost_node.png [new file with mode: 0644]
doc/fem/fig/ghost_pre.eps [new file with mode: 0644]
doc/fem/fig/ghost_pre.fig [new file with mode: 0644]
doc/fem/fig/ghost_pre.png [new file with mode: 0644]
doc/fem/fig/partitioned_mesh.eps
doc/fem/fig/partitioned_mesh.fig [new file with mode: 0644]
doc/fem/fig/partitioned_mesh.png
doc/fem/fig/sym_ghost.eps [new file with mode: 0644]
doc/fem/fig/sym_ghost.fig [new file with mode: 0644]
doc/fem/fig/sym_ghost.png [new file with mode: 0644]

diff --git a/doc/fem/fig/forcedecomp.eps b/doc/fem/fig/forcedecomp.eps
new file mode 100644 (file)
index 0000000..b8bea90
--- /dev/null
@@ -0,0 +1,327 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: forcedecomp.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Dec 13 15:45:10 2002
+%%For: olawlor@talent.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 434 484
+%%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 484 moveto 0 0 lineto 434 0 lineto 434 484 lineto closepath clip newpath
+-112.5 536.6 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
+ /DrawEllipse {
+       /endangle exch def
+       /startangle exch def
+       /yrad exch def
+       /xrad exch def
+       /y exch def
+       /x exch def
+       /savematrix mtrx currentmatrix def
+       x y tr xrad yrad sc 0 0 1 startangle endangle arc
+       closepath
+       savematrix setmatrix
+       } def
+
+/$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
+/$F2psEnd {$F2psEnteredState restore end} def
+
+$F2psBegin
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+7.500 slw
+% Ellipse
+n 3865 5799 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 3328 8644 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5383 7854 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 6885 5602 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 7263 5997 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 8725 7815 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 3865 1299 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 3328 4144 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5383 3354 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 6885 1102 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5762 3749 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 7263 1497 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 8725 3315 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 5790 8235 56 56 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Polyline
+45.000 slw
+gs  clippath
+7333 1144 m 7124 1165 l 7138 1305 l 7231 1176 l 7347 1285 l cp
+eoclip
+n 7261 1484 m
+ 7230 1170 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 7347 1285 m 7231 1176 l 7138 1305 l 7347 1285 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 3865 5760 m 3312 8644 l
+ 5367 7854 l gs col0 s gr 
+% Polyline
+n 3865 5799 m 6868 5602 l 5367 7854 l
+ 3865 5760 l gs col0 s gr 
+% Polyline
+n 5762 8249 m 7263 5997 l 8725 7815 l
+ 5762 8249 l  cp gs col0 s gr 
+% Polyline
+n 3865 1260 m 3312 4144 l
+ 5367 3354 l gs col0 s gr 
+% Polyline
+n 3865 1299 m 6868 1102 l 5367 3354 l
+ 3865 1260 l gs col0 s gr 
+% Polyline
+n 5762 3749 m 7263 1497 l 8725 3315 l
+ 5762 3749 l  cp gs col0 s gr 
+% Polyline
+45.000 slw
+gs  clippath
+7282 1086 m 7221 885 l 7086 926 l 7232 992 l 7147 1127 l cp
+eoclip
+n 6894 1094 m
+ 7238 990 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 7147 1127 m 7232 992 l 7086 926 l 7147 1127 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+5480 3640 m 5645 3510 l 5558 3399 l 5550 3559 l 5393 3529 l cp
+eoclip
+n 5389 3354 m
+ 5554 3564 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5393 3529 m 5550 3559 l 5558 3399 l 5393 3529 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+5448 3838 m 5567 4010 l 5683 3931 l 5525 3913 l 5564 3758 l cp
+eoclip
+n 5761 3750 m
+ 5520 3916 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5564 3758 m 5525 3913 l 5683 3931 l 5564 3758 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+9042 3510 m 9098 3307 l 8962 3269 l 9050 3403 l 8906 3472 l cp
+eoclip
+n 8727 3314 m
+ 9056 3405 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 8906 3472 m 9050 3403 l 8962 3269 l 8906 3472 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+2959 4323 m 3095 4483 l 3202 4392 l 3043 4390 l 3066 4232 l cp
+eoclip
+n 3339 4139 m
+ 3039 4394 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 3066 4232 m 3043 4390 l 3202 4392 l 3066 4232 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+3791 997 m 3614 1109 l 3689 1228 l 3714 1071 l 3866 1116 l cp
+eoclip
+n 3862 1305 m
+ 3711 1066 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 3866 1116 m 3714 1071 l 3689 1228 l 3866 1116 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+3794 5495 m 3617 5607 l 3692 5726 l 3717 5569 l 3869 5614 l cp
+eoclip
+n 3865 5803 m
+ 3714 5564 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 3869 5614 m 3717 5569 l 3692 5726 l 3869 5614 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+2962 8831 m 3102 8988 l 3207 8894 l 3048 8896 l 3067 8737 l cp
+eoclip
+n 3329 8645 m
+ 3044 8900 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 3067 8737 m 3048 8896 l 3207 8894 l 3067 8737 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+5296 8147 m 5506 8136 l 5499 7995 l 5401 8121 l 5289 8007 l cp
+eoclip
+n 5386 7857 m
+ 5401 8127 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5289 8007 m 5401 8121 l 5499 7995 l 5289 8007 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+5696 8535 m 5906 8524 l 5899 8383 l 5801 8509 l 5689 8395 l cp
+eoclip
+n 5786 8245 m
+ 5801 8515 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 5689 8395 m 5801 8509 l 5899 8383 l 5689 8395 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+7211 5407 m 7058 5263 l 6962 5365 l 7121 5350 l 7115 5509 l cp
+eoclip
+n 6886 5600 m
+ 7125 5346 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 7115 5509 m 7121 5350 l 6962 5365 l 7115 5509 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+7586 5796 m 7433 5652 l 7337 5754 l 7496 5739 l 7490 5898 l cp
+eoclip
+n 7261 5989 m
+ 7500 5735 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 7490 5898 m 7496 5739 l 7337 5754 l 7490 5898 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+45.000 slw
+gs  clippath
+9042 8013 m 9098 7810 l 8962 7772 l 9050 7906 l 8906 7975 l cp
+eoclip
+n 8727 7817 m
+ 9056 7908 l gs col0 s gr gr
+
+% arrowhead
+7.500 slw
+n 8906 7975 m 9050 7906 l 8962 7772 l 8906 7975 l  cp gs 0.00 setgray ef gr  col0 s
+/Times-Roman ff 300.00 scf sf
+1875 2775 m
+gs 1 -1 sc (\(a\)) col0 sh gr
+/Times-Roman ff 300.00 scf sf
+1875 7125 m
+gs 1 -1 sc (\(a\)) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/fem/fig/forcedecomp.fig b/doc/fem/fig/forcedecomp.fig
new file mode 100644 (file)
index 0000000..07f316a
--- /dev/null
@@ -0,0 +1,79 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3865 5799 56 56 3865 5799 3921 5799
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3328 8644 56 56 3328 8644 3384 8644
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5383 7854 56 56 5383 7854 5439 7854
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6885 5602 56 56 6885 5602 6940 5602
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 7263 5997 56 56 7263 5997 7319 5997
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 8725 7815 56 56 8725 7815 8781 7815
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3865 1299 56 56 3865 1299 3921 1299
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 3328 4144 56 56 3328 4144 3384 4144
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5383 3354 56 56 5383 3354 5439 3354
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6885 1102 56 56 6885 1102 6940 1102
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5762 3749 56 56 5762 3749 5818 3749
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 7263 1497 56 56 7263 1497 7319 1497
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 8725 3315 56 56 8725 3315 8781 3315
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5790 8235 56 56 5790 8235 5846 8235
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        7261 1484 7230 1170
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+        3865 5760 3312 8644 5367 7854
+2 1 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        3865 5799 6868 5602 5367 7854 3865 5760
+2 1 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        5762 8249 7263 5997 8725 7815 5762 8249
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+        3865 1260 3312 4144 5367 3354
+2 1 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        3865 1299 6868 1102 5367 3354 3865 1260
+2 1 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        5762 3749 7263 1497 8725 3315 5762 3749
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        6894 1094 7238 990
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        5389 3354 5554 3564
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        5761 3750 5520 3916
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        8727 3314 9056 3405
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        3339 4139 3039 4394
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        3862 1305 3711 1066
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        3865 5803 3714 5564
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        3329 8645 3044 8900
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        5386 7857 5401 8127
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        5786 8245 5801 8515
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        6886 5600 7125 5346
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        7261 5989 7500 5735
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 210.00 120.00
+        8727 7817 9056 7908
+4 0 0 50 0 0 20 0.0000 4 255 345 1875 2775 (a)\001
+4 0 0 50 0 0 20 0.0000 4 255 345 1875 7125 (a)\001
diff --git a/doc/fem/fig/forcedecomp.png b/doc/fem/fig/forcedecomp.png
new file mode 100644 (file)
index 0000000..a382668
Binary files /dev/null and b/doc/fem/fig/forcedecomp.png differ
diff --git a/doc/fem/fig/ghost_edge.eps b/doc/fem/fig/ghost_edge.eps
new file mode 100644 (file)
index 0000000..0d20895
--- /dev/null
@@ -0,0 +1,576 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ghost_edge.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Dec 13 16:22:36 2002
+%%For: olawlor@sense.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 665 444
+%%Magnification: 1.0000
+%%EndComments
+/MyAppDict 100 dict dup begin def
+/$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 444 moveto 0 0 lineto 665 0 lineto 665 444 lineto closepath clip newpath
+-48.2 527.8 translate
+1 -1 scale
+
+% This junk string is used by the show operators
+/PATsstr 1 string def
+/PATawidthshow {       % cx cy cchar rx ry string
+  % Loop over each character in the string
+  {  % cx cy cchar rx ry char
+    % Show the character
+    dup                                % cx cy cchar rx ry char char
+    PATsstr dup 0 4 -1 roll put        % cx cy cchar rx ry char (char)
+    false charpath             % cx cy cchar rx ry char
+    /clip load PATdraw
+    % Move past the character (charpath modified the
+    % current point)
+    currentpoint                       % cx cy cchar rx ry char x y
+    newpath
+    moveto                     % cx cy cchar rx ry char
+    % Reposition by cx,cy if the character in the string is cchar
+    3 index eq {                       % cx cy cchar rx ry
+      4 index 4 index rmoveto
+    } if
+    % Reposition all characters by rx ry
+    2 copy rmoveto             % cx cy cchar rx ry
+  } forall
+  pop pop pop pop pop          % -
+  currentpoint
+  newpath
+  moveto
+} bind def
+/PATcg {
+  7 dict dup begin
+    /lw currentlinewidth def
+    /lc currentlinecap def
+    /lj currentlinejoin def
+    /ml currentmiterlimit def
+    /ds [ currentdash ] def
+    /cc [ currentrgbcolor ] def
+    /cm matrix currentmatrix def
+  end
+} bind def
+% PATdraw - calculates the boundaries of the object and
+% fills it with the current pattern
+/PATdraw {                     % proc
+  save exch
+    PATpcalc                   % proc nw nh px py
+    5 -1 roll exec             % nw nh px py
+    newpath
+    PATfill                    % -
+  restore
+} bind def
+% PATfill - performs the tiling for the shape
+/PATfill { % nw nh px py PATfill -
+  PATDict /CurrentPattern get dup begin
+    setfont
+    % Set the coordinate system to Pattern Space
+    PatternGState PATsg
+    % Set the color for uncolored pattezns
+    PaintType 2 eq { PATDict /PColor get PATsc } if
+    % Create the string for showing
+    3 index string             % nw nh px py str
+    % Loop for each of the pattern sources
+    0 1 Multi 1 sub {          % nw nh px py str source
+       % Move to the starting location
+       3 index 3 index         % nw nh px py str source px py
+       moveto                  % nw nh px py str source
+       % For multiple sources, set the appropriate color
+       Multi 1 ne { dup PC exch get PATsc } if
+       % Set the appropriate string for the source
+       0 1 7 index 1 sub { 2 index exch 2 index put } for pop
+       % Loop over the number of vertical cells
+       3 index                 % nw nh px py str nh
+       {                       % nw nh px py str
+         currentpoint          % nw nh px py str cx cy
+         2 index oldshow       % nw nh px py str cx cy
+         YStep add moveto      % nw nh px py str
+       } repeat                % nw nh px py str
+    } for
+    5 { pop } repeat
+  end
+} bind def
+
+% PATkshow - kshow with the current pattezn
+/PATkshow {                    % proc string
+  exch bind                    % string proc
+  1 index 0 get                        % string proc char
+  % Loop over all but the last character in the string
+  0 1 4 index length 2 sub {
+                               % string proc char idx
+    % Find the n+1th character in the string
+    3 index exch 1 add get     % string proe char char+1
+    exch 2 copy                        % strinq proc char+1 char char+1 char
+    % Now show the nth character
+    PATsstr dup 0 4 -1 roll put        % string proc chr+1 chr chr+1 (chr)
+    false charpath             % string proc char+1 char char+1
+    /clip load PATdraw
+    % Move past the character (charpath modified the current point)
+    currentpoint newpath moveto
+    % Execute the user proc (should consume char and char+1)
+    mark 3 1 roll              % string proc char+1 mark char char+1
+    4 index exec               % string proc char+1 mark...
+    cleartomark                        % string proc char+1
+  } for
+  % Now display the last character
+  PATsstr dup 0 4 -1 roll put  % string proc (char+1)
+  false charpath               % string proc
+  /clip load PATdraw
+  neewath
+  pop pop                      % -
+} bind def
+% PATmp - the makepattern equivalent
+/PATmp {                       % patdict patmtx PATmp patinstance
+  exch dup length 7 add                % We will add 6 new entries plus 1 FID
+  dict copy                    % Create a new dictionary
+  begin
+    % Matrix to install when painting the pattern
+    TilingType PATtcalc
+    /PatternGState PATcg def
+    PatternGState /cm 3 -1 roll put
+    % Check for multi pattern sources (Level 1 fast color patterns)
+    currentdict /Multi known not { /Multi 1 def } if
+    % Font dictionary definitions
+    /FontType 3 def
+    % Create a dummy encoding vector
+    /Encoding 256 array def
+    3 string 0 1 255 {
+      Encoding exch dup 3 index cvs cvn put } for pop
+    /FontMatrix matrix def
+    /FontBBox BBox def
+    /BuildChar {
+       mark 3 1 roll           % mark dict char
+       exch begin
+       Multi 1 ne {PaintData exch get}{pop} ifelse  % mark [paintdata]
+         PaintType 2 eq Multi 1 ne or
+         { XStep 0 FontBBox aload pop setcachedevice }
+         { XStep 0 setcharwidth } ifelse
+         currentdict           % mark [paintdata] dict
+         /PaintProc load       % mark [paintdata] dict paintproc
+       end
+       gsave
+         false PATredef exec true PATredef
+       grestore
+       cleartomark             % -
+    } bind def
+    currentdict
+  end                          % newdict
+  /foo exch                    % /foo newlict
+  definefont                   % newfont
+} bind def
+% PATpcalc - calculates the starting point and width/height
+% of the tile fill for the shape
+/PATpcalc {    % - PATpcalc nw nh px py
+  PATDict /CurrentPattern get begin
+    gsave
+       % Set up the coordinate system to Pattern Space
+       % and lock down pattern
+       PatternGState /cm get setmatrix
+       BBox aload pop pop pop translate
+       % Determine the bounding box of the shape
+       pathbbox                        % llx lly urx ury
+    grestore
+    % Determine (nw, nh) the # of cells to paint width and height
+    PatHeight div ceiling              % llx lly urx qh
+    4 1 roll                           % qh llx lly urx
+    PatWidth div ceiling               % qh llx lly qw
+    4 1 roll                           % qw qh llx lly
+    PatHeight div floor                        % qw qh llx ph
+    4 1 roll                           % ph qw qh llx
+    PatWidth div floor                 % ph qw qh pw
+    4 1 roll                           % pw ph qw qh
+    2 index sub cvi abs                        % pw ph qs qh-ph
+    exch 3 index sub cvi abs exch      % pw ph nw=qw-pw nh=qh-ph
+    % Determine the starting point of the pattern fill
+    %(px, py)
+    4 2 roll                           % nw nh pw ph
+    PatHeight mul                      % nw nh pw py
+    exch                               % nw nh py pw
+    PatWidth mul exch                  % nw nh px py
+  end
+} bind def
+
+% Save the original routines so that we can use them later on
+/oldfill       /fill load def
+/oldeofill     /eofill load def
+/oldstroke     /stroke load def
+/oldshow       /show load def
+/oldashow      /ashow load def
+/oldwidthshow  /widthshow load def
+/oldawidthshow /awidthshow load def
+/oldkshow      /kshow load def
+
+% These defs are necessary so that subsequent procs don't bind in
+% the originals
+/fill     { oldfill } bind def
+/eofill           { oldeofill } bind def
+/stroke           { oldstroke } bind def
+/show     { oldshow } bind def
+/ashow    { oldashow } bind def
+/widthshow { oldwidthshow } bind def
+/awidthshow { oldawidthshow } bind def
+/kshow            { oldkshow } bind def
+/PATredef {
+  MyAppDict begin
+    {
+    /fill { /clip load PATdraw newpath } bind def
+    /eofill { /eoclip load PATdraw newpath } bind def
+    /stroke { PATstroke } bind def
+    /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
+    /ashow { 0 0 null 6 3 roll PATawidthshow }
+    bind def
+    /widthshow { 0 0 3 -1 roll PATawidthshow }
+    bind def
+    /awidthshow { PATawidthshow } bind def
+    /kshow { PATkshow } bind def
+  } {
+    /fill   { oldfill } bind def
+    /eofill { oldeofill } bind def
+    /stroke { oldstroke } bind def
+    /show   { oldshow } bind def
+    /ashow  { oldashow } bind def
+    /widthshow { oldwidthshow } bind def
+    /awidthshow { oldawidthshow } bind def
+    /kshow  { oldkshow } bind def
+    } ifelse
+  end
+} bind def
+false PATredef
+% Conditionally define setcmykcolor if not available
+/setcmykcolor where { pop } {
+  /setcmykcolor {
+    1 sub 4 1 roll
+    3 {
+       3 index add neg dup 0 lt { pop 0 } if 3 1 roll
+    } repeat
+    setrgbcolor - pop
+  } bind def
+} ifelse
+/PATsc {               % colorarray
+  aload length         % c1 ... cn length
+    dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
+  } ifelse } ifelse
+} bind def
+/PATsg {               % dict
+  begin
+    lw setlinewidth
+    lc setlinecap
+    lj setlinejoin
+    ml setmiterlimit
+    ds aload pop setdash
+    cc aload pop setrgbcolor
+    cm setmatrix
+  end
+} bind def
+
+/PATDict 3 dict def
+/PATsp {
+  true PATredef
+  PATDict begin
+    /CurrentPattern exch def
+    % If it's an uncolored pattern, save the color
+    CurrentPattern /PaintType get 2 eq {
+      /PColor exch def
+    } if
+    /CColor [ currentrgbcolor ] def
+  end
+} bind def
+% PATstroke - stroke with the current pattern
+/PATstroke {
+  countdictstack
+  save
+  mark
+  {
+    currentpoint strokepath moveto
+    PATpcalc                           % proc nw nh px py
+    clip newpath PATfill
+    } stopped {
+       (*** PATstroke Warning: Path is too complex, stroking
+         with gray) =
+    cleartomark
+    restore
+    countdictstack exch sub dup 0 gt
+       { { end } repeat } { pop } ifelse
+    gsave 0.5 setgray oldstroke grestore
+  } { pop restore pop } ifelse
+  newpath
+} bind def
+/PATtcalc {            % modmtx tilingtype PATtcalc tilematrix
+  % Note: tiling types 2 and 3 are not supported
+  gsave
+    exch concat                                        % tilingtype
+    matrix currentmatrix exch                  % cmtx tilingtype
+    % Tiling type 1 and 3: constant spacing
+    2 ne {
+       % Distort the pattern so that it occupies
+       % an integral number of device pixels
+       dup 4 get exch dup 5 get exch           % tx ty cmtx
+       XStep 0 dtransform
+       round exch round exch                   % tx ty cmtx dx.x dx.y
+       XStep div exch XStep div exch           % tx ty cmtx a b
+       0 YStep dtransform
+       round exch round exch                   % tx ty cmtx a b dy.x dy.y
+       YStep div exch YStep div exch           % tx ty cmtx a b c d
+       7 -3 roll astore                        % { a b c d tx ty }
+    } if
+  grestore
+} bind def
+/PATusp {
+  false PATredef
+  PATDict begin
+    CColor PATsc
+  end
+} bind def
+
+% left45
+11 dict begin
+/PaintType 1 def
+/PatternType 1 def
+/TilingType 1 def
+/BBox [0 0 1 1] def
+/XStep 1 def
+/YStep 1 def
+/PatWidth 1 def
+/PatHeight 1 def
+/Multi 2 def
+/PaintData [
+  { clippath } bind
+  { 32 32 true [ 32 0 0 -32 0 32 ]
+       {<808080804040404020202020101010100808080804040404
+       020202020101010180808080404040402020202010101010
+       080808080404040402020202010101018080808040404040
+       202020201010101008080808040404040202020201010101
+       808080804040404020202020101010100808080804040404
+       0202020201010101>}
+     imagemask } bind
+] def
+/PaintProc {
+       pop
+       exec fill
+} def
+currentdict
+end
+/P4 exch def
+
+% crosshatch45
+11 dict begin
+/PaintType 1 def
+/PatternType 1 def
+/TilingType 1 def
+/BBox [0 0 1 1] def
+/XStep 1 def
+/YStep 1 def
+/PatWidth 1 def
+/PatHeight 1 def
+/Multi 2 def
+/PaintData [
+  { clippath } bind
+  { 32 32 true [ 32 0 0 -32 0 32 ]
+       {<828282824444444428282828101010102828282844444444
+       828282820101010182828282444444442828282810101010
+       282828284444444482828282010101018282828244444444
+       282828281010101028282828444444448282828201010101
+       828282824444444428282828101010102828282844444444
+       8282828201010101>}
+     imagemask } bind
+] def
+/PaintProc {
+       pop
+       exec fill
+} def
+currentdict
+end
+/P6 exch def
+
+/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
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2925 3075 m 4275 2925 l 3675 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 4275 2925 m 4725 2325 l 5475 3375 l
+ cp gs col0 s gr 
+% Polyline
+n 2925 3075 m 3825 2175 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 3825 2175 m 4725 2325 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 3825 2175 m 4425 1725 l 4725 2325 l
+ cp gs col0 s gr 
+% Polyline
+n 2175 6525 m 2325 8625 l 3525 7725 l
+ cp gs col0 s gr 
+% Polyline
+n 4425 1725 m 4275 1425 l 3675 1575 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 1575 m 3825 2175 l 2625 2175 l
+ cp gs col0 s gr 
+% Polyline
+n 2625 2175 m 2925 3075 l 1725 3225 l
+ cp gs col0 s gr 
+% Polyline
+n 1725 3225 m 2325 4275 l 1125 4275 l
+ cp gs col0 s gr 
+% Polyline
+n 1125 4275 m 2175 6525 l 825 6675 l
+ cp gs col0 s gr 
+% Polyline
+n 825 6675 m 2325 8625 l 975 8775 l
+ cp gs col0 s gr 
+% Polyline
+n 9900 6465 m 11100 4365 l 11850 6015 l
+ cp gs col0 s gr 
+% Polyline
+n 9750 4815 m 11100 4365 l 9900 6465 l
+ cp gs col0 s gr 
+% Polyline
+n 9767 4814 m 9917 3464 l 11117 4364 l
+ cp gs col0 s gr 
+% Polyline
+n 3381 5921 m 3531 7721 l 5481 6371 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 225.40 394.73] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3375 5925 m 3525 7725 l 2175 6525 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 145.00 395.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3669 4420 m 5319 4720 l 5469 3370 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 244.60 224.67] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8083 4519 m 6733 4369 l 7783 6019 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 448.87 291.27] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9878 3483 m 8078 4533 l 8678 3033 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 538.53 202.20] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7815 6030 m 7965 7830 l 6615 6630 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 441.00 402.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 5475 3375 m 3675 4425 l 4275 2925 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 245.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7800 6015 m 7950 7815 l 9900 6465 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 520.00 401.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3675 4425 m 2325 4275 l 3375 5925 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 155.00 285.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8100 4515 m 9750 4815 l 7800 6015 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 520.00 301.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2325 4275 m 2175 6525 l 3375 5925 l
+ cp gs col0 s gr 
+% Polyline
+n 9750 4815 m 9900 6465 l 7800 6015 l
+ cp gs col0 s gr 
+% Polyline
+n 3673 4424 m 5323 4724 l 3373 5924 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 224.87 294.93] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2932 3075 m 2332 4275 l 3682 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 8117 4535 m 9767 4835 l 9917 3485 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 541.13 232.33] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+90.000 slw
+n 3527 7730 m 3377 5915 l 3692 4400 l
+ 5462 3395 l gs col0 s gr 
+% Polyline
+105.000 slw
+n 9917 3471 m 8087 4521 l 7787 6021 l
+ 7937 7821 l gs col0 s gr 
+$F2psEnd
+rs
+end
diff --git a/doc/fem/fig/ghost_edge.fig b/doc/fem/fig/ghost_edge.fig
new file mode 100644 (file)
index 0000000..48bf47c
--- /dev/null
@@ -0,0 +1,73 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2925 3075 4275 2925 3675 4425 2925 3075
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4275 2925 4725 2325 5475 3375 4275 2925
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2925 3075 3825 2175 4275 2925 2925 3075
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3825 2175 4725 2325 4275 2925 3825 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3825 2175 4425 1725 4725 2325 3825 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2175 6525 2325 8625 3525 7725 2175 6525
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4425 1725 4275 1425 3675 1575 4425 1725
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3675 1575 3825 2175 2625 2175 3675 1575
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2625 2175 2925 3075 1725 3225 2625 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        1725 3225 2325 4275 1125 4275 1725 3225
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        1125 4275 2175 6525 825 6675 1125 4275
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        825 6675 2325 8625 975 8775 825 6675
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9900 6465 11100 4365 11850 6015 9900 6465
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9750 4815 11100 4365 9900 6465 9750 4815
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9767 4814 9917 3464 11117 4364 9767 4814
+2 1 0 7 0 7 48 0 -1 0.000 0 0 -1 0 0 4
+        3527 7730 3377 5915 3692 4400 5462 3395
+2 1 0 8 0 7 48 0 -1 0.000 0 0 -1 0 0 4
+        9917 3471 8087 4521 7787 6021 7937 7821
+2 3 0 2 0 7 50 0 46 0.000 0 0 -1 0 0 4
+        3381 5921 3531 7721 5481 6371 3381 5921
+2 3 0 2 0 7 50 0 44 0.000 0 0 -1 0 0 4
+        3375 5925 3525 7725 2175 6525 3375 5925
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3669 4420 5319 4720 5469 3370 3669 4420
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        8083 4519 6733 4369 7783 6019 8083 4519
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        9878 3483 8078 4533 8678 3033 9878 3483
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        7815 6030 7965 7830 6615 6630 7815 6030
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        5475 3375 3675 4425 4275 2925 5475 3375
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        7800 6015 7950 7815 9900 6465 7800 6015
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        3675 4425 2325 4275 3375 5925 3675 4425
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8100 4515 9750 4815 7800 6015 8100 4515
+2 3 0 2 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        2325 4275 2175 6525 3375 5925 2325 4275
+2 3 0 2 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        9750 4815 9900 6465 7800 6015 9750 4815
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3673 4424 5323 4724 3373 5924 3673 4424
+2 3 0 2 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        2932 3075 2332 4275 3682 4425 2932 3075
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8117 4535 9767 4835 9917 3485 8117 4535
diff --git a/doc/fem/fig/ghost_edge.png b/doc/fem/fig/ghost_edge.png
new file mode 100644 (file)
index 0000000..9006a10
Binary files /dev/null and b/doc/fem/fig/ghost_edge.png differ
diff --git a/doc/fem/fig/ghost_node.eps b/doc/fem/fig/ghost_node.eps
new file mode 100644 (file)
index 0000000..f2f6bc7
--- /dev/null
@@ -0,0 +1,611 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ghost_node.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Dec 13 16:29:07 2002
+%%For: olawlor@sense.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 665 444
+%%Magnification: 1.0000
+%%EndComments
+/MyAppDict 100 dict dup begin def
+/$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 444 moveto 0 0 lineto 665 0 lineto 665 444 lineto closepath clip newpath
+-48.2 527.8 translate
+1 -1 scale
+
+% This junk string is used by the show operators
+/PATsstr 1 string def
+/PATawidthshow {       % cx cy cchar rx ry string
+  % Loop over each character in the string
+  {  % cx cy cchar rx ry char
+    % Show the character
+    dup                                % cx cy cchar rx ry char char
+    PATsstr dup 0 4 -1 roll put        % cx cy cchar rx ry char (char)
+    false charpath             % cx cy cchar rx ry char
+    /clip load PATdraw
+    % Move past the character (charpath modified the
+    % current point)
+    currentpoint                       % cx cy cchar rx ry char x y
+    newpath
+    moveto                     % cx cy cchar rx ry char
+    % Reposition by cx,cy if the character in the string is cchar
+    3 index eq {                       % cx cy cchar rx ry
+      4 index 4 index rmoveto
+    } if
+    % Reposition all characters by rx ry
+    2 copy rmoveto             % cx cy cchar rx ry
+  } forall
+  pop pop pop pop pop          % -
+  currentpoint
+  newpath
+  moveto
+} bind def
+/PATcg {
+  7 dict dup begin
+    /lw currentlinewidth def
+    /lc currentlinecap def
+    /lj currentlinejoin def
+    /ml currentmiterlimit def
+    /ds [ currentdash ] def
+    /cc [ currentrgbcolor ] def
+    /cm matrix currentmatrix def
+  end
+} bind def
+% PATdraw - calculates the boundaries of the object and
+% fills it with the current pattern
+/PATdraw {                     % proc
+  save exch
+    PATpcalc                   % proc nw nh px py
+    5 -1 roll exec             % nw nh px py
+    newpath
+    PATfill                    % -
+  restore
+} bind def
+% PATfill - performs the tiling for the shape
+/PATfill { % nw nh px py PATfill -
+  PATDict /CurrentPattern get dup begin
+    setfont
+    % Set the coordinate system to Pattern Space
+    PatternGState PATsg
+    % Set the color for uncolored pattezns
+    PaintType 2 eq { PATDict /PColor get PATsc } if
+    % Create the string for showing
+    3 index string             % nw nh px py str
+    % Loop for each of the pattern sources
+    0 1 Multi 1 sub {          % nw nh px py str source
+       % Move to the starting location
+       3 index 3 index         % nw nh px py str source px py
+       moveto                  % nw nh px py str source
+       % For multiple sources, set the appropriate color
+       Multi 1 ne { dup PC exch get PATsc } if
+       % Set the appropriate string for the source
+       0 1 7 index 1 sub { 2 index exch 2 index put } for pop
+       % Loop over the number of vertical cells
+       3 index                 % nw nh px py str nh
+       {                       % nw nh px py str
+         currentpoint          % nw nh px py str cx cy
+         2 index oldshow       % nw nh px py str cx cy
+         YStep add moveto      % nw nh px py str
+       } repeat                % nw nh px py str
+    } for
+    5 { pop } repeat
+  end
+} bind def
+
+% PATkshow - kshow with the current pattezn
+/PATkshow {                    % proc string
+  exch bind                    % string proc
+  1 index 0 get                        % string proc char
+  % Loop over all but the last character in the string
+  0 1 4 index length 2 sub {
+                               % string proc char idx
+    % Find the n+1th character in the string
+    3 index exch 1 add get     % string proe char char+1
+    exch 2 copy                        % strinq proc char+1 char char+1 char
+    % Now show the nth character
+    PATsstr dup 0 4 -1 roll put        % string proc chr+1 chr chr+1 (chr)
+    false charpath             % string proc char+1 char char+1
+    /clip load PATdraw
+    % Move past the character (charpath modified the current point)
+    currentpoint newpath moveto
+    % Execute the user proc (should consume char and char+1)
+    mark 3 1 roll              % string proc char+1 mark char char+1
+    4 index exec               % string proc char+1 mark...
+    cleartomark                        % string proc char+1
+  } for
+  % Now display the last character
+  PATsstr dup 0 4 -1 roll put  % string proc (char+1)
+  false charpath               % string proc
+  /clip load PATdraw
+  neewath
+  pop pop                      % -
+} bind def
+% PATmp - the makepattern equivalent
+/PATmp {                       % patdict patmtx PATmp patinstance
+  exch dup length 7 add                % We will add 6 new entries plus 1 FID
+  dict copy                    % Create a new dictionary
+  begin
+    % Matrix to install when painting the pattern
+    TilingType PATtcalc
+    /PatternGState PATcg def
+    PatternGState /cm 3 -1 roll put
+    % Check for multi pattern sources (Level 1 fast color patterns)
+    currentdict /Multi known not { /Multi 1 def } if
+    % Font dictionary definitions
+    /FontType 3 def
+    % Create a dummy encoding vector
+    /Encoding 256 array def
+    3 string 0 1 255 {
+      Encoding exch dup 3 index cvs cvn put } for pop
+    /FontMatrix matrix def
+    /FontBBox BBox def
+    /BuildChar {
+       mark 3 1 roll           % mark dict char
+       exch begin
+       Multi 1 ne {PaintData exch get}{pop} ifelse  % mark [paintdata]
+         PaintType 2 eq Multi 1 ne or
+         { XStep 0 FontBBox aload pop setcachedevice }
+         { XStep 0 setcharwidth } ifelse
+         currentdict           % mark [paintdata] dict
+         /PaintProc load       % mark [paintdata] dict paintproc
+       end
+       gsave
+         false PATredef exec true PATredef
+       grestore
+       cleartomark             % -
+    } bind def
+    currentdict
+  end                          % newdict
+  /foo exch                    % /foo newlict
+  definefont                   % newfont
+} bind def
+% PATpcalc - calculates the starting point and width/height
+% of the tile fill for the shape
+/PATpcalc {    % - PATpcalc nw nh px py
+  PATDict /CurrentPattern get begin
+    gsave
+       % Set up the coordinate system to Pattern Space
+       % and lock down pattern
+       PatternGState /cm get setmatrix
+       BBox aload pop pop pop translate
+       % Determine the bounding box of the shape
+       pathbbox                        % llx lly urx ury
+    grestore
+    % Determine (nw, nh) the # of cells to paint width and height
+    PatHeight div ceiling              % llx lly urx qh
+    4 1 roll                           % qh llx lly urx
+    PatWidth div ceiling               % qh llx lly qw
+    4 1 roll                           % qw qh llx lly
+    PatHeight div floor                        % qw qh llx ph
+    4 1 roll                           % ph qw qh llx
+    PatWidth div floor                 % ph qw qh pw
+    4 1 roll                           % pw ph qw qh
+    2 index sub cvi abs                        % pw ph qs qh-ph
+    exch 3 index sub cvi abs exch      % pw ph nw=qw-pw nh=qh-ph
+    % Determine the starting point of the pattern fill
+    %(px, py)
+    4 2 roll                           % nw nh pw ph
+    PatHeight mul                      % nw nh pw py
+    exch                               % nw nh py pw
+    PatWidth mul exch                  % nw nh px py
+  end
+} bind def
+
+% Save the original routines so that we can use them later on
+/oldfill       /fill load def
+/oldeofill     /eofill load def
+/oldstroke     /stroke load def
+/oldshow       /show load def
+/oldashow      /ashow load def
+/oldwidthshow  /widthshow load def
+/oldawidthshow /awidthshow load def
+/oldkshow      /kshow load def
+
+% These defs are necessary so that subsequent procs don't bind in
+% the originals
+/fill     { oldfill } bind def
+/eofill           { oldeofill } bind def
+/stroke           { oldstroke } bind def
+/show     { oldshow } bind def
+/ashow    { oldashow } bind def
+/widthshow { oldwidthshow } bind def
+/awidthshow { oldawidthshow } bind def
+/kshow            { oldkshow } bind def
+/PATredef {
+  MyAppDict begin
+    {
+    /fill { /clip load PATdraw newpath } bind def
+    /eofill { /eoclip load PATdraw newpath } bind def
+    /stroke { PATstroke } bind def
+    /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
+    /ashow { 0 0 null 6 3 roll PATawidthshow }
+    bind def
+    /widthshow { 0 0 3 -1 roll PATawidthshow }
+    bind def
+    /awidthshow { PATawidthshow } bind def
+    /kshow { PATkshow } bind def
+  } {
+    /fill   { oldfill } bind def
+    /eofill { oldeofill } bind def
+    /stroke { oldstroke } bind def
+    /show   { oldshow } bind def
+    /ashow  { oldashow } bind def
+    /widthshow { oldwidthshow } bind def
+    /awidthshow { oldawidthshow } bind def
+    /kshow  { oldkshow } bind def
+    } ifelse
+  end
+} bind def
+false PATredef
+% Conditionally define setcmykcolor if not available
+/setcmykcolor where { pop } {
+  /setcmykcolor {
+    1 sub 4 1 roll
+    3 {
+       3 index add neg dup 0 lt { pop 0 } if 3 1 roll
+    } repeat
+    setrgbcolor - pop
+  } bind def
+} ifelse
+/PATsc {               % colorarray
+  aload length         % c1 ... cn length
+    dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
+  } ifelse } ifelse
+} bind def
+/PATsg {               % dict
+  begin
+    lw setlinewidth
+    lc setlinecap
+    lj setlinejoin
+    ml setmiterlimit
+    ds aload pop setdash
+    cc aload pop setrgbcolor
+    cm setmatrix
+  end
+} bind def
+
+/PATDict 3 dict def
+/PATsp {
+  true PATredef
+  PATDict begin
+    /CurrentPattern exch def
+    % If it's an uncolored pattern, save the color
+    CurrentPattern /PaintType get 2 eq {
+      /PColor exch def
+    } if
+    /CColor [ currentrgbcolor ] def
+  end
+} bind def
+% PATstroke - stroke with the current pattern
+/PATstroke {
+  countdictstack
+  save
+  mark
+  {
+    currentpoint strokepath moveto
+    PATpcalc                           % proc nw nh px py
+    clip newpath PATfill
+    } stopped {
+       (*** PATstroke Warning: Path is too complex, stroking
+         with gray) =
+    cleartomark
+    restore
+    countdictstack exch sub dup 0 gt
+       { { end } repeat } { pop } ifelse
+    gsave 0.5 setgray oldstroke grestore
+  } { pop restore pop } ifelse
+  newpath
+} bind def
+/PATtcalc {            % modmtx tilingtype PATtcalc tilematrix
+  % Note: tiling types 2 and 3 are not supported
+  gsave
+    exch concat                                        % tilingtype
+    matrix currentmatrix exch                  % cmtx tilingtype
+    % Tiling type 1 and 3: constant spacing
+    2 ne {
+       % Distort the pattern so that it occupies
+       % an integral number of device pixels
+       dup 4 get exch dup 5 get exch           % tx ty cmtx
+       XStep 0 dtransform
+       round exch round exch                   % tx ty cmtx dx.x dx.y
+       XStep div exch XStep div exch           % tx ty cmtx a b
+       0 YStep dtransform
+       round exch round exch                   % tx ty cmtx a b dy.x dy.y
+       YStep div exch YStep div exch           % tx ty cmtx a b c d
+       7 -3 roll astore                        % { a b c d tx ty }
+    } if
+  grestore
+} bind def
+/PATusp {
+  false PATredef
+  PATDict begin
+    CColor PATsc
+  end
+} bind def
+
+% left45
+11 dict begin
+/PaintType 1 def
+/PatternType 1 def
+/TilingType 1 def
+/BBox [0 0 1 1] def
+/XStep 1 def
+/YStep 1 def
+/PatWidth 1 def
+/PatHeight 1 def
+/Multi 2 def
+/PaintData [
+  { clippath } bind
+  { 32 32 true [ 32 0 0 -32 0 32 ]
+       {<808080804040404020202020101010100808080804040404
+       020202020101010180808080404040402020202010101010
+       080808080404040402020202010101018080808040404040
+       202020201010101008080808040404040202020201010101
+       808080804040404020202020101010100808080804040404
+       0202020201010101>}
+     imagemask } bind
+] def
+/PaintProc {
+       pop
+       exec fill
+} def
+currentdict
+end
+/P4 exch def
+
+% crosshatch45
+11 dict begin
+/PaintType 1 def
+/PatternType 1 def
+/TilingType 1 def
+/BBox [0 0 1 1] def
+/XStep 1 def
+/YStep 1 def
+/PatWidth 1 def
+/PatHeight 1 def
+/Multi 2 def
+/PaintData [
+  { clippath } bind
+  { 32 32 true [ 32 0 0 -32 0 32 ]
+       {<828282824444444428282828101010102828282844444444
+       828282820101010182828282444444442828282810101010
+       282828284444444482828282010101018282828244444444
+       282828281010101028282828444444448282828201010101
+       828282824444444428282828101010102828282844444444
+       8282828201010101>}
+     imagemask } bind
+] def
+/PaintProc {
+       pop
+       exec fill
+} def
+currentdict
+end
+/P6 exch def
+
+/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
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 3825 2175 m 4725 2325 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 3825 2175 m 4425 1725 l 4725 2325 l
+ cp gs col0 s gr 
+% Polyline
+n 4425 1725 m 4275 1425 l 3675 1575 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 1575 m 3825 2175 l 2625 2175 l
+ cp gs col0 s gr 
+% Polyline
+n 2625 2175 m 2925 3075 l 1725 3225 l
+ cp gs col0 s gr 
+% Polyline
+n 1725 3225 m 2325 4275 l 1125 4275 l
+ cp gs col0 s gr 
+% Polyline
+n 1125 4275 m 2175 6525 l 825 6675 l
+ cp gs col0 s gr 
+% Polyline
+n 825 6675 m 2325 8625 l 975 8775 l
+ cp gs col0 s gr 
+% Polyline
+n 9900 6465 m 11100 4365 l 11850 6015 l
+ cp gs col0 s gr 
+% Polyline
+n 9750 4815 m 11100 4365 l 9900 6465 l
+ cp gs col0 s gr 
+% Polyline
+n 5313 4724 m 5463 6374 l 3363 5924 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 224.20 314.93] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3669 4420 m 5319 4720 l 5469 3370 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 244.60 224.67] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3381 5921 m 3531 7721 l 5481 6371 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 225.40 394.73] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7815 6030 m 7965 7830 l 6615 6630 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 441.00 402.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7371 3170 m 6735 4350 l 8121 4520 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 449.00 211.33] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7365 3180 m 8685 3045 l 8115 4530 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 491.00 203.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9878 3483 m 8078 4533 l 8678 3033 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 538.53 202.20] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8083 4519 m 6733 4369 l 7783 6019 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 448.87 291.27] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7800 6015 m 7950 7815 l 9900 6465 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 520.00 401.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8108 4515 m 9758 4815 l 9908 3465 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 540.53 231.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 5475 3375 m 3675 4425 l 4275 2925 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 245.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 4275 2925 m 4725 2325 l 5475 3375 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 285.00 155.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2325 4275 m 2175 6525 l 3375 5925 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 145.00 285.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3375 5925 m 3525 7725 l 2175 6525 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 145.00 395.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2175 6525 m 2325 8625 l 3525 7725 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 145.00 435.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3673 4424 m 5323 4724 l 3373 5924 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 224.87 294.93] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8697 3032 m 9147 2432 l 9897 3482 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 579.80 162.13] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8100 4515 m 9750 4815 l 7800 6015 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 520.00 301.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3675 4425 m 2325 4275 l 3375 5925 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 155.00 285.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2925 3075 m 4275 2925 l 3675 4425 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 195.00 195.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2925 3075 m 3825 2175 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 2919 3072 m 2319 4272 l 3669 4422 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 154.60 204.80] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 6750 4335 m 6578 6630 l 7778 6030 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 438.53 289.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9750 4810 m 9900 6460 l 7800 6010 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 520.00 320.67] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 6593 6620 m 6743 8720 l 7943 7820 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 439.53 441.33] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 5332 4727 m 5482 3377 l 6682 4277 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 355.47 225.13] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9767 4814 m 9917 3464 l 11117 4364 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 651.13 230.93] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+90.000 slw
+n 3527 7730 m 3377 5915 l 3692 4400 l
+ 5462 3395 l gs col0 s gr 
+% Polyline
+105.000 slw
+n 9917 3471 m 8087 4521 l 7787 6021 l
+ 7937 7821 l gs col0 s gr 
+$F2psEnd
+rs
+end
diff --git a/doc/fem/fig/ghost_node.fig b/doc/fem/fig/ghost_node.fig
new file mode 100644 (file)
index 0000000..d501a0a
--- /dev/null
@@ -0,0 +1,87 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3825 2175 4725 2325 4275 2925 3825 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3825 2175 4425 1725 4725 2325 3825 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4425 1725 4275 1425 3675 1575 4425 1725
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3675 1575 3825 2175 2625 2175 3675 1575
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2625 2175 2925 3075 1725 3225 2625 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        1725 3225 2325 4275 1125 4275 1725 3225
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        1125 4275 2175 6525 825 6675 1125 4275
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        825 6675 2325 8625 975 8775 825 6675
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9900 6465 11100 4365 11850 6015 9900 6465
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9750 4815 11100 4365 9900 6465 9750 4815
+2 1 0 7 0 7 48 0 -1 0.000 0 0 -1 0 0 4
+        3527 7730 3377 5915 3692 4400 5462 3395
+2 1 0 8 0 7 48 0 -1 0.000 0 0 -1 0 0 4
+        9917 3471 8087 4521 7787 6021 7937 7821
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        5313 4724 5463 6374 3363 5924 5313 4724
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3669 4420 5319 4720 5469 3370 3669 4420
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3381 5921 3531 7721 5481 6371 3381 5921
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        7815 6030 7965 7830 6615 6630 7815 6030
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        7371 3170 6735 4350 8121 4520 7371 3170
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        7365 3180 8685 3045 8115 4530 7365 3180
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        9878 3483 8078 4533 8678 3033 9878 3483
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        8083 4519 6733 4369 7783 6019 8083 4519
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        7800 6015 7950 7815 9900 6465 7800 6015
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8108 4515 9758 4815 9908 3465 8108 4515
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        5475 3375 3675 4425 4275 2925 5475 3375
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        4275 2925 4725 2325 5475 3375 4275 2925
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        2325 4275 2175 6525 3375 5925 2325 4275
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        3375 5925 3525 7725 2175 6525 3375 5925
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        2175 6525 2325 8625 3525 7725 2175 6525
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3673 4424 5323 4724 3373 5924 3673 4424
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        8697 3032 9147 2432 9897 3482 8697 3032
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8100 4515 9750 4815 7800 6015 8100 4515
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        3675 4425 2325 4275 3375 5925 3675 4425
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        2925 3075 4275 2925 3675 4425 2925 3075
+2 3 0 2 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        2925 3075 3825 2175 4275 2925 2925 3075
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        2919 3072 2319 4272 3669 4422 2919 3072
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        6750 4335 6578 6630 7778 6030 6750 4335
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        9750 4810 9900 6460 7800 6010 9750 4810
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        6593 6620 6743 8720 7943 7820 6593 6620
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        5332 4727 5482 3377 6682 4277 5332 4727
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        9767 4814 9917 3464 11117 4364 9767 4814
diff --git a/doc/fem/fig/ghost_node.png b/doc/fem/fig/ghost_node.png
new file mode 100644 (file)
index 0000000..c89f91c
Binary files /dev/null and b/doc/fem/fig/ghost_node.png differ
diff --git a/doc/fem/fig/ghost_pre.eps b/doc/fem/fig/ghost_pre.eps
new file mode 100644 (file)
index 0000000..33c2df0
--- /dev/null
@@ -0,0 +1,175 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: ghost_pre.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Dec 13 16:07:43 2002
+%%For: olawlor@talent.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 665 444
+%%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 444 moveto 0 0 lineto 665 0 lineto 665 444 lineto closepath clip newpath
+-48.2 527.8 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
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 2925 3075 m 4275 2925 l 3675 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 4275 2925 m 4725 2325 l 5475 3375 l
+ cp gs col0 s gr 
+% Polyline
+n 5475 3375 m 3675 4425 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 4425 m 2325 4275 l 3375 5925 l
+ cp gs col0 s gr 
+% Polyline
+n 2925 3075 m 2325 4275 l 3675 4425 l
+ cp gs col0 s gr 
+% Polyline
+n 2925 3075 m 3825 2175 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 3825 2175 m 4725 2325 l 4275 2925 l
+ cp gs col0 s gr 
+% Polyline
+n 3825 2175 m 4425 1725 l 4725 2325 l
+ cp gs col0 s gr 
+% Polyline
+n 2325 4275 m 2175 6525 l 3375 5925 l
+ cp gs col0 s gr 
+% Polyline
+n 2175 6525 m 2325 8625 l 3525 7725 l
+ cp gs col0 s gr 
+% Polyline
+n 4425 1725 m 4275 1425 l 3675 1575 l
+ cp gs col0 s gr 
+% Polyline
+n 3675 1575 m 3825 2175 l 2625 2175 l
+ cp gs col0 s gr 
+% Polyline
+n 2625 2175 m 2925 3075 l 1725 3225 l
+ cp gs col0 s gr 
+% Polyline
+n 1725 3225 m 2325 4275 l 1125 4275 l
+ cp gs col0 s gr 
+% Polyline
+n 1125 4275 m 2175 6525 l 825 6675 l
+ cp gs col0 s gr 
+% Polyline
+n 825 6675 m 2325 8625 l 975 8775 l
+ cp gs col0 s gr 
+% Polyline
+n 3375 5925 m 3525 7725 l 2175 6525 l
+ cp gs col0 s gr 
+% Polyline
+45.000 slw
+n 3525 7725 m 3375 5910 l 3690 4395 l
+ 5460 3390 l gs col0 s gr 
+% Polyline
+15.000 slw
+n 8100 4515 m 9750 4815 l 7800 6015 l
+ cp gs col0 s gr 
+% Polyline
+n 9750 4815 m 9900 6465 l 7800 6015 l
+ cp gs col0 s gr 
+% Polyline
+n 7800 6015 m 7950 7815 l 9900 6465 l
+ cp gs col0 s gr 
+% Polyline
+n 9900 6465 m 11100 4365 l 11850 6015 l
+ cp gs col0 s gr 
+% Polyline
+n 9750 4815 m 11100 4365 l 9900 6465 l
+ cp gs col0 s gr 
+% Polyline
+n 9767 4814 m 9917 3464 l 11117 4364 l
+ cp gs col0 s gr 
+% Polyline
+n 8108 4515 m 9758 4815 l 9908 3465 l
+ cp gs col0 s gr 
+% Polyline
+45.000 slw
+n 9930 3465 m 8100 4515 l 7800 6015 l
+ 7950 7815 l gs col0 s gr 
+$F2psEnd
+rs
diff --git a/doc/fem/fig/ghost_pre.fig b/doc/fem/fig/ghost_pre.fig
new file mode 100644 (file)
index 0000000..8fadd20
--- /dev/null
@@ -0,0 +1,61 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2925 3075 4275 2925 3675 4425 2925 3075
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4275 2925 4725 2325 5475 3375 4275 2925
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        5475 3375 3675 4425 4275 2925 5475 3375
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3675 4425 2325 4275 3375 5925 3675 4425
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2925 3075 2325 4275 3675 4425 2925 3075
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2925 3075 3825 2175 4275 2925 2925 3075
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3825 2175 4725 2325 4275 2925 3825 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3825 2175 4425 1725 4725 2325 3825 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2325 4275 2175 6525 3375 5925 2325 4275
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2175 6525 2325 8625 3525 7725 2175 6525
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4425 1725 4275 1425 3675 1575 4425 1725
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3675 1575 3825 2175 2625 2175 3675 1575
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        2625 2175 2925 3075 1725 3225 2625 2175
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        1725 3225 2325 4275 1125 4275 1725 3225
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        1125 4275 2175 6525 825 6675 1125 4275
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        825 6675 2325 8625 975 8775 825 6675
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3375 5925 3525 7725 2175 6525 3375 5925
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3525 7725 3375 5910 3690 4395 5460 3390
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        8100 4515 9750 4815 7800 6015 8100 4515
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9750 4815 9900 6465 7800 6015 9750 4815
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        7800 6015 7950 7815 9900 6465 7800 6015
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9900 6465 11100 4365 11850 6015 9900 6465
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9750 4815 11100 4365 9900 6465 9750 4815
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9767 4814 9917 3464 11117 4364 9767 4814
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        8108 4515 9758 4815 9908 3465 8108 4515
+2 1 0 4 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        9930 3465 8100 4515 7800 6015 7950 7815
diff --git a/doc/fem/fig/ghost_pre.png b/doc/fem/fig/ghost_pre.png
new file mode 100644 (file)
index 0000000..0b1f58b
Binary files /dev/null and b/doc/fem/fig/ghost_pre.png differ
index d6c9193633bba888287b9af069c10be1292672f3..97ee86376cf33d9023765001ccb22042688237a2 100644 (file)
@@ -1,13 +1,9 @@
 %!PS-Adobe-2.0 EPSF-2.0
 %%Title: partitioned_mesh.eps
-%%Creator: fig2dev Version 3.2 Patchlevel 1
-%%CreationDate: Fri Dec  8 13:22:20 2000
-%%For: olawlor@amd (Orion Sky Lawlor)
-%%Orientation: Portrait
-%%BoundingBox: 0 0 250 179
-%%Pages: 0
-%%BeginSetup
-%%EndSetup
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Dec 13 15:34:45 2002
+%%For: olawlor@talent.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 673 414
 %%Magnification: 1.0000
 %%EndComments
 /$F2psDict 200 dict def
@@ -49,7 +45,8 @@ $F2psDict /mtrx matrix put
 
 end
 save
--179.0 321.0 translate
+newpath 0 414 moveto 0 0 lineto 673 0 lineto 673 414 lineto closepath clip newpath
+-58.5 495.0 translate
 1 -1 scale
 
 /cp {closepath} bind def
@@ -98,79 +95,74 @@ save
 
 /$F2psBegin {$F2psDict begin /$F2psEnteredState save def} def
 /$F2psEnd {$F2psEnteredState restore end} def
-%%EndProlog
 
 $F2psBegin
 10 setmiterlimit
-n -1000 6342 m -1000 -1000 l 8148 -1000 l 8148 6342 l cp clip
  0.06000 0.06000 sc
-% Polyline
+%
+% Fig objects follow
+%
 7.500 slw
-n 3570 2926 m 4736 4465 l 5855 2833 l 3570 2926 l  cp gs col0 s gr 
-% Polyline
-n 4736 4465 m 6975 4139 l 5855 2833 l gs col0 s gr 
-% Polyline
-n 4736 4465 m 3150 5025 l 3570 2926 l gs col0 s gr 
 % Ellipse
-n 3142 5017 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+n 2475 2250 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 1456 7650 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
 
 % Ellipse
-n 4740 4470 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+n 5356 6150 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
 
 % Ellipse
-n 3570 2925 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+n 8206 1875 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
 
 % Ellipse
-n 5857 2835 38 38 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+n 6075 6900 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
 
 % Ellipse
-n 6967 4140 37 37 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+n 8925 2625 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
+
+% Ellipse
+n 11700 6075 106 106 0 360 DrawEllipse gs 0.00 setgray ef gr gs col0 s gr
 
 % Polyline
- [15 45] 45 sd
-n 4725 4515 m 4724 4517 l 4722 4523 l 4719 4532 l 4714 4546 l 4707 4564 l
- 4699 4586 l 4690 4611 l 4680 4638 l 4670 4665 l 4661 4693 l
- 4651 4720 l 4642 4745 l 4634 4768 l 4627 4789 l 4621 4809 l
- 4615 4827 l 4610 4845 l 4605 4864 l 4599 4884 l 4594 4903 l
- 4589 4922 l 4584 4941 l 4579 4961 l 4574 4980 l 4569 4999 l
- 4565 5018 l 4560 5037 l 4556 5055 l 4552 5074 l 4549 5091 l
- 4547 5108 l 4546 5124 l 4545 5140 l 4545 5157 l 4547 5174 l
- 4551 5191 l 4556 5208 l 4562 5227 l 4569 5246 l 4577 5266 l
- 4584 5284 l 4591 5300 l 4597 5313 l 4601 5322 l 4604 5327 l
- 4605 5330 l gs col0 s gr  [] 0 sd
+30.000 slw
+n 2475 2175 m 1425 7650 l
+ 5325 6150 l gs col0 s gr 
 % Polyline
- [15 45] 45 sd
-n 5880 2820 m 5881 2817 l 5883 2811 l 5886 2800 l 5891 2785 l 5898 2766 l
- 5905 2745 l 5912 2723 l 5919 2702 l 5927 2682 l 5934 2664 l
- 5941 2648 l 5948 2633 l 5955 2620 l 5963 2607 l 5971 2594 l
- 5980 2582 l 5990 2569 l 6000 2556 l 6010 2544 l 6021 2531 l
- 6031 2518 l 6042 2506 l 6052 2495 l 6062 2483 l 6072 2473 l
- 6081 2464 l 6090 2455 l 6103 2445 l 6116 2436 l 6131 2427 l
- 6147 2419 l 6164 2412 l 6180 2405 l 6193 2400 l 6201 2397 l
- 6204 2395 l 6205 2395 l gs col0 s gr  [] 0 sd
-/Times-Roman ff 180.00 scf sf
-6795 4350 m
-gs 1 -1 sc (B n2) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-2998 5227 m
+n 2475 2250 m 8175 1875 l 5325 6150 l
+ 2475 2175 l gs col0 s gr 
+% Polyline
+n 6075 6900 m 8925 2625 l 11700 6075 l
+ 6075 6900 l  cp gs col0 s gr 
+/Times-Roman ff 480.00 scf sf
+975 8250 m
 gs 1 -1 sc (A n3) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-3385 2835 m
+/Times-Roman ff 480.00 scf sf
+1950 1875 m
 gs 1 -1 sc (A n1) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-4535 3505 m
+/Times-Roman ff 480.00 scf sf
+4800 3675 m
 gs 1 -1 sc (A e2) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-3665 4155 m
+/Times-Roman ff 480.00 scf sf
+2625 5400 m
 gs 1 -1 sc (A e1) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-4308 4687 m
-gs 1 -1 sc (A n4  B n3) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-5518 2778 m
-gs 1 -1 sc (A n2  B n1) col0 sh gr
-/Times-Roman ff 180.00 scf sf
-5775 3825 m
+/Times-Roman ff 480.00 scf sf
+4275 6825 m
+gs 1 -1 sc (A n4) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+7275 1725 m
+gs 1 -1 sc (A n2) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+6150 7500 m
+gs 1 -1 sc (B n3) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+11250 6675 m
+gs 1 -1 sc (B n2) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+9150 2475 m
+gs 1 -1 sc (B n1) col0 sh gr
+/Times-Roman ff 480.00 scf sf
+8700 5250 m
 gs 1 -1 sc (B e1) col0 sh gr
 $F2psEnd
 rs
diff --git a/doc/fem/fig/partitioned_mesh.fig b/doc/fem/fig/partitioned_mesh.fig
new file mode 100644 (file)
index 0000000..30fb319
--- /dev/null
@@ -0,0 +1,32 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 2475 2250 106 106 2475 2250 2581 2250
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 1456 7650 106 106 1456 7650 1562 7650
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 5356 6150 106 106 5356 6150 5462 6150
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 8206 1875 106 106 8206 1875 8312 1875
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 6075 6900 106 106 6075 6900 6181 6900
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 8925 2625 106 106 8925 2625 9031 2625
+1 3 0 1 0 0 50 0 20 0.000 1 0.0000 11700 6075 106 106 11700 6075 11806 6075
+2 1 0 3 0 7 50 0 -1 0.000 0 0 -1 0 0 3
+        2475 2175 1425 7650 5325 6150
+2 1 0 3 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        2475 2250 8175 1875 5325 6150 2475 2175
+2 1 0 3 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        6075 6900 8925 2625 11700 6075 6075 6900
+4 0 0 50 0 0 32 0.0000 4 360 945 975 8250 A n3\001
+4 0 0 50 0 0 32 0.0000 4 360 945 1950 1875 A n1\001
+4 0 0 50 0 0 32 0.0000 4 360 915 4800 3675 A e2\001
+4 0 0 50 0 0 32 0.0000 4 360 915 2625 5400 A e1\001
+4 0 0 50 0 0 32 0.0000 4 360 945 4275 6825 A n4\001
+4 0 0 50 0 0 32 0.0000 4 360 945 7275 1725 A n2\001
+4 0 0 50 0 0 32 0.0000 4 360 915 6150 7500 B n3\001
+4 0 0 50 0 0 32 0.0000 4 360 915 11250 6675 B n2\001
+4 0 0 50 0 0 32 0.0000 4 360 915 9150 2475 B n1\001
+4 0 0 50 0 0 32 0.0000 4 360 885 8700 5250 B e1\001
index 7ae7cb434008a2471c79828320a7505b15e216e0..dd29e66c60dd1f2f5c4ef293971d93d53db8b544 100644 (file)
Binary files a/doc/fem/fig/partitioned_mesh.png and b/doc/fem/fig/partitioned_mesh.png differ
diff --git a/doc/fem/fig/sym_ghost.eps b/doc/fem/fig/sym_ghost.eps
new file mode 100644 (file)
index 0000000..53d36c0
--- /dev/null
@@ -0,0 +1,687 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: sym_ghost.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Dec 13 17:27:34 2002
+%%For: olawlor@sense.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 534 390
+%%Magnification: 1.0000
+%%EndComments
+/MyAppDict 100 dict dup begin def
+/$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 390 moveto 0 0 lineto 534 0 lineto 534 390 lineto closepath clip newpath
+-115.7 860.9 translate
+1 -1 scale
+
+% This junk string is used by the show operators
+/PATsstr 1 string def
+/PATawidthshow {       % cx cy cchar rx ry string
+  % Loop over each character in the string
+  {  % cx cy cchar rx ry char
+    % Show the character
+    dup                                % cx cy cchar rx ry char char
+    PATsstr dup 0 4 -1 roll put        % cx cy cchar rx ry char (char)
+    false charpath             % cx cy cchar rx ry char
+    /clip load PATdraw
+    % Move past the character (charpath modified the
+    % current point)
+    currentpoint                       % cx cy cchar rx ry char x y
+    newpath
+    moveto                     % cx cy cchar rx ry char
+    % Reposition by cx,cy if the character in the string is cchar
+    3 index eq {                       % cx cy cchar rx ry
+      4 index 4 index rmoveto
+    } if
+    % Reposition all characters by rx ry
+    2 copy rmoveto             % cx cy cchar rx ry
+  } forall
+  pop pop pop pop pop          % -
+  currentpoint
+  newpath
+  moveto
+} bind def
+/PATcg {
+  7 dict dup begin
+    /lw currentlinewidth def
+    /lc currentlinecap def
+    /lj currentlinejoin def
+    /ml currentmiterlimit def
+    /ds [ currentdash ] def
+    /cc [ currentrgbcolor ] def
+    /cm matrix currentmatrix def
+  end
+} bind def
+% PATdraw - calculates the boundaries of the object and
+% fills it with the current pattern
+/PATdraw {                     % proc
+  save exch
+    PATpcalc                   % proc nw nh px py
+    5 -1 roll exec             % nw nh px py
+    newpath
+    PATfill                    % -
+  restore
+} bind def
+% PATfill - performs the tiling for the shape
+/PATfill { % nw nh px py PATfill -
+  PATDict /CurrentPattern get dup begin
+    setfont
+    % Set the coordinate system to Pattern Space
+    PatternGState PATsg
+    % Set the color for uncolored pattezns
+    PaintType 2 eq { PATDict /PColor get PATsc } if
+    % Create the string for showing
+    3 index string             % nw nh px py str
+    % Loop for each of the pattern sources
+    0 1 Multi 1 sub {          % nw nh px py str source
+       % Move to the starting location
+       3 index 3 index         % nw nh px py str source px py
+       moveto                  % nw nh px py str source
+       % For multiple sources, set the appropriate color
+       Multi 1 ne { dup PC exch get PATsc } if
+       % Set the appropriate string for the source
+       0 1 7 index 1 sub { 2 index exch 2 index put } for pop
+       % Loop over the number of vertical cells
+       3 index                 % nw nh px py str nh
+       {                       % nw nh px py str
+         currentpoint          % nw nh px py str cx cy
+         2 index oldshow       % nw nh px py str cx cy
+         YStep add moveto      % nw nh px py str
+       } repeat                % nw nh px py str
+    } for
+    5 { pop } repeat
+  end
+} bind def
+
+% PATkshow - kshow with the current pattezn
+/PATkshow {                    % proc string
+  exch bind                    % string proc
+  1 index 0 get                        % string proc char
+  % Loop over all but the last character in the string
+  0 1 4 index length 2 sub {
+                               % string proc char idx
+    % Find the n+1th character in the string
+    3 index exch 1 add get     % string proe char char+1
+    exch 2 copy                        % strinq proc char+1 char char+1 char
+    % Now show the nth character
+    PATsstr dup 0 4 -1 roll put        % string proc chr+1 chr chr+1 (chr)
+    false charpath             % string proc char+1 char char+1
+    /clip load PATdraw
+    % Move past the character (charpath modified the current point)
+    currentpoint newpath moveto
+    % Execute the user proc (should consume char and char+1)
+    mark 3 1 roll              % string proc char+1 mark char char+1
+    4 index exec               % string proc char+1 mark...
+    cleartomark                        % string proc char+1
+  } for
+  % Now display the last character
+  PATsstr dup 0 4 -1 roll put  % string proc (char+1)
+  false charpath               % string proc
+  /clip load PATdraw
+  neewath
+  pop pop                      % -
+} bind def
+% PATmp - the makepattern equivalent
+/PATmp {                       % patdict patmtx PATmp patinstance
+  exch dup length 7 add                % We will add 6 new entries plus 1 FID
+  dict copy                    % Create a new dictionary
+  begin
+    % Matrix to install when painting the pattern
+    TilingType PATtcalc
+    /PatternGState PATcg def
+    PatternGState /cm 3 -1 roll put
+    % Check for multi pattern sources (Level 1 fast color patterns)
+    currentdict /Multi known not { /Multi 1 def } if
+    % Font dictionary definitions
+    /FontType 3 def
+    % Create a dummy encoding vector
+    /Encoding 256 array def
+    3 string 0 1 255 {
+      Encoding exch dup 3 index cvs cvn put } for pop
+    /FontMatrix matrix def
+    /FontBBox BBox def
+    /BuildChar {
+       mark 3 1 roll           % mark dict char
+       exch begin
+       Multi 1 ne {PaintData exch get}{pop} ifelse  % mark [paintdata]
+         PaintType 2 eq Multi 1 ne or
+         { XStep 0 FontBBox aload pop setcachedevice }
+         { XStep 0 setcharwidth } ifelse
+         currentdict           % mark [paintdata] dict
+         /PaintProc load       % mark [paintdata] dict paintproc
+       end
+       gsave
+         false PATredef exec true PATredef
+       grestore
+       cleartomark             % -
+    } bind def
+    currentdict
+  end                          % newdict
+  /foo exch                    % /foo newlict
+  definefont                   % newfont
+} bind def
+% PATpcalc - calculates the starting point and width/height
+% of the tile fill for the shape
+/PATpcalc {    % - PATpcalc nw nh px py
+  PATDict /CurrentPattern get begin
+    gsave
+       % Set up the coordinate system to Pattern Space
+       % and lock down pattern
+       PatternGState /cm get setmatrix
+       BBox aload pop pop pop translate
+       % Determine the bounding box of the shape
+       pathbbox                        % llx lly urx ury
+    grestore
+    % Determine (nw, nh) the # of cells to paint width and height
+    PatHeight div ceiling              % llx lly urx qh
+    4 1 roll                           % qh llx lly urx
+    PatWidth div ceiling               % qh llx lly qw
+    4 1 roll                           % qw qh llx lly
+    PatHeight div floor                        % qw qh llx ph
+    4 1 roll                           % ph qw qh llx
+    PatWidth div floor                 % ph qw qh pw
+    4 1 roll                           % pw ph qw qh
+    2 index sub cvi abs                        % pw ph qs qh-ph
+    exch 3 index sub cvi abs exch      % pw ph nw=qw-pw nh=qh-ph
+    % Determine the starting point of the pattern fill
+    %(px, py)
+    4 2 roll                           % nw nh pw ph
+    PatHeight mul                      % nw nh pw py
+    exch                               % nw nh py pw
+    PatWidth mul exch                  % nw nh px py
+  end
+} bind def
+
+% Save the original routines so that we can use them later on
+/oldfill       /fill load def
+/oldeofill     /eofill load def
+/oldstroke     /stroke load def
+/oldshow       /show load def
+/oldashow      /ashow load def
+/oldwidthshow  /widthshow load def
+/oldawidthshow /awidthshow load def
+/oldkshow      /kshow load def
+
+% These defs are necessary so that subsequent procs don't bind in
+% the originals
+/fill     { oldfill } bind def
+/eofill           { oldeofill } bind def
+/stroke           { oldstroke } bind def
+/show     { oldshow } bind def
+/ashow    { oldashow } bind def
+/widthshow { oldwidthshow } bind def
+/awidthshow { oldawidthshow } bind def
+/kshow            { oldkshow } bind def
+/PATredef {
+  MyAppDict begin
+    {
+    /fill { /clip load PATdraw newpath } bind def
+    /eofill { /eoclip load PATdraw newpath } bind def
+    /stroke { PATstroke } bind def
+    /show { 0 0 null 0 0 6 -1 roll PATawidthshow } bind def
+    /ashow { 0 0 null 6 3 roll PATawidthshow }
+    bind def
+    /widthshow { 0 0 3 -1 roll PATawidthshow }
+    bind def
+    /awidthshow { PATawidthshow } bind def
+    /kshow { PATkshow } bind def
+  } {
+    /fill   { oldfill } bind def
+    /eofill { oldeofill } bind def
+    /stroke { oldstroke } bind def
+    /show   { oldshow } bind def
+    /ashow  { oldashow } bind def
+    /widthshow { oldwidthshow } bind def
+    /awidthshow { oldawidthshow } bind def
+    /kshow  { oldkshow } bind def
+    } ifelse
+  end
+} bind def
+false PATredef
+% Conditionally define setcmykcolor if not available
+/setcmykcolor where { pop } {
+  /setcmykcolor {
+    1 sub 4 1 roll
+    3 {
+       3 index add neg dup 0 lt { pop 0 } if 3 1 roll
+    } repeat
+    setrgbcolor - pop
+  } bind def
+} ifelse
+/PATsc {               % colorarray
+  aload length         % c1 ... cn length
+    dup 1 eq { pop setgray } { 3 eq { setrgbcolor } { setcmykcolor
+  } ifelse } ifelse
+} bind def
+/PATsg {               % dict
+  begin
+    lw setlinewidth
+    lc setlinecap
+    lj setlinejoin
+    ml setmiterlimit
+    ds aload pop setdash
+    cc aload pop setrgbcolor
+    cm setmatrix
+  end
+} bind def
+
+/PATDict 3 dict def
+/PATsp {
+  true PATredef
+  PATDict begin
+    /CurrentPattern exch def
+    % If it's an uncolored pattern, save the color
+    CurrentPattern /PaintType get 2 eq {
+      /PColor exch def
+    } if
+    /CColor [ currentrgbcolor ] def
+  end
+} bind def
+% PATstroke - stroke with the current pattern
+/PATstroke {
+  countdictstack
+  save
+  mark
+  {
+    currentpoint strokepath moveto
+    PATpcalc                           % proc nw nh px py
+    clip newpath PATfill
+    } stopped {
+       (*** PATstroke Warning: Path is too complex, stroking
+         with gray) =
+    cleartomark
+    restore
+    countdictstack exch sub dup 0 gt
+       { { end } repeat } { pop } ifelse
+    gsave 0.5 setgray oldstroke grestore
+  } { pop restore pop } ifelse
+  newpath
+} bind def
+/PATtcalc {            % modmtx tilingtype PATtcalc tilematrix
+  % Note: tiling types 2 and 3 are not supported
+  gsave
+    exch concat                                        % tilingtype
+    matrix currentmatrix exch                  % cmtx tilingtype
+    % Tiling type 1 and 3: constant spacing
+    2 ne {
+       % Distort the pattern so that it occupies
+       % an integral number of device pixels
+       dup 4 get exch dup 5 get exch           % tx ty cmtx
+       XStep 0 dtransform
+       round exch round exch                   % tx ty cmtx dx.x dx.y
+       XStep div exch XStep div exch           % tx ty cmtx a b
+       0 YStep dtransform
+       round exch round exch                   % tx ty cmtx a b dy.x dy.y
+       YStep div exch YStep div exch           % tx ty cmtx a b c d
+       7 -3 roll astore                        % { a b c d tx ty }
+    } if
+  grestore
+} bind def
+/PATusp {
+  false PATredef
+  PATDict begin
+    CColor PATsc
+  end
+} bind def
+
+% left45
+11 dict begin
+/PaintType 1 def
+/PatternType 1 def
+/TilingType 1 def
+/BBox [0 0 1 1] def
+/XStep 1 def
+/YStep 1 def
+/PatWidth 1 def
+/PatHeight 1 def
+/Multi 2 def
+/PaintData [
+  { clippath } bind
+  { 32 32 true [ 32 0 0 -32 0 32 ]
+       {<808080804040404020202020101010100808080804040404
+       020202020101010180808080404040402020202010101010
+       080808080404040402020202010101018080808040404040
+       202020201010101008080808040404040202020201010101
+       808080804040404020202020101010100808080804040404
+       0202020201010101>}
+     imagemask } bind
+] def
+/PaintProc {
+       pop
+       exec fill
+} def
+currentdict
+end
+/P4 exch def
+
+% crosshatch45
+11 dict begin
+/PaintType 1 def
+/PatternType 1 def
+/TilingType 1 def
+/BBox [0 0 1 1] def
+/XStep 1 def
+/YStep 1 def
+/PatWidth 1 def
+/PatHeight 1 def
+/Multi 2 def
+/PaintData [
+  { clippath } bind
+  { 32 32 true [ 32 0 0 -32 0 32 ]
+       {<828282824444444428282828101010102828282844444444
+       828282820101010182828282444444442828282810101010
+       282828284444444482828282010101018282828244444444
+       282828281010101028282828444444448282828201010101
+       828282824444444428282828101010102828282844444444
+       8282828201010101>}
+     imagemask } bind
+] def
+/PaintProc {
+       pop
+       exec fill
+} def
+currentdict
+end
+/P6 exch def
+
+/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
+10 setmiterlimit
+ 0.06000 0.06000 sc
+%
+% Fig objects follow
+%
+% Polyline
+15.000 slw
+n 3750 12450 m 4050 13500 l 4800 12900 l
+ cp gs col0 s gr 
+% Polyline
+n 4500 9900 m 5550 10950 l 4200 10950 l
+ cp gs col0 s gr 
+% Polyline
+n 4200 10950 m 5100 11700 l 4050 11700 l
+ cp gs col0 s gr 
+% Polyline
+n 4050 11700 m 4950 12300 l 3750 12450 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 12900 m 4950 12300 l 5700 12750 l
+ cp gs col0 s gr 
+% Polyline
+n 5700 12750 m 5250 13500 l 4800 12900 l
+ cp gs col0 s gr 
+% Polyline
+n 4800 12900 m 5250 13500 l 4050 13500 l
+ cp gs col0 s gr 
+% Polyline
+n 5250 13500 m 5700 12750 l 6450 13500 l
+ cp gs col0 s gr 
+% Polyline
+n 6450 13500 m 6750 12600 l 5700 12750 l
+ cp gs col0 s gr 
+% Polyline
+n 6450 13500 m 7500 13500 l 6750 12600 l
+ cp gs col0 s gr 
+% Polyline
+n 6750 12600 m 7650 12450 l 7500 13500 l
+ cp gs col0 s gr 
+% Polyline
+n 7500 13500 m 8400 13500 l 7650 12450 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 12450 m 8700 12750 l 8400 13500 l
+ cp gs col0 s gr 
+% Polyline
+n 8400 13500 m 9750 13500 l 8700 12750 l
+ cp gs col0 s gr 
+% Polyline
+n 8850 11850 m 7650 12450 l 8700 12750 l
+ cp gs col0 s gr 
+% Polyline
+n 7650 12450 m 7200 11400 l 6750 12600 l
+ cp gs col0 s gr 
+% Polyline
+n 7200 11400 m 6150 11700 l 6750 12600 l
+ cp gs col0 s gr 
+% Polyline
+n 6750 12600 m 5700 12750 l 6150 11700 l
+ cp gs col0 s gr 
+% Polyline
+n 6150 11700 m 4950 12300 l 5700 12750 l
+ cp gs col0 s gr 
+% Polyline
+n 4950 12300 m 5100 11700 l 4050 11700 l
+ cp gs col0 s gr 
+% Polyline
+n 5100 11700 m 6150 11700 l 4950 12300 l
+ cp gs col0 s gr 
+% Polyline
+n 5100 11700 m 5550 10950 l 6150 11700 l
+ cp gs col0 s gr 
+% Polyline
+n 4500 9900 m 4050 9150 l 3000 10500 l
+ cp gs col0 s gr 
+% Polyline
+n 3750 12450 m 4050 11700 l 3000 11550 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 10500 m 2250 9450 l 3000 9000 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 150.00 600.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 2100 11850 m 3000 11550 l 3000 12600 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 140.00 770.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 1950 12750 m 3000 12600 l 3000 13500 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 130.00 840.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9750 12600 m 10800 13500 l 9750 13500 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 650.00 840.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9744 11521 m 10494 12421 l 9744 12571 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 649.60 768.07] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 4050 9150 m 3000 9000 l 3000 10500 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 200.00 600.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3000 12600 m 4050 13500 l 3000 13500 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 200.00 840.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8850 11850 m 9750 11550 l 9750 12600 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 590.00 770.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8700 12750 m 9750 12600 l 9750 13500 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 580.00 840.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3000 11550 m 3750 12450 l 3000 12600 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 200.00 770.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 4050 11700 m 4200 10950 l 3000 11550 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 10500 m 4200 10950 l 3000 11550 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 200.00 700.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3000 10500 m 2100 10800 l 3000 11550 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 140.00 700.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 3000 10498 m 4500 9898 l 4200 10948 l
+ cp gs col0 s gr 
+% Polyline
+n 3000 13650 m
+ 3000 13950 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 200.00 910.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 9750 13650 m
+ 9750 13950 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 650.00 910.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+gs  clippath
+9765 13860 m 9765 13740 l 9478 13740 l 9718 13800 l 9478 13860 l cp
+2985 13740 m 2985 13860 l 3272 13860 l 3032 13800 l 3272 13740 l cp
+eoclip
+n 3000 13800 m
+ 9750 13800 l gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 200.00 920.00] PATmp PATsp ef gr PATusp gs col0 s gr gr
+
+% arrowhead
+n 3272 13740 m 3032 13800 l 3272 13860 l 3272 13740 l  cp gs 0.00 setgray ef gr  col0 s
+% arrowhead
+n 9478 13860 m 9718 13800 l 9478 13740 l 9478 13860 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 3000 9000 m 3825 8325 l 4050 9150 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 200.00 555.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 5400 9750 m 5925 9900 l 5550 10950 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 360.00 650.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 5550 10950 m 6150 10425 l 6600 10800 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 370.00 695.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 6600 10800 m 7425 10650 l 7200 11400 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 440.00 710.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7200 11400 m 7425 10650 l 8100 11400 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 480.00 710.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8100 11400 m 8700 11025 l 8850 11850 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 540.00 735.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8850 11850 m 8700 11025 l 9750 11550 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 580.00 735.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7200 11400 m 6600 10800 l 6150 11700 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 410.00 720.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 7200 11400 m 8100 11400 l 7650 12450 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 480.00 760.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 8850 11850 m 8100 11400 l 7650 12450 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 510.00 760.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 4500 9900 m 5400 9750 l 5550 10950 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 300.00 650.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 5550 10950 m 6600 10800 l 6150 11700 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 370.00 720.00] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 4048 9171 m 5398 9771 l 4498 9921 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P4 [16 0 0 -16 269.87 611.40] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+n 4060 9182 m 5485 8732 l 5410 9782 l
+ cp gs /PC [[1.00 1.00 1.00] [0.00 0.00 0.00]] def
+15.00 15.00 sc P6 [16 0 0 -16 270.67 582.13] PATmp PATsp ef gr PATusp gs col0 s gr 
+% Polyline
+7.500 slw
+n 3000 7875 m 3000 13500 l 9750 13500 l
+ 9750 9825 l gs col0 s gr 
+% Polyline
+n 9750 12600 m 8850 11850 l 8700 12750 l
+ cp gs col0 s gr 
+/Times-Roman ff 360.00 scf sf
+4650 14250 m
+gs 1 -1 sc (Translational Periodicity) col0 sh gr
+/Times-Roman ff 360.00 scf sf
+6075 9300 m
+gs 1 -1 sc (Other Mesh Chunks) col0 sh gr
+% Polyline
+90.000 slw
+n 3000 9000 m 4050 9150 l 5400 9750 l 5550 10950 l 6600 10800 l 7200 11400 l
+ 8100 11400 l 8850 11850 l
+ 9750 11550 l gs col0 s gr 
+$F2psEnd
+rs
+end
diff --git a/doc/fem/fig/sym_ghost.fig b/doc/fem/fig/sym_ghost.fig
new file mode 100644 (file)
index 0000000..a995c3c
--- /dev/null
@@ -0,0 +1,130 @@
+#FIG 3.2
+Landscape
+Center
+Inches
+Letter  
+100.00
+Single
+-2
+1200 2
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3750 12450 4050 13500 4800 12900 3750 12450
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4500 9900 5550 10950 4200 10950 4500 9900
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4200 10950 5100 11700 4050 11700 4200 10950
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4050 11700 4950 12300 3750 12450 4050 11700
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4800 12900 4950 12300 5700 12750 4800 12900
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        5700 12750 5250 13500 4800 12900 5700 12750
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4800 12900 5250 13500 4050 13500 4800 12900
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        5250 13500 5700 12750 6450 13500 5250 13500
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        6450 13500 6750 12600 5700 12750 6450 13500
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        6450 13500 7500 13500 6750 12600 6450 13500
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        6750 12600 7650 12450 7500 13500 6750 12600
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        7500 13500 8400 13500 7650 12450 7500 13500
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        7650 12450 8700 12750 8400 13500 7650 12450
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        8400 13500 9750 13500 8700 12750 8400 13500
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        8850 11850 7650 12450 8700 12750 8850 11850
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        7650 12450 7200 11400 6750 12600 7650 12450
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        7200 11400 6150 11700 6750 12600 7200 11400
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        6750 12600 5700 12750 6150 11700 6750 12600
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        6150 11700 4950 12300 5700 12750 6150 11700
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4950 12300 5100 11700 4050 11700 4950 12300
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        5100 11700 6150 11700 4950 12300 5100 11700
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        5100 11700 5550 10950 6150 11700 5100 11700
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        4500 9900 4050 9150 3000 10500 4500 9900
+2 3 0 2 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3750 12450 4050 11700 3000 11550 3750 12450
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3000 10500 2250 9450 3000 9000 3000 10500
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        2100 11850 3000 11550 3000 12600 2100 11850
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        1950 12750 3000 12600 3000 13500 1950 12750
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        9750 12600 10800 13500 9750 13500 9750 12600
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        9744 11521 10494 12421 9744 12571 9744 11521
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        4050 9150 3000 9000 3000 10500 4050 9150
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        3000 12600 4050 13500 3000 13500 3000 12600
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8850 11850 9750 11550 9750 12600 8850 11850
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8700 12750 9750 12600 9750 13500 8700 12750
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        3000 11550 3750 12450 3000 12600 3000 11550
+2 3 0 2 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        4050 11700 4200 10950 3000 11550 4050 11700
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        3000 10500 4200 10950 3000 11550 3000 10500
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3000 10500 2100 10800 3000 11550 3000 10500
+2 3 0 2 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        3000 10498 4500 9898 4200 10948 3000 10498
+2 1 0 2 0 7 50 0 46 0.000 0 0 -1 0 0 2
+        3000 13650 3000 13950
+2 1 0 2 0 7 50 0 46 0.000 0 0 -1 0 0 2
+        9750 13650 9750 13950
+2 1 0 2 0 7 50 0 46 0.000 0 0 -1 1 1 2
+       1 1 2.00 120.00 240.00
+       1 1 2.00 120.00 240.00
+        3000 13800 9750 13800
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        3000 9000 3825 8325 4050 9150 3000 9000
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        5400 9750 5925 9900 5550 10950 5400 9750
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        5550 10950 6150 10425 6600 10800 5550 10950
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        6600 10800 7425 10650 7200 11400 6600 10800
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        7200 11400 7425 10650 8100 11400 7200 11400
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        8100 11400 8700 11025 8850 11850 8100 11400
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        8850 11850 8700 11025 9750 11550 8850 11850
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        7200 11400 6600 10800 6150 11700 7200 11400
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        7200 11400 8100 11400 7650 12450 7200 11400
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        8850 11850 8100 11400 7650 12450 8850 11850
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        4500 9900 5400 9750 5550 10950 4500 9900
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        5550 10950 6600 10800 6150 11700 5550 10950
+2 1 0 7 0 7 48 0 -1 0.000 0 0 -1 0 0 9
+        3000 9000 4050 9150 5400 9750 5550 10950 6600 10800 7200 11400
+        8100 11400 8850 11850 9750 11550
+2 3 0 2 0 7 50 0 44 0.000 0 0 7 0 0 4
+        4048 9171 5398 9771 4498 9921 4048 9171
+2 3 0 2 0 7 50 0 46 0.000 0 0 7 0 0 4
+        4060 9182 5485 8732 5410 9782 4060 9182
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 4
+        3000 7875 3000 13500 9750 13500 9750 9825
+2 3 0 1 0 7 50 0 -1 0.000 0 0 7 0 0 4
+        9750 12600 8850 11850 8700 12750 9750 12600
+4 0 0 50 0 0 24 0.0000 4 330 3615 4650 14250 Translational Periodicity\001
+4 0 0 50 0 0 24 0.0000 4 255 3030 6075 9300 Other Mesh Chunks\001
diff --git a/doc/fem/fig/sym_ghost.png b/doc/fem/fig/sym_ghost.png
new file mode 100644 (file)
index 0000000..a476ad5
Binary files /dev/null and b/doc/fem/fig/sym_ghost.png differ