31 SUBROUTINE otlft(PBND,TBND,QBND,SLINDX)
35 use vrbls2d,
only: t500
36 use lookup_mod,
only: thl, rdth, jtb, qs0, sqs, rdq, itb, ptbl, &
37 pl, rdp, the0, sthe, rdthe, ttbl
38 use ctlblk_mod,
only: jsta, jend, im, spval, ista, iend
39 use params_mod,
only: d00, h10e5, capa, elocp, eps, oneps
40 use upp_physics,
only: fpvsnew
45 real,
PARAMETER :: D8202=.820231e0 , h5e4=5.e4 , p500=50000.
49 real,
dimension(ista:iend,jsta:jend),
intent(in) :: PBND,TBND,QBND
50 real,
dimension(ista:iend,jsta:jend),
intent(out) :: SLINDX
51 REAL :: TVP, ESATP, QSATP
52 REAL :: BQS00, SQS00, BQS10, SQS10, P00, P10, P01, P11, BQ, SQ, TQ
53 REAL :: BTHE00, STHE00, BTHE10, STHE10, BTH, STH, TTH
54 REAL :: T00, T10, T01, T11, TBT, QBT, APEBT, TTHBT, PPQ, PP
55 REAL :: TQQ, QQ, TPSP, APESP, TTHES, TP, PARTMP
57 INTEGER :: I, J, ITTBK, IQ, IT, IPTBK, ITH, IP
58 INTEGER :: ITTB, IQTB, IPTB, ITHTB
79 if( tbt < spval )
then
81 apebt = (h10e5/pbnd(i,j))**capa
111 bq=(bqs10-bqs00)*tqq+bqs00
112 sq=(sqs10-sqs00)*tqq+sqs00
139 tpsp = p00+(p10-p00)*ppq+(p01-p00)*tqq &
140 +(p00-p10-p01+p11)*ppq*tqq
141 IF(tpsp <= d00) tpsp = h10e5
142 apesp = (h10e5/tpsp)**capa
143 tthes = tthbt*exp(elocp*qbt*apesp/tthbt)
175 bth=(bthe10-bthe00)*qq+bthe00
176 sth=(sthe10-sthe00)*qq+sthe00
177 tth=(tthes-bth)/sth*rdthe
204 partmp=(t00+(t10-t00)*pp+(t01-t00)*qq &
205 +(t00-t10-t01+t11)*pp*qq)
207 partmp=tbt*apebt*d8202
217 esatp=fpvsnew(partmp)
218 qsatp=eps*esatp/(p500-esatp*oneps)
219 tvp=partmp*(1+0.608*qsatp)
220 slindx(i,j)=t500(i,j)-tvp