ADAS Subroutine xxdata_07
SUBROUTINE XXDATA_07( IUNIT , DSNAME ,
& NSTORE , NTDIM ,
& ESYM , IZ0 ,
& NBSEL , ISELA ,
& IZ , IZ1 ,
& CICODE , CFCODE , CIION , CFION ,
& BWNO ,
& ITA ,
& TETA , SZD
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: XXDATA_07 ******************
C
C PURPOSE: TO FETCH DATA FROM INPUT ELECTRON IMPACT IONIZATION
C RATE COEFFT FILES (ADF07)
C
C (MEMBER STORED IN IONELEC.DATA - MEMBER PREFIX 'SZD#').
C
C CALLING PROGRAM: ADAS502/SSZD
C
C DATA:
C
C UP TO 'NSTORE' SETS (DATA-BLOCKS) OF DATA MAY BE READ FROM
C THE FILE - EACH BLOCK FORMING A COMPLETE SET OF IONIZATION
C RATE COEFFICIENT VALUES FOR GIVEN TEMPERATURES.
C EACH DATA-BLOCK IS ANALYSED INDEPENDENTLY OF ANY OTHER
C DATA-BLOCK.
C
C THE UNITS USED IN THE DATA FILE ARE TAKEN AS FOLLOWS:
C
C TEMPERATURES : EV
C RATE COEFFT : CM**3 SEC-1
C
C SUBROUTINE:
C
C INPUT : (I*4) IUNIT = UNIT TO WHICH INPUT FILE IS ALLOCATED.
C
C INPUT : (I*4) NSTORE = MAXIMUM NUMBER OF INPUT DATA-BLOCKS THAT
C CAN BE STORED.
C INPUT : (I*4) NTDIM = MAX NUMBER OF ELECTRON TEMPERATURES ALLOWED
C
C OUTPUT: (C*2) ESYM = READ - IONISING ION - ELEMENT SYMBOL
C OUTPUT: (I*4) IZ0 = READ - IONISING ION - NUCLEAR CHARGE
C
C OUTPUT: (I*4) NBSEL = NUMBER OF DATA-BLOCKS ACCEPTED & READ IN.
C OUTPUT: (I*4) ISELA() = READ - DATA-SET DATA-BLOCK ENTRY INDICES
C DIMENSION: DATA-BLOCK INDEX
C
C OUTPUT: (I*4) IZ() = READ - IONISING ION - INITIAL CHARGE
C DIMENSION: DATA-BLOCK INDEX
C OUTPUT: (I*4) IZ1() = READ - IONISING ION - FINAL CHARGE
C DIMENSION: DATA-BLOCK INDEX
C
C OUTPUT: (C*2) CICODE() = READ - INITIAL STATE METASTABLE INDEX
C DIMENSION: DATA-BLOCK INDEX
C OUTPUT: (C*2) CFCODE() = READ - FINAL STATE METASTABLE INDEX
C DIMENSION: DATA-BLOCK INDEX
C OUTPUT: (C*5) CIION() = READ - INITIAL ION (as <ESYM>+(IZ()> )
C DIMENSION: DATA-BLOCK INDEX
C OUTPUT: (C*5) CFION() = READ - FINAL ION (as <ESYM>+<IZ1()>)
C DIMENSION: DATA-BLOCK INDEX
C
C OUTPUT: (R*8) BWNO() = READ- EFFECTIVE IONIZATION POTENTIAL (CM-1)
C DIMENSION: DATA-BLOCK INDEX
C
C OUTPUT: (I*4) ITA() = READ - NUMBER OF ELECTRON TEMPERATURES
C DIMENSION: DATA-BLOCK INDEX
C
C OUTPUT: (R*8) TETA(,) = READ - ELECTRON TEMPERATURES (UNITS: eV)
C 1st DIMENSION: ELECTRON TEMPERATURE INDEX
C 2nd DIMENSION: DATA-BLOCK INDEX
C
C OUTPUT: (R*8) SZD(,) =READ - FULL SET OF ZERO DENSITY IONIZATION
C RATE COEFFICIENT VALUES (cm**3/sec)
C 1st DIMENSION: ELECTRON TEMPERATURE INDEX
C 2nd DIMENSION: DATA-BLOCK INDEX
C
C (I*4) I4EIZ0 = FUNCTION - (SEE ROUTINES SECTION BELOW)
C (I*4) I4FCTN = FUNCTION - (SEE ROUTINES SECTION BELOW)
C (I*4) I4UNIT = FUNCTION - (SEE ROUTINE SECTION BELOW)
C (I*4) IBLK = ARRAY INDEX: DATA-BLOCK INDEX
C (I*4) ITT = ARRAY INDEX: ELECTRON TEMPERATURE INDEX
C (I*4) NTNUM = NUMBER OF ELECTRON TEMPERATURES FOR CURRENT
C DATA-BLOCK
C (I*4) IABT = RETURN CODE FROM 'I4FCTN'
C (I*4) IPOS1 = GENERAL USE STRING INDEX VARIABLE
C (I*4) IPOS2 = GENERAL USE STRING INDEX VARIABLE
C
C (R*8) R8FCTN = FUNCTION - (SEE ROUTINES SECTION BELOW)
C
C (L*4) LBEND = IDENTIFIES WHETHER THE LAST OF THE INPUT
C DATA SUB-BLOCKS HAS BEEN LOCATED.
C (.TRUE. => END OF SUB-BLOCKS REACHED)
C
C (C*1) CSLASH = '/' - DELIMITER FOR 'XXHKEY'
C (C*2) C2 = GENERAL USE TWO BYTE CHARACTER STRING
C (C*4) CKEY1 = 'I.P.' - INPUT BLOCK HEADER KEY
C (C*5) CKEY2 = 'ICODE' - INPUT BLOCK HEADER KEY
C (C*5) CKEY3 = 'FCODE' - INPUT BLOCK HEADER KEY
C (C*4) CKEY4 = 'ISEL' - INPUT BLOCK HEADER KEY
C (C*10) C10 = GENERAL USE TEN BYTE CHARACTER STRING
C (C*80) C80 = GENERAL USE 80 BYTE CHARACTER STRING FOR
C THE INPUT OF DATA-SET RECORDS.
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C XXHKEY ADAS OBTAIN KEY/RESPONSE STRINGS FROM TEXT
C I4EIZ0 ADAS INTEGER*4 FUNCTION -
C RETURNS Z0 FOR GIVEN ELEMENT SYMBOL
C I4FCTN ADAS INTEGER*4 FUNCTION -
C CONVERT CHARACTER STRING TO INTEGER
C I4UNIT ADAS INTEGER*4 FUNCTION -
C FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES
C R8FCTN ADAS REAL*8 FUNCTION -
C CONVERT CHARACTER STRING TO REAL*8
C XXCASE ADAS SWITCHES CASE
C
C AUTHOR: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C K1/0/37
C JET EXT. 2520
C
C DATE: 07/06/91
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 UPDATE: 10/11/94 - L. JALOTA - MODIFIED TO RUN UNDER UNIX.
C
C-----------------------------------------------------------------------
C
C NOTES: Copied from e2data.for. This is v1.1 of xxdata_07.
C
C VERSION : 1.1
C DATE : 26-03-2008
C MODIFIED : Allan Whiteford
C - First version
C
C VERSION : 1.2
C DATE : 21-05-2008
C MODIFIED : Martin O'Mullane
C - Permit lower case datasets for 2008 onwards data.
C - Extract iz0 from element symbol in first block.
C
C-----------------------------------------------------------------------
CHARACTER*2 CFCODE(NSTORE)
CHARACTER*5 CFION(NSTORE)
CHARACTER*2 CICODE(NSTORE)
CHARACTER*5 CIION(NSTORE)
CHARACTER*80 DSNAME
CHARACTER*2 ESYM
INTEGER ISELA(NSTORE), ITA(NSTORE), IUNIT
INTEGER IZ(NSTORE), IZ0, IZ1(NSTORE), NBSEL
INTEGER NSTORE, NTDIM
REAL*8 BWNO(NSTORE), SZD(NTDIM,NSTORE)
REAL*8 TETA(NTDIM,NSTORE)