ADAS Subroutine e4spln
SUBROUTINE E4SPLN( ITA , ITVAL , & TETA , TEVA , & PZD , PZDA , & LTRNG & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: E4SPLN ********************* C C PURPOSE: C PERFORMS CUBIC SPLINE ON LOG(TEMPERATURE <EV> ) VERSUS C LOG(SCALED RADIATED POWER COEFFICIENTS). C INPUT DATA FOR A GIVEN IONZING ION COMBINATION DATA-BLOCK. C C USING ONE-WAY SPLINES IT CALCULATES THE RADIATED POWER C COEFFICIENT FOR 'ITVAL' ELECTRON TEMPERATURE VALUES FROM C THE LIST OF ELECTRON TEMPERATURES READ IN FROM THE INPUT FILE C C IF A VALUE CANNOT BE INTERPOLATED USING SPLINES IT IS C EXTRAPOLATED VIA 'XXSPLE'. (SEE NOTES BELOW). C C CALLING PROGRAM: ADAS504/SPZD C C C SUBROUTINE: C C INPUT : (I*4) ITA = INPUT DATA FILE: NUMBER OF ELECTRON TEMPERA- C TURES READ FOR THE DATA-BLOCK BEING ASSESSED C INPUT : (I*4) ITVAL = NUMBER OF ISPF ENTERED ELECTRON TEMPERATURE C VALUES FOR WHICH IOINIZATION RATE COEFFTS C ARE REQUIRED FOR TABULAR/GRAPHICAL OUTPUT. C C INPUT : (R*8) TETA() = INPUT DATA FILE: ELECTRON TEMPERATURES (EV) C FOR THE DATA-BLOCK BEING ASSESSED. C DIMENSION: ELECTRON TEMPERATURE INDEX C INPUT : (R*8) TEVA() = USER ENTERED: ELECTRON TEMPERATURES (EV) C DIMENSION: TEMPERATURE/DENSITY PAIR INDEX C C INPUT : (R*8) PZD() =INPUT DATA FILE: FULL SET OF ZERO DENSITY C RADIATED POWER COEFFTS FOR THE DATA-BLOCK C BEING ANALYSED. C 1ST DIMENSION: ELECTRON TEMPERATURE INDEX C OUTPUT: (R*8) PZDA() = SPLINE INTERPOLATED OR EXTRAPOLATED ZERO C DENSITY RADIATED POWER COEFFICIENTS FOR C THE USER ENTERED ELECTRON TEMPERATURES. C DIMENSION: ELECTRON TEMPERATURE INDEX C C OUTPUT: (L*4) LTRNG()= .TRUE. => OUTPUT 'PZDA()' VALUE WAS INTER- C POLATED FOR THE USER ENTERED C ELECTRON TEMPERATURE 'TEVA()'. C .FALSE. => OUTPUT 'PZDA()' VALUE WAS EXTRA- C POLATED FOR THE USER ENTERED C ELECTRON TEMPERATURE 'TEVA()'. C DIMENSION: ELECTRON TEMPERATURE INDEX C C (I*4) NIN = PARAMETER = MAX. NO. OF INPUT TEMPERATURE C VALUES. MUST BE >= 'ITA' C (I*4) NOUT = PARAMETER = MAX. NO. OF OUTPUT TEMPERATURE C PAIRS. MUST BE >= 'ITVAL' C (I*4) L1 = PARAMETER = 1 C C (R*8) BCONST = PARAMETER = 1/(SCALED BOLTZMANN'S CONSTANT) C C (I*4) IET = ARRAY SUBSCRIPT USED INPUT FILE ELECTRON C TEMPERATURES. C (I*4) IT = ARRAY SUBSCRIPT USED FOR USER ENTERED C TEMPERATURE VALUES. 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 (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) R8FUN1 = FUNCTION - (SEE ROUTINES SECTION BELOW) C C (R*8) XIN() = LOG( DATA FILE ELECTRON TEMPERATURES ) C (R*8) YIN() = LOG( DATA FILE SCALED ION. RATE COEFFTS.) C (R*8) XOUT() = LOG( USER ENTERED ELECTRON TEMPS.) C (R*8) YOUT() = LOG( OUTPUT GENERATED SCALED ION. RATE COEF) C (R*8) DF() = SPLINE INTERPOLATED DERIVATIVES C C C NOTE: C C ONE-DIMENSIONAL SPLINE CARRIED OUT BY THIS SUBROUTINE: C C LOG( Pzd ) VS. LOG( Te ) C C Te = electron temperature (units: eV) C Pzd = zero density radiated power coefficient C (units: W cm**3) C C Extrapolation criteria: C C Low Te: zero gradient extrapolation (i.e. DY(1) = 0.0) C High Te: zero curvature extrapolation (i.e. DDY(N) = 0.0) C C (These criteria are met by calling XXSPLE with IOPT=4) C 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/37 C JET EXT. 2620 C C DATE: 07/06/91 C UNIX-IDL PORT: C C VERSION: 1.1 DATE: 17-1-96 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - FIRST VERSION C C VERSION: 1.2 DATE: 17-1-96 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - REMOVED SUPERFLUOUS VARIABLES AND TIDIED COMMENTS C SLIGHTLY C C C----------------------------------------------------------------------- C C----------------------------------------------------------------------- INTEGER ITA, ITVAL LOGICAL LTRNG(ITVAL) REAL*8 PZD(ITA), PZDA(ITVAL), TETA(ITA) REAL*8 TEVA(ITVAL)