Commit 2bf44a60 authored by Salko Jr, Robert's avatar Salko Jr, Robert
Browse files

Add new method for setting initial conditions

Description:
This takes keyword args, which allows more flexibility in how this is used.
It should also make it easier for the user, as they only have one method to worry
about for setting initial conditions.
This also adds the ability to set initial enthalpy instead of temperature.

Gitlab Ticket # - XXXX
parent 98000d2e
Loading
Loading
Loading
Loading
+114 −21
Original line number Diff line number Diff line
@@ -115,6 +115,14 @@ class Model:
        me.chanMap = None
        me.symOpt = None

        # Initial conditions
        me.mdotInit = None
        me.mdotInitialWasSpecified = False
        me.massFluxInit = None
        me.tempInit = None
        me.enthalpyInit = None
        me.pressureInit = None

        # Steady state convergence criteria
        me.steadyConvergenceCriteria = {'massBalance': 1e-3,
                                        'energyBalance': 1e-3,
@@ -164,6 +172,7 @@ class Model:

        me.rtwfp = 100.0

        me.setInitialCalled = False
        me.setInitialConditionsCalled = False
        me.setInitialConditionsMassFluxCalled = False

@@ -289,18 +298,24 @@ class Model:

        Must be called to set the initial conditions

        NOTE: This is a deprecated procedure and will be removed in a future release.  Use
        `setInitial` instead.

        Args:
           mdotInit (float): Initial mass flow rate in the system
           tempInit (float): Initial temperature in the model
           pressureInit (float): Initial (and reference) pressure in the system

        """
        me.mdotInit = mdotInit
        # Also set massFlux in case we need it
        me.massFlux = me.mdotInit / me.sections[1].getFlowArea()
        me.pressureInit = pressureInit
        me.tempInit = tempInit
        me.setInitialConditionsMassFluxCalled = False
        if me.setInitialCalled:
            raise RuntimeError("`setInitial` already called")
        if me.setInitialConditionsCalled:
            raise RuntimeError("`setInitialConditions` already called")
        if me.setInitialConditionsMassFluxCalled:
            raise RuntimeError("`setInitialConditionsMassFlux` already called")
        warnings.warn(
            "`setInitialConditions` has been deprecated.  Switch to using `setInitial` instead.", Warning)
        me.setInitial(mdot=mdotInit, temp=tempInit, pressure=pressureInit)
        me.setInitialConditionsCalled = True

    def setInitialConditionsMassFlux(me, massFlux, tempInit, pressureInit):
@@ -311,20 +326,102 @@ class Model:
        1. Will not specify boundary conditions for individual channels
        2. Will have nonzero initial flow

        NOTE: This is a deprecated feature and will be removed in the future.  Use `setInitial` instead.

        Args:
           massFlux (float): Initial mass flux in the system
           tempInit (float): Initial temperature in the model
           pressureInit (float): Initial (and reference) pressure in the system

        """
        me.massFlux = massFlux
        # Also set mdot in case we need it
        me.mdotInit = me.massFlux * me.sections[1].getFlowArea()
        me.pressureInit = pressureInit
        me.tempInit = tempInit
        me.setInitialConditionsCalled = False
        if me.setInitialCalled:
            raise RuntimeError("`setInitial` already called")
        if me.setInitialConditionsCalled:
            raise RuntimeError("`setInitialConditions` already called")
        if me.setInitialConditionsMassFluxCalled:
            raise RuntimeError("`setInitialConditionsMassFlux` already called")
        warnings.warn(
            "`setInitialConditionsMassFlux` has been deprecated.  Switch to using `setInitial` instead..", Warning)
        me.setInitial(massflux=massFluxInit, temp=tempInit, pressure=pressureInit)
        me.setInitialConditionsMassFluxCalled = True

    def setInitial(me, **kwargs):
        """Set model initial conditions.

        Must be called to set the initial conditions
        Three types of parameters must be set:
           1. Flow
           2. Energy
           3. Pressure

        **Flow**

        For flow, you can pass either `mdot` to specify it as absolute mass flow rate in units
        of kg/s or `massfluxInit` to specify it in units of kg/m**2/s.

        If creating a model for execution in parallel, `massfluxInit` must be used if the flow is not
        being specified individually for the channels and if flow is nonzero.

        **Energy**

        For energy, consider that there are both fluid and solid regions, and both need to have their initial
        energy specified.

        For the fluid, you can pass either `temp` to specify it as a temperature in units of Celsius
        or `enthalpy` to specify it as an enthalpy in units of kJ/kg.

        The solid does not necessarily have to have a temperature specified.  If `temp` was specified for
        the fluid, and nothing is specified for the solid, the solid will just take the temperature specified
        by `temp` as its initial temperature.  If `enthalpy` was specified for the fluid, then the solid needs
        to have its initial temperature specified by passing `temp_solid`.  Units are also in Celsius.  It is
        allowable to pass both `temp` and `temp_solid`, in which case the fluid and solid regions will have
        different initial temperatures.

        **Pressure**

        For pressure, simply pass pressure in bar.

        Args:
           mdot (float): Initial mass flow rate in the system
           massflux (float): Initial mass flux in the system
           temp (float): Initial temperature in the model
           enthalpy (float): Initial enthalpy in the model
           pressure (float): Initial (and reference) pressure in the system

        """
        if me.setInitialCalled:
            raise RuntimeError("`setInitial` already called")
        assert not ('mdot' in kwargs and 'massflux' in kwargs)
        assert 'mdot' in kwargs or 'massflux' in kwargs
        assert not ('temp' in kwargs and 'enthalpy' in kwargs)
        assert 'temp' in kwargs or 'enthalpy' in kwargs
        if 'enthalpy' in kwargs:
            assert 'temp_solid' in kwargs
        assert 'pressure' in kwargs

        if 'mdot' in kwargs:
            me.mdotInit = kwargs['mdot']
            me.massFluxInit = me.mdotInit / me.sections[1].getFlowArea()
            me.mdotInitialWasSpecified = True
        else:
            me.massFluxInit = kwargs['massflux']
            me.mdotInit = me.massFluxInit * me.sections[1].getFlowArea()

        if 'temp' in kwargs:
            me.tempInit = kwargs['temp']
        else:
            me.enthalpyInit = kwargs['enthalpy']

        if 'temp_solid' in kwargs:
            me.solidTempInit = kwargs['temp_solid']
        else:
            me.solidTempInit = kwargs['temp']

        me.pressureInit = kwargs['pressure']

        me.setInitialCalled = True


    def setAveragePower(me, qprime, dhfrac=0.0):
        """ Set the average linear heat rate applied to the model.

@@ -1423,12 +1520,8 @@ class Model:
                    else:
                        pinObj.gapConductance = 0.0

        # Cannot call them both
        assert(
            not (me.setInitialConditionsCalled and me.setInitialConditionsMassFluxCalled))

        # If neither were called, try and infer them from boundary conditions set on the channels
        if not (me.setInitialConditionsCalled or me.setInitialConditionsMassFluxCalled):
        if not me.setInitialCalled:
            mdot, temp, pressure = me._inferInitialConditionsFromBC()
            if mdot and temp and pressure:
                if me.modelParallel:
@@ -1437,13 +1530,13 @@ class Model:
                        raise RuntimeError("A parallel model with more than 1 section is being modeled.  setInitialConditionsMassFlux \
                     was not called and it cannot be infered from the channel boundary conditions that were set.")
                    else:
                        me.setInitialConditionsMassFlux(
                            mdot / me.sections.values()[0].getFlowArea(), temp, pressure)
                        me.setInitial(
                            massflux=mdot / me.sections.values()[0].getFlowArea(), temp=temp, pressure=pressure)
                else:
                    me.setInitialConditions(mdot, temp, pressure)
                    me.setInitial(mdot=mdot, temp=temp, pressure=pressure)
            else:
                raise RuntimeError(
                    "setInitialConditions was not called and the channels do not all have inlet mass/temp and outlet pressure BCs with uniform values, so cannot infer the correct initial conditions")
                    "`setInitial` was not called and the channels do not all have inlet mass/temp and outlet pressure BCs with uniform values, so cannot infer the correct initial conditions")

        # If the inlet mass flow rate distribution was non-uniform, the initial absolute mass flow rate
        # must be defined in CTF, mass flux set to zero, and inlet mass flow rate set to zero
+15 −10
Original line number Diff line number Diff line
@@ -60,16 +60,21 @@ def writeDeck(model, filename):
        else:
            notrans = 0

    if model.setInitialConditionsMassFluxCalled or model.channelsInDomain:
        # If the user asked to use mass flux or if this is a parallel model, we need to specify massflux
        massFluxInit = model.massFlux
        mflx = 1
        mdotInit = 0.0
    else:
    if model.mdotInitialWasSpecified and (not model.channelsInDomain):
        # The user explicitly set mdot as the initial condition, so set that in CTF
        # If modeling a parallel case, however, massflux must be used
        mdotInit = model.mdotInit
        mflx = 0
    else:
        massFluxInit = model.massFluxInit
        mflx = 1
        mdotInit = 0.0

    pressureInit = model.pressureInit
    tempInit = model.tempInit
    if model.tempInit is not None:
        energyInit = -1*model.tempInit
    else:
        energyInit = model.enthalpyInit
    qprime = model.qprime
    dhfrac = model.dhfrac

@@ -137,7 +142,7 @@ def writeDeck(model, filename):
    group1Data.append(
        "**         PREF            HIN           HGIN         VFRAC1         VFRAC2\n")
    group1Data.append("{0:15.5f}{1:15.5f} 288.4200000      1.0000000      0.9999000\n".format(
        pressureInit, -1 * tempInit))
        pressureInit, energyInit))
    group1Data.append("*Card 1.4\n")
    group1Data.append(
        "**GTP(1)   VFRAC(3)  GTP(2) VFRAC(4)  GTP(3) VFRAC(5)  GTP(4) VFRAC(6)\n")
@@ -493,9 +498,9 @@ def writeDeck(model, filename):

    group8Data.append("*Card 8.9\n")
    group8Data.append("**    AXIALT      TRINIT\n")
    group8Data.append("{0:12.5e}{1:12.5e}\n".format(0.0, tempInit))
    group8Data.append("{0:12.5e}{1:12.5e}\n".format(0.0, model.solidTempInit))
    group8Data.append("{0:12.5e}{1:12.5e}\n".format(
        model._getModelHeight(), tempInit))
        model._getModelHeight(), model.solidTempInit))

    # The card 9 data to be written to the deck
    group9Data = []
+61 −0
Original line number Diff line number Diff line
# This test is testing the following new capabilities:
# - Tests the `setInitial` procedure for setting mass flux/temp initial condition

import sys
sys.path.insert(0, '../../../')
import SubKit.build as skb
import SubKit.utils.UnitConversions as units
import math


def main():
    nLev = 320
    model = skb.Model()
    section = skb.Section(nLev=nLev, height=9.0)
    section.addChannel(chID=1, area=7.8540e-5, pw=3.1416e-2)
    model.addSection(secID=1, section=section)

    axial = [0.00000e+00, 4.87999e+00, 4.88000e+00,
             8.90000e+00, 8.90001e+00, 9.00000e+00]
    power = [0.0, 0.0, 1.0, 1.0, 0.0, 0.0]
    model.addAxialPowerShape(powID=1, axial=axial, power=power)

    # Define the outer tube that the fluid is flowing through

    # Tube thickness does not really matter, so just pick something
    tubeThick = 0.01  # m
    tubeInner = 0.01  # m

    outerTube = skb.Tube(d_outer=tubeInner + tubeThick, d_inner=tubeInner)
    model.addSolidType(solidTypeID=1, geoObj=outerTube)
    heatedObj = skb.HeatedSolid(outerTube, 1)
    model.addSolid(solidID=1, solidTypeID=1, solidObject=heatedObj)
    model.addSolidInnerChan(solidID=1, chID=1, percent=1.0)

    # Apply the boundary condition
    model.addBoundaryCondition(bc=skb.MassEnthalpy(
        mdot=7.85398e-02, h=3.05035e+02), chID=1, lev=1)
    model.addBoundaryCondition(bc=skb.PressureEnthalpy(
        pressure=30.0, h=3.05035e+02), chID=1, lev=nLev + 2)

    model.setAveragePower(qprime=31.41593)
    model.setInitial(massflux=1000.0, pressure=30.0, temp=233.85845)
    model.setSolver('direct')
    model.setFluidProperties('asme_1968')
    model.setEditOptions(chanVTK=False, rodVTK=False, ctfHDF5=True, veracsHDF5=False, chanASCII=False,
                         rodEdits=False, dnbEdits=False)
    model.setSteadyState(energyBalance=1e-4, massBalance=1e-4, maxIterations=200000, rtwfp=1.0,
                         p_l2=1e2, p_linf=1e-3, Tcool_l2=1e2, Tcool_linf=1e-3, Tsolid_l2=1e2, Tsolid_linf=1e99,
                         vl_l2=1e2, vl_linf=1e-3, vv_l2=1e2, vv_linf=1e-3, vd_l2=1e2, vd_linf=1e-3,
                         void_l2_abs=1e2, void_linf_abs=1e-3, p_l2_abs=1e2, p_linf_abs=1e-3, Tcool_l2_abs=1e2,
                         Tcool_linf_abs=1e-3, Tsolid_l2_abs=1e2, Tsolid_linf_abs=1e99, vl_l2_abs=1e2, vl_linf_abs=1e-3,
                         vv_l2_abs=1e2, vv_linf_abs=1e-3, vd_l2_abs=1e2, vd_linf_abs=1e-3,
                         dtmin=1e-7, dtmax=1e-4)
    model.setModelOptions(enableEntrainment=True, betaHTC=0.05)
    model.setConductorModelOptions(nc=0)

    model.generateModel()


if __name__ == "__main__":
    main()
+247 −0
Original line number Diff line number Diff line
***********************************************************************************************
*MAIN CONTROL DATA
***********************************************************************************************
*ICOBRA
      1
*INITIAL   DUMPF
       1       0
**    EPSO    OITMAX    IITMAX   COURANT
  1e-4             5       200  0.800000
*TITLE
ctf model
***********************************************************************************************
*GROUP 1 - Calculation Variables and Initial Conditions
***********************************************************************************************
**NGR
   1
**NGAS IRFC EDMD IMIX ISOL          GINIT NOTRN MESH MAPS IPRP MFLX IBTM PPV  NM14
     1    2    1    3    0    7.85398e-02     1    1    0    0    0    0   7     0
*Card 1.2
**         GTOT          AFLUX         DHFRAC
        0.07854       31.41593        0.00000
*Card 1.3
**         PREF            HIN           HGIN         VFRAC1         VFRAC2
       30.00000     -233.85845 288.4200000      1.0000000      0.9999000
*Card 1.4
**GTP(1)   VFRAC(3)  GTP(2) VFRAC(4)  GTP(3) VFRAC(5)  GTP(4) VFRAC(6)
     air     0.0001
{beta_htc}       5.000e-02
***********************************************************************************************
*GROUP 2 - Channel Description
***********************************************************************************************
**NGR
    2
*Card 2.1
**  NCH NDM2 NDM3 NDM4 NDM5 NDM6 NDM7 NDM8 NDM9 NM10 NM11 NM12 NM13 NM14
   1    0    0    0    0    0    0    0    0    0    0    0    0    0
*Card 2.2
**   I          AN          PW ABOT ATOP NMGP           X           Y        XSIZ        YSIZ
     1  7.8540e-05  3.1416e-02  0.0  0.0    0  0.0000e+00  0.0000e+00  0.0000e+00  0.0000e+00
***********************************************************************************************
*GROUP 4 - Vertical Channel Connection Data
***********************************************************************************************
**NGR
    4
*Card 4.1
**NSEC NSIM IREB NDM4 NDM5 NDM6 NDM7 NDM8 NDM9 NM10 NM11 NM12 NM13 NM14
     1    1    0    0    0    0    0    0    0    0    0    0    0    0    0
*Card 4.2
**ISEC    NCHN  NONO         DXS     IVAR
     1         1   320  2.8125e-02          0
*Card 4.4
**    I   NCHA  KCHA(:)    NCHB  KCHB(:)
      1      0
             0
*Card4.5
**  IWDE
       1
*Card 4.6
**  MSIM
     320
***********************************************************************************************
*GROUP 7 - Grid Loss Coefficient Data
***********************************************************************************************
**NGR
    7
*Card 7.1
**  NCD NGT  IFGQF IFSDRP  IFESPV  IFTPE  IGTEMP  NFBS  NDM9 NDM10 NDM11 NDM12 NDM13 NDM14
      0   0      0      0       0      0       0     0     0     0     0     0     0     0
*Card 7.2
**   CDL    J   CD1   CD2   CD3   CD4   CD5   CD6   CD7   CD8   CD9  CD10  CD11  CD12
***********************************************************************************************
*GROUP 8 - Rod and Unheated Conductor Data
***********************************************************************************************
**NGR
    8
*Card 8.1
** NRRD   NSRD    NC  NRTB  NRAD  NLTY  NSTA   NXF  NCAN  RADF    W3 IHTC  DNBCHK NDM14
      1      0     0     1     0     0     1     1     0     0    -1     1     1     0
*Card 8.2
**    N   IFTY   IAXP   NRND DAXMIN  RMULT         HGAP  ISECR       HTAMB        TAMB  SYMROD  HTCMAP TKEMAP NSUBAX NSUBAZ
*Card 8.3
**NSCH   PIE  NSCH   PIE  NSCH   PIE  NSCH   PIE  NSCH   PIE  NSCH   PIE  NSCH   PIE NSCH   PIE
     -1      1      2      0       0  1.000  0.0000e+00      1  0.0000e+00  0.0000e+00    1.000      0      0      1      1
     0 1.000     0 0.000     0 0.000     0 0.000     0 0.000     0 0.000     0 0.000     0 0.000
*Card 8.4
**NISCH  NISCH  NISCH  NISCH  NISCH  NISCH  NISCH  NISCH
      1      0      0      0      0      0      0      0
*Card 8.5
**    N   ISTYP      HPERIM     HPERIMI       RMULS  NOSLCH  NSLCHC       HTAMBS        TAMBS
*Card 8.6
**    I   NRT1   NST1   NRX1
      1      1      0      2
*Card 8.7
**IRTB1  IRTB2  IRTB3  IRTB4  IRTB5  IRTB6  IRTB7  IRTB8  IRTB9 IRTB10 IRTB11 IRTB12
      1
*Card 8.8
**ISTB1  ISTB2  ISTB3  ISTB4  ISTB5  ISTB6  ISTB7  ISTB8  ISTB9 ISTB10 ISTB11 ISTB12
*Card 8.9
**    AXIALT      TRINIT
 0.00000e+00 2.33858e+02
 9.00000e+00 2.33858e+02
***********************************************************************************************
*GROUP 9 - Conductor Geometry Description
***********************************************************************************************
**NGR
    9
*Card 9.1
** NFLT IRLF ICNF IMWR NDM5 NDM6 NDM7 NDM8 NDM9 NM10 NM11 NM12 NM13 NM14
      1    0    0    0    0    0    0    0    0    0    0    0    0    0
*Card 9.6
**  I FTYP           DROD            DIN   NFUL IMTF IMTC DUM8 DUM9  DUM10  DUM11  DUM12  DUM13  DUM14  EPSO
    1 tube   2.000000e-02    1.00000e-02      1    0    0    0   0       0     0     0      0    0    0.0
*Card 9.7
** NODER  MATR          TREG   QREG
       3     0  5.000000e-03  1.0
***********************************************************************************************
*GROUP 10 - Material Properties Tables
***********************************************************************************************
*NGRP
   10
*NMAT NDM2 NDM3 NDM4 NDM5 NDM6 NDM7 NDM8 NDM9 NM10 NM11 NM12 NM13 NM14
     0    0    0    0    0    0    0    0    0    0    0    0    0    0
*
***********************************************************************************************
*GROUP 11 - Core Power Distribution Information
***********************************************************************************************
*NGR group number
   11
**Card 11.1
* NQA  NAXP  MNXN    NQ NGPFF   NQR  NDM7  NDM8  NDM9 NDM10 NDM11 NDM12 NDM13 NDM14
    1     2     6     0     0     1     0     0     0     0     0     0     0     0
**Card 11.2
*           YQA
    0.00000e+00
**Card 11.3
*     I   NAXN
      1      6
**Card 11.4
*             Y         AXIALZ
    0.00000e+00    0.00000e+00
    4.87999e+00    0.00000e+00
    4.88000e+00    1.00000e+00
    8.90000e+00    1.00000e+00
    8.90001e+00    0.00000e+00
    9.00000e+00    0.00000e+00
**Card 11.3
*     I   NAXN
      2      2
**Card 11.4
*             Y         AXIALZ
    0.00000e+00    1.00000e+00
    9.00000e+00    1.00000e+00
**Radial power profile forcing function
**Card 11.7
*          YQR
    0.00000E+00
**Card 11.8
*    FQR1      FQR2      FQR3      FQR4      FQR5      FQR6      FQR7      FQR8
   1.00000
***********************************************************************************************
*GROUP 12 - Turbulent Mixing and Void Drift Data
***********************************************************************************************
**NGR
   12
*Card 12.2
**    AAAK      BETA     THETM
 0.140E+01 3.700e-02 0.500E+01
***********************************************************************************************
*GROUP 13 -  Boundary Condition Data
***********************************************************************************************
*NGR group number
   13
**Card 13.1
* NBND   NKBD NFUN NGBD VBC  NDM6 NDM7 NDM8 NDM9 NM10 NM11 NM12 NM13 NM14
     2      0    0    0  0    0    0    0    0    0    0    0    0    0
*Card 13.2
** NPTS
*Card 13.3
**Card 13.4
* IBD1   IBD2 ISPC N1FN N2FN N3FN     BCVALUE1     BCVALUE2     BCVALUE3 INITGAS
     1      1    2    0    0    0  7.85398e-02  3.05035e+02  0.00000e+00       1
     1    322    1    0    0    0  0.00000e+00  3.05035e+02  3.00000e+01       1
***********************************************************************************************
*GROUP 14 - Output Options
***********************************************************************************************
**NGR
  -14
**               KEY     VALUE
           rod_edits         0
             rod_vtk         0
         native_hdf5         1
           fluid_vtk         0
           dnb_edits         0
          chan_edits         0
                hdf5         0
         convergence         1
           gap_edits         0
end 14
***********************************************************************************************
*GROUP 15 - Time Domain Data
***********************************************************************************************
**NGR
   15
*Card 15.1
**        DTMIN          DTMAX           TEND          EDINT         DMPINT          RTWFP     MAXITS
    1.00000e-07    1.00000e-04     1.0000E-01  0.0000E+00  0.0000E+00     1.000000e+00     200000
***********************************************************************************************
*GROUP 19 - convergence Criteria for Steady State Solve
***********************************************************************************************
**NGR
   19
** Normalized l-infinity of checked solution terms must go below these tolerances for the case
** to be considered steady state.  The code converges if the following is true for each checked
** solution term:
**
**   abs((X-Xn))<=max(rtol*abs(Xn),atol)
**
** In this equation, 'X' is a vector of the checked solution terms from the current checkpoint
** and 'Xn' is the vector of the same solution terms, but from the previous checkpoint.  Checks
** are made every 0.05 seconds in the transient.  The relative tolerances are defined on Card
** 19.1 and the absolute tolerances are defined on Card 19.2.  This check is done for pressure,
** fluid temperature, solid temperature, and the three components of axial velocity.  There is
** also a check on void, but it does not invole the relative check because void is a
** dimensionless value; only the absolute check is done.
**
** The final check involves checking that the mass and energy balance over the system is below
** a tolerance as well.
** Balance of mass ((mass_in-mass_out)/mass_in) and balance of energy ((energy_in-energy_out)/
** energy_in) must go below tolerance values defined on Card 19.3 for case to be considered
** steady state.
*Card 19.1 - relative stopping criteria [unitless]
** LIPRESS   LITCOOL  LITSOLID      LIVL      LIVV      LIVD
 1.000e-03 1.000e-03 1.000e+99 1.000e-03 1.000e-03 1.000e-03
*Card 19.2 - absolute stopping criteria [pressure in psia|bar, velocity in ft/s|m/s,
** and temperature in F|C]
** LIAVOID  LIAPRESS  LIATCOOL LIATSOLID     LIAVL     LIAVV     LIAVD
 1.000e-03 1.000e-03 1.000e-03 1.000e+99 1.000e-03 1.000e-03 1.000e-03
*Card 19.2   [%]
** ENERGYBAL     MASSBAL
   1.000000e-02   1.000000e-02
*Card 19.4   [%]
** L2PRESS   L2TCOOL  L2TSOLID      L2VL      L2VV      L2VD
*Card 19.5 - absolute stopping criteria [pressure in psia|bar, velocity in ft/s|m/s,
 1.000e+02 1.000e+02 1.000e+02 1.000e+02 1.000e+02 1.000e+02
** and temperature in F|C]
** L2AVOID  L2APRESS  L2ATCOOL L2ATSOLID     L2AVL     L2AVV     L2AVD
 1.000e+02 1.000e+02 1.000e+02 1.000e+02 1.000e+02 1.000e+02 1.000e+02
Loading