ADAS Subroutine c1bsig
SUBROUTINE C1BSIG( NENRGY , NSHELL , NENER ,
& INSEL , ILSEL ,
& IEDATA , NDATA ,
& XTOT , XSIGN , XSIGL ,
& ALPHAA ,
& SIGA
& )
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: C1BSIG *********************
C
C PURPOSE: TO EXTRACT VALID CROSS-SECTIONS FROM INPUT CHARGE-EXCHANGE
C FILE FOR A GIVEN SUB-BLOCK.
C
C CALLING PROGRAM: ADAS301
C
C SUBROUTINE:
C
C INPUT : (I*4) NENRGY = NUMBER OF TABULATED INPUT ENERGIES.
C INPUT : (I*4) NSHELL = NO. OF TABULATED PRINCIPAL QUANTUM N-SHELLS
C
C INPUT : (I*4) NENER = NUMBER OF VALID ENERGIES/VEL. FOR SUB-BLOCK
C INPUT : (I*4) INSEL = SELECTED INPUT PRINCIPAL QUANTUM N-SHELL
C ( 0 => TOTAL CROSS SECTION).
C INPUT : (I*4) ILSEL = SELECTED INPUT DATA L QUANTUM SHELL
C ( -1 => TOTAL CROSS-SECTION FOR N SHELL)
C INPUT : (I*4) IMSEL = SELECTED INPUT DATA M QUANTUM SHELL
C ( -1 => TOTAL CROSS-SECTION FOR NL SHELL)
C
C INPUT : (I*4) IEDATA() = INDEX RANGE FOR VALID QUANTUM NUMBERS IN
C 'XSIGN(,)'.
C DIMENSION: 1 => LOWER INDEX BOUND
C 2 => UPPER INDEX BOUND
C INPUT : (I*4) NDATA() = INDEX RANGE FOR VALID INPUT ENERGIES/VELS.
C IN 'XTOT()', 'XSIGN(,)','ALPHAA()'
C DIMENSION: 1 => LOWER INDEX BOUND
C 2 => UPPER INDEX BOUND
C
C INPUT : (R*8) XTOT() = TOTAL CROSS SECTIONS (UNITS: cm**2)
C 1st DIMENSION: ENERGY INDEX
C INPUT : (R*8) XSIGN(,) = CROSS SECTIONS FOR EACH N-SHELL
C (UNITS: cm**2)
C 1st DIMENSION: ENERGY INDEX
C 2nd DIMENSION: QUANTUM N-SHELL INDEX
C INPUT : (R*8) XSIGL(,,)=INPUT DATA FILE: L-RESOLVED CROSS-SECTIONS.
C 1st DIMENSION: ENERGY INDEX
C 2ND DIMENSION: INDEXED BY FUNCTION I4IDFL.
C 3rd DIMENSION: DATA SUB-BLOCK INDEX
C INPUT : (R*8) XSIGM(,,)=INPUT DATA FILE: M-RESOLVED CROSS-SECTIONS.
C 1st DIMENSION: ENERGY INDEX
C 2ND DIMENSION: INDEXED BY FUNCTION I4IDFM.
C 3rd DIMENSION: DATA SUB-BLOCK INDEX
C INPUT : (R*8) ALPHAA() =
C 1st DIMENSION: ENERGY INDEX
C
C OUTPUT: (R*8) SIGA() = VALID CROSS SECTIONS READ FROM INPUT FILE
C FOR PRINCIPAL QUATUM NUMBER 'INSEL' AND
C GIVEN SUB-BLOCK. (UNITS: cm**2)
C 1st DIMENSION: ENERGY INDEX
C
C (I*4) IE = ARRAY INDEX: ENERGY INDEX
C (I*4) I1ST = ARRAY INDEX: FIRST VALID ENERGY INDEX - 1
C (I*4) IN = 'NDATA(2)' - IF 'INSEL > NDATA(2)'
C
C (R*8) AVAL = 'NDATA(2)/INSEL' - IF 'INSEL > NDATA(2)'
C (R*8) ZERO = PARAMETER = EFFECTIVE ZERO (1.0D-72)
C
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C ------------------------------------------------------------
C I4IDFL ADAS PROVIDES UNIQUE INDEX GIVEN N AND L
C I4IDFM ADAS PROVIDES UNIQUE INDEX GIVEN N, L AND M
C
C AUTHOR: PAUL E. BRIDEN (TESSELLA SUPPORT SERVICES PLC)
C K1/0/81
C JET EXT. 4569
C
C DATE: 07/02/91
C
C UPDATE: 19/04/95 H P SUMMERS - EXTENSION TO INCLUDE L AND M
C SUB-SHELL CROSS-SECTIONS
C
C VERSION : 1.2
C DATE : 22-05-2007
C MODIFIED : Martin O'Mullane
C - Remove unused m-subshell data possibility.
C
C-----------------------------------------------------------------------
INTEGER IEDATA(2), ILSEL, INSEL
INTEGER NDATA(2), NENER, NENRGY, NSHELL
REAL*8 ALPHAA(NENRGY), SIGA(NENRGY)
REAL*8 XSIGL(NENRGY,(NSHELL*(NSHELL+1))/2)
REAL*8 XSIGN(NENRGY,NSHELL), XTOT(NENRGY)