Commit 56debc89 authored by Salko Jr, Robert's avatar Salko Jr, Robert
Browse files

Add script for summarizing rod data

parent e32428a4
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -180,7 +180,8 @@ class Hdf5Interface(object):

    def _pinRadialIndexValid(me, pin, radial):
        """ Used for checking validity of radial index """
        if radial<0 or radial>=me.getPinNumRadial(pin):
        numRadial = me.getPinNumRadial(pin)
        if radial<-numRadial or radial>=numRadial:
            raise ValueError("Pin radial index "+str(radial)+" for pin "+str(pin)+" is not in the pin")

    def _pinHasCouplingData(me, pin):
+74 −0
Original line number Diff line number Diff line
@@ -108,6 +108,80 @@ class SummaryTools(object):
                        f.write('{:15d}{:25.5e}\n'.format(state, val))
        f.close()

    def genPinTimeSummary(me, pin, level, sector=None, fname=None, units=None):
        """ Prints summary information for pin data

        Args:
           dataset (str) : Name of the dataset (corresponds to name in hdf5 file).
           pin (int) : The (1-based) pin index for which to print summary data.
           level (int) : The (1-based) level index to print.
           sector (int) : The (1-based) sector index to print.
           fname (str) : The name of the file (defaults to PX_LX_pinSummary.txt) if not provided where P and L are
              pin (1-based) and level (1-based) indices
           units (str) : Can be 'si' or 'british'

        """
        _level = level-1
        if units is None:
            _units = 'si'
        else:
            _units = units
        if _units=='si':
            tempUnit = 'C'
        elif _units=='british':
            tempUnit = 'F'
        else:
            raise RuntimeError("Unexpected units: "+str(_units)+", must be 'si' or 'british'")
        if sector is None:
            _sector = 0
        else:
            _sector = sector-1
        if not fname:
            _fname = 'P{:d}_L{:d}_S{:d}_pinSummary.txt'.format(pin, level, _sector+1)
        else:
            _fname = fname
        f = open(_fname, 'w')
        f.write('#========================================================\n')
        f.write('# Pin:     {:8d}\n'.format(pin))
        f.write('# Level:   {:8d}\n'.format(level))
        f.write('# Sector:  {:8d}\n'.format(_sector+1))
        f.write('# Temperature units: {:s}\n'.format(tempUnit))
        f.write('#--------------------------------------------------------\n')
        if me.h5.isTransient():
            time = 'Time [s]'
        else:
            time = 'State'

        f.write('#{:>14s}{:>22s}{:>22s}{:>22s}{:>22s}\n'.format(time, 'Tclad,o', 'Tclad,i', 'Tpellet,o', 'Tcent'))
        numRadial = me.h5.getPinNumRadial(pin)
        Tcladi = None
        Tpellet = None
        times, Tclado = me.h5.getPinInternalTimeData(pin, _sector, -1, _level)
        if numRadial>1:
            times, Tcladi = me.h5.getPinInternalTimeData(pin, _sector, -2, _level)
        if numRadial>2:
            times, Tpellet = me.h5.getPinInternalTimeData(pin, _sector, -3, _level)
        times, Tcent = me.h5.getPinAxialTimeData('pin_axial_centerline_temp', pin, _level)
        for i, t in enumerate(times):
            _Tclado = Tclado[i]
            if Tcladi is None:
                _Tcladi = 0.0
            else:
                _Tcladi = Tcladi[i]
            if Tpellet is None:
                _Tpellet = 0.0
            else:
                _Tpellet = Tpellet[i]
            _Tcent = Tcent[i]
            if _units=='british':
                _Tclado = C2F(_Tclado)
                _Tcladi = C2F(_Tcladi)
                _Tpellet = C2F(_Tpellet)
                _Tcent = C2F(_Tcent)
            if me.h5.isTransient():
                f.write('{:15.5e}{:>22.8e}{:>22.8e}{:>22.8e}{:>22.8e}\n'.format(t, _Tclado, _Tcladi, _Tpellet, _Tcent))
            else:
                f.write('{:15d}{:>22.8e}{:>22.8e}{:>22.8e}{:>22.8e}\n'.format(t, _Tclado, _Tcladi, _Tpellet, _Tcent))

    def genDNBSummary(me, fname=None, units=None):
        """ Prints summary information for limiting rod/channel"""
