ADAS Subroutine d8eval
SUBROUTINE D8EVAL ( dsn03 , dsn35 ,
& NUMTE , TEMIN , TEMAX ,
& NUMNE , FNEMIN , FNEMAX ,
& FUELMAS ,
& TEL , FNEL , NAME ,
& iz0 , izl , izu ,
& RAL , SAL0 , SAL , CAL ,
& PRBL , PRCL , PLTL0 , PLTL ,
& PLSL0 , PLSL ,
& PRBLNFL , PRCLNFL , PLTL0NFL , PLTLNFL ,
& ralrr , raldr ,
& prbrr , prbdr , prbbr ,
& prbrrnfl , prbdrnfl , prbbrnfl ,
& INFRAL , INFSAL , INFCAL ,
& INFPRB , INFPRC , INFPLT , INFPLS ,
& INFPRBN , INFPRCN , INFPLTN ,
& METRAL , METSAL , METCAL ,
& METPRB , METPRC , METPLT , METPLS ,
& METPRBN , METPRCN , METPLTN ,
& ltick
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: D8EVAL *********************
C
C
C PURPOSE: To calculate tables of values of ionisation, recombination
C and radiated power rates for non-coronal impurity studies
C over a given temperature and density range with atomic
C data parameters from files of format adf03
C
C CALLING PROGRAM: ADAS408
C
C
C
C SUBROUTINE:
C
C INPUT: (C*80) dsn03 = adf03 atompars file
C INPUT: (C*80) dsn35 = adf35 filter data file
C
C
C
C THE OUTPUT ARRAYS ARE INDEXED
C XXX(,) = XXX(ITDIMD,IDDIMD,IZDIMD) 1ST DIMENSION TEMPERATURE
C 2ND DIMENSION DENSITY
C 3RD DIMENSION ION STAGE
C ALL TABLES ARE LOG10 IN CGS UNITS
C
C
C OUTPUT: (R*8) TEL() = TEMPERATURE SET OF TABLES - LOG MESH
C (R*8) FNEL() = DENSITY SET OF TABLES - LOG MESH
C (C*13) NAME = ELEMENT NAME
C
C (R*8) RAL(,,) = RADIATIVE AND DIELECTRONIC RECOMB.
C (R*8) CAL(,,) = CHARGE EXCHANGE RECOMBINATION
C
C (R*8) SAL0(,) = IONISATION (NEUTRAL)
C (R*8) SAL(,,) = IONISATION (NON-NEUTRAL)
C
C (R*8) PLTL0(,) = TOTAL LINE RADIATED POWER (NEUTRAL)
C (R*8) PLTL(,,) = TOTAL LINE RADIATED POWER (NON-NEUTRAL)
C
C (R*8) PRBL(,,) = RAD. + DIEL RECOM. + BREMS. POWER
C (R*8) PRCL(,,) = CX. RECOM. POWER
C
C (R*8) PLSL0(,) = SPECIFIC LINE POWER (NEUTRAL)
C (R*8) PLSL(,,) = SPECIFIC LINE POWER (NON-NEUTRAL)
C
C (R*8) PRBLNFL(,,) = RECOM+BREMM POWER (NO FILTER)
C (R*8) PRCLNFL(,,) = CX POWER (NO FILTER)
C (R*8) PLTLNFL(,,) = LINE POWER (NO FILTER)
C (R*8) PLTL0NFL(,,)= NEUTRAL LINE POWER (NO FILTER)
C
C (C*8) INFRAL() = RECOMBINATION INFO STRING
C (C*8) INFSAL() = IONISATION INFO STRING
C (C*8) INFCAL() = CX INFO STRING
C (C*8) INFPRB() = RECOM+BREMM POWER INFO STRING
C (C*8) INFPRC() = CX POWER INFO STRING
C (C*8) INFPLT() = TOTAL LINE POWER INFO STRING
C (C*8) INFPLS() = SPECIFIC LINE POWER INFO STRING
C (C*8) INFPRBN() = RECOMM+BREM POWER (NO FILTER) INFO
C (C*8) INFPRCN() = CX POWER (NO FILTER) INFO STRING
C (C*8) INFPLTN() = TOTAL LINE POWER (NO FILTER) INFO
C
C (C*24) METRAL = RECOMBINATION METHOD STRING
C (C*24) METSAL = IONISATION METHOD STRING
C (C*24) METCAL = CX METHOD STRING
C (C*24) METPRB = RECOM+BREMM POWER METHOD STRING
C (C*24) METPRC = CX POWER METHOD STRING
C (C*24) METPLT = TOTAL LINE POWER METHOD STRING
C (C*24) METPLS = SPECIFIC LINE POWER METHOD STRING
C (C*24) METPRBN = RECOMM+BREM POWER (NO FILTER) METHOD
C (C*24) METPRCN = CX POWER (NO FILTER) METHOD STRING
C (C*24) METPLTN = TOTAL LINE POWER (NO FILTER) METHOD
C
C
C PROGRAM:
C
C THE PARAMETER ARRAYS ARE INDEXED
C XXX() = XXX(IZDIMD) 1ST DIMENSION ION STAGE
C
C XXX(,) = XXX(IZDIMD,IGDIMD) 1ST DIMENSION ION STAGE
C 2ND DIMENSION GROUP
C
C
C INPUT: (I*4) IZDIMD = MAXIMUM NUMBER OF IONISATION STAGES
C (I*4) IGDIMD = MAXIMUM NUMBER OF GROUPS
C
C (I*4) ITDIMD = MAXIMUM NUMBER OF TEMPERATURES
C (I*4) IDDIMD = MAXIMUM NUMBER OF DENSITIES
C
C (R*8) TEMIN = MINIMIUM TEMPERATURE OF TABLE
C (R*8) TEMAX = MAXIMUM TEMPERATURE
C (I*4) NUMTE = NUMBER OF TEMPERATURE
C
C (R*8) FNEMIN = MINIMIUM DENSITY OF TABLE
C (R*8) FNEMAX = MAXIMUM DENSITY
C (I*4) NUMNE = NUMBER OF DENSITIES
C
C
C (R*8) FUELMAS = MASS OF FUEL (AMU)
C
C (I*4) IZ0 = NUCLEAR CHARGE
C (I*4) IZL = LOWEST INCLUDED ION
C (I*4) IZU = HIGHEST INCLUDED ION
C
C (I*4) IZRA() = RECOMBINING ION (RAD. RECOM.)
C (I*4) IZDA() = RECOMBINING ION (DIEL. RECOM.)
C (I*4) IZIA() = IONISING ION (COLL. IONIS.)
C (I*4) IZTA() = RADIATING ION (TOTAL LINE POWER)
C (I*4) IZSA() = RADIATING ION (SPECIFIC LINE POWER)
C
C
C
C (C*5) CRRCA() = RADIATIVE RECOM. CODE
C (I*4) NRRCA() = - NOT USED -
C (I*4) ISRRCA() = - NOT USED -
C
C (I*4) NZA() = LOWEST ACCESSIBLE SHELL FOR RAD. RECOM.
C (I*4) KSIA() = NUMBER OF ELECTRONS IN SHELL
C
C (I*4) N0RA() = LOWEST ACCESSIBLE PRINC. QUANTUM SHELL
C FOR RAD. RECOM.
C (R*8) V0RA() = EFFECTIVE PRINCIPAL QUANTUM NUMBER
C FOR SHELL
C (R*8) PHFCRA() = PHASE SPACE OCCUPANCY AVAILABILITY
C FOR SHELL
C (R*8) EDSPRA() = ENERGY ADJUSTMENT IN LOWEST SHELL
C RATE COEFFICIENT
C (R*8) SCLERA() = MULTIPLIER FOR LOWEST SHELL
C RATE COEFFICIENT
C
C
C
C (C*5) CDRCA() = DIELECTRONIC RECOM. CODE
C (I*4) NDRCA() = NUMBER OF TRANSITIONS FOLLOWING
C (I*4) ISDRCA() = - NOT USED -
C
C (R*8) DEDA(,) = TRANSITION ENERGY (EV)
C (R*8) FDA(,) = OSCILLATOR STRENGTH
C (R*8) GDA(,) = GAUNT FACTOR
C (I*4) NNDA(,) = DELTA N FOR TRANSITION
C (I*4) MSDA(,) = MERTZ SWITCH (0=OFF, 1=ON)
C
C (I*4) ITYPDA(,) = TYPE OF DIELECTRONIC TRANSITION
C (I*4) N0DA(,) = LOWEST ACCESSIBLE PRINC. QUANTUM SHELL
C FOR DIEL. RE
C (I*4) NCUTA(,) = CUT-OFF PRINC. QUANTUM SHELL IN
C GENERAL PROGRAM
C (I*4) V0DA(,) = EFFECTIVE PRINC. QUANTUM NUMBER
C FOR LOWEST ACCESS
C (R*8) PHFCDA(,) = PHASE SPACE OCCUPANCY AVAILABILITY
C FOR LOWEST SHELL
C (R*8) CRFCDA(,) = ADJUSTMENT FOR BETHE CORRECTIONS
C IN GENERAL PROGRAM
C (R*8) EPSIJA(,) = Z-SCALED PARENT TRANSITION ENERGY (RYD)
C (R*8) FIJA(,) = OSCILLATOR STRENGTH FOR TRANSITION
C (R*8) EDSPDA(,) = ENERGY ADJUSTMENT IN BURGESS GENERAL
C FORMULA (RYD)
C (R*8) SCLEDA(,) = MULTIPLIER ON BURGESS GENERAL FORMULA
C
C
C
C (C*5) CCIOA() = COLLISIONAL IONIS. CODE
C (I*4) NCIOSA() = NUMBER OF SHELL VALUES FOLLOWING
C (I*4) NCIORA() = NUMBER OF RESON. VALUES FOLLOWING
C (I*4) ISCIOA() = - NOT USED -
C
C (R*8) PIOA(,) = SHELL IONISATION POTENTIAL (EV)
C (R*8) AIOA(,) = LOTZ PARAMETER
C (R*8) BIOA(,) = LOTZ PARAMETER
C (R*8) CIOA(,) = LOTZ PARAMETER
C (I*4) NQIOA(,) = EQUIVALENT ELECTRONS IN SHELL
C
C (R*8) ZETAA(,) = NUMBER OF EQUIVALENT ELECTRONS FOR SHELL
C (R*8) EIONA(,) = IONISATION ENERGY FOR SHELL (RYD)
C (R*8) CIA(,) = MULTIPLIER FOR BURGESS-CHIDICHIMO RATE
C FOR SHELL
C (R*8) WGHTA(,) = WEIGHTING FACTOR FOR EXCITATION TO
C RESONANCE
C (R*8) ENERA(,) = EXCITATION ENERGY FOR TRANSITION
C TO RESONANCE (RYD)
C (R*8) CRA(,) = MULTIPLIER ON EXCITATION RATE EXPRESSSION
C
C
C
C (C*5) CPLTA() = TOTAL LINE POWER CODE
C (I*4) NPLTA() = NUMBER OF TRANSITIONS FOLLOWING
C (I*4) ISPLTA() = - NOT USED -
C
C (R*8) DEPTA(,) = TRANSITION ENERGY (EV)
C (R*8) FPTA(,) = OSCILLATOR STRENGTH
C (R*8) GPTA(,) = GAUNT FACTOR
C (I*4) NNPTA(,) = DELTA N FOR TRANSITION
C
C (R*8) SPYLTA(,) = MULTIPLIER OF VAN REGEMORTER P
C FACTOR IN TOTAL POWER
C
C
C
C (C*5) CPLSA() = SPECIFIC LINE POWER CODE
C (I*4) NPLSA() = - NOT USED -
C (I*4) ISPLSA() = - NOT USED -
C (C*8) INFO() = WAVELENGTH OF SPECIFIC LINE FOR
C NAMING PURPOSES
C
C (R*8) DEPSA(,) = TRANSITION ENERGY (EV)
C (R*8) FPSA(,) = OSCILLATOR STRENGTH
C (R*8) GPSA(,) = GAUNT FACTOR
C (I*4) NNPSA(,) = DELTA N FOR TRANSITION
C
C (R*8) SPYLSA(,) = MULTIPLIER OF VAN REGEMORTER P FACTOR
C IN SPECIFIC LINE POWER
C
C
C
C ROUTINES:
C ROUTINE SOURCE DESCRIPTION
C ----------------------------------------------------------
C I4UNIT ADAS FETCH UNIT NUMBER FOR MESSAGE OUTPUT
C D8FLIN ADAS408 INITIALISE ENERGY MESH FOR FILTER
C INTEGRATION
C D8TRAN ADAS408 FILTER TRANSMISSION AT PARTICULAR ENERGY
C D8INTG ADAS408 INTEGRATE WITH FILTER
C D8CXSC ADAS408 RETURNS CROSS-SECTIONS FROM CX COLLISION
C D8VGOL ADAS408 CALCULATES VON GOELER RECOMB. COEFFS
C NGFFMH ADAS FREE-FREE GAUNT FACTOR
C
C
C
C HISTORY: DERIVED FROM NCRAT0 --- J. SPENSE, TESSELLA
C H. P. SUMMERS, JET
C 27/3/1990
C
C CHANGES : 13/12/90 H.P.SUMMERS - CHANGE CONSTANTS FOR LINE POWER AND
C BREMSSTRAHLUNG POWER TO MATCH
C ABELS-VAN MAANEN (1985).
C NB. NO MERTZ SWITCH ON H-LIKE
C AND HE-LIKE DIELECTRONIC RECOMB.
C : 5/ 2/91 H.P.SUMMERS - ALTER COMMON /RATCOM/ TO REMOVE
C UNNECESSARY STORAGE AND ORGANISE
C FOR NEW (ADF03) DATA INPUT.
C : 1/ 8/91 H.P.SUMMERS - ALTER LINFO DIMENSION TO ALLOW
C IT AS AN INFORMATION STRING FOR ALL
C DATA SETS. SET THE HYDROGEN
C ISOTOPE MASS IN LINFO AS
C ' MH=*.**' FOR CCD AND PRC.
C ADD HMADAS TO /RATCOM/
C : 6/8/92 M O'MULLANE - STAND-ALONE VERSION
C
C
C
C ADAS408 IMPLEMENTATION
C
C AUTHOR: M O'MULLANE, UCC
C
C DATE: 10/05/94
C
C
C UNIX-IDL PORT:
C
C VERSION: 1.1 DATE: 15-04-96
C MODIFIED: WILLIAM OSBORN (TESSELLA SUPPORT SERVICES PLC)
C - FIRST CONVERTED
C
C VERSION: 1.2 DATE: 14-05-96
C MODIFIED: WILLIAM OSBORN
C REARRANGED ARGUMENTS TO STAY UNDER
C LIMIT OF 20 CONTINUATION CHARACTERS AT ARCETRI AND GARCHING
C
C VERSION: 1.3 DATE: 14-05-96
C MODIFIED: WILLIAM OSBORN
C S.C.C.S. ERROR
C
C VERSION: 1.4 DATE: 30-01-98
C MODIFIED: Martin O'Mullane
C Added free-free Gaunt factor to the eveluation of bremsstrahlung
C power. Used NGFFMH to calculate gff.
C
C VERSION: 1.5 DATE: 05-08-2003
C MODIFIED: Martin O'Mullane
C - ADAS408 restructured.
C - Pass in adf03 and adf35 data files rather than the
C data in them.
C
C VERSION : 1.6
C DATE : 05-03-2004
C MODIFIED: Martin O'Mullane
C - Alter dimensions for 55 temperatures, 50 densities,
C 80 ion stages, and 15 groups.
C - Type B ionisation was wrong. Calculate it with a call
C to rbchid.for.
C - Warn when EA contribution to type B ionisation is
C attempted as it is not coded.
C - Warn when type B radiative recombination is
C requested as the prb is not yet calculated.
C - Pass out separated RR and DR recombination rates.
C - Pass out separated RR, DR and BR power coefficients
C but only for the non-filtered case.
C
C VERSION : 1.7
C DATE : 06-10-2004
C MODIFIED: Martin O'Mullane
C - Increase number of groups in the adf03 file to 20
C from 15 to cope with high Z DR.
C
C VERSION : 1.8
C DATE : 24-06-2005
C MODIFIED: Martin O'Mullane
C - Add arrays for filtered rr/dr/br power.
C
C-----------------------------------------------------------------------
CHARACTER*80 DSN03, DSN35
CHARACTER*8 INFCAL(IZDIMD), INFPLS(IZDIMD)
CHARACTER*8 INFPLT(IZDIMD), INFPLTN(IZDIMD)
CHARACTER*8 INFPRB(IZDIMD), INFPRBN(IZDIMD)
CHARACTER*8 INFPRC(IZDIMD), INFPRCN(IZDIMD)
CHARACTER*8 INFRAL(IZDIMD), INFSAL(IZDIMD)
CHARACTER*24 METCAL, METPLS, METPLT, METPLTN
CHARACTER*24 METPRB, METPRBN, METPRC, METPRCN
CHARACTER*24 METRAL, METSAL
CHARACTER*13 NAME
INTEGER IZ0, IZL, IZU, NUMNE
INTEGER NUMTE
LOGICAL LTICK
REAL*8 CAL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 FNEL(ITDIMD), FNEMAX, FNEMIN
REAL*8 FUELMAS, PLSL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PLSL0(ITDIMD,IDDIMD)
REAL*8 PLTL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PLTL0(ITDIMD,IDDIMD)
REAL*8 PLTL0NFL(ITDIMD,IDDIMD)
REAL*8 PLTLNFL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBBR(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBBRNFL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBDR(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBDRNFL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBLNFL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBRR(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRBRRNFL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRCL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 PRCLNFL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 RAL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 RALDR(ITDIMD,IDDIMD,IZDIMD)
REAL*8 RALRR(ITDIMD,IDDIMD,IZDIMD)
REAL*8 SAL(ITDIMD,IDDIMD,IZDIMD)
REAL*8 SAL0(ITDIMD,IDDIMD), TEL(ITDIMD), TEMAX
REAL*8 TEMIN