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