ADAS Subroutine e6spln
SUBROUTINE E6SPLN( LOSEL ,
& NV , MAXT , NPSPL ,
& SCEF , TOA , TOSA ,
& GOFTA , GFTOA , GFTOSA ,
& LTRNG
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: E6SPLN *********************
C
C (IDENTICAL TO: C1SPLN (EXCEPT SOME VARIABLE NAMES ARE CHANGED))
C
C PURPOSE:
C 1) PERFORMS CUBIC SPLINE ON LOG(TEMPERATURE) VERSUS LOG(GFT)
C INPUT DATA. ('SCEF' VERSUS 'GOFTA' , NV DATA PAIRS)
C
C 2) INTERPOLATES 'MAXT' GFT 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' GFT VALUES USING ABOVE SPLINES AT
C TEMPERATURES EQUI-DISTANCE ON RANGE OF LOG(TEMPERATURES)
C STORED IN INPUT 'SCEF' ARRAY.
C
C CALLING PROGRAM: ADAS506
C
C
C SUBROUTINE:
C
C INPUT : (L*4) LOSEL = .TRUE. => CALCULATE GFTS 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 GFT/TEMPERATURE
C PAIRS READ FOR THE TRANSITION BEING ASSESSED
C INPUT : (I*4) MAXT = NUMBER OF ISPF ENTERED TEMPERATURE VALUES AT
C WHICH INTERPOLATED GFT VALUES ARE REQUIRED
C FOR TABULAR OUTPUT.
C INPUT : (I*4) NPSPL = NUMBER OF SPLINE INTERPOLATED GFT/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) GOFTA() = INPUT DATA FILE: SELECTED TRANSITION -
C GFT VALUES AT 'SCEF()'.
C OUTPUT: (I*4) GFTOA() = SPLINE INTERPOLATED GFT VALUES AT 'TOA()'
C (EXTRAPOLATED VALUES = 0.0).
C OUTPUT: (R*8) GFTOSA()= SPLINE INTERPOLATED GFT 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/GFT
C PAIRS MUST BE >= 'NV'
C (I*4) NOUT = PARAMETER = MAX. NO. OF 'OUTPUT TEMP/GFT
C PAIRS MUST BE >= 'MAXT' & 'NPSPL'
C
C (I*4) IARR = ARRAY SUBSCRIPT USED FOR TEMP/GFT 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/GFT 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( 'GOFTA()' )
C (R*8) XOUT() = LOG(TEMPERATURES AT WHICH SPLINES REQUIRED)
C (R*8) YOUT() = LOG(OUTPUT SPLINE INTERPOLATED GFT 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: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C K1/0/81
C JET EXT. 4569
C
C DATE: 05/02/91
C
C VERSION: 1.2 DATE: 09-11-95
C MODIFIED: ALESSANDRO LANZAFAME
C - NIN: 100 -> 101
C NOUT: 100 -> 101
C
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
INTEGER MAXT, NPSPL, NV
LOGICAL LOSEL, LTRNG(MAXT)
REAL*8 GFTOA(MAXT), GFTOSA(NPSPL)
REAL*8 GOFTA(NV), SCEF(NV), TOA(MAXT)
REAL*8 TOSA(NPSPL)