ADAS Subroutine d7spln
SUBROUTINE D7SPLN( LOSEL ,
& NV , MAXT , NPSPL ,
& SCEF , TOA , TOSA ,
& PTOT , POWOA , POWOSA ,
& LTRNG
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: D7SPLN *********************
C
C (IDENTICAL TO: E6SPLN (EXCEPT SOME VARIABLE NAMES ARE CHANGED))
C
C PURPOSE:
C 1) PERFORMS CUBIC SPLINE ON LOG(TEMPERATURE) VERSUS LOG(POW)
C INPUT DATA. ('SCEF' VERSUS 'PTOT' , NV DATA PAIRS)
C
C 2) INTERPOLATES 'MAXT' POW VALUES USING ABOVE SPLINES AT
C TEMPERATURES READ IN FROM ISPF PANELS FOR TABULAR OUTPUT.
C (ANY TEMPERATURE VALUES WHICH REQUIRED EXTRAPOLATION TO
C TAKE PLACE ARE SET TO ZERO).
C - THIS STEP ONLY TAKES PLACE IF 'LOSEL=.TRUE.' -
C
C 3) INTERPOLATES 'NPSPL' POW VALUES USING ABOVE SPLINES AT
C TEMPERATURES EQUI-DISTANCE ON RANGE OF LOG(TEMPERATURES)
C STORED IN INPUT 'SCEF' ARRAY.
C
C CALLING PROGRAM: ADAS407
C
C
C SUBROUTINE:
C
C INPUT : (L*4) LOSEL = .TRUE. => CALCULATE POWS FOR INPUT TEMPS.
C READ FROM ISPF PANEL.
C .FALSE. => - DO NOT DO THE ABOVE -
C
C INPUT : (I*4) NV = INPUT DATA FILE: NUMBER OF POW/TEMPERATURE
C PAIRS READ FOR THE TRANSITION BEING ASSESSED
C INPUT : (I*4) MAXT = NUMBER OF ISPF ENTERED TEMPERATURE VALUES AT
C WHICH INTERPOLATED POW VALUES ARE REQUIRED
C FOR TABULAR OUTPUT.
C INPUT : (I*4) NPSPL = NUMBER OF SPLINE INTERPOLATED POW/TEMP.
C REQUIRED FOR GRAPHICAL DISPLAY.
C
C INPUT : (I*4) SCEF() = INPUT DATA FILE: TEMPERATURES (KELVIN)
C INPUT : (I*4) TOA() = ISPF PANEL ENTERED TEMPERATURES (KELVIN)
C OUTPUT: (I*4) TOSA() = 'NPSPL' TEMPERATURES FOR GRAPHICAL OUTPUT
C (KELVIN).
C
C INPUT : (R*8) PTOT() = INPUT DATA FILE: SELECTED TRANSITION -
C POW VALUES AT 'SCEF()'.
C OUTPUT: (I*4) POWOA() = SPLINE INTERPOLATED POW VALUES AT 'TOA()'
C (EXTRAPOLATED VALUES = 0.0).
C OUTPUT: (R*8) POWOSA()= SPLINE INTERPOLATED POW VALUES AT 'TOSA()'
C
C OUTPUT: (L*4) LTRNG() = .TRUE. => OUTPUT SPLINE VALUE WAS
C INTERPOLATED FOR 'DLOG(TOA()'.
C .FALSE. => OUTPUT SPLINE VALUE WAS
C EXTRAPOLATED FOR 'DLOG(TOA()'.
C (NOTE: 'YOUT()=0' AS 'IOPT < 0').
C
C (I*4) NIN = PARAMETER = MAX. NO. OF INPUT TEMP/POW
C PAIRS MUST BE >= 'NV'
C (I*4) NOUT = PARAMETER = MAX. NO. OF 'OUTPUT TEMP/POW
C PAIRS MUST BE >= 'MAXT' & 'NPSPL'
C
C (I*4) IARR = ARRAY SUBSCRIPT USED FOR TEMP/POW PAIRS
C (I*4) IOPT = DEFINES THE BOUNDARY DERIVATIVES FOR THE
C SPLINE ROUTINE 'XXSPLE', SEE 'XXSPLE'.
C (VALID VALUES = <0, 0, 1, 2, 3, 4)
C
C (R*8) TSTEP = THE SIZE OF STEP BETWEEN 'XOUT()' VALUES FOR
C GRAPHICAL OUTPUT TEMP/POW PAIRS TO BE
C CALCULATED USING SPLINES.
C
C (L*4) LSETX = .TRUE. => SET UP SPLINE PARAMETERS RELATING
C TO 'XIN' AXIS.
C .FALSE. => DO NOT SET UP SPLINE PARAMETERS
C RELATING TO 'XIN' AXIS.
C (I.E. THEY WERE SET IN A PREVIOUS
C CALL )
C (VALUE SET TO .FALSE. BY 'XXSPLE')
C
C (R*8) XIN() = LOG( 'SCEF()' )
C (R*8) YIN() = LOG( 'PTOT()' )
C (R*8) XOUT() = LOG(TEMPERATURES AT WHICH SPLINES REQUIRED)
C (R*8) YOUT() = LOG(OUTPUT SPLINE INTERPOLATED POW VALUES)
C (R*8) DF() = SPLINE INTERPOLATED DERIVATIVES
C
C (L*4) LDUMP() = .TRUE. => OUTPUT SPLINE VALUE INTRPOLATED
C FOR 'YOUT()'.
C .FALSE. => OUTPUT SPLINE VALUE EXTRAPOLATED
C FOR 'YOUT()'.
C (NOTE: USED AS A DUMMY ARGUMENT.
C ALL VALUES WILL BE TRUE.)
C
C NOTE:
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C XXSPLE ADAS SPLINE SUBROUTINE (EXTENDED DIAGNOSTICS)
C R8FUN1 ADAS REAL*8 FUNCTION: ( X -> X )
C
C AUTHOR: H. P. SUMMERS, JET
C K1/1/57
C JET EXT. 4941
C
C DATE: 10/06/94
C
C UNIX-IDL PORT:
C WILLIAM OSBORN, TESSELLA SUPPORT SERVICES PLC.
C
C DATE: 22ND APRIL 1996
C
C VERSION: 1.1 DATE: 22-04-96
C MODIFIED: WILLIAM OSBORN
C - FIRST VERSION. NO CHANGES TO IBM CODE
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
INTEGER MAXT, NPSPL, NV
LOGICAL LOSEL, LTRNG(MAXT)
REAL*8 POWOA(MAXT), POWOSA(NPSPL)
REAL*8 PTOT(NV), SCEF(NV), TOA(MAXT)
REAL*8 TOSA(NPSPL)