IDL_modules

Network

	On the AVS side...
	The IDL module has 14 inputs.  6 ports which take arbitrary
field inputs for entering data sets.  AVSIDL accepts uniform,
rectilinear and irregular fields.  In addition there are 8 parameters

Inputs

  6 of them are for inputting data. (2 strings, 2 integers and
2 floating point parameters).  The remaining 2 parameters are the
command field and the Recompile one-shot.  The command field should be
the name of an IDL procedure or the name of a file which contains an
IDL procedure of the same name (e.g. /home/johndoe/test/foo.pro which
will run the procedure FOO).  Clicking on the recompile button causes
the named routine or file to be recompiled (if say the file contents
had been changed).  This does not cause it to be rerun, only
recompiled.
	AVSIDL has 4 outputs.  These are also arbitrary fields.  If
you wish to convert one of these to a scalar form use the appropriate
'field to XXX' module.
	You can get a routine to run again by typing  in the
Command field.
	AVSIDL can be used to run IDL interactively.  Type in the
command "INTERACTIVE" or "interactive".  A prompt will appear in the
IDL window which will now accept input.  IDL will return to its server
mode when the user types 'exit' at the command line.
	When running a command, AVSIDL runs as a subroutine.  When
running interactively, AVSIDL runs as a coroutine.
	When running a command, the command will be rerun if any of
the input ports or parameter inputs are changed.  In interactive mode,
inputs are only read when first entering interactive mode.  To have
an interactive session re-read the input ports, exit back to server
mode.  IDL will restart in interactive mode after re-reading its inputs.
	On the IDL side...
	Input port data becomes automatically available to the $MAIN$
procedure when calling AVSIDL interactively.  The input port data
becomes the variables named FIELD1, FIELD2, ... FIELD6 respectively.
If an input port is hooked up to a RECTILINEAR or a NONUNIFORM AVS
field, the coordinate data associated with the field will be stored in
a variable named FIELD1_COORD, FIELD2_COORD, etc.
	AVS input ports go from right to left.  E.g. The rightmost
input port corresponds to FIELD1.
	Fields which have a vector length that is greater than one
will get an 'extra dimension' to store that information. 
AVS:	field 2D 5-vector real uniform (dims=10x10)
IDL:	FIELD1: FLTARR(5,10,10)
	When outputting a field the USEVECLEN flag to AVSSETPORT can
be used to create an AVS field with a vector length equal to the
lowest order dimension of the IDL array being used for computational
data (see AVSSETPORT below for more information).
	IDL arrays are limited to 8 dimensions so only AVS fields with
a total of 8 dimensions or less (vector length greater than one counts
as one dimension) can be accepted.
	Input port data becomes positional paramaters when calling
AVSIDL with a routine name.  Unconnected input ports are not passed.
If a field has coordinate data as well as computational data that will
be passed as well but after all of the computational data.  E.g If the
command field is set to 'FOOBIE' and the first 2 input ports are
connected to irregular fields and the third input port is a uniform
field this is the equivalent of typing at the command line:
FOOBIE, Field1, Field2, Field3, Field1_Coord, Field2_Coord
	Input parameters are available via a common block.  Declare the
following common block in any routine where you need to obtain the
value of parameters.  This common block is automatically available in
$MAIN$.
COMMON AVS_PARAM,INT1,INT2,FLOAT1,FLOAT2,STRING1,STRING2
	Strings converted to fields via 'string parm to field' become
1-D byte arrays.  Use the STRING() function to convert data back to a
string.
 
	For rectilinear fields, the coordinate variable is a 1-D vector of
floats. The number of elements in the coordinate array is equal to the
sum of the dimensions. E.g.  If FIELD1 is a BYTARR(10,20,30), then
FIELD1_COORD is a FLTARR(60) -- TOTAL([10,20,30]).  For non-uniform
fields, FIELDX_COORD is a FLTARR with the same low order dimensions as
the data array & a high order dimension equal to the 'nspace' of the
field. Examples make this clearer:
AVS:	field 3D 5-vector real 3-coordinate irregular (dims of 6x8x12)
IDL:	FIELD1_COORD:FLTARR(12,8,6,3)	FIELD1: FLTARR(5,12,8,6)
		             \--/   \__ Coordinate space (nspace)
AVS:	field 3D scalar byte 2-coord irregular (10x10x10)
IDL:	FIELD3_COORD: FLTARR(10,10,10,2)	FIELD3: BYTARR(10,10,10)
Idl Procedures for AVS support
	These procedures are only available when running IDL as a
server from AVS.  They are installed dynamically when the server is
first started.
AVSSETPORT, portno, variable
	portno	-- the number 1,2,3 or 4 corresponding to the
		   output ports to set.
	variable -- the data to user
	/USEVECLEN -- the leftmost dimension of an idl array will
		become the veclen of the output'ed IDL field. E.g.
		x = fltarr(3,10,10) & avssetport,1,x,/useveclen will
		result in output port one having a 3-D 10x10 uniform
		real array on it.
	
	RECTILINEAR -- Set this to an expression containing coordinate
		data.
	IRREGULAR -- Set this to an expression containing coordinate
		data.
	E.g.
	;  field 3D -vector real 3-coordinate irregular
	AVSSETPORT, 2, randomu(veclen, x, y, z), /USEVECLEN, $
		IRREG=findgen(x,y,z,3)
	;  field 3D scalar byte 3-coordinate uniform
	AVSSETPORT, 1, bindgen(20,20,20)
AVSSETTITLE, object, newtitle
	object -- should be one of the following strings:
		'int1', 'int2', 'float1', 'float2', 'string1', 'string2'
	newtitle -- new title for the given parameter.
	E.g. avssettitle, 'float1', 'Permitivity'