Recent News
SNAP Version 2.5.7 Released
July, 17, 2017
AptPlot 6.7.4 Released
August 18, 2017
PyPost 1.2.4 Released
August 18, 2016
AptPlot Resources

PyPost - A Python Postprocessor for Analysis of Code Results and Experimental Data

PyPost consists of a Python library and stand-alone Java application designed to provide
advanced post-processing capability for engineering analysis codes and experimental data
results.

PyPost can be used to:

  • Query and extract time-dependent plot data from several nuclear engineering analysis
    codes including: RELAP5/RELAP5-3D, TRACE, MELCOR, etc...
  • Read experimental data stored in NRC Databank format.
  • Read and write data to and from Microsoft Excel and Open Office spreadsheets.
  • Read and write data to and from ASCII files.
  • Perform a wide range of mathematical operations on time-dependent vector data.
  • Interact directly with AptPlot to generate presentation quality plots in a wide range of
    formats.

Although PyPost is a standalone application, it is currently being distributed to SUG members as a feature set included with the AptPlot distribution. This allows PyPost to use the bundled Java version installed with AptPlot.

PyPost Overview

Read an overview of the PyPost application and its features. A detailed PyPost User's Manal is included in the distribution.

License

PyPost is licensed to SNAP User's Group (SUG) members.

Change Log

PyPost 1.2.4 released August 18, 2017:

  • Updated engineering units for RELAP5/RELAP5-3D plot files.
  • Support has been added to allow reading FRAPCON data using the rod average burnup instead of time.
  • The TRACE axial plotting logic was updated to report a warning if the provided data channel references an axial level greater than 1. In this case the first axial level will be used instead.
  • The yValAt method has been updated to include a tolerance of 5E-6 when determining if the provided search value is inside the range of independent values.

PyPost 1.2.3 released July 13, 2017:

  • The getAxialData() routine for TRACE has been updated to perform a linear interpolation when the requested plot time falls between two time steps.
  • The PyPost TRACE interface has been updated with a routine to retrieve data at a given time. This routine can be accessed through the TRACE and TRACB objects within a PyPost script.
  • """ Returns channel data at the specified time. """
    getValueAt(fileIndex, channelNames, time)

    """ Returns a list of doubles each containing channel data at the specified time. """ getValuesAt(self,index,names,time):

    Example: # Read liquid temperature at 100 seconds.
    ltemp = TRACE.getValuesAt(1, [‘tln-21A01’, ‘tln-21A20’], 100.0)

  • The command line argument display and users manual section were updated to remove the unused -v and -s command line arguments.

PyPost 1.2.2 released March 28, 2017:

  • Updated engineering units for COBRA plot files.

PyPost 1.2.1 released February 14, 2017:

  • Fixed the engineering units conversion logic for RETRAN-3D plot files.

PyPost 1.2.0 released January 17, 2017:

  • An issue was resolved which could result in improperly converted data values from being retrieved from a plot file. This situation could occur for MELCOR, COBRA, and RELAP5 plot files when data channels were read from a plot file and then the unit system was subsequently changed. If the same data values were read again after the unit system changed, the values were not converted to the newly selected unit system (if it was using British values it would still return British values and vice-versa).
  • Plot file read routines have been updated to handle importing the 8.2 version of the GOTHIC plot file format. This new logic will process the struct information provided in the plot file and allow access to this metadata information. Accessing metadata information can be made through the following python methods using the GOTHIC object provided within a PYPOST script (i.e. GOTHIC.getMetadataValue(0, 'title'):

    """ Returns the metadata names included in the plot file at the provided index """
    def getMetadataNames(self, index):
    return self.intf.getMetadataNames(index)

    """ Gets the value of the metadata token in the file at the specified index """
    def getMetadataValue(self, index, token):
    return self.intf.getMetadataValue(index, token)

    """ Determines if the file at the specified index contains a metadata name for the provided token """
    def hasMetadataName(self, index, token):
    return self.intf.hasMetadataName(index, token)

  • Support was added for RETRAN-3D plot file formats including: ASCII, binary and demultiplexed. The RETRAN-3D capability is accessed using the predefined RETRAN3D python variable in a PyPost script. An example for opening an ASCII plot file is: RETRAN3D.openPlotFile("./sample_data/retran3d/retran3d.ascii").

PyPost 1.1.2 released December 2, 2016:

  • Improved the read perfomance for TRACE XTV mux and demux files.

PyPost 1.1.1 released October 12, 2016:

  • The FRAPCON Interface was updated to support both ASCII and PIB based plot files. This functionality is provided automatically through the openPlotFile interface method.

PyPost 1.1.0 released September 23, 2016:

  • This version was built using Java Version 8 (1.8.0_102). Java 8 or newer is now required to run PyPost.
  • Two new functions were added to the FRAPCON Interface to support retrieving axial a radial data sets at a specified time.
    These include getAxialData(fileIndex, channelNames, time, offset) and getRadialData(fileIndex, channelNames, time, offset) which return a set of ChannelVectors containing axial or radial data for the indicated data channels at a specified time. Where the function arguments are:

    fileIndex [int] The file index of the open file.
    channelNames [String | String[] ] A string or String array containing the channel names.
    time [double] The analysis time in days in which the data is extracted.
    offset [double] An optional axial or radial offset to apply.

    Examples:

  • # Retrieve Axial Data for burnup at 1000. sec
    data = FRAPCON.getAxialData(1, 'burnup-A01', 1000)
    # Retrieve Radial Data for temperatures of Axial node 12 at 1400. sec
    data = FRAPCON.getRadialData(1, 'temp-A12R01', 1400)

PyPost 1.0.2 released July 7, 2016:

  • Updated User's manual to reflect the correct argument order for all openPlotFile and openDmxFile methods.
  • Added yValAt(x) method to return the dependent value of a vector variable at a specified independent variable location. Exceptions are thrown if the specified location is outside of the range of the vector. Intepolated values are used if the specified location falls between two ponits.
  • Added newEmptyVector() method to create empty vectors.
  • Fixed inconsistent version info. Version information was duplicated between the manifest and Version class.
    The Version class now obtains the correct version from the manifest.

PyPost 1.0.1 released May 12, 2016:

  • PyPost was updated to work with the SNAP PyPost job step.
  • An issue has been resolved where an exception message appeared in the PyPost log when calling AptPlot for the first time.
  • The TRACB interface was updated to add an explicit method for opening demultiplexed files. This prevents an error message from being reported when reading in a demultiplexed TRACB plot file.

PyPost 1.0.0 released March 5, 2015:

  • Initial SNAP User's Group distribution.

Limitations and ToDo's:

  • File demultiplexers have not been directly interfaced.
  • The MATLAB/Octave interfaces have not been created.
  • The report generator for the automated test scripts currently supports only the channel vector tests and the analysis code plot file formats. This will be expanded to cover all test results.

more...