44 SUBROUTINE otlft(PBND,TBND,QBND,SLINDX)
49 use lookup_mod, only: thl, rdth, jtb, qs0, sqs, rdq, itb, ptbl, &
50 pl, rdp, the0, sthe, rdthe, ttbl
51 use ctlblk_mod, only: jsta, jend, im, spval, ista, iend
52 use params_mod, only: d00, h10e5, capa, elocp, eps, oneps
58 real,
PARAMETER :: d8202=.820231e0 , h5e4=5.e4 , p500=50000.
62 real,
dimension(ista:iend,jsta:jend),
intent(in) :: pbnd,tbnd,qbnd
63 real,
dimension(ista:iend,jsta:jend),
intent(out) :: slindx
64 REAL :: tvp, esatp, qsatp
65 REAL :: bqs00, sqs00, bqs10, sqs10, p00, p10, p01, p11, bq, sq, tq
66 REAL :: bthe00, sthe00, bthe10, sthe10, bth, sth, tth
67 REAL :: t00, t10, t01, t11, tbt, qbt, apebt, tthbt, ppq, pp
68 REAL :: tqq, qq, tpsp, apesp, tthes, tp, partmp
70 INTEGER :: i, j, ittbk, iq, it, iptbk, ith, ip
71 INTEGER :: ittb, iqtb, iptb, ithtb
92 if( tbt < spval )
then
94 apebt = (h10e5/pbnd(i,j))**capa
124 bq=(bqs10-bqs00)*tqq+bqs00
125 sq=(sqs10-sqs00)*tqq+sqs00
152 tpsp = p00+(p10-p00)*ppq+(p01-p00)*tqq &
153 +(p00-p10-p01+p11)*ppq*tqq
154 IF(tpsp <= d00) tpsp = h10e5
155 apesp = (h10e5/tpsp)**capa
156 tthes = tthbt*exp(elocp*qbt*apesp/tthbt)
188 bth=(bthe10-bthe00)*qq+bthe00
189 sth=(sthe10-sthe00)*qq+sthe00
190 tth=(tthes-bth)/sth*rdthe
217 partmp=(t00+(t10-t00)*pp+(t01-t00)*qq &
218 +(t00-t10-t01+t11)*pp*qq)
220 partmp=tbt*apebt*d8202
231 qsatp=eps*esatp/(p500-esatp*oneps)
232 tvp=partmp*(1+0.608*qsatp)
233 slindx(i,j)=t500(i,j)-tvp
subroutine otlft(PBND, TBND, QBND, SLINDX)
otlft() computes lifted index.
elemental real function, public fpvsnew(t)