ADAS Subroutine daspln
SUBROUTINE DASPLN( NTDIM , NDTIN , & ITA , ITVAL , & TFILE , TEVA , & QDRIN , QDROUT , & LTRNG & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTFILEE: B1SPLN ********************* C C PURPOSE: C 1) PERFORMS CUBIC SPLINE ON LOG(TEMPERATURE) VERSUS LOG(QDRIN) C INPUT DATA. ('TFILE' VERSUS 'QDRIN' , ITA DATA PAIRS) C C 2) INTERPOLATES 'ITVAL' QDRIN 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 'ITVAL' QDRIN VALUES USING ABOVE SPLINES AT C TEMPERATURES EQUI-DISTANCE ON RANGE OF LOG(TEMPERATURES) C STORED IN INPUT 'TFILE' ARRAY. C C CALLING PROGRAM: ADAS201 C C C SUBROUTFILEE: C C INPUT : (I*4) NTDIM = MAX. NO. OF TEMPERATURES ALLOWED IN C DATA SET C INPUT : (I*4) NDTIN = MAX. NO. OF USER TEMPERATURES ALLOWED C INPUT : (I*4) ITA = INPUT DATA FILE: NUMBER OF DR/TEMPERATURE C PAIRS READ FOR THE TRANSITION BEING ASSESSED C INPUT : (I*4) ITVAL = NUMBER OF SPLINE INTERPOLATED QDRIN/TEMP. C REQUIRED FOR GRAPHICAL DISPLAY. C C INPUT : (I*4) TFILE() = INPUT DATA FILE: TEMPERATURES C INPUT : (I*4) TEVA() = ISPF PANEL ENTERED TEMPERATURES C C INPUT : (R*8) QDRIN() = INPUT DATA FILE: SELECTED TRANSITION - C QDRIN VALUES AT 'TFILE()'. C OUTPUT: (I*4) QDROUT()= SPLINE INTERPOLATED QDRIN VALUES AT 'TEVA()' C (EXTRAPOLATED VALUES = 0.0). C C OUTPUT: (L*4) LTRNG() = .TRUE. => OUTPUT SPLINE VALUE WAS C INTERPOLATED FOR 'DLOG(TEVA()'. C .FALSE. => OUTPUT SPLINE VALUE WAS C EXTRAPOLATED FOR 'DLOG(TEVA()'. C (NOTE: 'YOUT()=0' AS 'IOPT < 0'). C C (I*4) NIN = PARAMETER = MAX. NO. OF INPUT TEMP/QDRIN C PAIRS MUST BE >= 'ITA' C (I*4) NOUT = PARAMETER = MAX. NO. OF 'OUTPUT TEMP/QDRIN C PAIRS MUST BE >= 'ITVAL' & 'ITVAL' C C (I*4) IARR = ARRAY SUBSCRIPT USED FOR TEMP/QDRIN PAIRS C (I*4) IOPT = DEFINES THE BOUNDARY DERIVATIVES FOR THE C SPLINE ROUTFILEE 'XXSPLE', SEE 'XXSPLE'. C (VALID VALUES = <0, 0, 1, 2, 3, 4) C C (L*4) LSETX = .TRUE. => SET UP SPLINE PARAMETERS RELATFILEG C TO 'XIN' AXIS. C .FALSE. => DO NOT SET UP SPLINE PARAMETERS C RELATFILEG 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( 'TFILE()' ) C (R*8) YIN() = LOG( 'QDRIN()' ) C (R*8) XOUT() = LOG(TEMPERATURES AT WHICH SPLINES REQUIRED) C (R*8) YOUT() = LOG(OUTPUT SPLINE INTERPOLATED QDRIN 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 ROUTFILEES: C ROUTFILEE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C XXSPLE ADAS SPLINE SUBROUTFILEE (EXTENDED DIAGNOSTICS) C R8FUN1 ADAS REAL*8 FUNCTION: ( X -> X ) C C AUTHOR: Martin O'Mullane (based on b1spln.for) C K1/1/43 C JET EXT. 5313 C C C MODIFIED: C VERSION: C C C----------------------------------------------------------------------- C C----------------------------------------------------------------------- INTEGER ITA, ITVAL, NDTIN, NTDIM LOGICAL LTRNG(NDTIN) REAL*8 QDRIN(NTDIM), QDROUT(NDTIN) REAL*8 TEVA(NDTIN), TFILE(NTDIM)