C $Id: tnf.f 3304 2011-01-17 15:25:59Z brideout $ C DOUBLE PRECISION FUNCTION TNF(TI,TE,NE,NHP,NO,NH,NN2,NO2,NHE,IER) C C TNF calculates the neutral temperature (tn) given the electron and C neutral temperatures (TE, TN) and the electron, o+, h+, o, h, C n2, o2 and he concentrations (NE, NOP, NHP, NO, NH, NN2, NO2, C NHE). o+ and h+ ions are assumed to be the only ions present. C only coulomb collisions and ion-neutral polarization and C charge-exchange interactions are considered in balancing C the ion gas energy source and sink terms. the solution for C tn is an iterative procedure in which TI is the initial value C of tn for the first iteration. all concentrations are in C units of cm**-3. C C Input: C TI - Ion Temperature (K) C TE - Electron Temperature C NE - Electron concentration (cm**-3) C NHP - H Ion concentration C NO - O concentration C NH - H concentration C NN2 - N2 concentration C NO2 - O2 concentration C NHE - HE concentration C C Output: C IER - If (IER.NE.0) an error has occurred. C C .. Scalar Arguments .. DOUBLE PRECISION NE,NH,NHE,NHP,NN2,NO,NO2,TE,TI INTEGER IER C .. C .. Local Scalars .. DOUBLE PRECISION ALOGEI,ALOGT1,ALOGT2,ALOGT3,CEI,CHPH,CHPN, * CHPO,CONST,CONVRG,COPH,COPN,COPO,COULOG,DIVRG, * DTEST,FACTOR,FEI,FHPN,FOPN,NOP,QHPH,QHPO,QOPH, * QOPO,SQRTT1,T1,T2,T3,TECUBE,TEPTI,TN,TNSAVE INTEGER ITER,NITER C .. C .. Intrinsic Functions .. INTRINSIC ABS,DEXP,DLOG,DSQRT C .. C .. Data statements .. C DATA CONVRG/1.0D0/,NITER/10/,DIVRG/1.D20/ C .. IER = 0 TNF = 0.0D0 C C .....check input parameters..... C write(16,"(5e13.5)") ti,te,ne,nhp,no,nh,nn2,no2,nhe IF (TE.LT.TI .OR. NE.LT.1.D0 .OR. NE.GT.1.D10 .OR. * NHP.LT.0.D0 .OR. NHP.GT.1.D10 .OR. NO.LT.0.D0 .OR. * NO.GT.1.D20 .OR. NH.LT.0.D0 .OR. NH.GT.1.D20 .OR. * NN2.LT.0.D0 .OR. NN2.GT.1.D20 .OR. NO2.LT.0.D0 .OR. * NO2.GT.1.D20 .OR. NHE.LT.0.D0 .OR. NHE.GT.1.D20) THEN TNF = 0.0D0 IER = 3 ELSE C C NHP - H+ CONCENTRATION C NOP = NE - NHP TECUBE = TE**3 C LEI COEFF. CEI = (3.22D-8*NOP+51.12D-8*NHP)*NE/DSQRT(TECUBE) ALOGEI = DLOG(1.D0+TE/TI) TEPTI = TE + TI C .....lin..... C O+ POLARIZATION COPN = 6.6D-14*NN2 + 5.8D-14*NO2 + 2.8D-14*NHE C H+ POLARIZATION CHPN = 3.1D-14*NN2 + 2.8D-14*NO2 + 5.5D-14*NHE C TN = TI ITER = 0 C 10 CONTINUE TNSAVE = TN T1 = TI + TN IF (T1.LT.0.0D0) GO TO 60 SQRTT1 = DSQRT(T1) ALOGT1 = DLOG(T1) T2 = TI + .063D0*TN IF (T2.LT.0.0D0) GO TO 50 ALOGT2 = DLOG(T2) T3 = TN + .063D0*TI IF (T3.LT.0.0D0) GO TO 40 ALOGT3 = DLOG(T3) C O+O CHARGE EXCHANGE COPO = .00627D-14*NO*SQRTT1 C H+H CHARGE EXCHANGE CONST = .02498D-14*NH CHPH = CONST*SQRTT1 C H+O CHARGE EXCHANGE CHPO = .02498D-14*NO*DSQRT(T2) C ..... o+h charge exchange coefficient..... COPH = CONST*DSQRT(T3)*(5.D0+3.D0*DEXP(-227.8D0/TE)+ * DEXP(-325.6D0/TE))/8.D0 C Coulomb Logarithm from Itikawa (JATP, 1975) COULOG = 8.06 + 0.5D0 * DLOG(TECUBE/NE) C qopo = (7.47-.206*dlogt1)**2 QOPO = 58.3D0 C H+H QHPH = (10.2D0-.360D0*ALOGT1)**2 C H+O QHPO = (4.26D0-.0869D0*ALOGT2)**2 C O+H QOPH = (4.26D0-.0869D0*ALOGT3)**2 C E-I HEAT EXCHANGE FEI = CEI*COULOG C O+ N HEAT EXCHANGE FOPN = (COPN+COPO*QOPO+COPH*QOPH)*NOP C H+ N HEAT EXCHANGE FHPN = (CHPN+CHPH*QHPH+CHPO*QHPO)*NHP FACTOR = FEI/(FOPN+FHPN) TN = (1.D0+FACTOR)*TI - FACTOR*TE DTEST = ABS(TN-TNSAVE) IF (DTEST.GE.DIVRG) GO TO 30 ITER = ITER + 1 IF (ITER.GT.NITER) GO TO 20 IF (DTEST.GT.CONVRG) GO TO 10 TNF = TN GO TO 70 20 CONTINUE TN = 0.0D0 IER = 2 GO TO 70 30 CONTINUE TN = 0.0D0 IER = 1 GO TO 70 40 CONTINUE TN = 0.0D0 IER = 1 GO TO 70 50 CONTINUE TN = 0.0D0 IER = 1 GO TO 70 60 CONTINUE TN = 0.0D0 IER = 1 END IF 70 CONTINUE RETURN END