ADAS Subroutine v2bnmod
SUBROUTINE V2BNMOD(IPOSNT , JDENS , JTE , NREP , F1 ,
& F2 , F3 , BNCALC , BNACT , XPOP ,
& IMAX , DENSH , DENS , DENSP , TE ,
& TP , BMENER , FLUX , DEXPTE , ALFA ,
& S , DSLPATH, NIMP , ZIMPA , ZEFF ,
& DNIMPA)
IMPLICIT REAL*8 (A-H,O-Z)
C-----------------------------------------------------------------------
C
C ****************** FORTRAN77 SUBROUTINE: V2BNMOD ********************
C
C VERSION: (ADAS91) - SEE SC CS COMMENTS FOR VERSION NO.
C
C PURPOSE: THIS CODE PERFORMS THE ACTUAL CALCULATIONS FOR ADAS 310
C IT IS IN AN INCOMPLETE VERSION AND THESE COMMENTS DO NOT
C YET FOLLOW THE STANDARD ADAS PATTERN.
C-----------------------------------------------------------------------
C CALCULATION OF BN -1 CASE A,B
C
C EXCIT. XSECT. OPTIONS:
C ----------------------
C (A) VAN REGEMORTER - ELECTRONS
C (B) IMPACT PARAMETER - ELECTRONS
C PROTONS
C (C) PERCIVAL-RICHARDS - ELECTRONS
C - PROTONS & ZIMP IONS
C (D) VAINSHTEIN - PROTONS & ZIMP IONS
C (E) SPECIAL LOW LEVEL - ELECTRONS
C - PROTONS & ZIMP IONS
C IONIS. XSECT. OPTIONS:
C ----------------------
C (A) ECIP - ELECTRONS
C (B) PERCIVAL-RICHARDS - PROTONS & ZIMP IONS
C (C) SPECIAL LOW LEVEL - ELECTRONS
C - PROTONS & ZIMP IONS
C CX RECOM. XSECT. OPTIONS:
C -------------------------
C (A) SPECIAL - H(1S) DONOR
C
C
C NOTES
C -----
C (A) SPECIAL LOW LEVEL DATA ACCESSED BY SPECIFIC ION ROUTINE
C
C ION ROUTINE ACCESSED FILE ACQUIS. ROUTINE
C --- ------- ------------- ---------------
C H0 NSUPH1 IONATOM.DATA(H) QH
C HLIKE.DATA(AGG1984) -
C
C
C (B) SPECIAL CHARGE EXCHANGE DATA FROM CHEXDATA.DATA
C
C ION DONOR ROUTINE DATA MEMBER ACQUIS. ROUTINE
C --- ----- ------- ----------- ---------------
C H0 H(1S) BNQCTB H1NEW1 BNQCTB
C
C
C
C
C INPUT
C IPOSNT = 0 BYPASS
C = 1 LEAVE W1.NE.0 AND FORCE DENSH.EQ.0
C = 2 FORCE W1.EQ.0 AND FORCE DENSH.EQ.0
C = 3 LEAVE W1.NE.0 AND LEAVE DENSH.NE.0
C = 4 FORCE W1.EQ.0 AND LEAVE DENSH.NE.0
C = 5 BYPASS
C JDENS = DENSITY SELECTOR
C JTE = TEMPERATURE SELECTOR
C NREP(I) = PRINCIPAL QUANTUM NUMBER OF ITH REPRESENTATIVE LEVEL
C XPOP(I) = POPULATIONS OF REPRESENTATIVE LEVELS
C IMAX = NUMBER OF REPRESENTATIVE LEVELS
C DENSH = NEUTRAL HYDROGEN DENSITY IN BEAM (CM-3)
C DENS = ELECTRON DENSITY (CM-3)
C DENSP = PROTON/DEUTERON DENSITY (CM-3)
C TE = ELECTRON TEMPERATURE (K)
C TP = PROTON/DEUTERON TEMPERATURE (K) (SAME FOR ZIMP IONS)
C BMENER = NEUTRAL BEAM PARTICLE ENERGY (EV/AMU)
C FLUX = NEUTRAL BEAM FLUX (CM-2 SEC-1)
C DEXPTE(I)= EXP(ATE/NREP(I)**2) FOR ITHE REPRESENTATIVE LEVEL
C DSLPATH = STRING CONTAINING PATH TO THE REQUIRED INPUT FILES
C CALLED BY NSUPH1.FOR
C
C OUTPUT
C F1 =
C F2 =
C F3 =
C BNCALC =
C BNACT =
C ALPHA =
C S =
C
C INPUT SPECIFICATION FOR STREAM 51 DATA FILE
C
C NUCCHG = NUCLEAR CHARGE
C EXMEMB = DATA SET NAME OF EXPANSION FILE USED BY CLDLBN2
C CXMEMB = DATA SET NAME FOR CHARGE EXCHANGE DATA TO BE USED BY
C BNQCTB
C IBLOCK = SUB-BLOCK SELECTOR FOR CXMEMB
C
C JDENSM = NUMBER OF DENSITIES
C JTEM = NUMBER OF TEMPERATURES
C TS = EXTERNAL RADIATION FIELD TEMPERATURE (K)
C W = EXTERNAL RADIATION FIELD DILUTION FACTOR (HIGH LEVELS)
C Z = RECOMBINING ION CHARGE (Z1 IN USUAL NOTATION)
C CION = MULTIPLIER OF GROUND LEVEL ELECTRON IMPACT IONISATION
C RATE COEFFICIENT
C CPY = MULTIPIER ON ELECTRON IMPACT EXCITATION RATE COEFFICIENT
C FORM THE GROUND LEVEL
C W1 = EXTERNAL RADIATION FIELD DILUTION FACTOR FOR PHOTO-IONI
C SATION FORM THE GROUND LEVEL.
C
C NIP = RANGE OF DELTA N FOR IMPACT PARAMETER XSECTS. (LE.4)
C INTD = ORDER OF MAXWELL QUADRATURE FOR XSECTS. (LE.3)
C IPRS = 0 DEFAULT TO VAN REGEMORTER XSECTS. BEYOND NIP RANGE
C 1 USE PERCIVAL-RICHARDS XSECTS. BEYOND NIP RANGE
C ILOW = 0 NO SPECIAL LOW LEVEL DATA ACCESSED
C 1 SPECIAL LOW LEVEL DATA ACCESSED
C IONIP = 0 NO ION IMPACT COLLISIONS INCLUDED
C 1 ION IMPACT EXCITATION AND IONISATION INCLUDED
C NIONIP = RANGE OF DELTA N FOR ION IMPACT EXCITATION XSECTS.
C ILPRS = 0 DEFAULT TO VAINSHTEIN XSECTS.
C 1 USE LODGE-PERCIVAL-RICHARDS XSECTS.
C IVDISP = 0 ION IMPACT AT THERMAL MAXWELLIAN ENERGIES
C 1 ION IMPACT AT DISPLACED THERMAL ENERGIES ACCORDING
C TO THE NEUTRAL BEAM ENERGY PARAMETER
C * IF(IVDISP=0 THEN SPECIAL LOW LEVEL DATA FOR ION
C IMPACT IS NOT SUBSTITUTED - ONLY VAINSHTEIN AND
C LODGE ET AL. OPTIONS ARE OPEN. ELECTRON IMPACT
C DATA SUBSTITUTION DOES OCCUR.
C 1 = PLASMA Z EFFECTIVE
C NOSCAN = 0 EXECUTE SCANNING VERSION OF CODE
C 1 EXECUTE SIMULTANEOUS IMPURITY NO SCAN RUN
C NIMP = NUMBER OF IMPURITIES (EXCL.H+) IN NO SCAN CASE
C ROUTINES:
C ROUTINE SOURCE BRIEF DESCRIPTION
C -------------------------------------------------------------
C MATINV ADAS MATRIX INVERSION WITH ACCOMPANYING
C SOLUTION OF LINEAR EQUATIONS
C DIEL_310 ????
C
C
C
C ********* H.P.SUMMERS, JET 11 APR 1990 ***************
C ********* ALT. 17 JUL 1991 SUB. RQINEW,
C RQLNEW, RQVNEW
C ********* ALT. 10 JAN 1994 ALLOW MULTIPLE
C SIMULT.IMPURITY
C-----------------------------------------------------------------------
C
C-----------------------------------------------------------------------
C
C UPDATE: 19/01/94 - JONATHAN NASH - TESSELLA SUPPORT SERVICES PLC
C
C THE FOLLOWING MODIFICATIONS HAVE BEEN MADE TO THE SUBROUTINE:
C
C 1) THE INPUT FILE UNIT NUMBER HAS BEEN CHANGED FROM 5 TO 51.
C
C 2) THE SIZES OF 'EXMEMB' AND 'CXMEMB' HAVE BEEN INCREASED
C AS THEY NOW CONTAIN THE FULL DATA SET NAMES RATHER THAN
C JUST THE MEMBER NAMES.
C
C 3) A PARAMETER FLAG HAS BEEN ADDED TO SWITCH ON/OFF
C DIAGNOSTIC PRINTING (UNIT 6).
C
C NOTES: NO ATTEMPT HAS BEEN MADE TO RESTRUCTURE THE ROUTINE. RATHER
C THE MINIMUM AMOUNT OF WORK TO INTEGRATE THE ROUTINE INTO
C ADAS310 HAS BEEN COMPLETED.
C
C UNIX-IDL PORT:
C
C VERSION: 1.1 DATE: 12-12-95
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - FIRST VERSION
C - REPLACED ALL HOLLERITH CONSTANTS H0 ANF H1 WITH
C H<SPACE>
C - REPLACED HOLLERITH CONSTANTS WITH STANDARD STRINGS
C IN FORMAT STATEMENTS 117, 128 AND 129.
C - TIDIED UP PARTS OF THE COMMENTS AND CODE
C - ADDED STRING DSLPATH TO BE USED TO CONSTRUCT UNIX
C STYLE FILENAMES IN NSUPH1.FOR
C
C VERSION: 1.2 DATE: 24-01-96
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - ADDED NBENG TO INPUT LIST AND CALL TO BNQCTB
C
C VERSION: 1.3 DATE: 24-01-96
C MODIFIED: TIM HAMMOND (TESSELLA SUPPORT SERVICES PLC)
C - REVERSED ABOVE CHANGE
C
C VERSION: 1.4 DATE: 27-09-96
C MODIFIED: WILLIAM OSBORN + HUGH SUMMERS
C - REMOVED MISTAKEN TEST FOR 1.LE.0.0D0 IN
C THE CASE OF MULTIPLE IMPURITIES.
C VERSION: 1.5
C MODIFIED: HARVEY ANDERSON
C - IMPROVED THE HANDLING OF MULTIPLE IMPURITIES TO
C INCLUDE HYDROGEN.
C - ALTERED THE CALLING STRUCTURE OF THIS ROUTINE TO
C ALLOW ADDITIONAL VARIABLES TO BE PASSED TO RUN310.
C - INCREASED THE SIZE OF THE ARRAYS DENSA, DENPA, TEA
C AND TPA FROM 10 TO 25.
C
C VERSION : 1.6
C DATE : 04-04-2000
C MODIFIED: RICHARD MARTIN
C - CHANGED NAME OF DIEL SUBROUTINE TO DIEL_310
C
C VERSION : 1.7
C DATE : 22-02-2005
C MODIFIED: Martin O'Mullane
C - A real*8 parameter of cldlbn2 which was passed as an
C integer (1) to cldlbn2 is changed to a double (1.0D0).
C - Direct debug output stream to unit 0.
C - Remove IBM error underflow and errset routines.
C
C VERSION : 1.8
C DATE : 27-06-2007
C MODIFIED: Martin O'Mullane
C - Add lpass as argument to cldlbn2. Set to .TRUE.
C
C-----------------------------------------------------------------------
CHARACTER*80 DSLPATH
INTEGER IMAX, IPOSNT, JDENS, JTE
INTEGER NIMP, NREP(31)
REAL*8 ALFA, BMENER, BNACT(30)
REAL*8 BNCALC(30), DENS, DENSH, DENSP
REAL*8 DEXPTE(550), DNIMPA(10), F1(30), F2(30)
REAL*8 F3(30), FLUX, S, TE
REAL*8 TP, XPOP(2), ZEFF
REAL*8 ZIMPA(10)