Wrote the NetFEM manual.
authorOrion Lawlor <olawlor@acm.org>
Fri, 20 Jun 2003 19:01:49 +0000 (19:01 +0000)
committerOrion Lawlor <olawlor@acm.org>
Fri, 20 Jun 2003 19:01:49 +0000 (19:01 +0000)
doc/netfem/Makefile [new file with mode: 0644]
doc/netfem/fig/example.eps [new file with mode: 0644]
doc/netfem/fig/example.fig [new file with mode: 0644]
doc/netfem/fig/example.pdf [new file with mode: 0644]
doc/netfem/manual.tex [new file with mode: 0644]

diff --git a/doc/netfem/Makefile b/doc/netfem/Makefile
new file mode 100644 (file)
index 0000000..802663c
--- /dev/null
@@ -0,0 +1,11 @@
+# Stub makefile for LaTeX PPL manual
+FILE=manual
+TEX=$(FILE).tex
+DEST=netfem
+LATEX2HTML=$(L2H) -split 3
+PROJECT_LINK='<a href="http://charm.cs.uiuc.edu/research/fem">FEM Homepage</a><br>'
+
+include ../Makefile.common
+
+index.tex:
+       touch index.tex
diff --git a/doc/netfem/fig/example.eps b/doc/netfem/fig/example.eps
new file mode 100644 (file)
index 0000000..7927569
--- /dev/null
@@ -0,0 +1,388 @@
+%!PS-Adobe-2.0 EPSF-2.0
+%%Title: example.eps
+%%Creator: fig2dev Version 3.2 Patchlevel 3d
+%%CreationDate: Fri Jun 20 11:09:18 2003
+%%For: olawlor@sense.cs.uiuc.edu (Orion Lawlor)
+%%BoundingBox: 0 0 574 203
+%%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 203 moveto 0 0 lineto 574 0 lineto 574 203 lineto closepath clip newpath
+-85.0 244.5 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.06299 0.06299 sc
+%
+% Fig objects follow
+%
+/Times-Roman ff 180.00 scf sf
+2250 2025 m
+gs 1 -1 sc (x) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 2250 m
+gs 1 -1 sc (y) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 2475 m
+gs 1 -1 sc (z) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 2925 m
+gs 1 -1 sc (x) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 3150 m
+gs 1 -1 sc (y) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 3375 m
+gs 1 -1 sc (z) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 1125 m
+gs 1 -1 sc (x) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 1350 m
+gs 1 -1 sc (y) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+2250 1575 m
+gs 1 -1 sc (z) col0 sh gr
+% Polyline
+7.500 slw
+n 3150 2790 m
+ 3150 3375 l gs col11 s gr 
+% Polyline
+n 3150 1890 m
+ 3150 2475 l gs col11 s gr 
+% Polyline
+n 3150 990 m
+ 3150 1575 l gs col11 s gr 
+% Polyline
+n 3150 3690 m
+ 3150 3825 l gs col11 s gr 
+% Polyline
+n 3600 2790 m
+ 3600 3375 l gs col11 s gr 
+% Polyline
+n 3600 1890 m
+ 3600 2475 l gs col11 s gr 
+% Polyline
+n 3600 990 m
+ 3600 1575 l gs col11 s gr 
+% Polyline
+n 3600 3690 m
+ 3600 3825 l gs col11 s gr 
+% Polyline
+n 4050 2790 m
+ 4050 3375 l gs col11 s gr 
+% Polyline
+n 4050 1890 m
+ 4050 2475 l gs col11 s gr 
+% Polyline
+n 4050 990 m
+ 4050 1575 l gs col11 s gr 
+% Polyline
+n 4050 3690 m
+ 4050 3825 l gs col11 s gr 
+% Polyline
+n 3375 2790 m
+ 3375 3375 l gs col11 s gr 
+% Polyline
+n 3375 1890 m
+ 3375 2475 l gs col11 s gr 
+% Polyline
+n 3375 990 m
+ 3375 1575 l gs col11 s gr 
+% Polyline
+n 3375 3690 m
+ 3375 3825 l gs col11 s gr 
+% Polyline
+n 3825 2790 m
+ 3825 3375 l gs col11 s gr 
+% Polyline
+n 3825 1890 m
+ 3825 2475 l gs col11 s gr 
+% Polyline
+n 3825 990 m
+ 3825 1575 l gs col11 s gr 
+% Polyline
+n 3825 3690 m
+ 3825 3825 l gs col11 s gr 
+% Polyline
+n 7650 1620 m
+ 7650 2430 l gs col11 s gr 
+% Polyline
+n 7650 2745 m
+ 7650 2880 l gs col11 s gr 
+% Polyline
+n 7875 1620 m
+ 7875 2430 l gs col11 s gr 
+% Polyline
+n 7875 2745 m
+ 7875 2880 l gs col11 s gr 
+% Polyline
+n 8100 1620 m
+ 8100 2430 l gs col11 s gr 
+% Polyline
+n 8100 2745 m
+ 8100 2880 l gs col11 s gr 
+% Polyline
+n 8550 1620 m
+ 8550 2430 l gs col11 s gr 
+% Polyline
+n 8550 2745 m
+ 8550 2880 l gs col11 s gr 
+% Polyline
+n 8775 1620 m
+ 8775 2430 l gs col11 s gr 
+% Polyline
+n 8775 2745 m
+ 8775 2880 l gs col11 s gr 
+% Polyline
+n 9225 1620 m
+ 9225 2430 l gs col11 s gr 
+% Polyline
+n 9225 2745 m
+ 9225 2880 l gs col11 s gr 
+% Polyline
+n 2925 2790 m
+ 2925 3375 l gs col11 s gr 
+% Polyline
+n 2925 1890 m
+ 2925 2475 l gs col11 s gr 
+% Polyline
+n 2925 990 m
+ 2925 1575 l gs col11 s gr 
+% Polyline
+n 2925 3690 m
+ 2925 3825 l gs col11 s gr 
+% Polyline
+n 2700 2790 m
+ 2700 3375 l gs col11 s gr 
+% Polyline
+n 2700 1890 m
+ 2700 2475 l gs col11 s gr 
+% Polyline
+n 2700 990 m
+ 2700 1575 l gs col11 s gr 
+% Polyline
+n 2700 3690 m
+ 2700 3825 l gs col11 s gr 
+% Polyline
+n 8325 1620 m
+ 8325 2430 l gs col11 s gr 
+% Polyline
+n 8325 2745 m
+ 8325 2880 l gs col11 s gr 
+% Polyline
+n 9000 1620 m
+ 9000 2430 l gs col11 s gr 
+% Polyline
+n 9000 2745 m
+ 9000 2880 l gs col11 s gr 
+% Polyline
+n 9450 1620 m
+ 9450 2430 l gs col11 s gr 
+% Polyline
+n 9450 2745 m
+ 9450 2880 l gs col11 s gr 
+% Polyline
+n 9675 1620 m
+ 9675 2430 l gs col11 s gr 
+% Polyline
+n 9675 2745 m
+ 9675 2880 l gs col11 s gr 
+% Polyline
+gs  clippath
+2460 735 m 2460 795 l 2611 795 l 2491 765 l 2611 735 l cp
+eoclip
+n 3240 765 m
+ 2475 765 l gs col0 s gr gr
+
+% arrowhead
+n 2611 735 m 2491 765 l 2611 795 l 2611 735 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+4740 795 m 4740 735 l 4589 735 l 4709 765 l 4589 795 l cp
+eoclip
+n 3915 765 m
+ 4725 765 l gs col0 s gr gr
+
+% arrowhead
+n 4589 795 m 4709 765 l 4589 735 l 4589 795 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+7410 1410 m 7410 1470 l 7561 1470 l 7441 1440 l 7561 1410 l cp
+eoclip
+n 8190 1440 m
+ 7425 1440 l gs col0 s gr gr
+
+% arrowhead
+n 7561 1410 m 7441 1440 l 7561 1470 l 7561 1410 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+gs  clippath
+10455 1470 m 10455 1410 l 10304 1410 l 10424 1440 l 10304 1470 l cp
+eoclip
+n 9000 1440 m
+ 10440 1440 l gs col0 s gr gr
+
+% arrowhead
+n 10304 1470 m 10424 1440 l 10304 1410 l 10304 1470 l  cp gs 0.00 setgray ef gr  col0 s
+% Polyline
+n 7425 1575 m 10440 1575 l 10440 2475 l 7425 2475 l
+ cp gs col0 s gr 
+% Polyline
+n 2475 945 m 4725 945 l 4725 1620 l 2475 1620 l
+ cp gs col0 s gr 
+% Polyline
+n 2475 1845 m 4725 1845 l 4725 2520 l 2475 2520 l
+ cp gs col0 s gr 
+% Polyline
+n 2475 2745 m 4725 2745 l 4725 3420 l 2475 3420 l
+ cp gs col0 s gr 
+% Polyline
+n 2520 2970 m
+ 4680 2970 l gs col11 s gr 
+% Polyline
+n 2520 3240 m
+ 4680 3240 l gs col11 s gr 
+% Polyline
+n 2520 2295 m
+ 4680 2295 l gs col11 s gr 
+% Polyline
+n 2520 2070 m
+ 4680 2070 l gs col11 s gr 
+% Polyline
+n 4545 1890 m
+ 4545 2475 l gs col11 s gr 
+% Polyline
+n 4545 990 m
+ 4545 1575 l gs col11 s gr 
+% Polyline
+n 2520 1170 m
+ 4680 1170 l gs col11 s gr 
+% Polyline
+n 2520 1395 m
+ 4680 1395 l gs col11 s gr 
+% Polyline
+n 10260 1620 m
+ 10260 2430 l gs col11 s gr 
+% Polyline
+n 7470 1800 m
+ 10395 1800 l gs col11 s gr 
+% Polyline
+n 7470 2025 m
+ 10395 2025 l gs col11 s gr 
+% Polyline
+n 7470 2250 m
+ 10395 2250 l gs col11 s gr 
+% Polyline
+n 4545 2790 m
+ 4545 3375 l gs col11 s gr 
+% Polyline
+n 4545 3690 m
+ 4545 3825 l gs col11 s gr 
+% Polyline
+n 10260 2745 m
+ 10260 2880 l gs col11 s gr 
+% Polyline
+n 2475 3645 m 4725 3645 l 4725 3870 l 2475 3870 l
+ cp gs col0 s gr 
+% Polyline
+n 7425 2700 m 10440 2700 l 10440 2925 l 7425 2925 l
+ cp gs col0 s gr 
+/Times-Roman ff 180.00 scf sf
+1350 2250 m
+gs 1 -1 sc (Velocity) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1350 1350 m
+gs 1 -1 sc (Position) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1350 3150 m
+gs 1 -1 sc (Net Force) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+6300 2925 m
+gs 1 -1 sc (Stress) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+6300 2025 m
+gs 1 -1 sc (Connectivity) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+1350 3825 m
+gs 1 -1 sc (Mass) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+8280 1485 m
+gs 1 -1 sc (Elements) col0 sh gr
+/Times-Roman ff 180.00 scf sf
+3375 810 m
+gs 1 -1 sc (Nodes) col0 sh gr
+$F2psEnd
+rs
diff --git a/doc/netfem/fig/example.fig b/doc/netfem/fig/example.fig
new file mode 100644 (file)
index 0000000..86cad68
--- /dev/null
@@ -0,0 +1,216 @@
+#FIG 3.2
+Landscape
+Center
+Metric
+A4      
+100.00
+Single
+-2
+1200 2
+6 2250 1800 2475 2475
+4 0 0 50 0 0 12 0.0000 4 90 90 2250 2025 x\001
+4 0 0 50 0 0 12 0.0000 4 135 90 2250 2250 y\001
+4 0 0 50 0 0 12 0.0000 4 90 75 2250 2475 z\001
+-6
+6 2250 2700 2475 3375
+4 0 0 50 0 0 12 0.0000 4 90 90 2250 2925 x\001
+4 0 0 50 0 0 12 0.0000 4 135 90 2250 3150 y\001
+4 0 0 50 0 0 12 0.0000 4 90 75 2250 3375 z\001
+-6
+6 2250 900 2475 1575
+4 0 0 50 0 0 12 0.0000 4 90 90 2250 1125 x\001
+4 0 0 50 0 0 12 0.0000 4 135 90 2250 1350 y\001
+4 0 0 50 0 0 12 0.0000 4 90 75 2250 1575 z\001
+-6
+6 3150 990 3195 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3150 2790 3150 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3150 1890 3150 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3150 990 3150 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3150 3690 3150 3825
+-6
+6 3600 990 3645 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3600 2790 3600 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3600 1890 3600 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3600 990 3600 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3600 3690 3600 3825
+-6
+6 4050 990 4095 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        4050 2790 4050 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        4050 1890 4050 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        4050 990 4050 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4050 3690 4050 3825
+-6
+6 3375 990 3420 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3375 2790 3375 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3375 1890 3375 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3375 990 3375 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3375 3690 3375 3825
+-6
+6 3825 990 3870 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3825 2790 3825 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3825 1890 3825 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        3825 990 3825 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        3825 3690 3825 3825
+-6
+6 7650 1620 7695 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        7650 1620 7650 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7650 2745 7650 2880
+-6
+6 7875 1620 7920 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        7875 1620 7875 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        7875 2745 7875 2880
+-6
+6 8100 1620 8145 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        8100 1620 8100 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        8100 2745 8100 2880
+-6
+6 8550 1620 8595 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        8550 1620 8550 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        8550 2745 8550 2880
+-6
+6 8775 1620 8820 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        8775 1620 8775 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        8775 2745 8775 2880
+-6
+6 9225 1620 9270 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        9225 1620 9225 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        9225 2745 9225 2880
+-6
+6 2925 990 2970 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2925 2790 2925 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2925 1890 2925 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2925 990 2925 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2925 3690 2925 3825
+-6
+6 2700 990 2745 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2700 2790 2700 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2700 1890 2700 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2700 990 2700 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        2700 3690 2700 3825
+-6
+6 8325 1620 8370 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        8325 1620 8325 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        8325 2745 8325 2880
+-6
+6 9000 1620 9045 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        9000 1620 9000 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        9000 2745 9000 2880
+-6
+6 9450 1620 9495 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        9450 1620 9450 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        9450 2745 9450 2880
+-6
+6 9675 1620 9720 2880
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        9675 1620 9675 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        9675 2745 9675 2880
+-6
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 60.00 120.00
+        3240 765 2475 765
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 60.00 120.00
+        3915 765 4725 765
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 60.00 120.00
+        8190 1440 7425 1440
+2 1 0 1 0 7 50 0 -1 0.000 0 0 -1 1 0 2
+       1 1 1.00 60.00 120.00
+        9000 1440 10440 1440
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        7425 1575 10440 1575 10440 2475 7425 2475 7425 1575
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2475 945 4725 945 4725 1620 2475 1620 2475 945
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2475 1845 4725 1845 4725 2520 2475 2520 2475 1845
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2475 2745 4725 2745 4725 3420 2475 3420 2475 2745
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2520 2970 4680 2970
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2520 3240 4680 3240
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2520 2295 4680 2295
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2520 2070 4680 2070
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        4545 1890 4545 2475
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        4545 990 4545 1575
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2520 1170 4680 1170
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        2520 1395 4680 1395
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        10260 1620 10260 2430
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        7470 1800 10395 1800
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        7470 2025 10395 2025
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        7470 2250 10395 2250
+2 1 0 1 11 7 50 0 -1 0.000 0 0 7 0 0 2
+        4545 2790 4545 3375
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        4545 3690 4545 3825
+2 1 0 1 11 7 50 0 -1 0.000 0 0 -1 0 0 2
+        10260 2745 10260 2880
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        2475 3645 4725 3645 4725 3870 2475 3870 2475 3645
+2 2 0 1 0 7 50 0 -1 0.000 0 0 -1 0 0 5
+        7425 2700 10440 2700 10440 2925 7425 2925 7425 2700
+4 0 0 50 0 0 12 0.0000 4 180 600 1350 2250 Velocity\001
+4 0 0 50 0 0 12 0.0000 4 135 585 1350 1350 Position\001
+4 0 0 50 0 0 12 0.0000 4 135 705 1350 3150 Net Force\001
+4 0 0 50 0 0 12 0.0000 4 135 435 6300 2925 Stress\001
+4 0 0 50 0 0 12 0.0000 4 180 900 6300 2025 Connectivity\001
+4 0 0 50 0 0 12 0.0000 4 135 390 1350 3825 Mass\001
+4 0 0 50 0 0 12 0.0000 4 135 645 8280 1485 Elements\001
+4 0 0 50 0 0 12 0.0000 4 135 465 3375 810 Nodes\001
diff --git a/doc/netfem/fig/example.pdf b/doc/netfem/fig/example.pdf
new file mode 100644 (file)
index 0000000..5bcff53
Binary files /dev/null and b/doc/netfem/fig/example.pdf differ
diff --git a/doc/netfem/manual.tex b/doc/netfem/manual.tex
new file mode 100644 (file)
index 0000000..5cd682c
--- /dev/null
@@ -0,0 +1,337 @@
+\documentclass[10pt]{article}
+\usepackage{../pplmanual}
+\input{../pplmanual}
+
+\makeindex
+
+\title{\charmpp\\ NetFEM\\ Manual}
+\version{1.0}
+\credits{
+The initial version of \charmpp{} NetFEM Framework was developed
+by Orion Lawlor in 2001.
+}
+
+\begin{document}
+
+\maketitle
+
+\section{Introduction}
+
+NetFEM was built to provide an easy way to visualize
+the current state of a finite-element simulation, or any 
+parallel program that computes on an unstructured mesh.
+NetFEM is designed to require very little effort to add
+to a program, and connects to the running program over
+the network via CCS.
+
+
+\section{Compiling and Installing}
+
+NetFEM is part of \charmpp{}, so it can be downloaded
+as part of charm.  To build NetFEM, just build FEM normally,
+or else do a make in charm/net-linux/tmp/libs/ck-libs/netfem/.
+
+To link with NetFEM, add \kw{-module netfem} to your
+program's link line.  Note that you do {\em not} need to use
+the FEM framework to use NetFEM.
+
+The netfem header file for C is called ``netfem.h'',
+the header for fortran is called `netfemf.h'.
+A simple example NetFEM program is in 
+  charm/pgms/charm++/fem/simple2D/.
+A more complicated example is in
+  charm/pgms/charm++/fem/crack2D/.
+
+
+\section{Running NetFEM}
+
+Once you have a NetFEM program, you run it and view 
+the results by starting the program with CCS enabled:
+
+\begin{verbatim}
+   foo.bar.edu>  ./charmrun ./myprogram +p2 ++server ++server-port 1234
+\end{verbatim}
+
+``++server-port'' controls the TCP port number to use for CCS---here,
+we use 1234.  Currently, NetFEM only works with one chunk per
+processor---that is, the -vp option cannot be used.
+
+You then start the NetFEM client, which can be downloaded
+for Linux or Windows from 
+
+\begin{verbatim}
+http://charm.cs.uiuc.edu/research/fem/netfem/
+\end{verbatim}
+
+Enter the name of the machine running charmrun and
+the TCP port number into the NetFEM client---for example, 
+``foo.bar.edu:1234''.
+
+The NetFEM client will then connect to the program,
+download the most recent mesh, and display it.
+
+
+
+\section{Interface Basics}
+
+You publish your data via NetFEM by making a series of
+calls to describe the current state of your data.  
+There are only 6 possible calls you can make.
+
+\kw{NetFEM\_Begin} is the first routine you call.
+\kw{NetFEM\_End} is the last routine to call.  These
+two calls bracket all the other NetFEM calls.
+
+\kw{NetFEM\_Nodes} describes the properties of the
+nodes, or vertices of the domain.  \kw{NetFEM\_Elements}
+describes the properties of your elements (triangles,
+tetrahedra, etc.).  After making one of these calls,
+you list the different data arrays associated with your 
+nodes or elements by making calls to \kw{NetFEM\_Scalar} 
+or \kw{NetFEM\_Vector}.
+
+For example, a typical finite element simulation might
+have a scalar mass and vector position, velocity, and net force
+associated with each node; and have a scalar stress value
+associated with each element.  The sequence of NetFEM calls
+this application would make would be:
+
+\begin{verbatim}
+  NetFEM_Begin
+    NetFEM_Nodes -- lists position of each node
+      NetFEM_Vector -- lists velocity of each node
+      NetFEM_Vector -- lists net force on each node
+      NetFEM_Scalar -- lists mass of each node
+    
+    NetFEM_Elements -- lists the nodes of each element
+      NetFEM_Scalar -- lists the stress of each element
+  
+  NetFEM_End
+\end{verbatim}
+
+\begin{figure}[h]
+\begin{center}
+\includegraphics[width=5in]{fig/example}
+\end{center}
+\caption{These arrays, typical of a finite element analysis
+program, might be passed into NetFEM.}
+\label{fig:example}
+\end{figure}
+
+
+\section{Simple Interface}
+The details of how to make each call are:
+
+\prototype{NetFEM\_Begin}
+\function{NetFEM NetFEM\_Begin(int source, int step, int dim, int flavor);}
+\function{integer function NetFEM\_Begin(source,step,dim,flavor)}
+  \args{integer, intent(in)  :: source,step,dim,flavor}
+
+Begins describing a single piece of a mesh.  Returns a handle
+that is used for each subsequent call until \kw{NetFEM\_End}.  
+This call, like all NetFEM calls, is collective---every processor 
+should make the same calls in the same order.
+
+\uw{source} identifies the piece of the mesh---use FEM\_My\_partition
+or CkMyPe.
+
+\uw{step} identifies which version of the mesh this is---for example,
+you might use the timestep number.  This is only used to identify the
+mesh in the client.
+
+\uw{dim} is the number of spatial dimensions.  For example, in a 2D
+computation, you'd pass dim==2; in a 3D computation, dim==3.
+The client currently only supports 2D or 3D computations.
+
+\uw{flavor} specifies what to do with the data.  Currently, this
+must be \kw{NetFEM\_POINTAT}, which specifies that NetFEM should 
+only keep a pointer to the data rather than copy it out of your
+arrays.
+
+
+\prototype{NetFEM\_End}
+\function{void NetFEM\_End(NetFEM n);}
+\function{subroutine NetFEM\_End(n)}
+  \args{integer, intent(in)  :: n}
+
+Finishes describing a single piece of a mesh, which 
+then makes the mesh available for display.
+
+
+\prototype{NetFEM\_Nodes}
+\function{void NetFEM\_Nodes(NetFEM n,int nNodes,const double *loc,const char *name);}
+\function{subroutine NetFEM\_Nodes(n,nNodes,loc,name)}
+  \args{integer, intent(in)  :: n, nNodes}
+  \args{double precision, intent(in)  :: loc(dim,nNodes) }
+  \args{character*(*), intent(in)  :: name}
+
+Describes the nodes in this piece of the mesh.
+
+\uw{n} is the NetFEM handle obtained from \kw{NetFEM\_Begin}.
+
+\uw{nNodes} is the number of nodes listed here.
+
+\uw{loc} is the location of each node.  This must be double-precision
+array, laid out with the same number of dimentions as passed to 
+\kw{NetFEM\_Begin}.  For example, in C the location of a 2D
+node $n$ is stored in loc[2*n+0] (x coordinate) and loc[2*n+1]
+(y coordinate).  In Fortran, location of a node $n$ is stored 
+in loc(:,n).
+
+\uw{name} is a human-readable name for the node locations
+to display in the client.  We recommend also including the location
+units here, for example "Position (m)".
+
+
+\prototype{NetFEM\_Elements}
+\function{void NetFEM\_Elements(NetFEM n,int nElements,int nodePerEl,const int *conn,const char *name);}
+\function{subroutine NetFEM\_Elements(n,nElements,nodePerEl,conn,name)}
+  \args{integer, intent(in)  :: n, nElements, nodePerEl}
+  \args{integer, intent(in)  :: conn(nodePerEl,nElements) }
+  \args{character*(*), intent(in)  :: name}
+
+Describes the elements in this piece of the mesh.
+Unlike \kw{NetFEM\_Nodes}, this call can be repeated
+if there are different types of elements (For example, 
+some meshes contain a mix of triangles and quadrilaterals).
+
+\uw{n} is the NetFEM handle obtained from \kw{NetFEM\_Begin}.
+
+\uw{nElements} is the number of elements listed here.
+
+\uw{nodePerEl} is the number of nodes for each element.
+For example, a triangle has 3 nodes per element; while 
+tetrahedra have 4.
+
+\uw{conn} gives the index of each element's nodes.  Note
+that when called from C, the first node is listed in 
+\uw{conn} as 0 (0-based node indexing), and element $e$'s
+first node is stored in conn[e*nodePerEl+0].
+When called from Fortran, the first node is listed as 1 
+(1-based node indexing), and element $e$'s first node is
+stored in conn(1,e) or conn((e-1)*nodePerEl+1).
+
+\uw{name} is a human-readable name for the elements
+to display in the client.  For example, this might be
+"Linear-Strain Triangles".
+
+
+
+\prototype{NetFEM\_Vector}
+\function{void NetFEM\_Vector(NetFEM n,const double *data,const char *name);}
+\function{subroutine NetFEM\_Vector(n,data,name)}
+  \args{integer, intent(in)  :: n}
+  \args{double precision, intent(in)  :: data(dim,lastEntity) }
+  \args{character*(*), intent(in)  :: name}
+
+Describes a spatial vector associated with each node or element
+in the mesh.  Attaches the vector to the most recently listed 
+node or element.  You can repeat this call several times to 
+describe different vectors.
+
+\uw{n} is the NetFEM handle obtained from \kw{NetFEM\_Begin}.
+
+\uw{data} is the double-precision array of vector values.
+The dimensions of the array have to match up with the node
+or element the data is associated with--in C, a 2D element $e$'s
+vector starts at data[2*e]; in Fortran, element $e$'s 
+vector is data(:,e).
+
+\uw{name} is a human-readable name for this vector data.
+For example, this might be "Velocity (m/s)".
+
+
+\prototype{NetFEM\_Scalar}
+\function{void NetFEM\_Scalar(NetFEM n,const double *data,int dataPer,const char *name);}
+\function{subroutine NetFEM\_Scalar(n,data,dataPer,name)}
+  \args{integer, intent(in)  :: n, dataPer}
+  \args{double precision, intent(in)  :: data(dataPer,lastEntity) }
+  \args{character*(*), intent(in)  :: name}
+
+Describes some scalar data associated with each node or element
+in the mesh.  Like \kw{NetFEM\_Vector}, this data is attached 
+to the most recently listed node or element and this call 
+can be repeated.  For a node or element, you can make the 
+calls to \kw{NetFEM\_Vector} and \kw{NetFEM\_Scalar} in any order.
+
+\uw{n} is the NetFEM handle obtained from \kw{NetFEM\_Begin}.
+
+\uw{data} is the double-precision array of values.
+In C, an element $e$'s scalar values start at data[dataPer*e];
+in Fortran, element $e$'s values are in data(:,e).
+
+\uw{dataPer} is the number of values associated with each 
+node or element.  For true scalar data, this is 1; but 
+can be any value.  Even if dataPer happens to equal the number
+of dimensions, the client knows that this data does not 
+represent a spatial vector.
+
+\uw{name} is a human-readable name for this scalar data.
+For example, this might be "Mass (Kg)" or "Stresses (pure)".
+
+
+
+\section{Advanced ``Field'' Interface}
+This more advanced interface can be used if you 
+store your node or element data in arrays of C structs or 
+Fortran TYPEs.  To use this interface, you'll have to
+provide the name of your struct and field.  Each
+``field'' routine is just an extended version of 
+a regular NetFEM call described above, and can be 
+used in place of the regular NetFEM call.
+In each case, you pass a description of your field
+in addition to the usual NetFEM parameters.
+
+In C, use the macro ``NetFEM\_Field(theStruct,theField)''
+to describe the FIELD.  For example, to describe
+the field ``loc'' of your structure named ``node\_t'',
+
+\begin{verbatim}
+   node\_t *myNodes=...;
+   ..., NetFEM\_Field(node\_t,loc), ...
+\end{verbatim}
+
+
+In Fortran, you must pass as FIELD the byte offset from the start 
+of the structure to the start of the field,
+then the size of the structure.  The FEM "foffsetof" routine,
+which returns the number of bytes between its arguments,
+can be used for this.  For example, to describe the field
+``loc'' of your named type ``NODE'',
+
+\begin{verbatim}
+   TYPE(NODE), ALLOCATABLE :: n(:)
+   ..., foffsetof(n(1),n(1)%loc),foffsetof(n(1),n(2)), ...
+\end{verbatim}
+
+
+\prototype{NetFEM\_Nodes\_field}
+\function{void NetFEM\_Nodes\_field(NetFEM n,int nNodes,FIELD,const void *loc,const char *name);}
+\function{subroutine NetFEM\_Nodes\_field(n,nNodes,FIELD,loc,name)}
+
+A FIELD version of \kw{NetFEM\_Nodes}.
+
+\prototype{NetFEM\_Elements\_field}
+\function{void NetFEM\_Elements\_field(NetFEM n,int nElements,int nodePerEl,FIELD,int idxBase,const int *conn,const char *name);}
+\function{subroutine NetFEM\_Elements\_field(n,nElements,nodePerEl,FIELD,idxBase,conn,name)}
+
+A FIELD version of \kw{NetFEM\_Elements}.
+This version also allows you to control the starting node
+index of the connectivity array---in C, this is normally 0;
+in Fortran, this is normally 1.
+
+\prototype{NetFEM\_Vector\_field}
+\function{void NetFEM\_Vector\_field(NetFEM n,const double *data,FIELD,const char *name);}
+\function{subroutine NetFEM\_Vector\_field(n,data,FIELD,name)}
+
+A FIELD version of \kw{NetFEM\_Vector}.
+
+
+\prototype{NetFEM\_Scalar\_field}
+\function{void NetFEM\_Scalar\_field(NetFEM n,const double *data,int dataPer,FIELD,const char *name);}
+\function{subroutine NetFEM\_Scalar(n,data,dataPer,FIELD,name)}
+
+A FIELD version of \kw{NetFEM\_Scalar}.
+
+
+\end{document}