ADAS Subroutine d4spln
SUBROUTINE D4SPLN( ISWIT , LSWIT ,
& NUDMAX , NUTMAX ,
& NDDEN , NDTIN , NDZ1V ,
& MAXT , MAXD ,
& IDE , ITE , IZE ,
& DUSR , TUSR , IZ1 ,
& DENSR , TR , ZIPT ,
& EIA , AIPT ,
& LZRNG , LDRNG , LTRNG ,
& ATTY , AOUT
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: D4SPLN *********************
C
C PURPOSE: TO INTERPOLATE/EXTRAPOLATED DATA FROM MASTER CONDENSED FILE
C TO THE USER ENTERED TEMPERATURE/DENSITY ARRAY FOR THE SELEC-
C TED RECOMBINING ION CHARGE.
C BASED ON ADAS9140.FORT(D1SPLN)
C
C CALLING PROGRAM: LH404RU
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.QCD<YR>.DATA
C 7. JETUID.XCD<YR>.DATA
C 8. JETUID.PLT<YR>.DATA
C 9. JETUID.PLS<YR>.DATA
C 10. JETUID.MET<YR>.DATA
C
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) NUDMAX = USER ENTERED VALUES -
C MAXIMUM NUMBER OF DENSITY VALUES
C INPUT : (I*4) NUTMAX = USER ENTERED VALUES -
C MAXIMUM NUMBER OF TEMPERATURE VALUES
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) MAXT = USER ENTERED VALUES -
C NUMBER OF TEMPERATURE VALUES ENTERED
C INPUT : (I*4) MAXD = USER ENTERED VALUES -
C NUMBER OF DENSITY VALUES 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 'IUDVAL' ENTERED ELECTRON DENSITIES
C (UNITS: CM**-3)
C DIMENSION: TEMPERATURE/DENSITY PAIR INDEX
C INPUT : (R*8) TUSR() = USER ENTERED VALUES -
C SET OF'IUTVAL' 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
C USER ENTERED TEMPERATURE/DENSITY ARRAY.
C ( STORES LOG10(INTERPOLATED VALUES) )
C 1ST DIMENSION: TEMPERATURE
C 2ND DIMENSION: DENSITY
C
C (I*4) NUDIM = PARAMETER = MUST BE GREATER THAN OR EQUAL TO
C 'NUDMAX' AND 'NUTMAX'
C
C (I*4) NDMAX1 = 'NDDEN'
C (I*4) NTMAX1 = 'NDTIN'
C (I*4) NZMAX1 = 'NDZ1V'
C (I*4) NDMAX2 = 'NUDMAX'
C (I*4) NTMAX2 = 'NUTMAX'
C (I*4) ITD = GENERAL USE ARRAY SUBSCRIPT INDEX
C (I*4) IDD = 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 PARAMETER (I*4) DLOGMIN = SETS MINIMUM VALUE OF LOG OF COEFFICIENT
C
C NOTE:
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C XUFLOW
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
C AUTHOR: WILLIAM J. DICKSON 12/12/92
C (REFER TO DOCUMENTATION FOR D1SPLN)
C
C UPDATES FROM D1SPLN:
C
C 12/12/92 ARRAY BOUNDS FOR ATTY SET EQUAL TO THOSE IN DXSPL1 ETC
C THERFORE INCLUDE ATTY IN CALL LIST
C 22/02/96 HOUSECLEANING AFTER COPY FOR USE WITH LH404RU
C-----------------------------------------------------------------------
C UNIX-IDL PORT:
C
C VERSION: 1.1 DATE: 11-11-96
C MODIFIED: WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC)
C - FIRST CONVERTED
C
C
C VERSION : 1.2
C DATE : 23-02-2006
C MODIFIED: Martin O'Mullane
C - Remove mainframe listing information in columns 72-80.
C
C-----------------------------------------------------------------------
INTEGER IDE, ISWIT, ITE, IZ1
INTEGER IZE, MAXD, MAXT, NDDEN
INTEGER NDTIN, NDZ1V, NUDMAX, NUTMAX
LOGICAL LDRNG(NUDMAX), LSWIT
LOGICAL LTRNG(NUTMAX), LZRNG(1)
REAL*8 AIPT(NDDEN,NDTIN,NDZ1V), AOUT(NUTMAX,NUDMAX)
REAL*8 ATTY(NUTMAX,NUDMAX), DENSR(NDDEN)
REAL*8 DUSR(NUDMAX), EIA(50)
REAL*8 TR(NDTIN), TUSR(NUTMAX)
REAL*8 ZIPT(NDZ1V)