ADAS Subroutine h9spln
SUBROUTINE H9SPLN( NDTRN , NDTEM , & NDTIN , & NV , MAXT , NPSPL , & IETRN , ICNTE , DTYPE , & ISTRN , ICNTS , & USCEF , TOA , TOSA , & SCOM , & GAMMA , GAMOSA , & LTRNG , ITRN & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: H9SPLN ********************* C C PURPOSE: C 1) PERFORMS CUBIC SPLINE ON LOG(TEMPERATURE) VERSUS LOG(GAMMA) C INPUT DATA. ('SCEF' VERSUS 'GAMMA' , NV DATA PAIRS) C C 2) INTERPOLATES 'MAXT' GAMMA 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 C 3) INTERPOLATES 'NPSPL' GAMMA VALUES USING ABOVE SPLINES AT C TEMPERATURES EQUI-DISTANCE ON RANGE OF LOG(TEMPERATURES) C STORED IN INPUT 'SCEF' ARRAY. C C CALLING PROGRAM: ADAS809 C C C SUBROUTINE: C C C INPUT : (I*4) NV = INPUT DATA FILE: NUMBER OF GAMMA/TEMPERATURE C PAIRS READ FOR THE TRANSITION BEING ASSESSED C INPUT : (I*4) MAXT = NUMBER OF ISPF ENTERED TEMPERATURE VALUES AT C WHICH INTERPOLATED GAMMA VALUES ARE REQUIRED C FOR TABULAR OUTPUT. C INPUT : (I*4) NPSPL = NUMBER OF SPLINE INTERPOLATED GAMMA/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) GAMMA() = INPUT DATA FILE: SELECTED TRANSITION - C GAMMA VALUES AT 'SCEF()'. C OUTPUT: (R*8) GAMOSA()= SPLINE INTERPOLATED GAMMA 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/GAMMA C PAIRS MUST BE >= 'NV' C (I*4) NOUT = PARAMETER = MAX. NO. OF 'OUTPUT TEMP/GAMMA C PAIRS MUST BE >= 'MAXT' & 'NPSPL' C C (I*4) IARR = ARRAY SUBSCRIPT USED FOR TEMP/GAMMA 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/GAMMA 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( 'GAMMA()' ) C (R*8) XOUT() = LOG(TEMPERATURES AT WHICH SPLINES REQUIRED) C (R*8) YOUT() = LOG(OUTPUT SPLINE INTERPOLATED GAMMA 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 BRYANS (UNIVERSITY OF STRATHCLYDE) C C DATE: 09/09/03 C C----------------------------------------------------------------------- C C----------------------------------------------------------------------- INTEGER DTYPE, ICNTE, ICNTS INTEGER IETRN(NDTRN), ISTRN(NDTRN) INTEGER ITRN, MAXT, NDTEM, NDTIN INTEGER NDTRN, NPSPL, NV LOGICAL LTRNG(NOUT) REAL*8 GAMMA(NDTEM), GAMOSA(NPSPL) REAL*8 SCOM(NDTEM,NDTRN), TOA(NDTIN) REAL*8 TOSA(NPSPL), USCEF(NDTEM)