ADAS Subroutine b3data
SUBROUTINE B3DATA( IUNIT , NDLEV , NDTRN , NDTEM , IZDIMD, & SEQSYM, IZMAX , Z1A , IZA , IZ0A , IZ1A, & BWNOA , IL , & IA , CSTRGA, NA , ISA , ILA , XJA , & WAA , ITRAN , & NVA , SCEFA , & I1A , I2A , N1A , N2A , W1A , W2A, & IEC1A , IAC1A , IAC2A , FAC2A , IGC1A , FGC2A, & CTSTRA, WDEA , AVALA , SCOMA , LADJA & ) C C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: B3DATA ********************* C C PURPOSE: TO FETCH DATA FROM INPUT GENERAL Z EXCITATION FILE. C (ELECTRON IMPACT TRANSITIONS ONLY). C C CALLING PROGRAM: ADAS203 C C DATA: C C THE UNITS USED IN THE DATA FILE ARE TAKEN AS FOLLOWS: C C IONISATION POTENTIAL: WAVE NUMBER (CM-1) C INDEX LEVEL ENERGIES: WAVE NUMBER (CM-1) C TEMPERATURES : KELVIN C A-VALUES : SEC-1 C GAMMA-VALUES : C C C SUBROUTINE: C C (I*4) NDZ = PARAMETER = MAXIMUM NUMBER OF IONS IN C A GENERAL Z FILE C C INPUT : (I*4) IUNIT = UNIT TO WHICH INPUT FILE IS ALLOCATED C INPUT : (I*4) NDLEV = MAXIMUM NUMBER OF LEVELS THAT CAN BE READ C INPUT : (I*4) NDTRN = MAX. NUMBER OF TRANSITIONS THAT CAN BE READ C INPUT : (I*4) NDTEM = MAX NUMBER OF INPUT FILE TEMPS. C INPUT : (I*4) IZDIMD = MAX. NUMBER OF SEQUENCE MEMBERS ALLOWED C C OUTPUT: (C*2) SEQSYM = ELEMENT SYMBOL. C OUTPUT: (I*4) IZMAX = NUMBER OF SEQUENCE MEMBERS C OUTPUT: (R*8) Z1A() = SEQUNCE RECOMBINING ION CHARGES READ C 1ST DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (I*4) IZA() = SEQUENCE RECOMBINED ION CHARGES C 1ST DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (I*4) IZ0A() = SEQUENCE NUCLEAR CHARGES C 1ST DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (I*4) IZ1A() = SEQUNCE RECOMBINING ION CHARGES READ C 1ST DIMENSION - SEQUENCE MEMBER INDEX C (NOTE: IZ1 SHOULD EQUAL IZ+1) C OUTPUT: (R*8) BWNOA() = IONISATION POTENTIALS (CM-1) C 1ST DIMENSION - SEQUENCE MEMBER INDEX C C OUTPUT: (I*4) IL = INPUT DATA FILE: NUMBER OF ENERGY LEVELS C C OUTPUT: (I*4) IA() = ENERGY LEVEL INDEX NUMBER C OUTPUT: (C*18) CSTRGA()= NOMENCLATURE/CONFIGURATION FOR LEVEL 'IA()' C OUTPUT: (I*4) NA() = PRINCIPAL QUANTUM NUMBER OF VALENCE ELECTRON C OUTPUT: (I*4) ISA() = MULTIPLICITY FOR LEVEL 'IA()' C NOTE: (ISA-1)/2 = QUANTUM NUMBER (S) C OUTPUT: (I*4) ILA() = QUANTUM NUMBER (L) FOR LEVEL 'IA()' C OUTPUT: (R*8) XJA() = QUANTUM NUMBER (J-VALUE) FOR LEVEL 'IA()' C NOTE: (2*XJA)+1 = STATISTICAL WEIGHT C OUTPUT: (R*8) WAA() = ENERGY RELATIVE TO LEVEL 1 (CM-1) FOR LEVEL C 'IA()' C 1ST DIMENSION - LEVEL INDEX C 2ND DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (I*4) ITRAN = INPUT DATA FILE: NUMBER OF ELECTRON IMPACT C TRANSITIONS. C C OUTPUT: (I*4) NVA() = INPUT DATA FILE: NUMBER OF GAMMA/TEMPERATURE C PAIRS FOR A GIVEN TRANSITION. C 1ST DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (R*8) SCEFA(,)= INPUT DATA FILE: Z-SCALED ELEC. TEMPS.(K) C 1ST DIMENSION - TEMPERATURE 'SCEF()' C 2ND DIMENSION - TRANSITION NUMBER C C C OUTPUT: (I*4) I1A() = ELECTRON IMPACT TRANSITION: C LOWER ENERGY LEVEL INDEX C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) I2A() = ELECTRON IMPACT TRANSITION: C UPPER ENERGY LEVEL INDEX C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) N1A() = ELECTRON IMPACT TRANSITION: C LOWER LEVEL PRINCIPAL QUANTUM NUMBER C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) N2A() = ELECTRON IMPACT TRANSITION: C UPPER LEVEL PRINCIPAL QUANTUM NUMBER C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) W1A() = ELECTRON IMPACT TRANSITION: C LOWER LEVEL STATISTICAL WEIGHT C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) W2A() = ELECTRON IMPACT TRANSITION: C UPPER LEVEL STATISTICAL WEIGHT C 1ST DIMENSION - TRANSITION NUMBER C C OUTPUT: (I*4) IEC1A() = TRANSITION ENERGY INTERPOLATION VARIABLE C (1=>Z1 ; 2=>1/Z1) C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) IAC1A() = TRANSITION PROB. INTERPOLATION VARIABLE C (1=>Z1 ; 2=> 1/Z1) C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) IAC2A() = TRANSITION TYPE C (1=>DIPOLE, 2=>NON-DIPOLE, 3=>SPIN CHANGE, C 4=>OTHER) C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) FAC2A() = TRANSITION PROB. Z1 SCALING POWER C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) IGC1A() = UPSILON INTERPOLATION VARIABLE C (1=>Z1 ; 2=> 1/Z1) C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (I*4) FGC2A() = UPSILON Z1 SCALING POWER C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (C*18) CTSTRA()= TRANSITION DESCRIPTOR C 1ST DIMENSION - TRANSITION NUMBER C OUTPUT: (R*8) WDEA() = TRANSITION ENERGY (CM-1) C 1ST DIMENSION - TRANSITION NUMBER C C OUTPUT: (R*8) AVALA() = ELECTRON IMPACT TRANSITION: C A-VALUES (SEC-1) C 1ST DIMENSION - TRANSITION NUMBER C 2ND DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (R*8) SCOMA(,,)=ELECTRON IMPACT TRANSITION: C GAMMA VALUES C 1ST DIMENSION - TEMPERATURE 'SCEF()' C 2ND DIMENSION - TRANSITION NUMBER C 3RD DIMENSION - SEQUENCE MEMBER INDEX C OUTPUT: (L*4) LADJA() = .FALSE. INITIALISATION NO TRANSITIONS C ADJUSTED YET C 1ST DIMENSION - TRANSITION NUMBER C C C (I*4) I = GENERAL USE. C (I*4) IAC1 = CURRENT VALUE OF IAC1 PARAMETER C (I*4) IAC2 = CURRENT VALUE OF IAC2 PARAMETER C (I*4) IEC1 = CURRENT VALUE OF IEC1 PARAMETER C (I*4) IGC1 = CURRENT VALUE OF IGC1 PARAMETER C (I*4) ILINE = ENERGY LEVEL INDEX FOR CURRENT LINE C (I*4) ITEMP = GENERAL USE. C (I*4) IZ = CURRENT ION CHARGE C (I*4) IZS = ISOELECTRONIC SEQUENCE CHARGE (1ST MEMBER) C (I*4) I4EIZ0 = FUNCTION (SEE ROUTINE SECTION BELOW) C (I*4) I4UNIT = FUNCTION (SEE ROUTINE SECTION BELOW) C (I*4) J = GENERAL USE. C (I*4) J1 = INPUT DATA FILE - SELECTED TRANSITION: C LOWER ENERGY LEVEL INDEX (CASE ' ' & 'P') C (I*4) J2 = INPUT DATA FILE - SELECTED TRANSITION: C UPPER ENERGY LEVEL INDEX (CASE ' ' & 'P') C CAPTURING LEVEL INDEX (CASE 'H' & 'R') C (I*4) IPOS = GENERAL POSITION IN STRING MARKER. C (I*4) K = GENERAL USE. C (I*4) NI = CURRENT LOWER LEVEL PRINCIPAL QUANTUM NUMBER C (I*4) NJ = CURRENT UPPER LEVEL PRINCIPAL QUANTUM NUMBER C C (R*8) FAC2 = CURRENT VALUE OF FAC2 PARAMETER C (R*8) FGC2 = CURRENT VALUE OF FGC2 PARAMETER C (R*8) WI = CURRENT LOWER LEVEL STATISTICAL WEIGHT C (R*8) WJ = CURRENT UPPER LEVEL STATISTICAL WEIGHT C C (C*2) CHEQSYM = EXTRA STRING USED FOR SYMBOL CHECKING C (C*1) CMINUS = STRING OF MINUS SYMBOL USED TO CHECK FOR C SINGLE CHARACTER ELEMENT SYMBOLS C (C*80) CLINE = CURRENT ENERGY LEVEL INDEX PARAMETER LINE C (C*18) STRING = GENERAL USE C C (L*4) LDATA = IDENTIFIES WHETHER THE END OF AN INPUT C SECTION IN THE DATA SET HAS BEEN LOCATED. C (.TRUE. => END OF SECTION REACHED) C C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C I4EIZ0 ADAS RETURN NUCLEAR CHARGE OF ELEMENT SYMBOL C I4UNIT ADAS FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES C C AUTHOR: H. P. SUMMERS, JET C K1/1/57 C JET EXT. 4941 C C DATE: 17/08/94 C C UPDATE: 03/07/95 - HPS ALTER LENGTH OF CSTRGA ARRAY TO 18 AND C USE NEW POSITION FOR INPUT/OUTPUT C UNIX-IDL PORT: C C VERSION: 1.1 DATE: 29-02-96 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - PUT UNDER S.C.C.S. CONTROL C C VERSION: 1.2 DATE: 29-02-96 C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC) C - CORRECTED ERROR MESSAGES C - ADDED ABILITY TO HANDLE SINGLE LETTER ELEMENT C SYMBOLS FOLLOWED BY DASH. E.G. IN HYDROGEN LIKE C FILES THE FIRST TWO CHARACTERS IN THE FILE ARE 'H-' C AND THIS WAS CAUSING PROBLEMS FOR I4EIZ0 BEFORE. C C----------------------------------------------------------------------- CHARACTER*18 CSTRGA(NDLEV), CTSTRA(NDTRN) CHARACTER*2 SEQSYM INTEGER I1A(NDTRN), I2A(NDTRN), IA(NDLEV) INTEGER IAC1A(NDTRN), IAC2A(NDTRN) INTEGER IEC1A(NDTRN), IGC1A(NDTRN) INTEGER IL, ILA(NDLEV), ISA(NDLEV), ITRAN INTEGER IUNIT, IZ0A(IZDIMD) INTEGER IZ1A(IZDIMD), IZA(IZDIMD), IZDIMD INTEGER IZMAX, N1A(NDTRN), N2A(NDTRN) INTEGER NA(NDLEV), NDLEV, NDTEM, NDTRN INTEGER NVA(NDTRN) LOGICAL LADJA(NDTRN) REAL*8 AVALA(NDTRN,IZDIMD), BWNOA(IZDIMD) REAL*8 FAC2A(NDTRN), FGC2A(NDTRN) REAL*8 SCEFA(NDTEM,NDTRN) REAL*8 SCOMA(NDTEM,NDTRN,IZDIMD) REAL*8 W1A(NDTRN), W2A(NDTRN), WAA(NDLEV,IZDIMD) REAL*8 WDEA(NDTRN,IZDIMD), XJA(NDLEV) REAL*8 Z1A(IZDIMD)