Search Site | Contact Details | FAQ

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)
© Copyright 1995-2024 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk