ADAS Subroutine bxrate
SUBROUTINE BXRATE( NDTEM , NDTRN , GSCALE , & NTIN , TIN , GAMIN , & NTOUT , TOUT , & ICNT , ITRN , & RATE , DRATE , & LTRNG & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: BXRATE ********************* C C PURPOSE: TO CALCULATE THE EXCITATION AND DE-EXCITATION RATE COEFFICI- C ENTS FOR A SET OF INPUT TEMPERATURES 'TOUT' & TRANSITIONS OF C A SPECIFIED TYPE (ELECTRON OR PROTON IMPACT). C C TRANSITION TYPE SELECTED VIA 'ICNT & ITRN'. C C INPUT RATE COEFFICIENTS 'RATE' & 'DRATE' ASSUME THAT THE C GAMMA VALUE IS UNITY, AND ARE GIVEN FOR THE TEMPERATURES IN C 'TOUT'. THE GAMMA VALUES 'GAMIN' ARE FOR THE TEMPERARTURE C ARRAY 'TIN'. SPLINES ARE USED TO EXTRAPOLATE/INTERPOLATE C THE GAMMA VALUES INTO THE 'TOUT' ARRAY AND THESE USED TO C CALCULATE THE CORRECT RATE COEFFICIENTS. C C SPLINE IS CARRIED OUT USING LOG(GAMMA 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 TRANSITIONS ALLOWED C INPUT : (I*4) GSCALE = SCALING FACTOR FOR OUTPUT GAMMA VALUES 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) GAMIN(,)= GAMMA VALUES REPRESENTED IN INPUT DATA SET C 1st DIMENSION: TEMPERATURE INDEX ('TIN') C 2nd DIMENSION: TRANSITION 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 TRANSITIONS C INPUT : (I*4) ITRN() = INDEX VALUES IN MAIN TRANSITION ARRAY WHICH C REPRESENT TRANSITIONS OF THE SELECTED TYPE. C USED TO SELECT APPROPRIATE GAMMA VALUES FOR C TRANSITION TYPE. C C I/O : (R*8) RATE(,) = EXCITATION RATE COEFFS (cm**3/s) C INPUT : UNIT GAMMA VALUES C OUTPUT: TRUE VALUES C 1st DIMENSION: TEMPERATURE INDEX ('TOUT') C 2nd DIMENSION: TRANSITION INDEX C I/O : (R*8) DRATE(,)= DE-EXCIT'N RATE COEFFS (cm**3/s) C INPUT : UNIT GAMMA VALUES C OUTPUT: TRUE VALUES C 1st DIMENSION: TEMPERATURE INDEX ('TOUT') C 2nd DIMENSION: TRANSITION 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) GZERO = PARAMETER = IF 'GAMIN(1,) < GZERO' THEN ALL C THE 'RATE' AND 'DRATE' VALUES C FOR THE GIVEN TRANSITION ARE C SAID TO BE ZERO. 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) ITRAN = APPROPRIATE TRANSITION INDEX FOR 'GAMIN(,)' C (I*4) IC = TRANSITION ARRAY INDEX C (I*4) IT = TEMPERATURE ARRAY INDEX C C (R*8) GAMMA = SPLINED GAMMA VALUE FOR GIVEN TEMPERATURE C (FROM 'TOUT()') AND TRANSITION. 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) LGIN() = LOG ( 'GAMIN(,)' ) FOR GIVEN TRANSITION C DIMENSION: TEMPERATURE INDEX ('TIN()') C (R*8) LGOUT() = LOG ( SPLINED GAMMA VALUES ) 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: 26/03/91 - PE BRIDEN - ADAS91 - IF 'GAMIN(1,)' <='GZERO' THEN C SET 'RATE' AND 'DRATE' TO 0.0 C FOR ALL TEMPERATURE VALUES. C * INCLUDED FOR LATER USE. C AT PRESENT 'BXDATA' MAKES C SURE 'GAMIN' HAS A MINIMUM C VALUE OF 1.00D-30. * C C UPDATE: 11/12/91 - PE BRIDEN - ADAS91 -NLTEM INCREASED FROM 20 to 101 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 ICNT, ITRN(NDTRN), NDTEM, NDTRN INTEGER NTIN, NTOUT LOGICAL LTRNG(NDTEM) REAL*8 DRATE(NDTEM,NDTRN), GAMIN(NTDSN,NDTRN) REAL*8 GSCALE, RATE(NDTEM,NDTRN) REAL*8 TIN(NTDSN), TOUT(NDTEM)