ADAS Subroutine ionbal
SUBROUTINE IONBAL( YEAR , YEARDF, IFAIL , & IZ0 , ITMAX , & DTEV , DDENS , DDENSH, & FABUND & ) C----------------------------------------------------------------------- C ****************** FORTRAN77 SUBROUTINE: IONBAL ********************* C C VERSION : 1.1 C C CALLING PROGRAM: ADAS412 C C PURPOSE : TO EVALUATE EQUILIBRIUM IONIS. BALANCE IN A PLASMA OF C FIXED ELECTRON TEMPERATURE, ELECTRON DENSITY AND NEUTRAL C HYDROGEN DENSITY. C C NOTE : ATOMIC RATE COEFFICIENT DATA ARE EXTRACTED FROM THE C MASTER ELEMENT FILES USING THE SUBROUTINE 'DHDATA'. C C INPUT : (C*2) YEAR = YEAR OF DATA C (C*2) YEARDF = DEFAULT YEAR OF DATA IF REQUESTED YEAR C DOES NOT EXIST. C (I*4) IZ0 = NUCLEAR CHARGE C (I*4) ITMAX = NUMBER OF DTEV(),DDENS(),DDENSH() SETS C (R*8) DTEV() = DLOG10(ELECTRON TEMPERATURES (EV)) C (R*8) DDENS() = DLOG10(ELECTRON DENSITIES (CM-3)) C (R*8) DDENSH() = DLOG10(NEUTRAL. H DENSITIES (CM-3)) C C OUTPUT : (I*4) IFAIL = 0 IF ROUTINE SUCCESSFUL C 1 IF ROUTINE UNSUCCESSFUL C (R*8) FABUND() = FRACTIONAL ABUNDANCES FOR DTEV() ETC. C C PROGRAM : (C*80) FINFO = INFORMATION STRING C (C*2) YEARIN = ACTIVE YEAR OF DATA WHEN CYCLING C (RESET IF NECESSARY FROM YEAR TO YEARDF) C (I*4) NTDIM = MAXIMUM NUMBER OF TEMP,DENS PAIRS C (I*4) NTDIMD = MAXIMUM NUMBER OF DATA TEMP & DENS C (I*4) NZDIM = MAXIMUM NUMBER OF IONISATION STAGES C (I*4) ICLASA() = CLASSES OF DATA TO BE EXTRACTED C (I*4) NCLASS = NUMBER OF DATA CLASSES TO BE EXTRACTED C (I*4) ICLASS = INDEX OF PARTICULAR CLASS C (I*4) IZZ = ION CHARGE C (I*4) IZ1 = ION CHARGE+1 C (I*4) IEVCUT = ENERGY CUTOFF (EV) C (I*4) ITMAXD = NUMBER OF DATA DTEVD() C (I*4) IDMAXD = NUMBER OF DATA DDENS() C (I*4) IZMAXD = NUMBER OF DATA ZDATA() C (I*4) IT = INDEX USED WITH TEMPS C (I*4) ICL = INDEX USED WITH DATA CLASSES C (I*4) N = NO. OF IONIS. STAGES INCL. BARE NUCLEUS C (EQUALS IZ0+1) C (I*4) IZM = ION CHARGE -1 C (R*8) DENS() = ELECTRON DENSITIES (CM-3) C (R*8) DENSH() = NEUTRAL H DENSITIES (CM-3) C (R*8) DTEVD() = DLOG10(DATA ELECTRON TEMPS (EV)) C (R*8) DDENSD() = DLOG10(DATA ELECTRON DENSITIES (CM-3)) C (R*8) ZDATA() = Z1 CHARGES IN DATA SET C (R*8) DRCOFD(,,) = DLOG10(DATA RATE COEFFICIENTS (CM3/S)) C (R*8) DRCOFI() = INTERPOLATION OF DRCOFD(,,) FOR C DTEV() & DDENS() C (R*8) ACDA(,) = INTERPOLATED RECOM. COEFFT (CM3/S) C (R*8) SCDA(,) = INTERPOLATED IONIS. COEFFT (CM3/S) C (R*8) CCDA(,) = INTERPOLATED CXR COEFFT. (CM3/S) C (R*8) POPF() = STAGE FRACTIONAL ABUNDANCES C (R*8) EV = TEMPERATURE (K) EUIVALENT TO 1 EV C (R*8) RH = RATIO (H DENS)/(ELEC. DENS) C (R*8) U = TEMPORARY PARAMETER C (R*8) SUM = TEMPORARY PARAMETER C C ROUTINES: C ROUTINE SOURCE BRIEF DESCRIPTION C ------------------------------------------------------------ C DHDATA ADAS EXTRACT 'SANC0' DATA FROM MASTER FILES C C C AUTHOR : HP SUMMERS C K1/1/57 C JET EXT. 4941 C C DATE : 25/06/91 C C UPDATE : 27/04/92 HP SUMMERS - ADDED DEFAULT YEAR FOR DATA IF C REQUESTED YEAR DOES NOT EXIST. C (ADDED 'YEARDF') IN DHDATA C C VERSION 1.1 DATE: 28-10-97 C RICHARD MARTIN C PUT UNDER SCCS CONTROL (ADAS412). C C---------------------------------------------------------------------- C C CHARACTER*2 YEAR, YEARDF INTEGER IFAIL, ITMAX, IZ0 REAL*8 DDENS(NTDIM), DDENSH(NTDIM) REAL*8 DTEV(NTDIM), FABUND(NTDIM,NZDIM)