ADAS Subroutine b1data
SUBROUTINE B1DATA( IUNIT , NDLEV , NDTRN ,
& TITLED , IZ , IZ0 , IZ1 , BWNO ,
& IL ,
& IA , CSTRGA , ISA , ILA , XJA , WA ,
& NV , SCEF ,
& ITRAN ,
& I1A , I2A , AVAL , SCOM
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: B1DATA *********************
C
C PURPOSE: TO FETCH DATA FROM INPUT SPECIFIC Z EXCITATION FILE.
C (ELECTRON IMPACT TRANSITIONS ONLY).
C
C CALLING PROGRAM: ADAS201
C
C DATA:
C THE 'REAL' DATA IN THE FILE IS REPRESENTED IN AN ABBREVIATED
C FORM WHICH OMITS THE "D" OR "E" EXPONENT SPECIFIER.
C e.g. 1.23D-06 or 1.23E-06 IS REPRESENTED AS 1.23-06
C 6.75D+07 or 6.75E+07 IS REPRESENTED AS 6.75+07
C
C THEREFORE THE FORM OF EACH 'REAL' NUMBER IN THE DATA SET IS:
C N.NN+NN or N.NN-NN
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 RATE COEFFT. : CM3 SEC-1
C
C
C SUBROUTINE:
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
C OUTPUT: (C*3) TITLED = ELEMENT SYMBOL.
C OUTPUT: (I*4) IZ = RECOMBINED ION CHARGE READ
C OUTPUT: (I*4) IZ0 = NUCLEAR CHARGE READ
C OUTPUT: (I*4) IZ1 = RECOMBINING ION CHARGE READ
C (NOTE: IZ1 SHOULD EQUAL IZ+1)
C OUTPUT: (R*8) BWNO = IONISATION POTENTIAL (CM-1)
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*12) CSTRGA()= NOMENCLATURE/CONFIGURATION FOR LEVEL 'IA()'
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) WA() = ENERGY RELATIVE TO LEVEL 1 (CM-1) FOR LEVEL
C 'IA()'
C
C OUTPUT: (I*4) NV = INPUT DATA FILE: NUMBER OF GAMMA/TEMPERATURE
C PAIRS FOR A GIVEN TRANSITION.
C OUTPUT: (R*8) SCEF() = INPUT DATA FILE: ELECTRON TEMPERATURES (K)
C (INITIALLY JUST THE MANTISSA. SEE 'ITPOW()')
C (NOTE: TE=TP=TH IS ASSUMED)
C
C OUTPUT: (I*4) ITRAN = INPUT DATA FILE: NUMBER OF ELECTRON IMPACT
C TRANSITIONS.
C
C OUTPUT: (I*4) I1A() = ELECTRON IMPACT TRANSITION:
C LOWER ENERGY LEVEL INDEX
C OUTPUT: (I*4) I2A() = ELECTRON IMPACT TRANSITION:
C UPPER ENERGY LEVEL INDEX
C OUTPUT: (R*8) AVAL() = ELECTRON IMPACT TRANSITION:
C A-VALUE (SEC-1)
C OUTPUT: (R*8) SCOM(,) = ELECTRON IMPACT TRANSITION:
C GAMMA VALUES
C 1ST DIMENSION - TEMPERATURE 'SCEF()'
C 2ND DIMENSION - TRANSITION NUMBER
C
C (I*4) NDTEM = PARAMETER = MAX NUMBER OF INPUT FILE TEMPS.
C
C (I*4) I4UNIT = FUNCTION (SEE ROUTINE SECTION BELOW)
C (I*4) IQS = X-SECT DATA FORMAT SELECTOR
C NOTE: IQS=3 ONLY ALLOWED IN THIS PROGRAM
C (I*4) I = GENERAL USE.
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) ILINE = ENERGY LEVEL INDEX FOR CURRENT LINE
C (I*4) IAPOW = EXPONENT OF 'AVALM'
C (I*4) IGPOW() = EXPONENT OF 'GAMMA()'
C (I*4) ITPOW() = TEMPERATURES - EXPONENT
C NOTE: MANTISSA INITIALLY KEPT IN 'SCEF()'
C
C (R*4) ZF = SHOULD BE EQUIVALENT TO 'IZ1'
C
C (R*8) AVALM = INPUT DATA FILE - SELECTED TRANSITION:
C MANTISSA OF: ('IAPOW' => EXPONENT)
C A-VALUE (SEC-1) (CASE ' ')
C NEUTRAL BEAM ENERGY (CASE 'H')
C NOT USED (CASE 'P' & 'R')
C (R*8) GAMMA() = INPUT DATA FILE - SELECTED TRANSITION:
C MANTISSA OF: ('IGPOW()' => EXPONENT)
C GAMMA VALUES (CASE ' ' & 'P')
C RATE COEFFT. (CM3 SEC-1) (CASE 'H' & 'R')
C DIMENSION => TEMPERATURE 'SCEF()'
C
C (C*1) TCODE = TRANSITION: DATA TYPE POINTER:
C ' ' => Electron Impact Transition
C 'P' => Proton Impact Transition
C 'H' => Charge Exchange Recombination
C 'R' => Free Electron Recombination
C (C*80) CLINE = CURRENT ENERGY LEVEL INDEX PARAMETER LINE
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 I4UNIT ADAS FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES
C
C AUTHOR: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C K1/0/81
C JET EXT. 4569
C
C DATE: 09/10/90
C
C UPDATE: 16/11/90 - LEVEL LINE READ AS A CHARACTER*80 STRING FIRST
C (PE BRIDEN)
C
C UPDATE: 23/04/93 - PE BRIDEN - ADAS91: ADDED I4UNIT FUNCTION TO WRITE
C STATEMENTS FOR SCREEN MESSAGES
C
C UPDATE: 24/05/93 - PE BRIDEN - ADAS91: CHANGED I4UNIT(0)-> I4UNIT(-1)
C
C-----------------------------------------------------------------------
CHARACTER*12 CSTRGA(NDLEV)
CHARACTER*3 TITLED
INTEGER I1A(NDTRN), I2A(NDTRN), IA(NDLEV), IL
INTEGER ILA(NDLEV), ISA(NDLEV), ITRAN, IUNIT
INTEGER IZ, IZ0, IZ1, NDLEV
INTEGER NDTRN, NV
REAL*8 AVAL(NDTRN), BWNO, SCEF(NDTEM)
REAL*8 SCOM(NDTEM,NDTRN), WA(NDLEV)
REAL*8 XJA(NDLEV)