##// END OF EJS Templates
Add restart to nginx container
Add restart to nginx container

File last commit:

r0:b84e1135c2c4
r22:1c8c96a4f254 master
Show More
tnf.f
148 lines | 4.6 KiB | text/x-fortran | FortranFixedLexer
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