ADAS Subroutine dxspl3
SUBROUTINE DXSPL3( ISWIT , LSWIT , IZ1 , & NDOUT , NTOUT , & NTIN , & MAXD , ITE , & MAXT , TIN , TOUT , EIAVAL , & TINTRP , & ATTY & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: DXSPL3 ********************* C C PURPOSE: PERFORMS THE THIRD PART OF A THREE WAY SPLINE ON INPUT DATA. C GENERATES A TABLE OF LOG10( COEFFTS./POWERS ) COVERING C 'MAXT' TEMPERATURES AND 'MAXD' DENSITIES FOR THE ELEMENT C RECOMBINING ION CHARGE GIVEN BY 'IZ1'. C C CALLING PROGRAM: D1SPLN/D4DATA C DATA: C C THE SOURCE DATA ORIGINATES AS MEMBERS OF PARTITIONED C DATA SETS AS FOLLOWS: C C 1. JETUID.ACD<YR>.DATA C 2. JETUID.SCD<YR>.DATA C 3. JETUID.CCD<YR>.DATA C 4. JETUID.PRB<YR>.DATA C 5. JETUID.PRC<YR>.DATA C 6. JETUID.PRB<YR>.DATA C 7. JETUID.PRC<YR>.DATA C 8. JETUID.PLT<YR>.DATA C 9. JETUID.PLS<YR>.DATA C 10. JETUID.MET<YR>.DATA C C WHERE <YR> DENOTES TWO INTEGERS FOR THE YEAR SELECTED. C C THE PARTICULAR TYPE OPENED (1-10) IS SELECTED BY 'ISWIT' C IT IS PASSED IN A MODIFIED FORM AFTER PROCESSING BY C DXSPL1 AND DXSPL2. C C C SUBROUTINE: C C INPUT : (I*4) ISWIT = DATA TYPE SELECTOR (1 -> 8) C INPUT : (L*4) LSWIT = .TRUE. => IONISATION POTENTIALS PRESENT C .FALSE. => IONS. POTENTIALS NOT PRESENT C INPUT : (I*4) IZ1 = OUTPUT - ELEMENT RECOMBINING ION CHARGE C C INPUT : (I*4) NDOUT = OUTPUT - MAXIMUM NUMBER OF DENSITIES C INPUT : (I*4) NTOUT = OUTPUT - MAXIMUM NUMBER OF TEMPERATURES C C INPUT : (I*4) NTIN = INPUT - MAXIMUM NUMBER OF TEMPERATURES C C INPUT : (I*4) MAXD = INPUT - NUMBER OF REDUCED DENSITIES C INPUT : (I*4) ITE = INPUT - NUMBER OF REDUCED TEMPERATURES C C INPUT : (I*4) MAXT = OUTPUT - NUMBER OF REDUCED TEMPERATURES C ( <= NTOUT ) C INPUT : (R*8) TIN() = INPUT - SET OF 'ITE' REDUCED ELECTRON TEMPS C INPUT : (R*8) TOUT() = OUTPUT - SET OF 'MAXT' ELECTRON TEMPERATURES C (UNITS: KELVIN). C INPUT : (R*8) EIAVAL = IONISATION POTENTIAL (RYDBERGS) FOR C THE ION CHARGE GIVEN BY 'IZ1'. C C OUTPUT: (L*4) TINTRP() = .TRUE. => 'ATTY(,)' VALUE FOR TEMPERATURE C INDEX INTERPOLATED. C = .FALSE. => 'ATTY(,)' VALUE FOR TEMPERATURE C INDEX EXTRAPOLATED. C 1ST DIMENSION: TEMPERATURE INDEX C C IN/OUT: (R*8) ATTY(,) = WORKING SPACE FOR 3-WAY SPLINE ITERPOLATION C (STORES LOG10 (INTERPOLATED VALUES)) C INPUT 'ATTY' VALUES ARE ASSIGNED TO 'YIN' & C THEN 'YOUT' VALUES ARE ASSIGNED TO 'ATTY'. C 1ST DIMENSION: TEMPERATURE C 2ND DIMENSION: DENSITY C C (I*4) NTDIM1 = PARAMETER = MUST BE EQUAL TO OR GREATER THAN C THE MAXIMUM NUMBER OF INPUT TEMPERATURES. C (I*4) NTDIM2 = PARAMETER = MUST BE EQUAL TO OR GREATER THAN C THE MAXIMUM NUMBER OF OUTPUT TEMPERATURES. C C (R*8) EIACON = PARAMETER = -68570.7 C C (I*4) IT = ARRAY SUBSCRIPT USED FOR TEMPERATURE VALUES C (I*4) ID = ARRAY SUBSCRIPT USED FOR DENSITY VALUES C (I*4) IOPT = DEFINES THE BOUNDARY DERIVATIVES FOR THE C SPLINE ROUTINE 'XXSPLE', SEE 'XXSPLE'. C (VALID VALUES = 0, 1, 2, 3) 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) Z1R2 = 1.0 / (IZ1**2) C (R*8) SCON1 = SCALING CONSTANT C (R*8) SCON2 = SCALING CONSTANT C (R*8) XOUT() ='TOUT()' CONVERTED TO REDUCED TEMPERATURE C (R*8) YIN() ='ATTY(,)' AT FIXED DENSITY - C DIMENSION => TEMPERATURE C (R*8) DF() = SPLINE INTERPOLATED DERIVATIVES C (R*8) YOUT() = SPLINE INTERPOLATED 'ATTY(,,)' VALUES FOR C REDUCED TEMPERATURE EQUAL TO 'XOUT()' AT A C FIXED DENSITY. C C NOTE: C SPLINE IS CARRIED OUT ON: C 'ATTY(,,)' VALUES AT FIXED DENSITY C VERSUS C LOG10( REDUCED DENSITY ) C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C XXSPLE ADAS SPLINE SUBROUTINE (WITH EXTRAP. INFO) C I4UNIT ADAS UNIT NUMBER FOR WARNING MESSAGES C C AUTHOR: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC) C K1/0/37 C JET EXT. 2520 C C DATE : 13/06/91 - PE BRIDEN: ADAS91 VERSION OF 'D4SPL3' C C UNIX-IDL PORT: C C VERSION: 1.1 DATE: 06-09-95 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - FIRST RELEASE C VERSION: 1.2 DATE: 25-10-97 C MODIFIED: LORNE HORTON (JET) C - ADDED FURTHER CHECKS ON LOW T EXTRAPOLATIONS C C----------------------------------------------------------------------- C----------------------------------------------------------------------- INTEGER ISWIT, ITE, IZ1, MAXD INTEGER MAXT, NDOUT, NTIN, NTOUT LOGICAL LSWIT, TINTRP(NTOUT) REAL*8 ATTY(NTOUT,NDOUT), EIAVAL REAL*8 TIN(NTIN), TOUT(NTOUT)