+1 −1
Original line number Diff line number Diff line
@@ -6,7 +6,7 @@ def main():
   parser.add_argument('h5name', type=str, help="HDF5 file")
   parser.add_argument('dataset', type=str, help="Valid dataset name in HDF5 file")
   parser.add_argument('--ch', type=int, help="Channel index (1-based) to plot (if not provided defaults to channel with max dataset value.")
   parser.add_argument('--level', type=int, help="Level index (0-based) to plot (if not provided defaults to level with max dataset value.")
   parser.add_argument('--level', type=int, help="Level index (1-based) to plot (if not provided defaults to level with max dataset value.")
   parser.add_argument('--units', choices=["si", "british"], type=str, help="Selector for physical units (default si)")
   parser.add_argument('--fname', type=str, help="Output summary file name")
   args = parser.parse_args()
+19 −0
Original line number Diff line number Diff line
import argparse
from SummaryTools import SummaryTools

def main():
   parser = argparse.ArgumentParser(description="Generates a summary of time-dependent pin temperature solution data.")
   parser.add_argument('h5name', type=str, help="HDF5 file")
   parser.add_argument('pin', type=int, help="Pin index (1-based) to plot.")
   parser.add_argument('level', type=int, help="Level index (1-based) to plot.")
   parser.add_argument('--sector', type=int, help="Level index (1-based) to plot.  Picks first one by default.")
   parser.add_argument('--units', choices=["si", "british"], type=str, help="Selector for physical units (default si)")
   parser.add_argument('--fname', type=str, help="Output summary file name")
   args = parser.parse_args()

   s = SummaryTools(args.h5name)

   s.genPinTimeSummary(fname=args.fname, pin=args.pin, level=args.level, sector=args.sector, units=args.units)

if __name__=="__main__":
    main()
+13 −0
Original line number Diff line number Diff line
@@ -25,6 +25,19 @@ runScriptTest "../SubKit/process/genDNBSummary.py unitTests/dummy.h5 --units=si
runScriptTest "../SubKit/process/genDNBSummary.py unitTests/dummy.h5 --units=british --fname=custom.txt"
runScriptTest "../SubKit/process/genDNBSummary.py unitTests/dummy.h5 --units=si --fname=custom.txt"

runScriptTest "../SubKit/process/genPinTimeDataSummary.py unitTests/dummy.h5 1 5"
runScriptTest "../SubKit/process/genPinTimeDataSummary.py unitTests/dummy.h5 1 5 --sector 1"
runScriptTest "../SubKit/process/genPinTimeDataSummary.py unitTests/dummy.h5 1 5 --sector 1 --units=british"
runScriptTest "../SubKit/process/genPinTimeDataSummary.py unitTests/dummy.h5 1 5 --sector 1 --units=british --fname=custom.txt"

runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 chan_temp"
runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 --ch 1 chan_temp"
runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 --level 1 chan_temp"
runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 --ch 1 --level 1 chan_temp"
runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 --ch 1 --level 1 --units british chan_temp"
runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 --ch 1 --level 1 --units british chan_temp"
runScriptTest "../SubKit/process/genChanTimeDataSummary.py unitTests/dummy.h5 --fname custom.txt chan_temp"

runScriptTest "../SubKit/process/plotChanVoid.py unitTests/dummy.h5"
runScriptTest "../SubKit/process/plotChanVoid.py unitTests/dummy.h5 --state=1 --ch=1 --figname=custom.png"

Loading