C C ****************************************** C * A L F L I B * C * * C * ALADDIN FITTED FORM SUBROUTINE LIBRARY * C ****************************************** C C VERSION 1.0 30/04/1989 C C ORIGINAL VERSION DESIGNED AND WRITTEN BY R. A. HULSE, OF THE C PRINCETON UNIVERSITY, PLASMA PHYSICS LABORATORY. C [REFERENCE: "THE ALADDIN ATOMIC PHYSICS DATABASE SYSTEM," C PP. 63-72 IN 'ATOMIC PROCESSES IN PLASMAS,' AIP CONFERENCE C PROCEEDINGS 206, EDS. Y.K. KIM AND R.C.ELTON, AMERICAN INSTITUTE C OF PHYSICS, NEW YORK, 1990]. C------------------------------------------------------------------------------- C C REV: 03/12/89 BY J.J.SMITH IAEA ATOMIC AND MOLECULAR DATA UNIT C TO DEFINE A STANDARD, ALL ROUTINES RECEIVE AND PASS NUMERIC C ARGUMENTS IN DOUBLE PRECISION C C########################################################################### C SUBROUTINE ALMEWE(PTE, PCF, KNCF, PRATE, KERMSG) C C GENERALIZED GAUNT FACTOR LINE EXCITATION CALCULATION C C REFERENCE: R. MEWE, ASTRON. AND ASTROPHYS. 20, 215 (1972) C C C PTE = ELECTRON TEMPERATURE (KEV) C C PCF(1) = PWVL = EXCITATION WAVELENGTH (ANGSTROMS) C PCF(2) = PEIJ = EXCITATION ENERGY (eV) C (IF PEIJ=0, ASSUME A RESONANCE LINE AND CALCULATE EIJ FROM PWVL) C PCF(3) = PFIJ = OSCILLATOR STRENGTH C PCF(4) = PBIJ = BRANCHING RATIO C PCF(5, 6, 7, 8) = PA, PB, PC, PD = COEFFICIENTS FOR GAUNT FACTOR FORMULA C C KNCF = NUMBER OF COEFFICIENTS SUPPLIED IN PCF (MUST BE 8) C PRATE = LINE EXCITATION RATE COEFFICIENT (cm[3]/s) C KERMSG = ERROR MESSAGE, ' ' IS OK C C WRITTEN BY R. A. HULSE C C====================================================================== C DOUBLE PRECISION PTE,PCF,PRATE DOUBLE PRECISION ZWVL, ZEIJ, ZFIJ, ZBIJ, ZA, ZB, ZC, ZD, ZY DOUBLE PRECISION ZGBAR, ZXCOEF DIMENSION PCF(8) CHARACTER*(*) KERMSG C IF(PTE .LE. 0.0) THEN KERMSG = ' ALMEWE: TE .LE. 0' RETURN ELSE IF(KNCF .NE. 8) THEN KERMSG = ' ALMEWE: INCORRECT NUMBER OF COEFFICIENTS' RETURN ELSE KERMSG = ' ' ENDIF C ZWVL = PCF(1) ZEIJ = PCF(2) ZFIJ = PCF(3) ZBIJ = PCF(4) ZA = PCF(5) ZB = PCF(6) ZC = PCF(7) ZD = PCF(8) C IF(ZEIJ .EQ. 0.0D0) ZEIJ = 12397.7D0 / ZWVL C ZY = ZEIJ / (1000.0D0 * PTE) C C GAUNT FACTOR C ZGBAR = ZA + (ZB * ZY - ZC * ZY*ZY + ZD) * & ( DLOG( (ZY+1.0D0)/ZY ) - 0.4D0 / ((1.0D0+ZY)**2)) + ZC * ZY C ZXCOEF = 1.58D-05 * ZFIJ * ZGBAR * DEXP(-ZY) & / (DSQRT(1000.0D0*PTE) * ZEIJ) PRATE = ZBIJ * ZXCOEF C RETURN END C C################################################################### C SUBROUTINE ALBELI(PE, PCF, KNCF, PXS, KERMSG) C C ELECTRON IMPACT IONIZATION CROSS SECTION FITS C C REFERENCE: K. L. BELL ET AL, J. PHYS. CHEM. REF. DATA 12, 891 C (1983) C C THIS IS AN IAEA SUBROUTINE TO CALCULATE CROSS SECTIONS FOR C PROJECTILE ENERGY (eV). C C PE = ELECTRON ENERGY (EV) C C THE NUMBER OF FITTING PARAMETERS VARIES DEPENDING ON THE C NUMBER OF TERMS TAKEN IN THE NUMERICAL FITTING AND ON THE C ALLOWANCE FOR EXCITATION AUTOIONIZATION IN THE CROSS SECTION C TO FIT CROSS SECTIONS WITH EXCITATION AUTOIONIZATION TWO SEPERATE C FITS ARE DEFINED. ONE FROM THE IONIZATION THRESHOLD AND A SECOND C FIT FOR ENERGIES ABOVE THE AUTOIONIZATION THRESHOLD. C THE NUMBER OF PARAMETERS IN ANY ENTRY IS GIVEN BY KNCF C C PCF(1) = IONIZATION POTENTIAL (eV) C PCF(2-7) = FITTING PARAMETERS ( CAN BE LESS THAN 6 PARAMETERS) C C IF CROSS SECTION HAS EXCITATION AUTOIONIZATION STRUCTURE THEN C FOR THE SECOND FIT C C PCF(8) = AUTOIONIZATION THRESHOLD (eV) C PCF(9) = IONIZATION POTENTIAL (eV) C PCF(10-15) = FITTING PARAMETERS FOR THIS FIT (CAN BE LESS THAN C 6 PARAMETERS) C C KNCF = NUMBER OF PARAMETERS SUPPLIED IN PCF (MUST BE 8) C PXS = IONIZATION CROSS SECTION (CM[2]) C KERMSG = ERROR MESSAGE, ' ' IS OK C C WRITTEN BY J. J. SMITH , IAEA ATOMIC AND MOLECULAR DATA UNIT C C====================================================================== C DOUBLE PRECISION PE, PCF, PXS DOUBLE PRECISION ION, POWER, POWER1, XS, A, X, X2 DIMENSION PCF(15) CHARACTER*(*) KERMSG C IF(PE .LT. PCF(1)) THEN KERMSG = 'ELECTRON ENERGY BELOW THRESHOLD FOR THE REACTION' RETURN ELSE KERMSG = ' ' ENDIF C C--- DETERMINE PARAMETERS TO BE USED C IF (KNCF .GT. 7 .AND. PE .GT. PCF(8) ) THEN C C--- AUTOIONIZATION INCLUDED AND ENERGY > AUTOIONIZATION THRESHOLD C ION = PCF(9) A=PCF(10) ISTART=11 IEND=KNCF ELSE ION = PCF(1) A=PCF(2) ISTART=3 IF (KNCF .GT. 7) THEN IEND=7 ELSE IEND = KNCF ENDIF ENDIF C C--- GENERATE CROSS SECTION C X=ION/PE X2= 1.0D0/X C C--- CONTRIBUTION FROM BETHE TERM C XS = A*DLOG(X2) IF ( KNCF .GE. ISTART) THEN C C--- CONTRIBUTION FROM LEAST SQUARES FIT TERMS C POWER1 = 1.0D0 - X POWER = POWER1 DO 10 I=ISTART,IEND XS = XS + PCF(I)*POWER POWER = POWER*POWER1 10 CONTINUE ENDIF C C--- SCALE RESULTS TO CM[2] C PXS= 1.0D-13*XS /(PE*ION) C RETURN END C C###################################################################### C SUBROUTINE ALCHEB(PET, PCF, KNCF, PFIT, KERMSG) C C THIS IS AN ORNL:CFADC SUBROUTINE TO CALCULATE CROSS SECTIONS IN C (cm[2]) VERSUS ENERGY IN (EV/AMU) OR RATE COEFFICIENTS IN C (cm[3]/s) VERSUS MAXWELLIAN TEMPERATURE IN (eV) FROM CHEBYSHEV C POLYNOMIAL FITTING COEFFICIENTS C C THESE FITS ARE VALID ONLY BETWEEN THE LIMITS EMIN AND EMAX, C WHICH ARE COEFFICIENTS PCF(10) AND PCF(11) IN THE ENTRY DATA FIELD C C PET = COLLISION ENERGY IN eV/amu OR MAXWELLIAN TEMPERATURE IN eV C C KERMSG = BLANK IF NO ERRORS C C PFIT = CROSS SECTION IN cm[2] OR RATE COEFFICIENT IN cm[3]/s C C WRITTEN BY H. HUNTER, CFADC OAK RIDGE NATIONAL LABORATORY C (MODIFIED TO ALADDIN CALLING STRUCTURE 4/21/88 R.A. HULSE) C C------------------------------------------------------------------------ C DOUBLE PRECISION PET, PCF, PFIT DOUBLE PRECISION EMIN, EMAX, CHEB, EMINL, EMAXL, ENL, XNORM DOUBLE PRECISION TWOX, PREV, PREV2 DIMENSION PCF(11) CHARACTER*(*) KERMSG EMIN = PCF(10) EMAX = PCF(11) IF(PET .GE. EMIN .AND. PET .LE. EMAX) THEN KERMSG = ' ' ELSE KERMSG = 'OUTSIDE RANGE OF FIT IN ALCHEB' RETURN ENDIF C C CALCULATE POLYNOMIAL USING RECURSION RELATION C K = 9 CHEB = PCF(K) EMINL = DLOG(EMIN) EMAXL = DLOG(EMAX) ENL= DLOG(PET) K = K-1 XNORM = (ENL-EMINL-(EMAXL-ENL)) / (EMAXL-EMINL) TWOX = 2.0D0 * XNORM PREV2 = 0.0D+00 10 PREV = CHEB IF(K .NE. 1) THEN CHEB = PCF(K) + TWOX*PREV - PREV2 PREV2 = PREV K = K-1 GO TO 10 ENDIF CHEB = 0.5D0*PCF(1) + XNORM*PREV - PREV2 PFIT = DEXP(CHEB) 100 RETURN C END C C################################################################### C SUBROUTINE ALKING(PET, PCF, KNCF, PFIT, KERMSG) C C THIS IS AN IAEA SUBROUTINE TO CALCULATE THE REACTION RATE C COEFFICIENT (cm[3]/s) VERSUS ELECTRON TEMPREATURE (eV). C C THESE FITS ARE VALID ONLY BETWEEN THE LIMITS TMIN AND TMAX, C WHICH ARE COEFFICIENTS PCF(2) AND PCF(3) IN THE ENTRY DATA FIELD C PCF(1) IS THE TRANSITION ENERGY (eV) FOR THE RECACTION C C PET = MAXWELLIAN TEMPERATURE IN eV C C KERMSG = BLANK IF NO ERRORS C C PFIT = RATE COEFFICIENT IN cm[3]/s C C WRITTEN BY J. J. SMITH , IAEA ATOMIC AND MOLECULAR DATA UNIT C C------------------------------------------------------------------------ C DOUBLE PRECISION PET, PCF, PFIT DOUBLE PRECISION CONV, YTEMP, POWER1, POWER, TEN DOUBLE PRECISION EMIN, EMAX, TK, CONT DIMENSION PCF(12) CHARACTER*(*) KERMSG DATA CONV/1.16045D+04/ DATA TEN/1.0D+01/ C EMIN = PCF(2) EMAX = PCF(3) IF(PET .GE. EMIN .AND. PET .LE. EMAX) THEN KERMSG = ' ' ELSE KERMSG = 'OUTSIDE RANGE OF FIT IN ALKING' RETURN ENDIF C C FORM THE ELECTRON TEMPREATURE IN DEGREES KELVIN C TK = PET*CONV YTEMP = PCF(4) C C GENERATE THE RATE COEFFICIENT FROM THE LOG POLYNOMIAL EXPRESSION C POWER1 = DLOG10(TK) POWER = POWER1 DO 10 I=5,KNCF CONT=PCF(I)*POWER YTEMP = YTEMP+CONT POWER = POWER * POWER1 10 CONTINUE PFIT = TEN**YTEMP 100 RETURN C END C C################################################################### C SUBROUTINE ALPHACX(PE, PCF, KNCF, PFIT, KERMSG) C C THIS IS A SUBROUTINE TO CALCULATE CROSS SECTION FOR C PROJECTILE ENERGY (eV/amu). C C THE APPROXIMATE RANGE OF VALIITY OF THE FIT IS GIVEN BY THE C PARAMETERS PCF(1) AND PCF(2) WHICH ARE THE SCALED ENERGIES C PE/DSQRT(Q) (eV/u), WHERE Q IS THE CHARGE STATE OF THE ION. C C PE = PROJECTILE ENERGY (eV/amu) C C KERMSG = BLANK IF NO ERRORS C C PFIT = CROSS SECTION IN cm[2] C C PCF(1) = LOWER LIMIT OF THE RANGE OF VALIDITY OF THE SCALED C PROJECTILE ENERGY IN eV/(u*sqrt(q)). C PCF(2) = UPPER LIMIT OF THE RANGE OF VALIDITY OF THE SCALED C PROJECTILE ENERGY IN eV/(u*sqrt(q)). C PCF(3-6) = A, B, C, D FITTING PARAMETERS C PCF(7) = Q, THE CHARGE STATE OF THE PROJECTILE ION. THIS MUST BE C INPUT INTO THE COEFFICIENT ARRAY. THIS IS NOT INCLUDED C IN THE DATA ENTRIES. C C WRITTEN BY J. J. SMITH , IAEA ATOMIC AND MOLECULAR DATA UNIT C C------------------------------------------------------------------------ C DOUBLE PRECISION PE, PCF, PFIT DOUBLE PRECISION PEK, Q, Q2, A, B, C, D, F1, F2, ELOW, EHIGH DIMENSION PCF(7) CHARACTER*(*) KERMSG A = PCF(3) B = PCF(4) C = PCF(5) D = PCF(6) Q = PCF(7) Q2 = DSQRT(Q) C C--- DETERMINE THE SCALED PROJECTILE ENERGY (E/DSQRT(Q)) IN KeV/amu C PEK = PE*1.0D-03/Q2 C C--- CHECK THAT THE ENERGY IS WITHIN THE VALID ENERGY RANGES C ELOW = PCF(1)*1.0D-03 EHIGH = PCF(2)*1.0D-03 C KERMSG = ' ' IF (PEK .LT. ELOW .OR. PEK .GT. EHIGH) THEN KERMSG = 'OUTSIDE RANGE OF FIT IN ALPHACX' RETURN ENDIF C IF(Q .LT. 5 .OR. Q .GT. 26) THEN KERMSG = & 'THE CHARGE STATE (Q) MUST BE IN THE RANGE 5 <= Q <= 26' RETURN ENDIF C F1 = A * Q * DLOG ( B * Q2 / PEK ) F2 = ( C * PEK * PEK / Q ) + D * ( ( PEK / Q2 ) ** 4.5D0 ) PFIT = F1 / ( 1.0D0 + F2 ) C RETURN C END C C################################################################### C SUBROUTINE ALJAN1(PET, PCF, KNCF, PFIT, KERMSG) C C THIS IS A SUBROUTINE TO CALCULATE CROSS SECTIONS (cm[2]) C VERSUS ENERGY (eV) OR ELECTRON IMPACT REACTION RATE C COEFFICIENT (cm[3]/s) VERSUS ELECTRON TEMPREATURE (eV). C USING THE LOG NATURAL POLYNOMIAL FIT OF JANEV ET AL. C C THESE FITS ARE VALID ONLY BETWEEN THE LIMITS EMIN AND EMAX, C WHICH ARE PARAMETERS PCF(1) AND PCF(2) IN THE ENTRY DATA FIELD C THE PARAMETERS PCF(3-11) ARE THE COEFICIENTS FOR THE FIITING C FORMULA. C C PET = COLLISION ENERGY IN eV C C KERMSG = BLANK IF NO ERRORS C C PFIT = CROSS SECTION IN cm[2] C C WRITTEN BY J. J. SMITH , IAEA ATOMIC AND MOLECULAR DATA UNIT C C------------------------------------------------------------------------ C DOUBLE PRECISION PET, PCF, PFIT DOUBLE PRECISION EMIN, EMAX, ALOGE1, ALOGE, XJAN, XCON DIMENSION PCF(11) CHARACTER*(*) KERMSG EMIN=PCF(1) EMAX = PCF(2) IF(PET .GE. EMIN .AND. PET .LE. EMAX) THEN KERMSG = ' ' ELSE KERMSG = 'OUTSIDE RANGE OF FIT IN ALJANXS' RETURN ENDIF C C CALCULATE NATUTRAL LOG POLYNOMIAL C ALOGE1 = DLOG(PET) ALOGE = ALOGE1 XJAN = PCF(3) DO 10 I=4,11 XCON = PCF(I)*ALOGE XJAN = XJAN + XCON 10 ALOGE=ALOGE * ALOGE1 PFIT = DEXP(XJAN) 100 RETURN C END C C################################################################### C SUBROUTINE ETABSQ(PE, PCF, KNCF, PYIELD, KERMSG) C C THIS IS A SUBROUTINE TO CALCULATE THE YIELDS (ATOMS/ION) OF C ION-INDUCED SPUTTERING OF MONATOMIC SOLID C C PE = COLLISION ENERGY IN eV C C KERMSG = BLANK IF NO ERRORS C C PYIELD = YIELD OF ATOMS/IONS PER INCIDENT ION C C PCF(1) = ATOMIC NUMBER OF INCIDENT ION C PCF(2) = ATOMIC MASS OF INCIDENT ION C PCF(3) = ATOMIC NUMBER OF TARGET C PCF(4) = ATOMIC MASS OF TARGET C PCF(5) = SUBLIMATION ENERGY OF TARGET (EV) C PCF(6) = Q VALUE FOR TARGET C C WRITTEN BY J. J. SMITH , IAEA ATOMIC AND MOLECULAR DATA UNIT C C------------------------------------------------------------------------ C DOUBLE PRECISION PE, PCF, PYIELD DOUBLE PRECISION M1, Z1, M2, Z2, Q, ETA, SN, SE, K, ALPHA, US DOUBLE PRECISION Z123, Z223, SQRETA, ETH, GAMMA C DIMENSION PCF(6) CHARACTER*(*) KERMSG C Z1 = PCF(1) M1 = PCF(2) Z2 = PCF(3) M2 = PCF(4) US = PCF(5) Q = PCF(6) C KERMSG = ' ' C C---- DETERMINE THRESHOLD ENERGY C GAMMA = 4.0D0 * M1 * M2 / ( (M1 + M2) **2 ) IF (M1 .GE. M2) THEN ETH = (4.0D0/3.0D0)**6.0D0 * US/GAMMA ELSE ETH = (US/GAMMA)*((2.0D0*(M1+M2))/(M1+2.0D0* M2))**6.0D0 ENDIF IF (PE .LT. ETH ) THEN KERMSG = & ' INCIDENT ION ENERGY BELOW THRESHOLD FOR REACTION' RETURN ENDIF C C---- DETERMINE COMPONENTS OF EQUATION FOR YIELD C Z123 = Z1**0.666666D0 Z223 = Z2**0.666666D0 ETA = 0.03255D0*M2*PE/(M1+M2) ETA = ETA/(Z1 * Z2 * DSQRT(Z123 + Z223)) SQRETA= DSQRT(ETA) C SN = 3.441D0 * SQRETA * DLOG (ETA + 2.718D0)/ & (1.0D0 + 6.355D0 * SQRETA + ETA * (-1.708D0 + 6.882D0 * SQRETA)) C SE = SQRETA * 0.079D0 * ((M1+M2)**1.5D0) * Z123 * DSQRT(Z2)/ & (M1**1.5D0 * M2**0.5D0 * ((Z123 + Z223)**0.75D0)) C K = 8.478D0*Z1*Z2*M1/(DSQRT(Z123+Z223) * (M1+M2)) ALPHA = 0.1D0+0.155D0*((M2/M1)**0.730D0) + & 0.001D0*((M2/M1)**1.5D0) C C IF Q=0 SET Q=ALPHA C IF (Q .EQ. 0.0D0) Q=ALPHA C C FINALLY DETERMINE THE SPUTTERING YIELD C PYIELD = 0.42D0 * ALPHA * Q * K * SN * & ((1.0D0 - DSQRT (ETH/PE))**2.8D0) / & (US * ( 1.0D0 + (0.35D0 * US * SE))) RETURN C END C C################################################################### C SUBROUTINE RTABSQ(CION, CTARGT, RTABCF, KERMSG) C C THIS IS A SUBROUTINE TO READ DATA FOR THE YIELDS (ATOMS/ION) OF C ION-INDUCED SPUTTERING OF MONATOMIC SOLIDS C C CION = THE USER SUPPLIED ATOMIC SPECIES FOR THE INCIDENT ION C CTARGT = THE USER SUPPLIED ATOMIC SPECIES OF THE TARGET C C RTABCF = ARRAY OF COEFFICIENT DATA FOR PARTICULAR INCIDENT ION/ C TARGET PAIR NEEDED BY ROUTINE ETABSQ FOR THE FUNCTION C EVALUATION C C RTABCF(1) = ATOMIC NUMBER OF INCIDENT ION C RTABCF(2) = ATOMIC MASS OF INCIDENT ION C RTABCF(3) = ATOMIC NUMBER OF TARGET C RTABCF(4) = ATOMIC MASS OF TARGET C RTABCF(5) = SUBLIMATION ENERGY OF TARGET (EV) C RTABCF(6) = Q VALUE FOR TARGET C C SELF SPUTTERING DATA IS ONLY AVAILABLE FOR THOSE SOLIDS WITH A C '*' IN THE TABLE AS READ IN VARIABLE FSELF. C C WRITTEN BY J. J. SMITH , IAEA ATOMIC AND MOLECULAR DATA UNIT C C------------------------------------------------------------------------ C INCLUDE 'ALCOM.FOR' INCLUDE 'ALPCOM.FOR' C CHARACTER*(*) KERMSG CHARACTER*2 CION, CTARGT, CATOM CHARACTER*1 FSELF DOUBLE PRECISION RTABCF DIMENSION RTABCF (*) C KERMSG = ' ' C C INITIALISE COEFFICIENT ARRAY ELEMENTS TO ZERO. ON ENTRY THEY C MAY BE NON-ZERO FROM LAST CALL C DO 5 I=1,5 RTABCF(I) = 0.0D0 5 CONTINUE C C READ AND CONVERT DATA IN INPUT TABLE HELD IN BUFFER EBUFF C AND LOOK FOR VALID ION AND TARGET COMBINATION MATCHING C VALUES IN CION AND CTARGT. C C THE FIRST SIX LINES OF COEFFICIENT BLOCK DESCRIBE THE TABLE C FORMAT, THESE SHOULD NOT BE PROCESSED C ILINE = LCFPTR + 6 C 10 READ(EBUFF(ILINE), & '(BN,1X,A2,6X,F4.0,7X,F7.2,8X,F5.2,7X,F5.2,13X,A1)', & END=100, IOSTAT=ICFERR) CATOM, ATMNO, ATMASS, SUBENG, Q, FSELF C C IF NOT INTERNAL READ ERROR, LOOP BACK FOR NEXT COEFFICIENT C OTHERWISE, ERROR RETURN C IF(ICFERR .EQ. 0) GO TO 20 C KERMSG = ' READ ERROR IN LINE OF TABLE "'//EBUFF(ILINE)//'"' RETURN C 20 IF ( CATOM .EQ. CION) THEN RTABCF(1) = ATMNO RTABCF(2) = ATMASS ENDIF IF ( CATOM .EQ. CTARGT) THEN C C CHECK SUBLIMATION ENERGY ALL TARGETS MUST HAVE A NON-ZERO VALUE C IF ( SUBENG .EQ. 0.0) THEN KERMSG = ' NO SUBLIMATION ENERGY FOR TARGET IN INPUT TABLE' RETURN ENDIF RTABCF(3) = ATMNO RTABCF(4) = ATMASS RTABCF(5) = SUBENG RTABCF(6) = Q ENDIF C C CHECK IF THE TARGET AND ION HAVE BOTH BEEN RETREIVED C IF ( (RTABCF(1) .NE. 0.0D0) .AND. (RTABCF(3) .NE. 0.0D0)) THEN C C IF TARGET AND ION ARE IDENTICAL (SELF SPUTTERING) THEN C CHECK IF THE EMPIRICAL FORMULA IS VALID FOR SELF SPUTTERING C (VALID IF FSELF ='*' ) C IF (CTARGT .EQ. CION .AND. FSELF .NE. '*') & KERMSG = & 'THERE IS NO DATA FOR SELF SPUTTERING FOR TARGET IN TABLE' RETURN ENDIF ILINE = ILINE + 1 GO TO 10 C 100 KERMSG = 'END OF TABLE FILE NO ION/TARGET MATCH FOUND' END C C############################################################################## C