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)