ADAS Subroutine spfman11
SUBROUTINE SPFMAN11(Z0,Z,Z1,IIGRP0,IRGRP0,TITLE, & ACIA,BCIA,ACRA,BCRA, & ISHE,IRES,INS1,ILS1,ES1,IZS1,INS2, & ILS2,ES2,IZS2,ER1,ER2,WR1,WR2, & IIFTYP,IIOTYP,IIFOUT,IXMAX,ITMAX,XDAT,EDAT,TDAT, & IOP,ASCL, & XA, YA, APA, XP, YP, TOA, YOA, YOAP, & NITHR, NRTHR , CIA , CRA, NA , LA , & EIONA , IZETAA , ENERA , WGHTA, EMIN) IMPLICIT REAL*8(A-H,O-Z) C----------------------------------------------------------------------- C C ************ FORTRAN 77 PROGRAM: SPFMAN11 ************************* C C C PURPOSE: FIT IONISATION CROSS-SECTION DATA WITH SIMPLE APPROXIMATE C FORMS AND TO CALCULATE IONISATION RATE COEFFICIENTS C C THE APPROXIMATE FORM ADOPTED IS A SUM OF TERMS ARISING FROM EACH C SHELL OF THE BCHID TYPE + A SUM OF TERMS OF EXCITATION CROSS-SECTION C FORM. THE LATTER SEEK TO REPRESENT SHARP ABOVE THRESHOLD AUTOIONISING C FEATURES. SCALING FACTORS ARE ASSIGNED TO AT MOST TWO SHELL GROUPS C (A GROUP FOR EXAMPLE BEING L-SHELLS OF THE SAME N) AND TWO RESONANCE C GROUPS. THE SCALING FACTORS ARE OBTAINED BY LEAST SQUARE FITTING TO C THE OBSERVED DATA. C C DATA: C THIS PROGRAM IS NOT YET PROPERLY ANNOTATED C C INPUT: C (R*8) Z0 = NUCLEAR CHARGE OF ION C (R*8) Z = INITIAL ION CHARGE C (R*8) Z1 = FINAL ION CHARGE C (I*4) IIGRP0 = NO. OF SHELL GROUPS C (I*4) IRGRP0 = NO. OF RESONANCE GROUPS C (C*40) TITLE = TITLE FOR THIS RUN C (R*8) ACIA = SCALING PARAMETER FOR SHELL GROUP 1 C (R*8) BCIA = SCALING PARAMETER FOR SHELL GROUP 2 C (R*8) ACRA = SCALING PARAMETER FOR RESONANCE GROUP 1 C (R*8) BCRA = SCALING PARAMETER FOR RESONANCE GROUP 2 C (I*4) ISHE() = NO. OF ENTRIES FOR EACH SHELL GROUP (1-6) C (I*4) IRES() = NO. OF ENTRIES FOR EACH RESONANCE GROUP (1-6) C (I*4) INS1() = SHELL GROUP 1 DATA: N C (I*4) ILS1() = SHELL GROUP 1 DATA: L C (R*8) ES1() = SHELL GROUP 1 DATA: EION(RYD) C (I*4) IZS1() = SHELL GROUP 1 DATA: IZETA C (I*4) INS2() = SHELL GROUP 2 DATA: N C (I*4) ILS2() = SHELL GROUP 2 DATA: L C (R*8) ES2() = SHELL GROUP 2 DATA: EION(RYD) C (I*4) IZS2() = SHELL GROUP 2 DATA: IZETA C (R*8) ER1() = RESONANCE GROUP 1 DATA: ENERGY(RYD) C (R*8) ER2() = RESONANCE GROUP 2 DATA: ENERGY(RYD) C (R*8) WR1() = RESONANCE GROUP 1 DATA: WEIGHT C (R*8) WR2() = RESONANCE GROUP 2 DATA: WEIGHT C (I*4) IIFTYP = ENERGY PARAMETER FORM C 1 : INCIDENT ENERGY (RYD) C 2 : INCIDENT ENERGY (EV) C 3 : X THRESHOLD PARAMETER C (I*4) IIOTYP = CROSS-SECTIONAL FORM C 1 : X-SECT. (PI*A0**2) C 2 : X-SECT. (CM**2) C 3 : COLLISION STRENGTH (OMEGA) C 4 : SCALED COLLISION STRENGTH ((Z**2)*OMEGA) C (I*4) IIFOUT = OUTPUT TEMPERATURE FORM C 1 : KELVIN C 2 : EV C 3 : SCALED UNITS (TE(K)/(Z1**2)) C (I*4) IXMAX = NUMBER OF X-SECT./ENERGY PAIRS C (I*4) ITMAX = NUMBER OF TEMPS. C (R*8) XDAT() = X-SECTION DATA C (R*8) EDAT() = ENERGY DATA C (R*8) TDAT() = TEMPERATURE DATA C (I*4) IOP = USE DEFAULT SCALING PARAMS? (1 = YES, 0 = NO) C (R*8) ASCL = GRAPHIC SCALING PARAMETER C C OUTPUT: C (R*8) XA() = SCALED ENERGY C (R*8) YA() = OMEGA C (R*8) APA() = APPROXIMATE OMEGA C (R*4) XP() = SCALED ENERGY RESONANCE POINTS C (R*4) YP() = OMEGA OF RESONANCE POINTS C (R*8) TOA() = TEMP (KELVIN) C (R*8) YOA() = S, MAXWELL AVERAGED IONISATION RATE COEFF.(CM^3 S^-1) C (R*8) YOAP() = SEM, APPROXIMATE RATE COEFF. C (I*4) NITHR = NUMBER OF RESONANCES C (I*4) NRTHR = NUMBER OF EXTRA (?) RESONANCES C (R*8) CIA() = OUTPUT SCALING PARAMS C (R*8) CRA() = OUTPUT SCALING PARAMS C (I*4) NA(,) = SHELL GROUP DATA : N C (I*4) LA(,) = SHELL GROUP DATA : L C (R*8) EIONA(,) = SHELL GROUP DATA : EION(RYD) C (I*4) IZETAA(,)= SHELL GROUP DATA : IZETA C (R*8) ENERA(,) = RESONANCE GROUP DATA : ENERGY(RYD) C (R*8) WGHTA(,) = RESONANCE GROUP DATA : WEIGHT C C AUTHOR: C C ************ H.P.SUMMERS, JET 1 JULY 1987 ***************** C ************ J.SPENCE, JET JULY 1987 ***************** C *** COR 30 OCT 1989 *** C C UPDATE : 30/4/92 W DICKSON - ADD PARAMETER NDTEM AND SET TO 30 C ALTER OUTPUT TEMP PANEL ACCORDINGLY C C UPDATE : 7/5/92 W DICKSON - ADJUST OUTPUT TO INCLUDE TEMPERATURE C IN EV, AND FORMAT AS SZD FILE C C----------------------------------------------------------------------- C C UNIX-IDL CONVERSION: C C VERSION: 1.1 DATE: 23-08-96 C MODIFIED: WILLIAM OSBORN C - FIRST CONVERTED. C - MADE INTO A SUBROUTINE. COMMENTED-OUT PANEL INPUT C AND GRAPHICAL ROUTINES. C C VERSION: 1.2 DATE: 03-10-96 C MODIFIED: WILLIAM OSBORN C - ALLOWED ISTOP = 5 FROM XXSIM TO GIVE NO ERROR C C VERSION: 1.3 DATE: 08-10-96 C MODIFIED: WILLIAM OSBORN C - LET YAT BE YA WEIGHTED BY X1 TO AGREE WITH NAG VERSION, C IT WAS UNWEIGHTED C C VERSION: 1.4 DATE: 08-10-96 C MODIFIED: WILLIAM OSBORN C - ADDED NA AND LA TO PARAMETERS C C VERSION 1.5 DATE: 14/02/97 C MODIFIED: RICHARD MARTIN C - ADDED STATEMENTS '136 CONTINUE' AND '146 CONTINUE' C IMMEDIATELY AFTER '135 CONTINUE' AND '145 CONTINUE' C - CHANGED 'GOTO 135' TO 'GOTO 136' ETC.. C C VERSION: 1.6 DATE: 15/05/07 C MODIFIED: Allan Whiteford C - Updated comments as part of subroutine C documentation production. C C----------------------------------------------------------------------- C----------------------------------------------------------------------- CHARACTER*40 TITLE INTEGER IIFOUT, IIFTYP, IIGRP0, IIOTYP INTEGER ILS1(6), ILS2(6), INS1(6), INS2(6) INTEGER IOP, IRES(2), IRGRP0, ISHE(2) INTEGER ITMAX, IXMAX, IZETAA(6,2), IZS1(6) INTEGER IZS2(6), LA(6,2), NA(6,2), NITHR INTEGER NRTHR REAL*8 ACIA, ACRA, APA(40), ASCL REAL*8 BCIA, BCRA, CIA(2), CRA(2) REAL*8 EDAT(40), EIONA(6,2), EMIN REAL*8 ENERA(6,2), ER1(6), ER2(6), ES1(6) REAL*8 ES2(6), TDAT(NDTEM), TOA(NDTEM) REAL*8 WGHTA(6,2), WR1(6), WR2(6), XA(40) REAL*8 XDAT(40) REAL XP(12) REAL*8 YA(40), YOA(NDTEM), YOAP(NDTEM) REAL YP(12) REAL*8 Z, Z0, Z1