ADAS Subroutine bxpopo
SUBROUTINE BXPOPO( NDTEM , NDDEN , NDMET , NDLEV ,
& MAXT , MAXD , NMET , NORD ,
& DENSA , IMETR , IORDR ,
& LRSEL , LHSEL ,
& RATIA , RATHA ,
& STACK , STVR , STVH ,
& POPAR
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: BXPOPO *********************
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
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) LHSEL = .TRUE. => CHARGE TRANSFER FROM NEUTRAL
C HYDROGREN REQUESTED.
C = .FALSE. => CHARGE TRANSFER FROM NEUTRAL
C HYDROGREN NOT REQUESTED.
C
C INPUT : (R*8) RATIA() = RATIO ( N(Z+1)/N(Z) STAGE ABUNDANCIES )
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*8) 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 INPUT : (R*8) 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
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) 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: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C K1/0/81
C JET EXT. 4569
C
C DATE: 09/10/90
C
C UPDATE: 20/05/93- P BRIDEN: STACK ARRAY CHANGED FROM REAL*8 -> REAL*4
C
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
INTEGER IMETR(NDMET), IORDR(NDLEV)
INTEGER MAXD, MAXT, NDDEN, NDLEV
INTEGER NDMET, NDTEM, NMET, NORD
LOGICAL LHSEL, LRSEL
REAL*8 DENSA(NDDEN)
REAL*8 POPAR(NDLEV,NDTEM,NDDEN), RATHA(NDDEN)
REAL*8 RATIA(NDDEN)
REAL STACK(NDLEV,NDMET,NDTEM,NDDEN)
REAL*8 STVH(NDLEV,NDTEM,NDDEN)
REAL*8 STVR(NDLEV,NDTEM,NDDEN)