2 SUBROUTINE calvis(QV,QC,QR,QI,QS,TT,PP,VIS)
62 use ctlblk_mod
, only: jsta, jend, im, jsta_2l, jend_2u, spval
67 real,
dimension(IM,jsta_2l:jend_2u),
intent(in) :: qv,qc,qr,qi,qs,tt,pp
68 real,
dimension(IM,jsta_2l:jend_2u),
intent(inout) :: vis
71 real celkel,tice,coeflc,coeflp,coeffc,coeffp,exponlc, &
72 exponlp,const1,rhoice,rhowat,qprc,qcld,qrain,qsnow, &
73 qclw,qclice,tv,rhoair,vovermd,conclc,concld,concfc, &
74 concfd,betav,exponfc,exponfp,conclp,concfp
110 IF (qr(i,j) < spval .and. qs(i,j) < spval .and. &
111 qc(i,j) < spval .and. qi(i,j) < spval .and. &
112 tt(i,j) < spval .and. qv(i,j) < spval .and. &
113 pp(i,j) < spval)
THEN
122 tv=tt(i,j)*(h1+d608*qv(i,j))
123 rhoair=pp(i,j)/(rd*tv)
159 vovermd=(1.+qv(i,j))/rhoair+(qclw+qrain)/rhowat+ &
160 (qclice+qsnow)/rhoice
161 conclc = max(0., qclw/vovermd*1000.)
162 conclp = max(0., qrain/vovermd*1000.)
163 concfc = max(0., qclice/vovermd*1000.)
164 concfp = max(0., qsnow/vovermd*1000.)
166 betav=coeffc*concfc**exponfc+coeffp*concfp**exponfp &
167 +coeflc*conclc**exponlc+coeflp*conclp**exponlp &
173 vis(i,j) = 1.e3*min(24.135,const1/betav)