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)