From: Patrick Moran <>

Date: Thu Sep 11, 2003  8:34:27 PM US/Pacific

To: John Shalf <>,

Cc: Lori Freitag Diachin <>,,

Subject: Re: Analysis techniques examples with FM





On Thursday 11 September 2003 03:01 pm, John Shalf wrote:

On Thursday, September 11, 2003, at 01:16 PM, Patrick Moran wrote:

Also, I have some basic vis techniques (isosurfaces,

contours, color-mapped surfaces) implemented in terms of

FM.  I could post them to the sourceforge site if there's

enough interest.


Yes, that would be very informative.





OK, so I've uploaded one more module into the Field Model repository:

the Analysis Techniques (AT) module.  It's available as one of the

subdirectories in the new 2.01 release.  See the "Latest File Releases"

section of the main project page:


A little bit about how the example techniques in the AT module work --

there are three example techniques to start with: Isosurface, Contour

and Surface.  Each can be constructed with a field argument

(an FM object).  The execution model is relatively simple: you call

the execute method on the instance, and the final argument to execute

is a Graphics_Device instance.  The Graphics_Device interface is

essentially 5 basic calls, each with an obvious correspondence to

OpenGL: begin, end, vertex3fv, normal3fv, texCoord1f.  The semantics

are bascially OpenGL semantics. There are several implementations

of the interface, the two most important are

GL_Graphics_Device and Buffer_Graphics_Device.  As you can

guess, the GL_* version calls OpenGL immediately, the Buffer_*

version records, and then plays back the graphics calls.  See the

code, it's pretty simple.


The execute methods also take other arguments, depending on the

analysis technique type.  All three examples take an FM iterator

argument, which enables the controlling program to specify subsets

of cells to process (e.g., split out work in multi-threading scenarios).

Other arguments, for example, would include a threshold level argument

for the isosurface technique.


In case it's not obvious, the code is prototype, work in progress.

The design is not set in stone.  But it's working code. As I mentioned

before, I have Python wrappers and a little app that supports run-time

composition and execution, with a simple gui and OpenGL viewer

widget. I can show that next week if there's interest.