ADAS Subroutine d7auts
SUBROUTINE D7AUTS( NDMET , NDTHET , NDORB , ndlev , ndqdn , & IODIMD , & IZ , IZ0 , iz1 , & il , ia , isa , ila , xja , & wa , cstrga , bwno , iorb , qdorb , & NTHETA , THETA , & NPMET , & IGRPA , EICHR , LEICHR , & NSYS , ISPSYS , INPAR , ILPAR , ENPAR , & SBCHA , & KGRPA , IZETA4 , EIONA , NZETA , & IONLEV , XITRUE , & NORB , VORB , & N0A , PARMR , & LLINK , ILINK , LEISS , & NMET , IMETR & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: D7AUTS ********************* C C C PURPOSE: CALCULATES IONISATION RATES FROM GIVEN SPECIFIC ION FILE C USING BURGESS/CHIDICHIMO FORMULA RESOLVED INTO C PARENT AND SPIN SYSTEM COMPONENTS. C C AUTOIONISATION EFFECTS ARE INCLUDED BY REDUCING ORBITAL C IONISATION ENERGY TO EXCITATION ENERGY OF LOWEST AUTO- C IONISING STATE, WITH A LINEAR SWITCHOFF C BETWEEN 20<Z1<25. C C CALLING PROGRAM: ADAS407 C C SUBROUTINE: C C INPUT : (I*4) IUNIT = UNIT NUMBER FOR SPECIFIC ION FILE FOR C RECOMBINED ION C INPUT : (I*4) NDMET = MAXIMUM NUMBER OF METASTABLES ALLOWED C INPUT : (I*4) NDTHET = MAXIMUM NUMBER OF TEMPS. FOR MAINCL FILE C INPUT : (I*4) NDORB = MAXIMUM NUMBER OF ELECTRON ORBITALS C INPUT : (I*4) IODIMD = MAXIMUM NUMBER OF ELECTRON ORBITALS C C INPUT : (I*4) NTHETA = NUMBER OF TEMPERATURES FOR MAINCL FILE C INPUT : (R*8) THETA() = Z-SCALED TEMPERATURES FOR MAINCL FILE C C INPUT : (I*4) NPMET = NO. OF RECOMBINING ION (PARENT) METASTABLES C C INPUT : (I*4) NSYS() = NUMBER OF SPIN SYSTEMS FOR RECOMBINED ION C 1ST DIM: PARENT INDEX C INPUT : (I*4) ISPSYS(,)= RECOMBINED ION SPIN C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C INPUT : (I*4) INPAR() = N QUANTUM NO. SUM FOR ELECTRONS OF PARENT C 1ST DIM: PARENT INDEX C INPUT : (I*4) ILPAR() = L QUANTUM NO. SUM FOR ELECTRONS OF PARENT C 1ST DIM: PARENT INDEX C INPUT : (R*8) ENPAR() = RECOMBINING ION (PARENT) ENERGY C 1ST DIM: PARENT INDEX C INPUT : (L*4) LLINK(,,)= .TRUE. => LINK EXISTS C .FALSE. => NO LINK EXISTS C 1ST DIM: METASTABLE INDEX C 2ND DIM: PARENT METASTABLE INDEX C 3RD DIM: SPEN SYSTEM INDEX C INPUT : (L*4) ILINK(,,)= DECIMAL ORBITAL INDEX FOR RECOMBINED C ION ORBITAL DIFFERENCE WITH PARENT C 1ST DIM: METASTABLE INDEX C 2ND DIM: PARENT METASTABLE INDEX C 3RD DIM: SPEN SYSTEM INDEX C INPUT : (L*4) LEISS = .TRUE. => PARENTS AND METASTABLES FOUND C TO HAVE EISSNER CONFIG. FORMS C .FALSE => NOT EISSNER CONFIG. FORMS C INPUT : (I*4) NMET = NUMBER OF METASTABLES (1 <= NMET <= 'NDMET') C INPUT : (I*4) IMETR() = INDEX OF METASTABLE IN COMPLETE LEVEL LIST C (ARRAY SIZE = 'NDMET' ) C C C OUTPUT: (I*4) IZ = CHARGE ON IONISING ION C OUTPUT: (I*4) IZ0 = NUCLEAR CHARGE C C OUTPUT: (I*4) NORB = NUMBER OF DISTINCT ELECTRON ORBITALS FROM C CONFIGURATIONS IN TERM LIST C OUTPUT: (R*8) VORB() = EFFECTIVE PRINCIPAL QUANTUM NUMBERS OF C ORBITALS (ORDERED) C OUTPUT: (R*8) EPSIL() = ENERGIES OF ORBITALS (RYDBERG) (NATURAL C ORDER) C OUTPUT: (I*4) KGRPA() = INDEXING OF SORTED ORBITALS TO NATURAL C ORDER C OUTPUT: (I*4) N0A(,) = LOWEST ALLOWED N-SHELL C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C OUTPUT: (R*8) PARMR(,,)= PARAMETERS OF RADIATIVE RECOMBINATION C APPROXIMATE FORMS C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C 3RD IND: PARMS. 1: EFF. N FOR LOWEST LEVEL C 2: PHASE SPACE FACTOR C 3: ENERGY DISPLACEMENT C 4: SCALING MULTIPLIER C C OUTPUT: (R*8) SBCHA(,,)= BEST EXTIMATE OF METASTABLE AVERAGED C IONISATION RATE C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C 3RD IND: TEMPERATURE INDEX C OUTPUT (R*8) C1 = SCALING FACTOR C OUTPUT (I*4) IZETA4(,,)= NO. OF ELECTRONS IN ORBITALS C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C 3RD IND: SHELL INDEX C OUTPUT (R*8) EIONA(,,)= SET OF SCALED ORBITAL IONISATION POTENTIALS C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C 3RD IND: SHELL INDEX C OUTPUT (I*4) NZETA(,) = NO. OF OCCUPIED GROUND STATE ORBITALS C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C OUTPUT (I*4) IONLEV(,)= TERM INDEX OF GROUND FOR SPIN SYSTEM/PARENT C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C OUTPUT (I*4) XITRUE(,)= EXACT IONISATION ENERGY OF GROUND FOR SPIN C SYSTEM/PARENT C 1ST DIM: PARENT INDEX C 2ND IND: SPIN SYSTEM INDEX C C (I*4) KTERM = PARAMETER = MAXIMUM NUMBER OF TERMS C ALLOWED IN SUBROUTINE C (I*4) NTRUE = NUMBER OF ORBITALS USED IN LEVEL LIST C INCLUDING NON-DISPLAYED CLOSE SHELLS C C NOTE: C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C SBCHID ADAS CALCULATES IONISATION RATES C I4JGRP ADAS DECIMAL VALUE OF EISSNER HEX CHARACTER C I4LGRP ADAS L-VALUE FROM EISSNER HEX ORBITAL C I4NGRP ADAS N-VALUE FROM EISSNER HEX ORBITAL C I4NDEC ADAS N-VALUE FROM DECIMAL ORBITAL C I4UNIT ADAS FETCH UNIT NUMBER FOR MESSAGE OUTPUT C C AUTHOR: H. P. SUMMERS, JET C K1/1/57 C JET EXT. 4941 C C DATE: 29/06/94 C C UNIX-IDL PORT: C WILLIAM OSBORN, TESSELLA SUPPORT SERVICES PLC. C C DATE: 22ND APRIL 1996 C C VERSION: 1.1 DATE: 22-04-96 C MODIFIED: WILLIAM OSBORN C - FIRST VERSION. NO CHANGES TO IBM CODE. C C VERSION: 1.2 DATE: 20-08-96 C MODIFIED: HUGH SUMMERS + WILLIAM OSBORN C - TRAP IONLEV(IPAR,ISYS)=0. NOTE NO C FULL SOLUTION YET TO THIS PROBLEM OF C PARENTS AND RECMBINED METASTABLES WITH C INNER SHELL DIFFERENCES C - ADDED FOLLOWING TO CALL PARAMETERS C LLINK,ILINK,LEISS,NMET AND IMETR C - ADDED DETECTION OF SPECIAL PARENT C METASTABLE LINKS C C C VERSION : 1.3 C DATE : 10-02-97 C MODIFIED: HUGH SUMMERS C - INCLUDE UNSPECIFIED LOW N-SHELLS OF OUTER N-SHELL C IN PHFR ON ASSUMPTION THAT THEY ARE FILLED. C C VERSION : 1.4 C DATE : 23-05-2003 C MODIFIED: Martin O'Mullane C - Pass in adf04 data rather than rewinding and C reading it again. C - Remove all unused variables and reduced length of C parameter list. C - Remove redundant code and format statements. C C VERSION : 1.5 C DATE : 06-01-2004 C MODIFIED: Martin O'Mullane C - Pre-process configuration string with a new C routine (ceprep) to account for leading d10 and C f10-f14 terms. C - Add error trapping code to check for overruns C and index=0 errors. C C VERSION : 1.6 C DATE : 15-11-2004 C MODIFIED: Martin O'Mullane C - Increase to 3500 levels. C C VERSION : 1.7 C DATE : 17-05-2007 C MODIFIED: Martin O'Mullane C - Updated comments as part of subroutine documentation C procedure. C----------------------------------------------------------------------- CHARACTER*18 CSTRGA(NDLEV) CHARACTER EICHR(IODIMD) INTEGER IA(NDLEV), IGRPA(IODIMD), IL INTEGER ILA(NDLEV), ILINK(NDMET,NDMET,2) INTEGER ILPAR(NDMET), IMETR(NDMET) INTEGER INPAR(NDMET), IODIMD INTEGER IONLEV(NDMET,2), IORB INTEGER ISA(NDLEV), ISPSYS(NDMET,2), IZ INTEGER IZ0, IZ1 INTEGER IZETA4(NDMET,2,NDORB), KGRPA(IODIMD) INTEGER N0A(NDMET,2), NDLEV, NDMET INTEGER NDORB, NDQDN, NDTHET, NMET INTEGER NORB, NPMET, NSYS(NDMET), NTHETA INTEGER NZETA(NDMET,2) LOGICAL LEICHR(IODIMD), LEISS LOGICAL LLINK(NDMET,NDMET,2) REAL*8 BWNO, EIONA(NDMET,2,NDORB) REAL*8 ENPAR(NDMET), PARMR(NDMET,2,4) REAL*8 QDORB((NDQDN*(NDQDN+1))/2) REAL*8 SBCHA(NDMET,2,NDTHET), THETA(NDTHET) REAL*8 VORB(IODIMD), WA(NDLEV) REAL*8 XITRUE(NDMET,2), XJA(NDLEV)