ADAS Subroutine b8rcom
C SUBROUTINE B8RCOM( NDTEM , NDTRN , NDLEV , NDMET , & NTIN , TIN , RCIN , & NTOUT , TOUT , & ICNT , ITRN , ICLEV , IC2LEV , & RCOUT , LTRNG & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: B8RCOM ********************* 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 COMB- C INATIONS OF TEMPERATURE, CAPTURING LEVEL INDEX AND PARENT C 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 INPUT : (I*4) NDMET = MAXIMUM NUMBER OF METASTABLES 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 RECOMBINATIONS 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 INPUT : (I*4) IC2LEV()= PARENT INDEX. C DIMENSION: 'TRANSITION'/RECOMB/IONIS 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 3RD DIMENSION: PARENT 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 = 14 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) IP = PARENT 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 RECOMB.IONIS 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: HP SUMMERS (UPGRADE OF BXRCOM BY PE BRIDEN) C K1/1/57 C JET EXT. 4941 C C DATE: 11/06/92 C C UPDATE: 12/07/93 HPS - MODIFICATIONS TO MAKE CONSISTENT WITH C LATEST VERSION OF B8DATA C C*********************************************************************** C UNIX-IDL PORT: C C AUTHOR: DAVID H BROOKS, UNIVERSITY OF STRATHCLYDE C C DATE: UNKNOWN C C*********************************************************************** C PUT UNDER SCCS CONTROL: C C VERSION: 1.1 DATE: 10/05/96 C MODIFIED: WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC) C - FIRST PUT UNDER SCCS C C----------------------------------------------------------------------- C C----------------------------------------------------------------------- INTEGER IC2LEV(NDTRN), ICLEV(NDTRN) INTEGER ICNT, ITRN(NDTRN), NDLEV, NDMET INTEGER NDTEM, NDTRN, NTIN, NTOUT LOGICAL LTRNG(NDTEM) REAL*8 RCIN(NTDSN,NDTRN) REAL*8 RCOUT(NDTEM,NDLEV,NDMET), TIN(NTDSN) REAL*8 TOUT(NDTEM)