ADAS Subroutine d6spow
SUBROUTINE D6SPOW( LSELA , LEXSA , LDEFA , LPART , LEXSS ,
& IZ0 , IZL , IZH , NPART ,
& ISDIMD , IZDIMD , ITDIMD , IPDIMD , IMDIMD ,
& ACDA , SCDA , CCDA , PRBA ,
& PRCA , QCDA , XCDA , PLTA ,
& NMSUM , IZIP , IMIP , IPIZM ,
& NTDIM , ITMAX ,
& DENS , DENSH ,
& FPABUN , FSABUN , FPINTG , FSINTG ,
& ELTPEQ ,
& ACDSEQ , SCDSEQ , CCDSEQ , ERBSEQ ,
& ERCSEQ , ELTSEQ ,
& ERBEQ , ERCEQ , ELTEQ , ERADA
& )
C
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: D6SPOW *********************
C
C PURPOSE : TO ASSEMBLE RADIATED ENERGY EXCESS FUNCTIONS USING
C FRACTIONAL METASTABLE ABUNDANCES INTEGRAL EXCESSES
C
C NOTE : THE SOURCE ISONUCLEAR MASTER FILE DATA ARE OBTAINED BY A
C PRIOR CALL TO SUBROUTINE D6DATA FROM SEQUENTIAL FILES
C WITH THE FOLLOWING NAMING CONVENTIONS:
C
C (1) JETSHP.ACD<YR>#<EL).<CODE>DATA
C (2) JETSHP.SCD<YR>#<EL>.<CODE>DATA
C (3) JETSHP.CCD<YR>#<EL>.<CODE>DATA
C (4) JETSHP.PRB<YR>#<EL>.<FILT>.<CODE>DATA
C (5) JETSHP.PRC<YR>#<EL>.<FILT>.<CODE>DATA
C (6) JETSHP.QCD<YR>#<EL>.<CODE>DATA
C (7) JETSHP.XCD<YR>#<EL>.<CODE>DATA
C (8) JETSHP.PLT<YR>#<EL>.<CODE>DATA
C
C WHERE, <YR> = TWO DIGIT YEAR NUMBER
C <EL> = ONE OR TWO CHARACTER ELEMENT SYMBOL
C <CODE> = R => PARTIAL DATA
C U => PARTIAL DATA
C OMITTED => STANDARD DATA
C <FILT> = SIX CHARACTER POWER FILTER CODE
C
C AND DATA OF CLASSES 6 AND 7 DO NOT EXIST FOR THE PARTIAL CASE.
C
C
C INPUT : (L*4) LSELA() = .TRUE. => INPUT DATA SET TYPE FOR THIS
C INDEX SELECTED
C = .FALSE. => INPUT DATA SET FOR THIS INDEX
C NOT SELECTED
C INPUT : (L*4) LEXSA() = .TRUE. => INPUT DATA SET TYPE FOR THIS
C SELECTED INDEX EXISTS
C = .FALSE. => INPUT DATA SET DOES NOT EXIST
C FOR THIS SELECTED INDEX
C INPUT : (L*4) LDEFA() = .TRUE. => INPUT DATA SET TYPE FOR THIS
C DEFAULT YEAR INDEX EXISTS
C = .FALSE. => INPUT DATA SET DOES NOT EXIST
C FOR THIS DEFAULT YEAR INDEX
C INPUT : (L*4) LPART = .TRUE. => PARTIAL DATA SELECTED
C = .FALSE. => STANDARD DATA SELECTED
C INPUT : (I*4) IZ0 = NUCLEAR CHARGE
C INPUT : (I*4) IZL = MINIMUM ION CHARGE+1 IN MASTER DATA FILES
C INPUT : (I*4) IZH = MAXIMUM ION CHARGE+1 IN MASTER DATA FILES
C INPUT : (I*4) NPART() = METASTABLE PARTITION. I.E. NUMBER OF
C METASTABLES FROM CHARGE STATE IZL-1 TO
C IZH ON INPUT
C INPUT : (I*4) ISDIMD = MAXIMUM NUMBER OF (CHARGE, PARENT, GROUND)
C BLOCKS IN ISONUCLEAR MASTER FILES
C INPUT : (I*4) IZDIMD = MAXIMUM NUMBER OF CHARGE STATES
C IN ISONUCLEAR MASTER FILES
C INPUT : (I*4) ITDIMD = MAXIMUM NUMBER OF TEMP OR DENS VALUES IN
C ISOELECTRONIC MASTER FILES
C INPUT : (I*4) IPDIMD = MAXIMUM NUMBER OF METASTABLES FOR EACH
C IONISATION STAGE
C INPUT : (I*4) IMDIMD = MAXIMUM NUMBER OF METASTABLES
C
C INPUT : (R*8) ACDA(,,,) = INTERPOLATION OF ACD COEFFICIENT (CM3 S-1)
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: RECOMBINING METASTABLE INDEX
C 4TH DIM: RECOMBINED METASTABLE INDEX
C INPUT : (R*8) SCDA(,,,) = INTERPOLATION OF SCD COEFFICIENT (CM3 S-1)
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: RECOMBINING METASTABLE INDEX
C 4TH DIM: RECOMBINED METASTABLE INDEX
C INPUT : (R*8) CCDA(,,,) = INTERPOLATION OF CCD COEFFICIENT (CM3 S-1)
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: RECOMBINING METASTABLE INDEX
C 4TH DIM: RECOMBINED METASTABLE INDEX
C INPUT : (R*8) PRBA(,,) = INTERPOLATION OF PRB COEFFICIENT (W CM3 )
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: RECOMBINING METASTABLE INDEX
C INPUT : (R*8) PRCA(,,) = INTERPOLATION OF PRC COEFFICIENT (W CM3 )
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: RECOMBINING METASTABLE INDEX
C INPUTT : (R*8) QCDA(,,,) = INTERPOLATION OF QCD COEFFICIENT (CM3 S-1)
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: FIRST METASTABLE INDEX
C 4TH DIM: SECOND METASTABLE INDEX
C INPUT : (R*8) XCDA(,,,) = INTERPOLATION OF XCD COEFFICIENT (CM3 S-1)
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: FIRST PARENT METASTABLE INDEX
C 4TH DIM: SECOND PARENT METASTABLE INDEX
C INPUT : (R*8) PLTA(,,) = INTERPOLATION OF PLT COEFFICIENT (W CM3 )
C 1ST DIM: TEMPERATURE INDEX
C 2ND DIM: CHARGE STATE INDEX
C 3RD DIM: METASTABLE INDEX
C INPUT : (I*4) NMSUM = TOTAL NUMBER OF POPULATIONS
C
C INPUT : IZIP() = ION CHARGE +1 (IZ1) OF METASTABLE IN LIST
C INPUT : IMIP() = METASTABLE INDEX WITHIN CHARGE STATE IZ1
C OF METASTABLE INDEX FROM COMPLETE LIST
C INPUT : IPIZM(,) = METASTABLE INDEX IN COMPLETE LIST
C 1ST DIM: INDEX IZ1-IZL+1
C 2ND DIM: METASTABLE COUNT FOR STAGE (IGRD)
C INPUT : (I*4) NTDIM = MAXIMUM NUMBER OF DTEV/DDENS PAIRS
C INPUT : (I*4) ITMAX = NUMBER OF ( DTEV() , DDENS() ) PAIRS
C INPUT : (R*8) DENS() = ELECTRON DENSITIES (CM-3))
C INPUT : (R*8) DENSH() = HYDROGEN DENSITIES (CM-3))
C INPUT : (R*8) FPABUN(,) = RESOLVED METASTABLE EQUILIBRIUM
C FRACTIONAL ABUNDANCES
C 1ST DIM: - TEMPERATURE/DENSITY PAIR
C 2ND DIM: - METASTABLE INDEX
C INPUT : (R*8) FPINTG(,) = RESOLVED TRANSIENT METASTABLE POPULATION
C EXCESS INTEGRALS
C 1ST DIM: - TEMPERATURE/DENSITY PAIR
C 2ND DIM: - METASTABLE INDEX
C OUTPUT : (L*4) LEXSS() = .TRUE. => OUTPUT STANDARD MASTER DATA FOR
C THIS INDEX GENERATED
C = .FALSE. => OUTPUT STANDARD MASTER DATA FOR
C THIS INDEX NOT GENERATED
C OUTPUT : (R*8) FSABUN(,) = STAGE EQUILIBRIUM FRACTIONAL ABUNDANCES
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) FSINTG(,) = STAGE TRANSIENT FRACTIONAL ABUNDANCES
C EXCESSES
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) ELTPEQ(,) = METASTABLE PARTIAL TRANSIENT RADIATED
C LINE ENERGY EXCESS FUNCTIONS
C 1ST DIM: - TEMPERATURE/DENSITY PAIR
C 2ND DIM: - METASTABLE INDEX
C OUTPUT : (R*8) ACDSEQ(,) = STANDARD (UNRESOLVED) ACD COEFFICIENT
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) SCDSEQ(,) = STANDARD (UNRESOLVED) SCD COEFFICIENT
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) CCDSEQ(,) = STANDARD (UNRESOLVED) CCD COEFFICIENT
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) ERBSEQ(,) = STANDARD (UNRESOLVED) RB ENERGY EXCESS
C COEFFICIENT
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) ERCSEQ(,) = STANDARD (UNRESOLVED) RC ENERGY EXCESS
C COEFFICIENT
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) ELTSEQ(,) = STANDARD (UNRESOLVED) LT ENERGY EXCESS
C COEFFICIENT
C 1ST DIM: - TEMPERATURE/DENSITY PAIR INDEX
C 2ND DIM: - CHARGE STATE INDEX (IZ1-IZL+1)
C OUTPUT : (R*8) ERBEQ() = TOTAL TRANSIENT RADIATED RECOM-BREMS
C ENERGY EXCESS FUNCTION
C OUTPUT : (R*8) ERCEQ() = TOTAL TRANSIENT CX RADIATED RECOM ENERGY
C EXCESS FUNCTION NORMALISED TO
C ELECTRON DENSITY
C OUTPUT : (R*8) ELTEQ() = TOTAL TRANSIENT RADIATED LINE ENERGY
C EXCESS FUNCTION
C OUTPUT : (R*8) ERADA() = TOTAL TRANSIENT RADIATED ENERGY EXCESS
C FUNCTION
C
C PROGRAM: (I*4) IT = GENERAL INDEX FOR TEMPERATURE
C (I*4) IP = GENERAL INDEX FOR CHARGE
C (I*4) IZ1 = GENERAL INDEX FOR CHARGE+1
C (I*4) ICL = GENERAL INDEX FOR CLASS
C (I*4) IPP = GENERAL PARENT INDEX
C (I*4) IPG = GENERAL GROUND INDEX
C (I*4) IZREF = GENERAL CHARGE STAE POINTER INDEX
C (I*4) IPRT = GENERAL INDEX FOR PARENT METASTABLE
C (I*4) IGRD = GENERAL INDEX FOR METASTABLE
C
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C
C
C AUTHOR : H. P. SUMMERS, JET
C K1/1/57
C JET EXT. 4941
C
C DATE : 28/04/94
C
C UNIX-IDL PORT:
C
C AUTHOR: WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC)
C
C DATE: 07/06/96
C
C VERSION: 1.1 DATE:07/06/96
C MODIFIED: WILLIAM OSBORN
C - FIRST VERSION
C VERSION: 1.2 DATE:27/06/96
C MODIFIED: WILLIAM OSBORN
C - REMOVED UNUSED VARIABLES
C
C-----------------------------------------------------------------------
INTEGER IMDIMD, IMIP(IMDIMD), IPDIMD
INTEGER IPIZM(IZDIMD,IPDIMD), ISDIMD, ITDIMD
INTEGER ITMAX, IZ0, IZDIMD, IZH
INTEGER IZIP(IMDIMD), IZL, NMSUM
INTEGER NPART(IZDIMD), NTDIM
LOGICAL LDEFA(8), LEXSA(8), LEXSS(8), LPART
LOGICAL LSELA(8)
REAL*8 ACDA(NTDIM,IZDIMD,IPDIMD,IPDIMD)
REAL*8 ACDSEQ(NTDIM,IZDIMD)
REAL*8 CCDA(NTDIM,IZDIMD,IPDIMD,IPDIMD)
REAL*8 CCDSEQ(NTDIM,IZDIMD), DENS(NTDIM)
REAL*8 DENSH(NTDIM), ELTEQ(NTDIM)
REAL*8 ELTPEQ(NTDIM,IMDIMD), ELTSEQ(NTDIM,IZDIMD)
REAL*8 ERADA(NTDIM), ERBEQ(NTDIM)
REAL*8 ERBSEQ(NTDIM,IZDIMD), ERCEQ(NTDIM)
REAL*8 ERCSEQ(NTDIM,IZDIMD), FPABUN(NTDIM,IMDIMD)
REAL*8 FPINTG(NTDIM,IZDIMD), FSABUN(NTDIM,IZDIMD)
REAL*8 FSINTG(NTDIM,IZDIMD)
REAL*8 PLTA(NTDIM,IZDIMD,IPDIMD)
REAL*8 PRBA(NTDIM,IZDIMD,IPDIMD)
REAL*8 PRCA(NTDIM,IZDIMD,IPDIMD)
REAL*8 QCDA(NTDIM,IZDIMD,IPDIMD,IPDIMD)
REAL*8 SCDA(NTDIM,IZDIMD,IPDIMD,IPDIMD)
REAL*8 SCDSEQ(NTDIM,IZDIMD)
REAL*8 XCDA(NTDIM,IZDIMD,IPDIMD,IPDIMD)