tnf.f
148 lines
| 4.6 KiB
| text/x-fortran
|
FortranFixedLexer
r0 | 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 | ||||