ADAS Subroutine d1spln
SUBROUTINE D1SPLN( ISWIT , LSWIT , & NTDMAX , & NDDEN , NDTIN , NDZ1V , & ITDVAL , & IDE , ITE , IZE , & DUSR , TUSR , IZ1 , & DENSR , TR , ZIPT , & EIA , AIPT , & LZRNG , LDRNG , LTRNG , & AOUT & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: D1SPLN ********************* C C PURPOSE: TO INTERPOLATE/EXTRAPOLATED DATA FROM MASTER CONDENSED FILE C TO THE USER ENTERED TEMPERATURE/DENSITY PAIRS FOR THE SELEC- C TED RECOMBINING ION CHARGE. C C CALLING PROGRAM: ADAS401 C C DATA: C C THE SOURCE DATA IS CONTAINED 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 C C SUBROUTINE: C C INPUT : (I*4) ISWIT = DATA TYPE SELECTOR (SEE ABOVE) (1 -> 10) C INPUT : (L*4) LSWIT = .TRUE. => SET OF 'EIA' VALUES PRESENT IN C MASTER CONDENSED FILE. C .FALSE => SET OF 'EIA' VALUES NOT PRESENT C IN MASTER CONDENSED FILE. C C INPUT : (I*4) NTDMAX = USER ENTERED VALUES - C MAXIMUM NUMBER OF TEMPERATURE/DENSITY PAIRS C C INPUT : (I*4) NDDEN = INPUT MASTER CONDENSED FILE - C MAXIMUM NUMBER OF REDUCED DENSITIES C INPUT : (I*4) NDTIN = INPUT MASTER CONDENSED FILE - C MAXIMUM NUMBER OF REDUCED TEMPERATURES C INPUT : (I*4) NDZ1V = INPUT MASTER CONDENSED FILE - C MAXIMUM NUMBER OF CHARGE STATES C C INPUT : (I*4) ITDVAL = USER ENTERED VALUES - C NUMBER OF TEMPERATURE/DENSITY PAIRS ENTERED C C INPUT : (I*4) IDE = INPUT MASTER CONDENSED FILE - C NUMBER OF REDUCED DENSITIES READ C INPUT : (I*4) ITE = INPUT MASTER CONDENSED FILE - C NUMBER OF REDUCED TEMPERATURES READ C INPUT : (I*4) IZE = INPUT MASTER CONDENSED FILE - C NUMBER OF CHARGE STATES READ C C INPUT : (R*8) DUSR() = USER ENTERED VALUES - C SET OF 'ITDVAL' ENTERED ELECTRON DENSITIES C (UNITS: CM**-3) C DIMENSION: TEMPERATURE/DENSITY PAIR INDEX C INPUT : (R*8) TUSR() = USER ENTERED VALUES - C SET OF'ITDVAL' ENTERED ELECTRON TEMPERATURES C (UNITS: KELVIN) C DIMENSION: TEMPERATURE/DENSITY PAIR INDEX C INPUT : (I*4) IZ1 = USER ENTERED VALUE - C RECOMBINING ION CHARGE C C INPUT : (R*8) DENSR() = INPUT MASTER CONDENSED FILE - C SET OF 'IDE' REDUCED DENSITIES (CM-3/Z1**7) C INPUT : (R*8) TR() = INPUT MASTER CONDENSED FILE - C SET OF 'ITE' REDUCED TEMPERATURES (K/Z1**2) C INPUT : (R*8) ZIPT() = INPUT MASTER CONDENSED FILE - C SET OF 'IZE' INPUT RECOMBINING ION CHARGES C C INPUT : (R*8) EIA() = INPUT MASTER CONDENSED FILE - C IONISATION RATE COEFFTS. - (UNITS: RYDBERGS) C DIMENSION: ION CHARGE C INPUT : (R*8) AIPT(,,)= INPUT MASTER CONDENSED FILE - C RELEVANT COEFFICIENT/POWER DATA FOR 'ISWIT'. C 1ST DIMENSION: DENSITY INDEX ('DENSR()') C 2ND DIMENSION: TEMPERATURE INDEX ('TR()') C 3RD DIMENSION: CHARGE STATE INDEX ('ZIPT()') C C OUTPUT: (L*4) LZRNG(1) = .TRUE. => 'AOUT()' VALUES FOR CHARGE- C STATE 'IZ1' INTERPOLATED. C = .FALSE. => 'AOUT()' VALUE FOR CHARGE- C STATE 'IZ1' EXTRAPOLATED. C OUTPUT: (L*4) LDRNG() = .TRUE. => 'AOUT()' VALUE FOR DENSITY C INDEX INTERPOLATED. C = .FALSE. => 'AOUT()' VALUE FOR DENSITY C INDEX EXTRAPOLATED. C DIMENSION: DENSITY INDEX C OUTPUT: (L*4) LTRNG() = .TRUE. => 'AOUT()' VALUE FOR TEMPERATURE C INDEX INTERPOLATED. C = .FALSE. => 'AOUT()' VALUE FOR TEMPERATURE C INDEX EXTRAPOLATED. C DIMENSION: TEMPERATURE INDEX C C OUTPUT: (R*8) AOUT() = EXTRAPOLATED/INTERPOLATED DATA FOR EACH C USER ENTERED TEMPERATURE/DENSITY PAIR. C DIMENSION: TEMPERATURE/DENSITY PAIR INDEX. C C (I*4) NUDIM = PARAMETER = MUST BE GREATER THAN OR EQUAL TO C 'NTDMAX'. C C (I*4) NDMAX1 = 'NDDEN' C (I*4) NTMAX1 = 'NDTIN' C (I*4) NZMAX1 = 'NDZ1V' C (I*4) NDMAX2 = 'NUDIM' C (I*4) NTMAX2 = 'NUDIM' C (I*4) ITD = GENERAL USE ARRAY SUBSCRIPT INDEX C C (R*8) ATTY(,) = WORKING SPACE FOR 3-WAY SPLINE ITERPOLATION C ( STORES LOG10(INTERPOLATED VALUES) ) C 1ST DIMENSION: TEMPERATURE C 2ND DIMENSION: DENSITY C C NOTE: C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C DXSPL1 ADAS 1ST PART OF 3-WAY SPLINE OF INPUT DATA C DXSPL2 ADAS 2ND PART OF 3-WAY SPLINE OF INPUT DATA C DXSPL3 ADAS 3RD PART OF 3-WAY SPLINE OF INPUT DATA C C AUTHOR: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC) C K1/0/37 C JET EXT. 2516 C C DATE: 17/06/91 C C UNIX PORT: C C VERSION: 1.1 DATE: 06-09-95 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - FIRST RELEASE C C VERSION: 1.2 DATE: 15-04-96 C MODIFIED: TIM HAMMOND/PAUL BRIDEN C - CORRECT BUG: SET NDMAX2 AND NTMAX2 TO NUDIM AND NOT C NTDMAX. C C----------------------------------------------------------------------- C C----------------------------------------------------------------------- INTEGER IDE, ISWIT, ITDVAL, ITE INTEGER IZ1, IZE, NDDEN, NDTIN INTEGER NDZ1V, NTDMAX LOGICAL LDRNG(NTDMAX), LSWIT LOGICAL LTRNG(NTDMAX), LZRNG(1) REAL*8 AIPT(NDDEN,NDTIN,NDZ1V), AOUT(NTDMAX) REAL*8 DENSR(NDDEN), DUSR(NTDMAX) REAL*8 EIA(50), TR(NDTIN), TUSR(NTDMAX) REAL*8 ZIPT(NDZ1V)