ADAS Subroutine b8popm
C
SUBROUTINE B8POPM( NDTEM , NDDEN , NDMET , NDLEV ,
& NPL , NPLR , NPLI ,
& MAXT , MAXD , NMET ,
& DENSA , IMETR ,
& LRSEL , LISEL , LHSEL ,
& RATPIA, RATMIA, RATHA ,
& STCKM , STVRM , STVIM , STVHM ,
& POPAR
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: B8POPM *********************
C
C PURPOSE: TO CONSTRUCT 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
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
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 INPUT : (L*4) LISEL = .TRUE. => IONISATION FROM LOWER IONIS.
C STAGE REQUESTED.
C = .FALSE. => IONISATION FROM LOWER IONIS.
C STAGE 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*8) STCKM(,,)= METASTABLE POPULATIONS STACK:
C 1st DIMENSION: METASTABLE INDEX
C 2nd DIMENSION: TEMPERATURE INDEX
C 3rd DIMENSION: DENSITY INDEX
C INPUT : (R*8) STVRM(,,,)= METASTABLE LEVEL:
C FREE-ELECTRON RECOMBINATION COEFFICIENTS
C (UNITS* CM**3/SEC-1)
C 1ST DIMENSION: METASTABLE INDEX
C 2ND DIMENSION: TEMPERATURE INDEX
C 3RD DIMENSION: DENSITY INDEX
C 4TH DIMENSION: PARENT INDEX
C INPUT : (R*8) STVIM(,,,)= METASTABLE LEVEL:
C ELECTRON IMPACT IONISATION COEFFICIENTS
C (UNITS* CM**3/SEC-1)
C 1ST DIMENSION: METASTABLE INDEX
C 2ND DIMENSION: TEMPERATURE INDEX
C 3RD DIMENSION: DENSITY INDEX
C 4TH DIMENSION: PARENT INDEX
C INPUT : (R*8) STVHM(,,,)= METASTABLE LEVEL:
C CHARGE-EXCHANGE RECOMBINATION COEFFICIENTS
C (UNITS* CM**3/SEC-1)
C 1st DIMENSION: METASTABLE INDEX
C 2nd DIMENSION: TEMPERATURE INDEX
C 3rd DIMENSION: DENSITY INDEX
C 4TH DIMENSION: PARENT INDEX
C
C OUTPUT: (R*8) POPAR(,,)= LEVEL POPULATIONS
C 1ST DIMENSION: LEVEL INDEX
C 2ND DIMENSION: TEMPERATURE INDEX
C 3RD DIMENSION: DENSITY INDEX
C (ON OUTPUT CONTAINS POPULATIONS FOR
C METASTABLE LEVELS ONLY.)
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) IM = METASTABLE LEVEL ARRAY INDEX
C
C
C ROUTINES: NONE
C
C AUTHOR: HP SUMMERS (UPGRADE OF BXPOPM BY PE BRIDEN)
C K1/1/57
C JET EXT. 4941
C
C DATE: 11/06/92
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 IMETR(NDMET), MAXD, MAXT
INTEGER NDDEN, NDLEV, NDMET, NDTEM
INTEGER NMET, 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*8 STCKM(NDMET,NDTEM,NDDEN)
REAL*8 STVHM(NDMET,NDTEM,NDDEN,NDMET)
REAL*8 STVIM(NDMET,NDTEM,NDDEN,NDMET)
REAL*8 STVRM(NDMET,NDTEM,NDDEN,NDMET)