Extended IDL Help

  • Return to IDL Topics

    Last modified: Tue Aug 7 08:53:45 2007.


    List of Routines


    Routine Descriptions

    CLOSECDF

    [Next Routine] [List of Routines]
       Close a cdf file. If the current file is closed, the current file pointer
       will be set the last file in the showcdf file listing.
       format:   CLOSECDF, [, fileid]
       where:
          fileid    - file id of the file to be closed
                      If it is omitted, the current file is closed.
                      If it is zero or 'all', then all files will be closed.
       Example:
          Close the current file.
             closecdf
    
          Close the file with a file id of 3
             closecdf, 3
    
          Close all files
             closecdf, 0
         closepff, 'all'
    

    (See ../pfidl/cdf/closecdf.pro)


    CREATECDF

    [Previous Routine] [Next Routine] [List of Routines]
       Create a CDF file for waveform output. Current file pointer is set to this
       file.
       format:  CREATECDF  [, filename]  [, fileid ] [, fileid = fid]
                      [, TITLE = title] [, NDSET = ndset]
                     [, NLABEL = nlabel] [, NCOMMENT = ncomment] [, /HELP]
    
       where:
          filename - name of the file to be created
                     Default value is 'CDFdefault.cdf'
          fileid   - user specified file id 
          fid      - Alternate user specified file id. If fileid is present
                    then fid is ignored.
    
          NOTE:    If fileid (or fid) is specified, it will be used as the file id.
                   If fileid is not provided or is zero, a value will be 
                     provided; default value is the first unused integer >/= 1.
                     If fileid is provided but has been used for another 
                     file, the program inform the user and terminate.
          TITLE    - String describing the contents of the file.
                     If blank - User will be prompted.
                     Non blank string length must be greater than 1.
                     if /t is entered then the default will be used.
                     default is systime(0)
          NDSET    - Maximum number of waveforms to be stored.
                     NDSET > 16; Default is 128
          NLABEL   - Maximum length of axis labels  
                     Nlabel > 4; Default = 12
          NComment - Maximum length of dataset comment. 
                     Ncomment > 8; Default is 64
          CLOBBER  - If set, any existing file will be deleted.
          HELP     - If set, a prompt will be given
                     No further action will be taken.
    
      Examples:
         Create a CDF file, "test" with a default file id
           createcdf, 'test'
         Creates a CDF file, "TEST.DAT" with a file id of 66
           createpff, `test.dat', 66
    

    (See ../pfidl/cdf/createcdf.pro)


    DIRCDF

    [Previous Routine] [Next Routine] [List of Routines]
    
         This routine prints a directory of netCDF files and optionally returns
           the values of the directory information in keyword arguements.
    
         DIRCDF [, P1] [, Page = Page] [, NDSET = ndset]
             [, TRUNCATE = truncate] [, LOC = loc]
             [, FILENAME = filename] [, COMMENT = comment] [, LINE = line] 
             [, Reset = reset]  [, Xsize = xsize] [, /print] [, /quiet]
    
         where:
               P1       - an optional search string.
                          For example: To get all datasets with 'TEMP' use:
                            dircdf, 'temp' 
                          See GET_MATCH for allowed wild cards.
               PAGE     - the number of lines on the directory
                          default is 24
               RESET    - present and not zero, resets the directory
                          use this if the window has been closed
                      Note: If the window is still open and you wish to leave it
                            open, use /reset to put the current command in a second 
                            window.
                      NOTE: By using the reset qualifier, a window can be 
                            opened for each file with the filename at the top.
               NDSET    - the number of datasets returned 
                          For EXODUS II data NDSET has 3 elements for 
                            global, nodal and cell based data.
               XSIZE    - the width of the window in pixels (generally not set)
               TRUNCATE - if set, the dataset comments will be truncated at ' - '
                          This is a toggle; If not specified the last value will
                          be used.  Default value =0 -- no truncate
               PRINT    - If set, directory will be sent to terminal
               QUIET    - If set, no outputs unless an error. 
              FILENAME  - Name of the netCDF file
              COMMENT   - Dataset comment for each of the datasets
              LOC       - Pointer into COMMENT for each of the dataset types.
                          For EXODUS II data.
                    Example:
                          If ndset(0) gt 0, then global data exists and the 
                          comments are given by 
                             global_comments= comment(loc(0):loc(1)-1)
                          If ndset(1) gt 0, then node data exists and the 
                          comments are given by 
                             Node_comments= comment(loc(1):loc(2)-1)
                          If ndset(2) gt 0, then cell or element data exists and the 
                          comments are given by 
                             Cell_comments= comment(loc(2):loc(3)-1)
                           
         Example:
             Get a directory of the current cdf file and the number of datasets.
               dircdf, ndset = ndset
             Get a directory of the current file and the cdf file with id = 3
               with an additional window for this widget 
               (to see two different files simultaneously)
               dircdf & dircdf, 3, /reset
             Print a directory of current file to the terminal
               dircdf, /p
    
    

    (See ../pfidl/cdf/dircdf.pro)


    GET_ANIM_WDF

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           GET_ANIM_WDF
    
     PURPOSE:
           This function returns the initial WDF array number for each waveform
             stored by MAKE_ANIM
           The times and the number of times may also be returned.
           See also MAKE_ANIM, GET_ANIM_WDF
    
     CALLING SEQUENCE:
           WDF = GET_ANIM_WDF(PARAMETER, NTIMES = ntimes, TIMES = times)
    
     INPUTS:
           PARAMETER: One of the 20 parameters specified under OUTPUTS.
                   GET_MATCH is used to search for these searches.
                   The search strings must provide only one match.
                   Examples include: '^press', '^o*a$', '^te', 'zbar'
                   If no parameter is specified, but keywords are present,
                     -1 is returned.
                   If no parameters and no keywords are present or some error
                     occurs, 0 (zero) is returned.
    
     KEYWORD PARAMETERS:
           NTIME:  Number of time steps
           TIMES:  Value of the times
    
     OUTPUTS:
           The number of times and the time values are returned as keywords.
           The following WDF array initial values are returned by the function:
              Density
              Temperature
              Rad-Temp
              Pressure
              BTheta
              Mag Press = Btheta * Btheta/ (2*mu)
              J_r
              J_z
              R_Velocity
              Z_Velocity
              R_Acceleration
              Z_Acceleration
              E_Cond
              Ther_Cond
              Opacity_A
              Opacity_R
              ZBar
              Sound Sp
              Art. Viscosity
              Spec Heat
    
     EXAMPLE:
           Plot all density curves in a spectrum plot.
             plo, GET_ANIM_WDF('density', ntime= nt), nt, /spectrum
    
           Plot one quarter of the specific heat curves
             plo, GET_ANIM_WDF('^spec', ntime= nt) +indgen(nt/4)*4, /spectrum
    
           Make an animation of jz which runs at about 3 frames/sec
             st =  GET_ANIM_WDF('j_z', ntime= nt)
             for i = st, st+nt-1 do begin & plo, i, ov=0 & wait, 0.2 & end
           Note to make it continuous: (Use Control-C to end)
         START: for i = st, st+nt-1 do begin & plo, i, ov=0 & wait, 0.2 & end & goto, start
    
     MODIFICATION HISTORY:
           Written by:     L. P. Mix, Jr., July 19, 2005
    

    (See ../pfidl/cdf/get_anim_wdf.pro)


    GET_CDF

    [Previous Routine] [Next Routine] [List of Routines]
     Name: GET_CDF
     
     PURPOSE:
           Get CDF dataset numbers for all dataset comments containing
              a specified string. 
     Format:
           Map = Get_CDF(STRING [, FILEID = fileid] [, MAXDSET = maxdset]
                          [, /WDFARRAY])
     Parameters:
           MAP   :   Array of datasets with the desired string.
                     -1 if no datasets found.
           STRING:   Search string 
                     If STRING = '' or ' ' or '*' then 
                         Map = 1+lindgen(ndspff(fid))
                         (Maxdset is ignored)
                     The following special characters can be used:
                     *  - Wild card indicating 0 to n characters
                          To use a * in a search string use "\*"
                     ?  - Wild card indicating 1 and only 1 characters
                          To use a ? in a search string use "\?"
                     ^  - If this is the first character, indicates that
                          the string begins the dataset comment.
                          All other times a ^ is taken literally.
                          To begin a search string with a literal ^ use:
                              "*^" or "\^"
                          All search strings are assumed to begin with "*" unless
                          a "^" is present. 
                     $  - If this is the last character, indicates that the
                          string ends the non-blank portion of the dataset comment.
                          All other times a $ is taken literally.
                          To end a search string with a literal $ use:
                              "*$" or "\$"
                          All search strings are assumed to end with "*" unless
                          a "$" is present.
     OPTIONAL INPUT:
           FILEID  : File id - Default is 0 (The current CDF file) 
           WDF     : If set waveform arrays (global arrays) will be searched.
                     Default are the nodal and element (cell) arrays.
           MAXDSET : Maximum number of files desired.
                     If more than MAXDSET files are found, then an additional
                     search is performed over the returned datasets with the
                     search string modified to force an exact match; ie.
                     if not present a "^" will be added to the front of the 
                     string and a "$" to the end of the string.
      EXAMPLES: 
         Find all the datasets with VDIODE in the comment.
                  id = get_cdf('vdiode')
         Find all the datasets with the non_blank characters only VDIODE
                  id = get_cdf('^vdiode$')
         Find all the datasets with the string VDIODE and at least one 
           more character at the end
                  id = get_cdf('vdiode?')
         Read all the datasets with 'pho' into structures beginning with 10
                  id =  get_cdf()
                  n = n_elements(id)
                  for i = 0, n-1 do readcdf, i+10, id(i)
         NOTE: For WDF arrays, recdf, 1, 'string', /al will read all valid
                arrays with 'string' in one operation.
      
    

    (See ../pfidl/cdf/get_cdf.pro)


    GET_TIMES

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           Get_Times
    
     PURPOSE:
    	Return the time values for the current ExodusII file
           This works only with the CDF directory routines.
           See GET_EXOTIMES for EXODUS directory routines
    
     CATEGORY:
           Utility
    
     CALLING SEQUENCE:
           TIMES = GET_TIMES()
    
    
     INPUTS:
           NONE
    
     OUTPUTS:
           Time values for the current netCDF (ExodusII) file
    
     COMMON BLOCKS:
           This routine accesses the common "netcdfcom" and "netcdfdatacom"
    
     EXAMPLE:
           Get the times for the current ExodusII file.
             Times = get_times()
    
     MODIFICATION HISTORY:
     	Written by:	L. P. Mix, March 20, 2003
    

    (See ../pfidl/cdf/get_times.pro)


    MAKE_ANIM

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           MAKE_ANIM
    
     PURPOSE:
           This routine makes an array of screen snapshots to be used in an 
             annimation.  Individual waveforms are stored in WDF arrays to 
             make detailed information readily available.  This routine is 
             limited to one dimensional calculations.
             See also RUN_ANIM, GET_ANIM_WDF
    
     CALLING SEQUENCE:
           ARRAY = MAKE_ANIM( [FILENAME] )
           where 
           ARRAY:  Three or 4 dimensional byte array of the plots.
                   Dimensions are [3, XSIZE, YSIZE, NFRAME] for true color
                               or [XSIZE, YSIZE, NFRAME] for pseudo-color.
    
     OPTIONAL INPUTS:
           FILENAME: Filename of the Exodus II file.
                   Default:  Use DIALOG_PICKFILE() to obtain the file.
    
     KEYWORD PARAMETERS:
           RERUN:  If set, use currently stored data (Do not open and read new data)
    	
           XSIZE:  X size of the plot
                   Default:  XSIZE = 900
           YSIZE:  Y size of the plot
                   Default:  YSIZE = 700
           CELL:   If set, cell data will stay at cell centers.
                   Default:  CELL = 1
           TESTIT: If set, do only 5 plots and animate those to check the annimation
                   If testit is a number greater than /equal to 2 then do (testit+1) 
                   animation frames.  If TESTIT is set, the command 
                   "RUN_ANIM, ARRAY" is automatically issued after array is calculated.
           PIXMAP: Generate the plots in memory (pixmaps) rather than on the screen.)
    
     OUTPUTS:
           If TESTIT is set an animation is generated on a limited number of frames.
           All animation frames are returned in array.
           The following variables are defined in the in the commond block:
             MAKE_COMMON_ANIM
           The variables may be retrieved with GET_ANIM_WDF.
           The variables on the left are the first wdf array for the quantities on the
           right in the table below.  GET_ANIM_WDF can be used to retrieve these values.
           NTIME is the number of Time Steps.  
            
           Variable  Quantity
           den1      Density
           temp      Temperature
           rtemp     Rad-Temp
           press     Pressure
           btheta    BTheta
           mpress    Mag Press = Btheta * Btheta/ (2*mu)
           jr        J_r
           jz        J_z
           vr        R_Velocity
           vz        Z_Velocity
           ar        R_Acceleration
           az        Z_Acceleration
           econ      E_Cond
           tcon      Ther_Cond
           opaca     Opacity_A
           opacr     Opacity_R
           zbar      ZBar
           sound     Sound Sp
           artvis    Art. Viscosity
           specheat  Spec Heat
           ntime     Number of Time Steps
    
     PROCEDURE:
           All variables are read into PFIDL structures and lineouts at each time 
             are stored in WDF arrays.
           PLOTS are then generated for all times and stored in an array which is 
              returned.
           The user should copy this to his area to modify the plots.  If fewer plots
              are requested, !p.multi should be changed.
           The size of the display determines the size of the animation that may be 
              run.
           Cell data is left on the cell center.
    
     EXAMPLE:
           Generate animation frames from the file 'idot.exo' and store the results in a.
             a = MAKE_ANIM('idot.exo')
    
           Same a above but make a short animation to see if the requested plots are
             satisfactory.  Assume that the data has been read previously.
             a = MAKE_ANIM(/testit)
             
    		F = PICKFILE(/READ, FILTER = ['pro', 'dat'])
    
     MODIFICATION HISTORY:
     	Written by:	L. P. Mix, Jr., March 30, 2005
                           Based on similar routine by Thomas A Haill, but totally 
                             modified.
    

    (See ../pfidl/cdf/make_anim.pro)


    OPENCDF

    [Previous Routine] [Next Routine] [List of Routines]
      Open a netCDF file.  The current file pointer is set to this file id.
      format: OPENCDF [, File] [, Fileid ] [, NDSET =ndset] [, NOLOAD = noload]
                      [, WRITE = write] [, IERROR = ierror]
                      [, PATH = path] [, FILTER = filter] [, HELP = help]
                      [, FILEID = fileid] [, QUIET = quiet] [, /VERBOSE]
      where:
        File   - name of the PFF file to be opened.  The default file extension
                 is ".exo". 
                 If file is omitted or undefined, PICKFILE will be used to select
                 a file. The initial path in PICKFILE is the current directory or
                 the PATH to the last file selected.
                 NOTE: PATH and FILTER may be used to set the initial path and
                       filter for PICKFILE.
                 NOTE: FULFNAM procedure is used to handle environment variables
                       See FULFNAM for details
        Fileid - user specified file id 
                 (If fileid is specified, it will be used as the file id.  If 
                 fileid is not provided or is zero, a value will be 
                 provided; default value is the first unused integer greater
                 than 0.  If fileid is provided but has been used for another 
                 file the program will inform the user and terminate.
        WRITE  - Set to open the file for both read and write
        help   - Print a help text
        PATH   - Path to the current file 
                 Default is the current directory in the first call to OPENCDF/pff
                 but the default path is changed to the final path selected is 
                 retained as the default in the next call to opencdf/openpff.
        FILTER - File filter - The default may be set in USERQSINIT; if undefined
                 the default is '*'.  The default filter is set only with
                  USERQSINIT or SETDEFAULT.
        NOLOAD - Do not read data into a data common block
                 This will save time in opening a file if the open command is not
                 followed by a read command.
        NDSET  - Number of datasets 
                 For Exodus II: Array of [# of global, # of node, # of cell]
                 For WDF array: Number of WDF arrays
        QUIET  - Only print error messages
        VERBOSE- Print file information
        IERROR - Error flag.  Returned zero if no problems encountered.
    
      Examples:
        Open a CDF file with the default file id
          openpff
        Open a CDF file, 'users/test', with the default file id
          openpff, '/users/test'
        Open a file to be selected from a menu with a file id of 14
          openCDF, ' ', 14
        Get help
          openCDF, /h
    

    (See ../pfidl/cdf/opencdf.pro)


    PLOTFE9

    [Previous Routine] [Next Routine] [List of Routines]
      Name: PLOTFE9
    
      This routine will slice a finite element structure in time or provide a
      time history of a particular node.  This data consists of two spatial
      dimensions with an amplitude for a number of times.
    
      Format:
           PLOTFE9, STR, Time, [/XTIME] [, /INDEX ] NODE = Node [, ONODE = onode]
             [, Value_Node = valuenode]  [, COPTION = coption]
             [, SKIP_NODE=skip_node]
             [, XRANGE = xrange] [, YRANGE = yrange] [, BLOCK = block]
             [, XARRAY = xarray] [, YARRAY = yarray] [, FARRAY = farray]
             [, SLICE_ONLY = sliceonly] [, WORK = work] [, _EXTRA = extrastuff]
      where:
        STR        - Structure array number or a structure array of a type 9
                     field (2 spatial dimensions and time)
    
      NOTE:  Either Xtime, Time or node is required, but both may be used.
    
        XTIME      - If set, a plot of X versus Time for lagrangian nodes.
                     This is ignored if Node is a vector of length =3.
                     Minimum value of y to 2^(-14) is used 
                     Note: If Xtime is lt 0 then x is X[t[0]] for all times
                           If Xtime is gt 0 then X is X[t]
        TIME       - Time for a slice to be taken 
                     If keyword(INDEX) is set then the time will be taken as a 
                     time slice and time must be in the range [1, Ntime]
                     If time is not an exact time slice the values will be 
                     interpolated.
                     If time is outside the range of valid times, the nearest
                       value will be used.
                     This converts a type 9 array to a single block type 8 array.
                     This will be stored in st2 = work  and the
                     following command issued:
                       plotfld, st2, xrange = xrange, yrange = yrange, $
                         xarray = xarray, yarray = yarray, farray = farray, $
                         _extra = extrastuff
        INDEX      - If set, TIME is taken as a time index.
                     If set and NODE has more than one value, all values will be
                     considered as node index values.  Note: If Node has more than
                     one value and index is set, then no time slices will be made.
        Node       - Time history for a node or nodes.  Actual node values are 
                     returned in Value_Nodes.  If NODE has more than one element
                     then value of INDEX is checked.
                   Scalar Value
                     Values must be in the range [1, Number_of_nodes]
                     If Node is zero or negative, then a plot will be made at the
                     first time step and the user will be asked to designate a node.
                     Xrange, Yrange and Block will be used for the plot.
                     If no valid blocks are specified then all blocks will be used.
                     If node gt number_of_nodes then node is set to -1 and a warning
                     is issued.
                   Vector Value - Two values and INDEX not set
                     The closest [X, Y] (= node(0:1)) points at the initial time 
                     will be selected.
                   Vextor Value - Three Values = [X1, X2, Y] and INDEX not set
                     The closest [X1, Y] and [X2, Y] points at the initial time 
                     will be selected and all points between these values.
                     Y values are selected as (y1+y2)/2 with an error of 
                     err= (abs(y1-y2)/2+ yrange/2^15  
            
                     EXAMPLE:
                     readcdf, 1, /grid
                     readcdf, 2, 'density'
                     plotstr, 2, 0, xr=[1.25, 1.4]
                     plotstr, 1, /ov
                     cur, x, y
                     cur, x2
                     readcdf, 3, 'posx
                     plotstr, 3, node=[x, x2, y], value = v
                     plo, 1, n_elements(v), /over, /spectrum
        VALUE_NODE   Value of nodes returned above.
        SKIP_NODE    This parameter is ignored unless more than one node is output
                     SKIP_NODE may be an integer N; in that case then total number
                        of nodes will be reduced by N.  For example SKIP_NODE =2
                        will output half the nodes.
                     SKIP_NODE may be an array.  This array will be replicated to
                        match the total number of nodes and only non-zero values 
                        will be output.  For example: SKIP_VALUE=[1,0,0,1]
                        will output half the nodes; 
                        Value_node = [1,4,5,8,9,12,....]
        Coption      Comment option for node output.  This is set by bit value.
                     Coption =1  Output the node value
                     Coption =2  Output the X position at t=0.
                     Coption =4  Output the X and Y position at t=0.
                     Default = 1
    
        SLICE_ONLY - only slice the structure and store the slice in work
        WORK       - Location of the slice.
                     Default value: WORK = get_maxstr()-1 
        Onode      - WDF output array for node value
                     DEFAULT: ONODE =1
                  IF one node value then the following options exist.
                     6 types of wdf arrays are possible.
                     1. Value vs time         4. Y vs X
                     2. X vs time             5. Value vs X
                     3. Y vs time             6. Value vs Y
    
                     If WDF is a scalar, then [wdf, wdf+1, wdf+2] will be saved
                     with types 1,2,3.  Default is [1, 2, 3]
    
              NOTE:  Additional plots can be obtained with the XPLO command.
    
                     If WDF is a vector then up to 6 WDF arrays will be saved.
                     A WDF array will be saved for each valid value of a wdf array.
                     For example: onode = [1, 0,0,0,2] would store value vs time
                     in WDF array 1 and Value vs X in array 2.
                   If more than one node values then:
                     Only value vs time will be saved.
                     If n_ELEMENTS (ONODE) => N_ELEMENTS(NODE) then value vs time 
                       will be save in each waveform array specified by ONODE.
                     If n_ELEMENTS (ONODE) < N_ELEMENTS(NODE) then value vs time 
                       will be save in each waveform array specified by 
                       ONODE = [ONODE, ONODE[NO-1]+1+INDGEN(NN-NO)]
                       Where NO is the number of onode values and NN is the number
                       of node values. If all the data cannot be saved then, no
                       data is saved.
        Xrange, yrange, zrange - passed to plotfld and used if node le 0 
        extrastuff - any valid keyword for plotfld.                 
    
         Written 11/19/97 - lpmix
          Modified: 3/1/00 - lpmix
    

    (See ../pfidl/cdf/plotfe9.pro)


    READCDF

    [Previous Routine] [Next Routine] [List of Routines]
      Reads a CDF dataset into a structure array.  Procedure options are explained
      below.
      Note: Cell or element data will be moved to the nodes unless keyword
            CELL_VALUES is set.  This data will be stored as multi block data.
            NODE data will be stored as single block data unless rectilinear
            is set.
            
      Note: If delta_x/x or delta_y/y is less than  error then  data will be
            Changed to x vs t or y vs t data for Exodus II data 
            default value is 1.0e-3
    
      Format:  READCDF, STRUCT [, DATASET] [, ZVALUE] [, /INDEX]
                 [, FILEID = fileid]  [, GRID = grid] [, WDFARRAY = wdfarray]
                 [, CELL_VALUES = cell_values] [, ERROR = error] [, /STRUCTURE ]
                 [, ADD= add] [, RECTILINEAR = rectilinear] [, GLOBAL = global]
      where:
        Struct    - structure Array number
       NOTE: Dataset must be provided unless grid is set.
        dataset   - indicates a CDF dataset number or 
                    a search string for dataset comments.  
                    (Not required if GRID is set.)
            See: GET_DSET for more details
        ZVALUE    - Ignored unless 3D data. If 3D data assumed to be rectilinear
                    in the Z direction.  A slice is taken at Z = ZVALUE
                    In all cases the nearest GRID or CELL value will be used.
                    Default value = first z grid
        INDEX     - If ZVALUE is used and index is set then the value of ZVALUE 
                    is assumed to be a grid index in the Z direction. If INDEX 
                    is set then ZVALUE goes from 1 to the maximum number of
                    Z planes.
        GRID      - If set, a node array will be returned.
                    If 3D data then the first zone will be returned unless a 
                    ZVALUE is set.
                    If rectilinear is also set, then a standard PFF grid structure
                    will be returned. 
        WDFARRAY  - For 1D data
                    In addition to storing a type 8 structure as space vs time, 
                    data will be stored in wdfarrays beginning with WDFARRAY.
                    If necessary, SET_MAXWDFARRAY will be called to store the data.
        CELL_VALUES - If set, element or cell data will be returned with the cell
                      centers.  Default - Move cell data to the nodes for finite
                      element data and leave at the cells for rectilinear data; ie 
                      Default value: Cell_Values = retilinear
        fileid    -  file id of the CDF file containing the data
        STRUCTURE - if set a structure will be returned in STRUCT
        ADD       - If set then multiple datasets will be added.
                    All datasets must be either nodal or element (cell) datasets.
        Error     - default value for delta-X/x to change ExodusII cell data to
                    X vs Time data Default value is (max -min)/(|Max|+|min|)<1.0e-3
                    where | | indicates absolute value.
        RECTILINEAR- If set, attempt to put the data on a rectilinear grid.
                     In current version, 3D data must be read as rectilinear.
                     Multiple block data will be read as multiple block data
                     If the number of dimensions is 3 then the user should 
                     specify RECTILINEAR =1
                     Default is RECTILINEAR = 0
                     If 3d data has only 1 cell then will be read as 2d degenerate.
         Note: Values are assumed equal if they differ by less than 1/2^14 =(6e-5)
               Only the initial grid is checked.  A Lagrangian problem which starts
               with a rectilinear grid can be read as rectilinear data; the grid
               will be the initial grid for all times.
         Note: A less sensitive of delta_X /xrange < delta may be used if 
               RECTILINEAR = DELTA 
        GLOBAL    - If set to zero, then readcdf will attempt to preserve blocks
                    when reading rectilinear data.
                    If undefined or 1 and if rectilinear is set or ndim = 3 then 
                    READCDF will attempt to generate a global rectilinear grid.
                    If this is not successful then, a block by block rectilinear
                    grid will be attempted.
                    NOTE: Default is a global rectilinear grid.
    
      Examples:
        Read dataset 34 into structure 1 from file with file id of 4.
          readcdf, 1, 34, fil = 4
    
        Read dataset with 'KE' into structure 2
          readcdf, 2, 'KE'
    

    (See ../pfidl/cdf/readcdf.pro)


    RECDF

    [Previous Routine] [Next Routine] [List of Routines]
      Reads a PFF dataset into a WDF array.  Procedure options are explained
      below.
    
      Format:  RECDF, wda  , dataset [, NARRAY = narray] [, ALL = all] 
                 [, BLOCK = block] [, FILEID = fileid] 
      where:
        wda -     WDF array number or an array of numbers
        dataset - indicates a CDF dataset number, an array of dataset numbers,
                  or is a search string for dataset comments.  
            Note: A '*' value of dataset will return all datasets.
            See: GET_DSET for more details
        all -     nonzero value indicates all datasets with the search 
                  string are to be read into WDF arrays.  If all is 
                  missing or zero, only the elements of wda will be filled.
        fileid -  file id of the PFF file containing the data
        narray -  number of datasets read into WDF arrays
     the parameters wda and dataset can take the following combination of values
     to produce the correspondint actions:
      wda          dataset         action
     array(N)  zero or missing   Read current dataset and (N-1) successive
                                 datasets into the array(N) WDF arrays.
     integer      array(M)       Read array(M) datasets and store in WDF array
                                 integer and the following (M-1) WDF arrays.
     array(N)     array(M)       M must equal N; read the array(M) datasets
                                 and store in the array(N) WDF arrays.
     integer      string         Read dataset with string into WDF array, integer.
                 (all = 0)       If more than one array with string, look for
                                 string followed by spaces at the beginning of
                                 the dataset comment.
                (all not zero)   Read all datasets with string into WDF array,
                                 integer and successive WDF arrays.
     array(N)     string         Read all datasets with string into WDF arrays,
                                 array(N).  Number of array elements must equal
                                 number of datasets with string in the dataset
                                 comment.If string occurs in only 1 dataset,
                                 then read that dataset and the next (N-1) 
                                 datasets into WDF arrays, array(N).
      Examples:
        Read dataset 34 into array 1 from file with file id of 4.
          recdf, 1, 34, fil = 4
        Read into WDF array 2,..., 10, datasets 34,..., 42 from the current file
          recdf, indgen(9)+2, 34
      or: redcv, 2, indgen(9)+34
        Read into WDF arrays beginning with 2 all datasets beginning with "mspin" 
        in the current file and indicate the number of arrays in the variable,
        nread. 
          recdf, 2,  '^mspin' , n=nread, /all 
        Read into WDF arrays [2, 5, 8, 11] the datasets [3, 4, 1, 2] from file
        with id of 2
          recdf, [2,5,8,11], [3,4,1,2], file= 2
        Read into WDF arrays [2,5,8, 11] the datasets having the string "vtot".
        Note:  vtot must occur in either 1 array or 4 arrays.
          recdf,[2,5,8,11], 'vtot'
    

    (See ../pfidl/cdf/recdf.pro)


    RUN_ANIM

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
           RUN_ANIM
    
     PURPOSE:
           This loads animation frames and displays them with the IDL routine:
             XINTERANIMATE
           See also MAKE_ANIM, GET_ANIM_WDF
    
     CATEGORY:
           Grapics
    
     CALLING SEQUENCE:
           RUN_ANIM, ARRAY [, BEG [, STOP[, SKIP]]] [, MAXIMUM = maximum]
    
     INPUTS:
           ARRAY:  Array returned from MAKE_ANIM.  This is a series of annimation
                   snapshots.
           BEG:    First frame to display.
                   If zero or undefined, BEG = 1.
           STOP:   Last frame to display.
                   If zero or undefined, STOP = NTIME 
                   (where NTIME is the number of time steps in ARRAY)
           SKIP:   Increment on the frame number.
                   If zero or undefined, SKIP = 1 if MAXIMUM is not set.
                                    or  SKIP = maximum required to keep total
                                               number of bytes below MAXIMUM using
                                               BEG and STOP
          Note:  BEG, STOP and SKIP are used in a "DO Loop" sense.  Numbering is from 
                 1 to NTIME (NTIME = Number of time steps.)  "DO I= BEG, STOP, SKIP"
    
     KEYWORD PARAMETERS:
           MAXIMUM: Maximum number of bytes in the animation.
                    For true color this is 3 * Xsize * Ysize * NFrame
    
     OUTPUTS:
           An XINTERANIMATE animation is generated.
    
     RESTRICTIONS:
           The computer must have enough video memory to store the animation.
    
     EXAMPLE:
           For the following assume that the command:
             ARRAY = MAKE_ANIM() 
           has been run.
    
           Make an animation with every third frame.
             RUN_ANIM, ARRAY, 0, 0, 3
    
           Make an animation with over all time with less than about 64Mb
             RUN_ANIM, ARRAY, MAXIMUM = 65.e6
    
           Make an animation with over the first 60 frames with less than 64Mb
             RUN_ANIM, ARRAY, 0, 60, MAXIMUM = 65.e6
    
     MODIFICATION HISTORY:
     	Written by:	L. P. Mix, Jr., July 19, 2005
    

    (See ../pfidl/cdf/run_anim.pro)


    SETCDF

    [Previous Routine] [Next Routine] [List of Routines]
       Set the current file pointer to indicated file.
       Format: SETCDF,  fileid [, /NOLOAD] [, /VERBOSE] [, IERROR = ierror]
       where:
          fileid - file id of desired file
          NOLOAD - Keyword, if set, data will not be read into the common block
          VERBOSE- Keyword, if set, information about data will be printed.
                   This keyword is ignored if NOLOAD is set
       Note:  If fileid is undefined or is zero, nothing is done.
    
        Example:
       Set the current file pointer to the file with a file id (fid) of 3
          setcdf, 3
    

    (See ../pfidl/cdf/setcdf.pro)


    SHOWCDF

    [Previous Routine] [Next Routine] [List of Routines]
      Show all opened netCDF files, 
      their file id (fid) and indicate the location of the current file pointer.
      The current file id, and arrays of the user file ids and filesnames
        can be received as keywords.
      Format: SHOWCDF [, current = current] [, ufid = ufid]
                  [, filename = filename]  [, NUMBER= number]
      where
             current - user file id of the current file
             ufid    - array of user file id's
             filename- Array of file names corresponding to the ufid's
             number  - number of files open
             full    - Show all information about the file
                       This includes title, type, and the number of datasets
             ndset   - Number of datasets; ndset = ndset(number, 3)
                       where the second index is represents the number of 
                         global/wdf arrays, node arrays, and cell/element arrays
             quiet   - If present and not zero, send no output to terminal
      Example:
      Show the status, including file id, of all opened PFF files
        showcdf
      
      Get the filenames and user file id's for all open files
      Do not send any output to the terminal
      Note: File names will be truncated to 60 characters
        showcdf, c= cur, u=u, num= n, fil= fil, /q
    

    (See ../pfidl/cdf/showcdf.pro)


    TSLICE

    [Previous Routine] [Next Routine] [List of Routines]
     NAME:
    	TSLICE
    
     PURPOSE:
    	Reduce a four dimensional field structure to three dimensions
           Must be 4 dimensional, single block, single vector, type 1 data.
    
     CATEGORY:
    	Graphics
    
     CALLING SEQUENCE:
    
    	Structure2 = SLICE (Structure1, tvalue [, /INDEX)
    
    
     INPUTS:
    	Structure1: Input this is a multidimensional field type structure.
                         or a structure array numbger
           Structure2: Output this is a three dimensional field structure 
           TVALUE:     Time value for dimension 4 or index for dimension 4.
                   Note:  Index values range from 1 to n_elements(structure1.x4)
    
           INDEX   : If present and not zero, then the units of TVALUE will be
                     taken as indices of of the field array.  Valid values are
                     1 to the maximum number of values in the fourth dimension.
    
     OUTPUTS:
    	Structure is modified to produce a three dimensional structure
    
     EXAMPLE:
    	Reduce structure f to a three dimensional structure by slicing along
             the time = 5e-9; store the result in g.
           g = TSLICE (f,  5e-9)
    
    	Reduce structure f to a three dimensional structure by slicing along
             the time index of 5; store the result in g.
           g = TSLICE (f,  5, /index)
    
     MODIFICATION HISTORY:
     	Written by:	Paul Mix, July 20, 1998
    

    (See ../pfidl/cdf/tslice.pro)


    WRICDF

    [Previous Routine] [List of Routines]
      This procedure writes a WDF array to a PFF file.  
      Format: WRICDF, WD1 [, FILEID = FID] [, CLABEL = CLABEL]  [,  YLABEL = YLABEL]
                 [, XLABEL = XLABEL]
      where:
        wd1 - WDF array number
        fileid - PFF file id.  If fileid  is missing or 0, the current PFF 
                 file is used.
        clabel - dataset comment.  If not specified, the WDF comment is used.
                 Dataset comment string limited to 1024 characters.
        xlabel - dataset x-axis label.  If not specified, the WDF x-axis 
                 label is used.  Label string limited to 64 characters.
        ylabel - dataset block label (y-axis label).  If not specified, 
                 then the y-axis label is used as the block label.
                 Label string limited to 64 characters.
      Examples:
      Write WDF array 1 to the current CDF file.
        wricdf, 1
      Write WDF array 3 to the CDF file with a file id of 4.
        wricdf, 3, f = 4
      Write WDF array 1 to the PFF file with a file id of 1 and use the dataset 
      comments and block labels indicated.
        wricdf, 1, f= 1,c='Calculated Diode Power, Shot 4443', y='Power-W'
    

    (See ../pfidl/cdf/wricdf.pro)