ADAS Subroutine e7data
SUBROUTINE E7DATA( IUNIT , DSNAME , & NSTORE , NTDIM , & ESYM , IZ0 , & NBSEL , ISELA , & IZ , IZ1 , & CWAVEL , CIION , CICODE , CISCRP , CITYPE , & ITA , & TMA , TETA , DENSA , GCF & ) C----------------------------------------------------------------------- C C ****************** FORTRAN77 SUBROUTINE: E7DATA ********************* C C PURPOSE: TO FETCH DATA FROM INPUT CONTRIBUTION FUNCTIONS C OF AN ELEMENT AND ITS IONS. C (MEMBER STORED IN IONELEC.DATA - MEMBER PREFIX 'GCF#'). C C CALLING PROGRAM: ADAS507/SGCF 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 CONTRIBUTION C FUNCTION 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 MODEL PARAMETER : UNSPECIFIED C DENSITIES : CM-3 C TEMPERATURES : EV C CONTR. FUNCTION : CM**3 S-1 C C SUBROUTINE: C C INPUT : (I*4) IUNIT = UNIT TO WHICH INPUT FILE IS ALLOCATED. C INPUT : (C*44) DSNAME = MVS DATA SET NAME OF DATA SET BEING READ 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 - RADIATING ION - ELEMENT SYMBOL C OUTPUT: (I*4) IZ0 = READ - RADIATING 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 - RADIATING ION CHARGE C ( SET TO -1 IF WHOLE ELEMENT) C DIMENSION: DATA-BLOCK INDEX C OUTPUT: (I*4) IZ1() = READ - RADIATING ION CHARGE +1 C ( SET TO 1 IF WHOLE ELEMENT) C DIMENSION: DATA-BLOCK INDEX C C OUTPUT: (C*10) CWAVEL() = READ - WAVELENGTH (ANGSTROMS) C DIMENSION: DATA-BLOCK INDEX C OUTPUT: (C*5) CIION() = READ - RADIATING ION (AS <ESYM>+(IZ()> ) C DIMENSION: DATA-BLOCK INDEX C OUTPUT: (C*8) CICODE() = READ - SOURCE PROGRAM C DIMENSION: DATA-BLOCK INDEX C OUTPUT: (C*8) CISCRP() = READ - SOURCE SCRIPT C DIMENSION: DATA-BLOCK INDEX C OUTPUT: (C*5) CITYPE() = READ - RADIATION TYPE 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) TMA(,) = READ - MODEL PARAMETER (UNITS: UNDEFINED) C 1st DIMENSION: ELECTRON TEMPERATURE INDEX C 2nd 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) DENSA(,) = READ - ELECTRON DENSITIES (UNITS: CM-3) C 1st DIMENSION: ELECTRON TEMPERATURE INDEX C 2nd DIMENSION: DATA-BLOCK INDEX C C OUTPUT: (R*8) GCF(,) =READ - FULL SET OF GENERALISED CONTIBUTION C FUNCTIONS (CM**3 S-1) 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 ROUTINES 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 = 'CODE' - INPUT BLOCK HEADER KEY C (C*6) CKEY2 = 'SCRIPT - INPUT BLOCK HEADER KEY C (C*4) CKEY3 = 'TYPE' - 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 C AUTHOR: H. P. SUMMERS, JET C K1/1/57 C JET EXT. 4941 C C DATE: 15/04/94 C C UPDATE: C C----------------------------------------------------------------------- CHARACTER*8 CICODE(NSTORE) CHARACTER*5 CIION(NSTORE) CHARACTER*8 CISCRP(NSTORE) CHARACTER*5 CITYPE(NSTORE) CHARACTER*10 CWAVEL(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 DENSA(NTDIM,NSTORE), GCF(NTDIM,NSTORE) REAL*8 TETA(NTDIM,NSTORE), TMA(NTDIM,NSTORE)