Search Site | Contact Details | FAQ

ADAS Subroutine dxspl1

      SUBROUTINE DXSPL1( ISWIT  , LSWIT  , IZ1   ,
     &                   NDOUT  , NTOUT ,
     &                   NDIN   , NTIN  , NZIN   ,
     &                   IDE    , ITE   , IZE    ,
     &                            TIN   , ZIPT   , EIA    ,
     &                   AIPT   ,
     &                   ZINTRP ,
     &                   ATTY
     &                 )
C-----------------------------------------------------------------------
C
C  ****************** FORTRAN77 SUBROUTINE: DXSPL1 *********************
C
C  PURPOSE: PERFORMS THE FIRST PART OF A THREE WAY SPLINE ON INPUT DATA.
C           GENERATES A TABLE OF LOG10(SCALED COEF/PWRS) COVERING 'ITE'
C           TEMPERATURES AND 'IDE' DENSITIES FOR THE ELEMENT RECOMBINING
C           ION CHARGE GIVEN BY 'IZ1'.
C
C  CALLING PROGRAM: D1SPLN/D4DATA
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.  => 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)  NDIN    = INPUT  - MAXIMUM NUMBER OF DENSITIES
C  INPUT : (I*4)  NTIN    = INPUT  - MAXIMUM NUMBER OF TEMPERATURES
C  INPUT : (I*4)  NZIN    = INPUT  - MAXIMUM NUMBER OF CHARGE STATES
C
C  INPUT : (I*4)  ITE     = INPUT  - NUMBER OF REDUCED TEMPERATURES
C  INPUT : (I*4)  IDE     = INPUT  - NUMBER OF REDUCED DENSITIES
C  INPUT : (I*4)  IZE     = INPUT  - NUMBER OF CHARGE STATES/RECOMBINING
C                                    ION CHARGE
C
C  INPUT : (R*8)  TIN()   = INPUT - SET OF 'ITE' REDUCED ELECTRON TEMPS.
C  INPUT : (R*8)  ZIPT()  = INPUT - SET OF 'IZE' RECOMBINING ION CHARGES
C  INPUT : (R*8)  EIA()   = IONISATION POTENTIALS: ()=ION CHARGE
C                           (UNITS: RYDBERGS)
C
C  INPUT : (R*8)  AIPT(,,)= INPUT - COEFFICIENT/POWER ARRAY.
C                           1ST DIMENSION: REDUCED DENSITY ('DENSR()')
C                           2ND DIMENSION: REDUCED TEMPERATURE ('TR()')
C                           3RD DIMENSION: CHARGE STATE ('ZIPT()')
C
C  OUTPUT: (L*4)  ZINTRP(1)= .TRUE.  => 'ATTY(,)' VALUES INTERPOLATED
C                          = .FALSE. => 'ATTY(,)' VALUES EXTRAPOLATED
C
C  OUTPUT: (R*8)  ATTY(,) = WORKING SPACE FOR 3-WAY SPLINE ITERPOLATION
C                           (STORES VALUES OF 'ANS(1)' )
C                           1ST DIMENSION: TEMPERATURE
C                           2ND DIMENSION: DENSITY
C
C          (I*4)  NZDIM1  = PARAMETER = MUST BE EQUAL TO OR GREATER THAN
C                           THE MAXIMUM NUMBER OF INPUT CHARGE STATES
C          (I*4)  L1      = PARAMETER = 1
C
C          (R*8)  TK2ATE  = PARAMETER = EQUATION CONSTANT = 157890
C
C          (I*4)  I4UNIT  = FUNCTION (SEE ROUTINE SECTION BELOW)
C          (I*4)  IT      = ARRAY SUBSCRIPT USED FOR TEMPERATURE VALUES
C          (I*4)  ID      = ARRAY SUBSCRIPT USED FOR DENSITY VALUES
C          (I*4)  IZ      = ARRAY SUBSCRIPT USED FOR CHARGE STATE VALUES
C          (I*4)  JZ      = RECOMBINING ION CHARGE FOR CHARGE STATE 'IZ'
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)  ATE     = 'TK2ATE' / INPUT REDUCED TEMPERATURE
C          (R*8)  Z2      = 'JZ' SQUARED
C          (R*8)  Z3      = 'JZ' CUBED
C          (R*8)  ZL      = LOG10 OF CURRENT CHARGE STATE
C          (R*8)  Y       = SCALED 'AIPT(,,)' VALUE
C          (R*8)  Z1(1)   = IZ1
C          (R*8)  ANS(1)  = SPLINE INTERPOLATED LOG10(SCALED 'AIPT(,,)')
C                           VALUE FOR A RECOMBINING ION CHARGE EQUAL TO
C                           'IZ1' AT FIXED TEMPERATURE AND DENSITY.
C          (R*8)  F()     = LOG10 ( 'Y' ) - DIMENSION => CHARGE STATE
C          (R*8)  DF()    = SPLINE INTERPOLATED DERIVATIVES
C
C NOTE:
C                         SPLINE IS CARRIED OUT ON:
C            LOG10(SCALED 'AIPT(,,)' VALUES AT FIXED TEMP AND DENSITY)
C                                  VERSUS
C                           RECOMBINING ION CHARGE
C
C ROUTINES:
C          ROUTINE    SOURCE    BRIEF DESCRIPTION
C          ------------------------------------------------------------
C          XXSPLE     ADAS      SPLINE SUBROUTINE (WITH EXTRAP. INFO)
C          I4UNIT     ADAS      INTEGER*4 FUNCTION    -
C                               FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES
C          R8FUN2     ADAS      REAL*8 FUNCTION: ( X -> 1/(1+X) )
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 'D4SPL1'
C DATE  :  15/12/92 - PE BRIDEN: IF IZE<=1 THEN ANS(1)=F(1) INSTEAD
C                                OF ANS(1)=F(IZ) (WHICH IN ERROR GIVES
C                                ANS(1)=F(2) IF IZE=1.)
C
C UPDATE:  12/08/93 - HP SUMMERS: INCLUDE ISWIT IN PARAMETER AND ALLOW
C                                 SEPARATE TREATMENT ACCORDING TO ISWIT
C UPDATE:  18/08/93 - HP SUMMERS: ALTER ORDER TO TAKE LOG10 FIRST BEFORE
C                                 ADJUSTING FOR DATA CLASS
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
C-----------------------------------------------------------------------
C-----------------------------------------------------------------------
      INTEGER             IDE,         ISWIT,       ITE,         IZ1
      INTEGER             IZE,         NDIN,        NDOUT,       NTIN
      INTEGER             NTOUT,       NZIN
      LOGICAL             LSWIT,       ZINTRP(1)
      REAL*8              AIPT(NDIN,NTIN,NZIN),     ATTY(NTOUT,NDOUT)
      REAL*8              EIA(50),     TIN(NTIN),   ZIPT(NZIN)
© Copyright 1995-2024 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk