*=*=*=*= vdif_k.html =*=*=*=*
SUBROUTINE vdif_k(ngrid,nlay, s ptimestep,pz0,pg,pzlev,pzlay,pu,pv,ph,pcdv,pkv,pkh) IMPLICIT NONE #include "planete.h" INTEGER ngrid,nlay REAL ptimestep REAL pzlay(ngrid,nlay),pzlev(ngrid,nlay+1) REAL pz0 REAL pu(ngrid,nlay),pv(ngrid,nlay),ph(ngrid,nlay) REAL pg,pcdv(ngrid) REAL pkv(ngrid,nlay+1),pkh(ngrid,nlay+1) INTEGER ig,il REAL zdu,zdv,zri,zdvodz2,zdz,z1,lmix REAL karman SAVE karman DATA lmixmin,emin_turb,karman/100.,1.e-4,.4/ DO ig=1,ngrid pkv(ig,1)=0. pkh(ig,1)=0. pkv(ig,nlay+1)=0. pkh(ig,nlay+1)=0. ENDDO DO il=2,nlay DO ig=1,ngrid z1=pzlev(ig,il)+pz0 lmix=karman*z1/(1.+karman*z1/lmixmin) zdu=pu(ig,il)-pu(ig,il-1) zdv=pv(ig,il)-pv(ig,il-1) zdz=pzlay(ig,il)-pzlay(ig,il-1) zdvodz2=(zdu*zdu+zdv*zdv)/(zdz*zdz) IF(zdvodz2.LT.1.e-5) THEN pkv(ig,il)=lmix*sqrt(emin_turb) ELSE zri=2.*pg*(ph(ig,il)-ph(ig,il-1)) s / (zdz* (ph(ig,il)+ph(ig,il-1)) *zdvodz2 ) pkv(ig,il)= s lmix*sqrt(MAX(lmix*lmix*zdvodz2*(1-zri/.4),emin_turb)) ENDIF pkh(ig,il)=pkv(ig,il) ENDDO ENDDO RETURN END