NetFEM 1.0
A program to interactively visualize finite-element computations

INTRODUCTION

This program connects to a parallel compute server running
a Charm++ Finite-Element Method (FEM) computation. It displays the 
current state of that computation, and allows you to inspect 
the computation in a variety of ways.


QUICK START AND MANUAL

Run the program "bin/netfem.exe".  A dialog box asking which
parallel server to access will appear.  Enter the name of the 
server, a colon, and the CCS port number used to start the parallel
computation.  Press "Connect".  After the parallel server is contacted 
(which may take a few seconds), you should see a graphics window and 
a control window.

The graphics window is a 3D display, showing the current computational
mesh and a standard color bar.  You can click and hold the mouse
to rotate the image--the mouse position controls the rotation rate.
Shift-click pans the image, and right-click zooms in and out.

The control window is a good deal more complex.  The top line
shows the number of processors running the problem.  The next line
displays the current computational timestep, and a button to 
"Update" to the latest timestep by contacting the parallel server.
The number of subobjects (chunks) of the problem is displayed in
the next line, with a button to "Show" the extent of the subobjects.
The nodes are listed next.  Clicking "Point Nodes" changes the mesh
to display the nodes as small colored dots.  The node attributes
are listed on subsequent lines.

An attribute, such a displacement or velocity, can be vector
or scalar.  Scalar attributes can be mapped to the current mesh
as color using the "Show" button. Vector attributes can be used to
displace the mesh, using the "Disp" button; or the vector magnitude
or individual vector components can be displayed as color using the 
"Mag" and "X", "Y", or "Z" buttons (2D computations have no "Z" button).

After the node attributes come the elements.  Each type of element is
listed separately.  Triangular elements can be used to draw a solid
mesh using the "Fill" button; any kind of element can be used to draw 
an outline mesh using the "Outline" button.  The element attributes
are listed after their element type.

In general, buttons listed on the left change the mesh itself, while
the buttons on the right only change the mesh color.


TROUBLESHOOTING

If the program seems to hang after pressing "Connect", check if the 
parallel program is still running. 

If the different mesh chunks do not appear to line up well, or the
chunks seem to disagree at the boundaries, the cause may be observation
skew.  This occours because we contact each processor separately,
so the processors we contact later may have advanced several steps as
we were collecting data.  The "Timesteps" line gives a max and min
observed value of the timestep, which is a good indicator of skew.

If a vector attribute severely deforms the mesh when viewed as a 
displacement, you should choose another attribute to view as displacement
before rotating the mesh.


SOURCE CODE

This program is written in C++ using the visualization toolkit 
VTK 3.2 (http://www.kitware.com) and the GUI language Tcl/Tk 8.3
(http://www.scriptics.com).  The complete source code is in the 
directory "src", and should compile under Win32 (using the Visual
C++ 6.0 project file "test.dsw") or under UNIX (using the included
Makefile).  

The Tcl/Tk code is included inline in the C++ program; a small
utility "escape" converts a TCL (or actually any) file to a 
valid C string.  If you change tk_init.tcl, you must regenerate
tk_init.h using:
	type tk_init.tcl | escape > tk_init.h
The UNIX makefile will do this automatically; you must do it 
manually under Win32.

The parallel server is built on Charm++, a robust and mature 
parallel runtime system distributed by the University of Illinois.
See http://charm.cs.uiuc.edu for details.


AUTHOR

Orion Sky Lawlor, olawlor@acm.org, 12/2/2001
