ADAS Subroutine xxdata_01
SUBROUTINE xxdata_01( IUNIT , MXNENG , MXNSHL ,
& SYMBR , SYMBD , IZR , IZD ,
& INDD , NENRGY , NMIN , NMAX ,
& LPARMS , LSETL , ENRGYA ,
& ALPHAA , LFORMA , XLCUTA , PL2A ,
& PL3A , SIGTA , SIGNA , SIGLA
& )
C-----------------------------------------------------------------------
C
C ***************** FORTRAN77 SUBROUTINE: xxdata_01 *******************
C
C PURPOSE: TO FETCH DATA FROM INPUT DATA SET OF TYPE ADF01.
C
C CALLING PROGRAM: ADAS301/ADAS306/ADAS307/ADAS308/ADAS309
C
C DATA:
C
C THE UNITS USED IN THE DATA FILE ARE TAKEN AS FOLLOWS:
C
C COLLISION ENERGIES : KEV/AMU
C ALPHA :
C TOTAL XSECTS. : CM2
C N-SHELL XSECTS. : CM2
C NL-SHELL DATA : CM2
C
C
C SUBROUTINE:
C
C INPUT : (I*4) IUNIT = UNIT TO WHICH INPUT FILE IS ALLOCATED.
C INPUT : (I*4) MXNENG = MAXIMUM NO. OF ENERGIES.
C INPUT : (I*4) MXNSHL = MAXIMUM NO. OF N SHELLS.
C
C OUTPUT: (C*2) SYMBR = READ - RECEIVER ION ELEMENT SYMBOL.
C OUTPUT: (C*2) SYMBD = READ - DONOR ION ELMENT SYMBOL.
C OUTPUT: (I*4) IZR = READ - ION CHARGE OF RECEIVER.
C OUTPUT: (I*4) IZD = READ - ION CHARGE OF DONOR.
C OUTPUT: (I*4) INDD = READ - DONOR STATE INDEX.
C OUTPUT: (I*4) NENRGY = NUMBER OF ENERGIES READ.
C OUTPUT: (I*4) NMIN = LOWEST N-SHELL FOR WHICH DATA READ.
C OUTPUT: (I*4) NMAX = HIGHEST N-SHELL FOR WHICH DATA READ.
C OUTPUT: (L*4) LPARMS = FLAGS IF L-SPLITTING PARAMETERS PRESENT.
C .TRUE. => L-SPLITTING PARAMETERS PRESENT.
C .FALSE => L-SPLITTING PARAMETERS ABSENT.
C OUTPUT: (L*4) LSETL = FLAGS IF L-RESOLVED DATA PRESENT.
C .TRUE. => L-RESOLVED DATA PRESENT.
C .FALSE => L-RESOLVED DATA ABSENT.
C OUTPUT: (R*8) ENRGYA() = READ - COLLISION ENERGIES.
C UNITS: EV/AMU (READ AS KEV/AMU)
C DIMENSION: ENERGY INDEX
C OUTPUT: (R*8) ALPHAA() = READ - EXTRAPOLATION PARAMETER ALPHA.
C DIMENSION: ENERGY INDEX
C OUTPUT: (I*4) LFORMA() = READ - PARAMETERS FOR CALCULATING L-RES
C X-SEC.
C DIMENSION: ENERGY INDEX
C OUTPUT: (R*8) XLCUTA() = READ - PARAMETERS FOR CALCULATING L-RES
C X-SEC.
C DIMENSION: ENERGY INDEX
C OUTPUT: (R*8) PL2A() = READ - PARAMETERS FOR CALCULATING L-RES
C X-SEC.
C DIMENSION: ENERGY INDEX
C OUTPUT: (R*8) PL3A() = READ - PARAMETERS FOR CALCULATING L-RES
C X-SEC.
C DIMENSION: ENERGY INDEX
C OUTPUT: (R*8) SIGTA() = READ - TOTAL CHARGE EXCHANGE
C CROSS-SECTION.
C UNITS: CM2
C DIMENSION: ENERGY INDEX
C OUTPUT: (R*8) SIGNA(,) = READ - N-RESOLVED CHARGE EXCHANGE
C CROSS-SECTIONS.
C UNITS: CM2
C 1ST DIMENSION: ENERGY INDEX
C 2ND DIMENSION: N-SHELL
C OUTPUT: (R*8) SIGLA(,) = READ - L-RESOLVED CHARGE EXCHANGE
C CROSS-SECTIONS.
C UNITS: CM2
C 1ST DIMENSION: ENERGY INDEX
C 2ND DIMENSION: INDEXED BY I4IDFL(N,L)
C
C (R*8) ZEROST = PARAMETER = EFFECTIVE SHIFT APPLIED TO
C CROSS-SECTION VALUES TO AVOID
C ZERO VALUES (WILL NOT AFFECT
C ANY VALUES WHICH ARE GREATER
C THAN AROUND 1.0E+15*ZEROSHFT -
C i.e. 1.0E-25.)
C
C (I*4) OLDMIN = PREVIOUS VALUE READ FOR NMIN.
C (I*4) OLDMAX = PREVIOUS VALUE READ FOR NMAX.
C (I*4) IBLK = CURRENT DATA BLOCK.
C (I*4) IVALUE = USED TO PARSE FOR END OF DATA FLAG (-1).
C (I*4) N = N QUANTUM NUMBER.
C (I*4) L = L QUANTUM NUMBER.
C (I*4) I = LOOP COUNTER.
C (I*4) J = LOOP COUNTER.
C (I*4) IERR = ERROR RETURN CODE.
C (C*2) CIZR = ION CHARGE OF RECEIVER.
C (C*2) CIZD = ION CHARGE OF DONOR.
C (C*1) INDD = DONOR STATE INDEX.
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C -------------------------------------------------------------
C I4FCTN ADAS RETURNS CHARACTER STRING AS AN INTEGER.
C I4UNIT ADAS FETCH UNIT NUMBER FOR OUTPUT OF MESSAGES
C I4IDFL ADAS RETURNS UNIQUE INDEX FROM QUANTUM
C NUMBERS N AND L.
C XXIDTL ADAS INVERSE OF I4IDFL. RETURNS QUANTUM
C NUMBERS N AND L FROM INDEX.
C
C AUTHOR: JONATHAN NASH (TESSELLA SUPPORT SERVICES PLC)
C K1/0/81
C JET EXT. 5183
C
C DATE: 21/09/93
C
C UPDATE: 18/10/93 - J NASH - ADAS91:
C UPDATED TO READ L-SPLITTING PARAMETERS IF PRESENT IN DATASET.
C
C UPDATE: 01/05/95 - Tim Hammond - IDLADAS:
C UNIX port.
C
C UPDATE: 16/05/95 - Tim Hammond - IDLADAS:
C ADDED AND APPLIED ZEROST PARAMETER => EFFECTIVE ZERO FOR
C CROSS-SECTIONS (CODING DONE BY PAUL BRIDEN).
C
C-----------------------------------------------------------------------
C
C
C NOTES: Copied from cxdata.for.
C Remove the redundant titled from argument list.
C This is v1.1 of xxdata_01.
C
C
C VERSION : 1.1
C DATE : 14-09-2004
C MODIFIED : Martin O'Mullane
C - First version.
C
C VERSION : 1.2
C DATE : 26-04-2007
C MODIFIED : Hugh Summers
C - Remove unused m-subshell data possibility.
C
C VERSION : 1.3
C DATE : 22-05-2007
C MODIFIED : Martin O'Mullane
C - Initialize output arrays to zero.
C
C VERSION : 1.4
C DATE : 12-06-2008
C MODIFIED : Allan Whiteford
C - Correctly parse files which contain m-subshell
C data and print a warning to say that the m-resolved
C data were ignored.
C
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
CHARACTER*2 SYMBD, SYMBR
INTEGER INDD, IUNIT, IZD, IZR
INTEGER LFORMA(MXNENG), MXNENG, MXNSHL
INTEGER NENRGY, NMAX, NMIN
LOGICAL LPARMS, LSETL
REAL*8 ALPHAA(MXNENG), ENRGYA(MXNENG)
REAL*8 PL2A(MXNENG), PL3A(MXNENG)
REAL*8 SIGLA(MXNENG,(MXNSHL*(MXNSHL+1))/2)
REAL*8 SIGNA(MXNENG,MXNSHL), SIGTA(MXNENG)
REAL*8 XLCUTA(MXNENG)