Search Site | Contact Details | FAQ

ADAS Subroutine bxrcom

      SUBROUTINE BXRCOM( NDTEM  , NDTRN  , NDLEV  ,
     &                   NTIN   , TIN    , RCIN   ,
     &                   NTOUT  , TOUT   ,
     &                   ICNT   , ITRN   , ICLEV  ,
     &                   RCOUT  , LTRNG
     &                 )
C-----------------------------------------------------------------------
C
C  ****************** FORTRAN77 SUBROUTINE: BXRCOM *********************
C
C  PURPOSE: TO ESTABLISH RECOMBINATION RATE COEFFICIENTS  FOR  A SET  OF
C           TEMPERATURES GIVEN BY THE ARRAY 'TOUT()' USING CUBIC SPLINES
C           ON  A SET OF RATE  COEFFICIENTS  COVERING  THE  TEMPERATURES
C           GIVEN BY THE ARRAY 'TIN()'.
C
C           RECOMBINATION TYPE IS SELECTED VIA 'ICNT' & 'ITRN'
C
C           RATE COEFFICIENTS ARE GIVEN FOR A NUMBER OF CAPTURING LEVELS
C           AND THE ARRAY 'RCOUT(,)' REPRESENTS  COEFFTS.  FOR COMBINAT-
C           IONS OF TEMPERATURE AND CAPTURING LEVEL INDEX.
C
C           SPLINE IS CARRIED OUT USING LOG(RATE COEFFICIENT VALUES)
C
C  CALLING PROGRAM:  ADAS205/ADAS206
C
C  SUBROUTINE:
C
C  INPUT :  (I*4)  NDTEM   = MAXIMUM NUMBER OF TEMPERATURES ALLOWED
C  INPUT :  (I*4)  NDTRN   = MAXIMUM NUMBER OF RECOMBINATIONS ALLOWED
C  INPUT :  (I*4)  NDLEV   = MAXIMUM NUMBER OF ENERGY LEVELS ALLOWED
C
C  INPUT :  (I*4)  NTIN    = NUMBER OF TEMPERATURES REPRESENTED IN THE
C                            INPUT DATA SET.
C  INPUT :  (R*8)  TIN()   = TEMPERATURES REPRESENTED IN INPUT DATA SET
C  INPUT :  (R*8)  RCIN(,) = RATE COEFF. REPRESENTED IN INPUT DATA SET
C                            1st DIMENSION: TEMPERATURE INDEX ('TIN')
C                            2nd DIMENSION: RECOMBINATION INDEX
C                                           (SEE: 'ITRN()')
C
C  INPUT :  (I*4)  NTOUT   = NUMBER OF ISPF SELECTED TEMPERATURES FOR
C                            OUTPUT.
C  INPUT :  (R*8)  TOUT()  = ISPF SELECTED TEMPERATURES FOR OUTPUT.
C
C  INPUT :  (I*4)  ICNT    = NUMBER OF SELECTED RECOMBINATIONS
C  INPUT :  (I*4)  ITRN()  = INDEX VALUES IN MAIN TRANSITION ARRAY WHICH
C                            REPRESENT RECOMBINASTION  OF THE  SELECTED
C                            TYPE
C                            USED TO SELECT APPROPRIATE RATE COEFFTS FOR
C                            RECOMBINATION TYPE.
C  INPUT :  (I*4)  ICLEV() = CAPTURING LEVELS INDICES.
C                            DIMENSION: 'TRANSITION'/RECOMBINATION INDEX
C
C  OUTPUT:  (R*8)  RCOUT(,)= SPLINED RECOMBINATION RATE COEFFT. VALUES.
C                            1st DIMENSION: TEMPERATURE INDEX ('TOUT')
C                            2nd DIMENSION: CAPTURING LEVEL INDEX.
C
C  OUTPUT:  (L*4)  LTRNG() = .TRUE. => TEMPERATURE VALUES WITHIN RANGE
C                                      READ FROM INPUT COPASE DATA SET.
C                          = .FALSE.=>TEMPERATURE VALUE NOT WITHIN RANGE
C                                     READ FROM INPUT COPASE DATA SET.
C                            1st DIMENSION: TEMPERATURE INDEX.
C
C
C           (I*4)  NTDSN   = PARAMETER = MAXIMUM NUMBER OF TEMPERATURES
C                                        ALLOWED IN INPUT DATA SET = 8
C           (I*4)  NLTEM   = PARAMETER = MUST BE >= 'NDTEM'
C
C           (I*4)  IOPT    = SPLINE END CONDITIONS/EXTRAPOLATION CONTROL
C                            SWITCH - SEE 'XXSPLE'
C                            I.E. DEFINES THE BOUNDARY DERIVATIVES.
C                            (VALID VALUES = 0, 1, 2, 3, 4)
C           (I*4)  IRECMB  = APPROPRIATE RECOMBINATN INDEX FOR 'RCIN(,)'
C           (I*4)  ICAP    = CAPTURING LEVEL INDEX BEING ASSESSED.
C           (I*4)  IC      = RECOMBINATION ARRAY INDEX
C           (I*4)  IT      = TEMPERATURE ARRAY INDEX
C
C           (R*8)  DYIN()  = INTERPOLATED DERIVATIVES
C                            DIMENSION: TEMPERATURE INDEX ('TIN()')
C
C           (L*4)  LSETX   = .TRUE.  => X-AXES ('TIN()' VALUES) NEED TO
C                                       SET IN 'XXSPLE'.
C                            .FALSE. => X-AXES ('TIN()' VALUES) HAVE
C                                       BEEN SET IN 'XXSPLE'.
C                            (NOTE: 'LSETX' IS RESET BY 'XXSPLE')
C
C           (R*8)  LRCIN() = LOG ( 'RCIN(,)' ) FOR GIVEN CAPTURING LEVEL
C                            DIMENSION: TEMPERATURE INDEX ('TIN()')
C           (R*8)  LRCOUT()= LOG ( SPLINED RECOMBINATION RATE COEFTS )
C                            DIMENSION: TEMPERATURE INDEX ('TOUT()' )
C
C
C ROUTINES:
C          ROUTINE    SOURCE    BRIEF DESCRIPTION
C          ------------------------------------------------------------
C          XXSPLE     ADAS      SPLINE SUBROUTINE (WITH EXTRAP. INFO)
C
C
C AUTHOR:  PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C          K1/0/81
C          JET EXT. 4569
C
C DATE:    09/10/90
C
C UPDATE:  31/01/91 - PE BRIDEN - ADAS91 - INTRODUCED 'LTRNG'
C                                        - REPLACED XXSPLN WITH XXSPLE
C
C UPDATE:  11/12/91 - PE BRIDEN - ADAS91 -NLTEM INCREASED FROM 20 to 101
C
C UPDATE:  10/06/92 - PE BRIDEN - ADAS91 -CORRECT ERROR - CHANGED
C                                         'ICAP=ICLEV(IC)' TO
C                                         'ICAP=ICLEV(IRECMB)'
C
C UPDATE:  20/05/93 - PE BRIDEN - ADAS91 -NTDSN INCREASED FROM 8 to 14
C                                         (REFLECTS CHANGES TO BXDATA)
C
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
      INTEGER             ICLEV(NDTRN),             ICNT
      INTEGER             ITRN(NDTRN), NDLEV,       NDTEM,       NDTRN
      INTEGER             NTIN,        NTOUT
      LOGICAL             LTRNG(NDTEM)
      REAL*8              RCIN(NTDSN,NDTRN),        RCOUT(NDTEM,NDLEV)
      REAL*8              TIN(NTDSN),  TOUT(NDTEM)
© Copyright 1995-2024 The ADAS Project
Comments and questions to: adas-at-adas.ac.uk