ADAS Subroutine b8popo
C SUBROUTINE B8POPO( NDTEM , NDDEN , NDMET , NDLEV , & NPL , NPLR , NPLI , & MAXT , MAXD , NMET , NORD , & DENSA , IMETR , IORDR , & LRSEL , LISEL , LHSEL , & RATPIA, RATMIA, RATHA , & STACK , STVR , STVI , STVH , & POPAR & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: B8POPO ********************* C C PURPOSE: TO CONSTRUCT ORDINARY/NON-METASTABLE LEVEL POPULATIONS. C C CALLING PROGRAM: ADAS205/ADAS206 C C SUBROUTINE: C C INPUT : (I*4) NDTEM = MAXIMUM NUMBER OF TEMPERATURES ALLOWED C INPUT : (I*4) NDDEN = MAXIMUM NUMBER OF DENSITIES ALLOWED C INPUT : (I*4) NDMET = MAXIMUM NUMBER OF METASTABLE LEVELS ALLOWED C INPUT : (I*4) NDLEV = MAXIMUM NUMBER OF ENERGY LEVELS ALLOWED C INPUT : (I*4) NPL = NO. OF METASTABLES OF (Z+1) ION ACCESSED C BY EXCITED STATE IONISATION IN COPASE C FILE WITH IONISATION POTENTIALS GIVEN C ON THE FIRST DATA LINE C INPUT : (I*4) NPLR = NO. OF ACTIVE METASTABLES OF (Z+1) ION C INPUT : (I*4) NPLI = NO. OF ACTIVE METASTABLES OF (Z-1) ION C C INPUT : (I*4) MAXT = NUMBER OF INPUT TEMPERATURES ( 1 ->'NDTEM') C INPUT : (I*4) MAXD = NUMBER OF INPUT DENSITIES ( 1 ->'NDDEN') C INPUT : (I*4) NMET = NUMBER OF METASTABLES LEVELS ( 1 ->'NDMET') C INPUT : (I*4) NORD = NUMBER OF ORDINARY LEVELS ( 1 ->'NDLEV') C C INPUT : (R*8) DENSA() = ELECTRON DENSITIES (UNITS: CM-3) C INPUT : (I*4) IMETR() = INDEX OF METASTABLE IN COMPLETE LEVEL LIST C (ARRAY SIZE = 'NDMET' ) C INPUT : (I*4) IORDR() =INDEX OF ORDINARY EXCITED LEVELS IN COMPLETE C LEVEL LIST. C (ARRAY SIZE = 'NDLEV' ) C C INPUT : (L*4) LRSEL = .TRUE. => FREE ELECTRON RECOMBINATION C REQUESTED. C = .FALSE. => FREE ELECTRON RECOMBINATION C NOT REQUESTED. C INPUT : (L*4) LISEL = .TRUE. => ELECTRON IMPACT IONISATION C REQUESTED. C = .FALSE. => ELECTRON IMPACT IONISATION C NOT REQUESTED. C INPUT : (L*4) LHSEL = .TRUE. => CHARGE TRANSFER FROM NEUTRAL C HYDROGREN REQUESTED. C = .FALSE. => CHARGE TRANSFER FROM NEUTRAL C HYDROGREN NOT REQUESTED. C C INPUT : (R*8) RATPIA(,)= RATIO ( N(Z+1)/N(Z) STAGE ABUNDANCIES ) C 1ST DIMENSION: TEMP/DENS INDEX C 2ND DIMENSION: PARENT INDEX C INPUT : (R*8) RATMIA(,)= RATIO ( N(Z-1)/N(Z) STAGE ABUNDANCIES ) C 1ST DIMENSION: TEMP/DENS INDEX C 2ND DIMENSION: PARENT INDEX C INPUT : (R*8) RATHA() = RATIO (NEUTRAL H DENSITY/ELECTRON DENSITY) C C INPUT : (R*4) STACK(,,,)= ORDINARY EXCITED LEVEL POPULAT'N DEPENDENCE C ON METASTABLE LEVEL. C 1st DIMENSION: ORDINARY LEVEL INDEX C 2nd DIMENSION: METASTABLE INDEX C 3rd DIMENSION: TEMPERATURE INDEX C 4th DIMENSION: DENSITY INDEX C INPUT : (R*4) STVR(,,,) = ORDINARY EXCITED LEVEL: C FREE-ELECTRON RECOMBINATION COEFFICIENTS C (UNITS* CM**3/SEC-1) C 1st DIMENSION: ORDINARY LEVEL INDEX C 2nd DIMENSION: TEMPERATURE INDEX C 3rd DIMENSION: DENSITY INDEX C 4TH DIMENSION: PARENT INDEX C INPUT : (R*4) STVI(,,,) = ORDINARY EXCITED LEVEL: C ELECTRON IMPACT IONISATION COEFFICIENTS C (UNITS* CM**3/SEC-1) C 1st DIMENSION: ORDINARY LEVEL INDEX C 2nd DIMENSION: TEMPERATURE INDEX C 3rd DIMENSION: DENSITY INDEX C 4TH DIMENSION: PARENT INDEX C INPUT : (R*4) STVH(,,,) = ORDINARY EXCITED LEVEL: C CHARGE-EXCHANGE RECOMBINATION COEFFICIENTS C (UNITS* CM**3/SEC-1) C 1st DIMENSION: ORDINARY LEVEL INDEX C 2nd DIMENSION: TEMPERATURE INDEX C 3rd DIMENSION: DENSITY INDEX C 4TH DIMENSION: PARENT INDEX C C I/O : (R*8) POPAR(,,)= LEVEL POPULATIONS C 1st DIMENSION: LEVEL INDEX C 2nd DIMENSION: TEMPERATURE INDEX C 3rd DIMENSION: DENSITY INDEX C ON INPUT : CONTAINS POPULATIONS FOR C METASTABLE LEVELS ONLY. C ON OUTPUT: CONTAINS POPULATIONS FOR C ALL LEVELS. C C (R*8) DCOEF = DENSITY MULTIPLIED BY RELEVANT RATIOS FOR C CALCULATING RECOMBINATION CONTRIBUTIONS. C C (I*4) IT = TEMPERATURE ARRAY INDEX C (I*4) IP = PARENT INDEX C (I*4) IN = DENSITY ARRAY INDEX C (I*4) IO = ORDINARY LEVEL ARRAY INDEX C (I*4) IM = METASTABLE LEVEL ARRAY INDEX C C C ROUTINES: NONE C C AUTHOR: HP SUMMERS (UPDATE OF BXPOPO BY PE BRIDEN) C K1/1/57 C JET EXT. 4941 C C DATE: 11/06/92 C C UPDATE: 12/07/93 HPS - CHANGE STSCK, STVR, STVI, STVH C DIMENSIONS TO R*4 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 IMETR(NDMET), IORDR(NDLEV) INTEGER MAXD, MAXT, NDDEN, NDLEV INTEGER NDMET, NDTEM, NMET, NORD INTEGER NPL, NPLI, NPLR LOGICAL LHSEL, LISEL, LRSEL REAL*8 DENSA(NDDEN) REAL*8 POPAR(NDLEV,NDTEM,NDDEN), RATHA(NDDEN) REAL*8 RATMIA(NDDEN,NDMET), RATPIA(NDDEN,NDMET) REAL STACK(NDLEV,NDMET,NDTEM,NDDEN) REAL STVH(NDLEV,NDTEM,NDDEN,NDMET) REAL STVI(NDLEV,NDTEM,NDDEN,NDMET) REAL STVR(NDLEV,NDTEM,NDDEN,NDMET)