2 SUBROUTINE calvis(QV,QC,QR,QI,QS,TT,PP,VIS)
62 use params_mod,
only: h1, d608, rd
63 use ctlblk_mod,
only: jsta, jend, im, jsta_2l, jend_2u, spval, &
64 ista, iend, ista_2l, iend_2u
69 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(in) :: QV,QC,QR,QI,QS,TT,PP
70 real,
dimension(ista_2l:iend_2u,jsta_2l:jend_2u),
intent(inout) :: VIS
73 real CELKEL,TICE,COEFLC,COEFLP,COEFFC,COEFFP,EXPONLC, &
74 exponlp,const1,rhoice,rhowat,qprc,qcld,qrain,qsnow, &
75 qclw,qclice,tv,rhoair,vovermd,conclc,concld,concfc, &
76 concfd,betav,exponfc,exponfp,conclp,concfp
112 IF (qr(i,j) < spval .and. qs(i,j) < spval .and. &
113 qc(i,j) < spval .and. qi(i,j) < spval .and. &
114 tt(i,j) < spval .and. qv(i,j) < spval .and. &
115 pp(i,j) < spval)
THEN
124 tv=tt(i,j)*(h1+d608*qv(i,j))
125 rhoair=pp(i,j)/(rd*tv)
161 vovermd=(1.+qv(i,j))/rhoair+(qclw+qrain)/rhowat+ &
162 (qclice+qsnow)/rhoice
163 conclc = max(0., qclw/vovermd*1000.)
164 conclp = max(0., qrain/vovermd*1000.)
165 concfc = max(0., qclice/vovermd*1000.)
166 concfp = max(0., qsnow/vovermd*1000.)
168 betav=coeffc*concfc**exponfc+coeffp*concfp**exponfp &
169 +coeflc*conclc**exponlc+coeflp*conclp**exponlp &
175 vis(i,j) = 1.e3*min(24.135,const1/betav)