4 SUBROUTINE drag_noro (nlon,nlev,dtime,paprs,pplay,
5 e pmea,pstd, psig, pgam, pthe,ppic,pval,
8 s pulow, pvlow, pustr, pvstr,
37 REAL paprs(klon,
klev+1)
39 REAL pmea(nlon),pstd(nlon),psig(nlon),pgam(nlon),pthe(nlon)
40 REAL ppic(nlon),pval(nlon)
41 REAL pulow(nlon),pvlow(nlon),pustr(nlon),pvstr(nlon)
42 REAL t(nlon,nlev),
u(nlon,nlev),
v(nlon,nlev)
43 REAL d_t(nlon,nlev), d_u(nlon,nlev), d_v(nlon,nlev)
45 INTEGER i,
k, kgwd, kdx(nlon), ktest(nlon)
50 REAL pdtdt(klon,
klev), pdudt(klon,
klev), pdvdt(klon,
klev)
52 REAL papmf(klon,
klev),papmh(klon,
klev+1)
95 zgeom(
i,
k) = zgeom(
i,
k+1) + rd * (pt(
i,
k)+pt(
i,
k+1))/2.0
96 . * log(papmf(
i,
k+1)/papmf(
i,
k))
104 . papmh, papmf, zgeom,
106 . pmea, pstd, psig, pgam, pthe, ppic,pval,
117 . +pdudt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
120 . +pdvdt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
129 r , paphm1,papm1,pgeom1,ptm1,pum1,pvm1
130 r , pmea, pstd, psig, pgamma, ptheta, ppic, pval
197 integer kgwd, jl, ilevp1, jk, ji
198 real zdelp, ztemp, zforc, ztend
199 real rover, zb, zc, zconb, zabsv
200 real zzd1, ratio, zbet, zust,zvst, zdis
206 real pum1(nlon,nlev),
209 * pmea(nlon),pstd(nlon),psig(nlon),
210 * pgamma(nlon),ptheta(nlon),ppic(nlon),pval(nlon),
213 * paphm1(nlon,nlev+1)
215 integer kdx(nlon),ktest(nlon)
229 real ztau(klon,
klev+1),
230 $ ztauf(klon,
klev+1),
231 * zstab(klon,
klev+1),
246 real ztmst, ptsphy, zrtmst
292 * , ikcrit, ikcrith, icrit, ikenvh,iknu,iknu2
293 * , paphm1, papm1 , pum1 , pvm1 , ptm1 , pgeom1, pstd
294 * , zrho , zri , zstab , ztau , zvph , zpsi, zzdep
296 * , ptheta,pgamma,pmea,ppic,pval,znu ,zd1, zd2, zdmod )
311 * , ktest , icrit, ikenvh, iknu
312 * , zrho , zstab, zvph , pstd, psig, pmea, ppic
325 * , kgwd , kdx , ktest
327 * , paphm1, zrho , zstab , zvph
329 * , zdmod , psig , pstd)
340 do 510 jl=kidia,kfdia
356 do 523 ji=kidia,kfdia
357 if(ktest(ji).eq.1)
then
359 zdelp=paphm1(ji,jk+1)-paphm1(ji,jk)
360 ztemp=-rg*(ztau(ji,jk+1)-ztau(ji,jk))/(zvph(ji,ilevp1)*zdelp)
361 zdudt(ji)=(pulow(ji)*zd1(ji)-pvlow(ji)*zd2(ji))*ztemp/zdmod(ji)
362 zdvdt(ji)=(pvlow(ji)*zd1(ji)+pulow(ji)*zd2(ji))*ztemp/zdmod(ji)
366 zforc=sqrt(zdudt(ji)**2+zdvdt(ji)**2)+1.e-12
367 ztend=sqrt(pum1(ji,jk)**2+pvm1(ji,jk)**2)/ztmst+1.e-12
369 if(zforc.ge.rover*ztend)
then
370 zdudt(ji)=rover*ztend/zforc*zdudt(ji)
371 zdvdt(ji)=rover*ztend/zforc*zdvdt(ji)
376 if(jk.ge.ikenvh(ji))
then
377 zb=1.0-0.18*pgamma(ji)-0.04*pgamma(ji)**2
378 zc=0.48*pgamma(ji)+0.3*pgamma(ji)**2
379 zconb=2.*ztmst*gkwake*psig(ji)/(4.*pstd(ji))
380 zabsv=sqrt(pum1(ji,jk)**2+pvm1(ji,jk)**2)/2.
381 zzd1=zb*cos(zpsi(ji,jk))**2+zc*sin(zpsi(ji,jk))**2
382 ratio=(cos(zpsi(ji,jk))**2+pgamma(ji)*sin(zpsi(ji,jk))**2)/
383 * (pgamma(ji)*cos(zpsi(ji,jk))**2+sin(zpsi(ji,jk))**2)
384 zbet=max(0.,2.-1./ratio)*zconb*zzdep(ji,jk)*zzd1*zabsv
388 zdudt(ji)=-pum1(ji,jk)/ztmst
389 zdvdt(ji)=-pvm1(ji,jk)/ztmst
398 zdudt(ji)=zdudt(ji)*(zbet/(1.+zbet))
399 zdvdt(ji)=zdvdt(ji)*(zbet/(1.+zbet))
401 pvom(ji,jk)=zdudt(ji)
402 pvol(ji,jk)=zdvdt(ji)
403 zust=pum1(ji,jk)+ztmst*zdudt(ji)
404 zvst=pvm1(ji,jk)+ztmst*zdvdt(ji)
405 zdis=0.5*(pum1(ji,jk)**2+pvm1(ji,jk)**2-zust**2-zvst**2)
407 zvidis(ji)=zvidis(ji)+zdis*zdelp
408 zdtdt(ji)=zdedt(ji)/rcpd
425 * , kkcrit, kkcrith, kcrit
426 * , kkenvh, kknu , kknu2
427 * , paphm1, papm1 , pum1 , pvm1 , ptm1 , pgeom1, pstd
428 * , prho , pri , pstab , ptau , pvph ,ppsi, pzdep
430 * , ptheta, pgamma, pmea, ppic, pval
431 * , pnu , pd1 , pd2 ,pdmod )
489 integer kkcrit(nlon),kkcrith(nlon),kcrit(nlon),
490 * ktest(nlon),kkenvh(nlon)
493 real paphm1(nlon,
klev+1),papm1(nlon,
klev),pum1(nlon,
klev),
495 * prho(nlon,
klev+1),pri(nlon,
klev+1),pstab(nlon,
klev+1),
496 * ptau(nlon,
klev+1),pvph(nlon,
klev+1),ppsi(nlon,
klev+1),
498 real pulow(nlon),pvlow(nlon),ptheta(nlon),pgamma(nlon),pnu(nlon),
499 * pd1(nlon),pd2(nlon),pdmod(nlon)
500 real pstd(nlon),pmea(nlon),ppic(nlon),pval(nlon)
508 integer ilevm1, ilevm2, ilevh
509 real zcons1, zcons2,zcons3, zhgeo
510 real zu, zphi, zvt1,zvt2, zst, zvar, zdwind, zwind
511 real zstabm, zstabp, zrhom, zrhop,
alpha
512 real zggeenv, zggeom1,zgvar
514 logical ll1(klon,
klev+1)
515 integer kknu(klon),kknu2(klon),kknub(klon),kknul(klon),
516 * kentp(klon),ncount(klon)
518 real zhcrit(klon,
klev),zvpf(klon,
klev),
520 real znorm(klon),zb(klon),zc(klon),
521 * zulow(klon),zvlow(klon),znup(klon),znum(klon)
564 do 2001 jl=kidia,kfdia
569 pgamma(jl) =max(pgamma(jl),gtsec)
583 do 2002 jk=
klev,ilevh,-1
584 do 2003 jl=kidia,kfdia
585 lo=(paphm1(jl,jk)/paphm1(jl,
klev+1)).ge.gsigcr
589 zhcrit(jl,jk)=ppic(jl)
590 zhgeo=pgeom1(jl,jk)/rg
591 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
592 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
595 if(.not.ll1(jl,ilevh))kknu(jl)=ilevh
598 do 2004 jk=
klev,ilevh,-1
599 do 2005 jl=kidia,kfdia
600 zhcrit(jl,jk)=ppic(jl)-pval(jl)
601 zhgeo=pgeom1(jl,jk)/rg
602 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
603 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
606 if(.not.ll1(jl,ilevh))kknu2(jl)=ilevh
609 do 2006 jk=
klev,ilevh,-1
610 do 2007 jl=kidia,kfdia
611 zhcrit(jl,jk)=amax1(ppic(jl)-pmea(jl),pmea(jl)-pval(jl))
612 zhgeo=pgeom1(jl,jk)/rg
613 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
614 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
617 if(.not.ll1(jl,ilevh))kknub(jl)=ilevh
621 do 2010 jl=kidia,kfdia
622 kknu(jl)=min(kknu(jl),nktopg)
623 kknu2(jl)=min(kknu2(jl),nktopg)
624 kknub(jl)=min(kknub(jl),nktopg)
634 do 2107 jl=kidia,kfdia
636 pstab(jl,
klev+1) =0.0
638 pri(jl,
klev+1) =9999.0
658 do 222 jl=kidia,kfdia
659 if(ktest(jl).eq.1)
then
660 zdp(jl,jk)=papm1(jl,jk)-papm1(jl,jk-1)
661 prho(jl,jk)=2.*paphm1(jl,jk)*zcons1/(ptm1(jl,jk)+ptm1(jl,jk-1))
662 pstab(jl,jk)=2.*zcons2/(ptm1(jl,jk)+ptm1(jl,jk-1))*
663 * (1.-rcpd*prho(jl,jk)*(ptm1(jl,jk)-ptm1(jl,jk-1))/zdp(jl,jk))
664 pstab(jl,jk)=max(pstab(jl,jk),gssec)
673 do 2115 jk=
klev,ilevh,-1
674 do 2116 jl=kidia,kfdia
675 if(jk.ge.kknub(jl).and.jk.le.kknul(jl))
then
676 pulow(jl)=pulow(jl)+pum1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
677 pvlow(jl)=pvlow(jl)+pvm1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
681 do 2110 jl=kidia,kfdia
682 pulow(jl)=pulow(jl)/(paphm1(jl,kknul(jl)+1)-paphm1(jl,kknub(jl)))
683 pvlow(jl)=pvlow(jl)/(paphm1(jl,kknul(jl)+1)-paphm1(jl,kknub(jl)))
684 znorm(jl)=max(sqrt(pulow(jl)**2+pvlow(jl)**2),gvsec)
685 pvph(jl,
klev+1)=znorm(jl)
690 do 2112 jl=kidia,kfdia
691 lo=(pulow(jl).lt.gvsec).and.(pulow(jl).ge.-gvsec)
693 zu=pulow(jl)+2.*gvsec
697 zphi=atan(pvlow(jl)/zu)
698 ppsi(jl,
klev+1)=ptheta(jl)*rpi/180.-zphi
699 zb(jl)=1.-0.18*pgamma(jl)-0.04*pgamma(jl)**2
700 zc(jl)=0.48*pgamma(jl)+0.3*pgamma(jl)**2
701 pd1(jl)=zb(jl)-(zb(jl)-zc(jl))*(sin(ppsi(jl,
klev+1))**2)
702 pd2(jl)=(zb(jl)-zc(jl))*sin(ppsi(jl,
klev+1))*cos(ppsi(jl,
klev+1))
703 pdmod(jl)=sqrt(pd1(jl)**2+pd2(jl)**2)
709 do 212 jl=kidia,kfdia
710 if(ktest(jl).eq.1)
then
711 zvt1 =pulow(jl)*pum1(jl,jk)+pvlow(jl)*pvm1(jl,jk)
712 zvt2 =-pvlow(jl)*pum1(jl,jk)+pulow(jl)*pvm1(jl,jk)
713 zvpf(jl,jk)=(zvt1*pd1(jl)+zvt2*pd2(jl))/(znorm(jl)*pdmod(jl))
722 do 214 jl=kidia,kfdia
723 if(ktest(jl).eq.1)
then
724 zdp(jl,jk)=papm1(jl,jk)-papm1(jl,jk-1)
725 pvph(jl,jk)=((paphm1(jl,jk)-papm1(jl,jk-1))*zvpf(jl,jk)+
726 * (papm1(jl,jk)-paphm1(jl,jk))*zvpf(jl,jk-1))
728 if(pvph(jl,jk).lt.gvsec)
then
741 do 2211 jk=ilevh,
klev
742 do 221 jl=kidia,kfdia
743 if(ktest(jl).eq.1)
then
744 if(jk.ge.(kknub(jl)+1).and.jk.le.kknul(jl))
then
745 zst=zcons2/ptm1(jl,jk)*(1.-rcpd*prho(jl,jk)*
746 * (ptm1(jl,jk)-ptm1(jl,jk-1))/zdp(jl,jk))
747 pstab(jl,
klev+1)=pstab(jl,
klev+1)+zst*zdp(jl,jk)
748 pstab(jl,
klev+1)=max(pstab(jl,
klev+1),gssec)
749 prho(jl,
klev+1)=prho(jl,
klev+1)+paphm1(jl,jk)*2.*zdp(jl,jk)
750 * *zcons1/(ptm1(jl,jk)+ptm1(jl,jk-1))
756 do 2212 jl=kidia,kfdia
757 pstab(jl,
klev+1)=pstab(jl,
klev+1)/(papm1(jl,kknul(jl))
758 * -papm1(jl,kknub(jl)))
759 prho(jl,
klev+1)=prho(jl,
klev+1)/(papm1(jl,kknul(jl))
760 * -papm1(jl,kknub(jl)))
770 do 231 jl=kidia,kfdia
771 if(ktest(jl).eq.1)
then
772 zdwind=max(abs(zvpf(jl,jk)-zvpf(jl,jk-1)),gvsec)
773 pri(jl,jk)=pstab(jl,jk)*(zdp(jl,jk)
774 * /(rg*prho(jl,jk)*zdwind))**2
775 pri(jl,jk)=max(pri(jl,jk),grcrit)
785 do 233 jl=kidia,kfdia
791 do 234 jl=kidia,kfdia
793 if(ktest(jl).eq.1)
then
795 if (jk.ge.kknub(jl))
then
798 zwind=(pulow(jl)*pum1(jl,jk)+pvlow(jl)*pvm1(jl,jk))/
799 * max(sqrt(pulow(jl)**2+pvlow(jl)**2),gvsec)
800 zwind=max(sqrt(zwind**2),gvsec)
801 zdelp=paphm1(jl,jk+1)-paphm1(jl,jk)
802 zstabm=sqrt(max(pstab(jl,jk ),gssec))
803 zstabp=sqrt(max(pstab(jl,jk+1),gssec))
806 pnu(jl) = pnu(jl) + (zdelp/rg)*
807 * ((zstabp/zrhop+zstabm/zrhom)/2.)/zwind
808 if((znum(jl).le.gfrcrit).and.(pnu(jl).gt.gfrcrit)
809 * .and.(kkenvh(jl).eq.
klev))
822 do 235 jl=kidia,kfdia
827 do 236 jk=
klev-1,2,-1
828 do 236 jl=kidia,kfdia
830 if(ktest(jl).eq.1)
then
833 zwind=(pulow(jl)*pum1(jl,jk)+pvlow(jl)*pvm1(jl,jk))/
834 * max(sqrt(pulow(jl)**2+pvlow(jl)**2),gvsec)
835 zwind=max(sqrt(zwind**2),gvsec)
836 zdelp=paphm1(jl,jk+1)-paphm1(jl,jk)
837 zstabm=sqrt(max(pstab(jl,jk ),gssec))
838 zstabp=sqrt(max(pstab(jl,jk+1),gssec))
841 znup(jl) = znup(jl) + (zdelp/rg)*
842 * ((zstabp/zrhop+zstabm/zrhom)/2.)/zwind
843 if((znum(jl).le.rpi/2.).and.(znup(jl).gt.rpi/2.)
844 * .and.(kkcrith(jl).eq.
klev))
851 do 237 jl=kidia,kfdia
852 kkcrith(jl)=min0(kkcrith(jl),kknu2(jl))
853 kkcrith(jl)=max0(kkcrith(jl),ilevh*2)
859 do 252 jl=kidia,kfdia
860 if(jk.ge.kkenvh(jl))
then
861 lo=(pum1(jl,jk).lt.gvsec).and.(pum1(jl,jk).ge.-gvsec)
863 zu=pum1(jl,jk)+2.*gvsec
867 zphi=atan(pvm1(jl,jk)/zu)
868 ppsi(jl,jk)=ptheta(jl)*rpi/180.-zphi
877 do 253 jl=kidia,kfdia
878 if(jk.ge.kkenvh(jl))
then
880 * (pgeom1(jl,kkenvh(jl))+pgeom1(jl,kkenvh(jl)-1))/2.)
881 zggeom1=amax1(pgeom1(jl,jk),1.)
882 zgvar=amax1(pstd(jl)*rg,1.)
884 pzdep(jl,jk)=(pgeom1(jl,kkenvh(jl)-1)-pgeom1(jl, jk))/
885 * (pgeom1(jl,kkenvh(jl)-1)-pgeom1(jl,
klev))
896 * , ktest, kcrit, kkenvh
898 * , prho , pstab , pvph , pstd, psig
899 * , pmea , ppic , ptau
954 * ktest(nlon),kkenvh(nlon),kknu(nlon)
956 real prho(nlon,nlev+1),pstab(nlon,nlev+1),ptau(nlon,nlev+1),
958 * pgeom1(nlon,nlev),pstd(nlon)
961 real pmea(nlon),ppic(nlon)
969 real zblock, zvar,
zeff
988 do 301 jl=kidia,kfdia
989 if(ktest(jl).eq.1)
then
993 if(kkenvh(jl).eq.
klev)
then
996 zblock=(pgeom1(jl,kkenvh(jl))+pgeom1(jl,kkenvh(jl)+1))/2./rg
999 zvar=ppic(jl)-pmea(jl)
1000 zeff=amax1(0.,zvar-zblock)
1002 ptau(jl,
klev+1)=prho(jl,
klev+1)*gkdrag*psig(jl)*
zeff**2
1003 * /4./pstd(jl)*pvph(jl,
klev+1)*pdmod(jl)*sqrt(pstab(jl,
klev+1))
1008 lo=(ptau(jl,
klev+1).lt.gtsec).or.(kcrit(jl).ge.kknu(jl))
1009 * .or.(pvph(jl,
klev+1).lt.gvcrit)
1024 * , kgwd, kdx , ktest
1026 * , paphm1, prho , pstab , pvph , pri , ptau
1027 * , pdmod , psig , pvar)
1092 INTEGER kkcrith(nlon),kcrit(nlon)
1093 * ,kdx(nlon) , ktest(nlon)
1096 REAL paphm1(nlon,nlev+1), pstab(nlon,nlev+1),
1097 * prho(nlon,nlev+1), pvph(nlon,nlev+1),
1098 * pri(nlon,nlev+1), ptau(nlon,nlev+1)
1100 REAL pdmod (nlon) , psig(nlon),
1108 integer ilevh, ji, kgwd, jl, jk
1109 real zsqr, zalfa, zriw, zdel, zb, zalpha,zdz2n
1111 REAL zdz2 (klon,
klev) , znorm(klon) , zoro(klon)
1112 REAL ztau (klon,
klev+1)
1131 DO 400 jl=kidia,kfdia
1132 if (ktest(jl).eq.1)
then
1133 zoro(jl)=psig(jl)*pdmod(jl)/4./max(pvar(jl),1.0)
1149 do 411 jl=kidia,kfdia
1150 if (ktest(jl).eq.1)
then
1151 IF(jk.GT.kkcrith(jl))
THEN
1152 ptau(jl,jk)=ztau(jl,
klev+1)
1156 ptau(jl,jk)=grahilo*ztau(jl,
klev+1)
1173 do 421 jl=kidia,kfdia
1174 if(ktest(jl).eq.1)
then
1175 IF(jk.LT.kkcrith(jl))
THEN
1176 znorm(jl)=gkdrag*prho(jl,jk)*sqrt(pstab(jl,jk))*pvph(jl,jk)
1178 zdz2(jl,jk)=ptau(jl,jk+1)/max(znorm(jl),gssec)
1191 do 431 jl=kidia,kfdia
1192 if(ktest(jl).eq.1)
then
1194 IF(jk.LT.kkcrith(jl))
THEN
1195 IF((ptau(jl,jk+1).LT.gtsec).OR.(jk.LE.kcrit(jl)))
THEN
1198 zsqr=sqrt(pri(jl,jk))
1199 zalfa=sqrt(pstab(jl,jk)*zdz2(jl,jk))/pvph(jl,jk)
1200 zriw=pri(jl,jk)*(1.-zalfa)/(1+zalfa*zsqr)**2
1201 IF(zriw.LT.grcrit)
THEN
1202 zdel=4./zsqr/grcrit+1./grcrit**2+4./grcrit
1203 zb=1./grcrit+2./zsqr
1204 zalpha=0.5*(-zb+sqrt(zdel))
1205 zdz2n=(pvph(jl,jk)*zalpha)**2/pstab(jl,jk)
1206 ptau(jl,jk)=znorm(jl)*zdz2n
1208 ptau(jl,jk)=znorm(jl)*zdz2(jl,jk)
1210 ptau(jl,jk)=min(ptau(jl,jk),ptau(jl,jk+1))
1224 do 530 jl=kidia,kfdia
1225 if(ktest(jl).eq.1)
then
1226 ztau(jl,kkcrith(jl))=ptau(jl,kkcrith(jl))
1227 ztau(jl,nstra)=ptau(jl,nstra)
1236 do 532 jl=kidia,kfdia
1237 if(ktest(jl).eq.1)
then
1240 IF(jk.GT.kkcrith(jl))
THEN
1242 zdelp=paphm1(jl,jk)-paphm1(jl,
klev+1 )
1243 zdelpt=paphm1(jl,kkcrith(jl))-paphm1(jl,
klev+1 )
1244 ptau(jl,jk)=ztau(jl,
klev+1 ) +
1245 . (ztau(jl,kkcrith(jl))-ztau(jl,
klev+1 ) )*
1258 do 533 jl=kidia,kfdia
1259 if(ktest(jl).eq.1)
then
1264 zdelp =paphm1(jl,nstra)
1265 zdelpt=paphm1(jl,jk)
1266 ptau(jl,jk)=ztau(jl,nstra)*zdelpt/zdelp
1278 do 534 jl=kidia,kfdia
1279 if(ktest(jl).eq.1)
then
1282 IF(jk.LT.kkcrith(jl).AND.jk.GT.nstra)
THEN
1284 zdelp=paphm1(jl,jk)-paphm1(jl,kkcrith(jl))
1285 zdelpt=paphm1(jl,nstra)-paphm1(jl,kkcrith(jl))
1286 ptau(jl,jk)=ztau(jl,kkcrith(jl)) +
1287 * (ztau(jl,nstra)-ztau(jl,kkcrith(jl)))*zdelp
1301 e plat,pmea,pstd, ppic,
1304 s pulow, pvlow, pustr, pvstr,
1333 REAL paprs(klon,
klev+1)
1335 REAL plat(nlon),pmea(nlon)
1338 REAL pulow(nlon),pvlow(nlon),pustr(nlon),pvstr(nlon)
1339 REAL t(nlon,nlev),
u(nlon,nlev),
v(nlon,nlev)
1340 REAL d_t(nlon,nlev), d_u(nlon,nlev), d_v(nlon,nlev)
1342 INTEGER i,
k, ktest(nlon)
1346 REAL zgeom(klon,
klev)
1347 REAL pdtdt(klon,
klev), pdudt(klon,
klev), pdvdt(klon,
klev)
1349 REAL papmf(klon,
klev),papmh(klon,
klev+1)
1390 DO k =
klev-1, 1, -1
1392 zgeom(
i,
k) = zgeom(
i,
k+1) + rd * (pt(
i,
k)+pt(
i,
k+1))/2.0
1393 . * log(papmf(
i,
k+1)/papmf(
i,
k))
1403 . plat,pmea, pstd, ppic,
1405 . pdudt,pdvdt,pdtdt)
1414 . +pdudt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
1417 . +pdvdt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
1426 r , paphm1,pgeom1,ptm1,pum1,pvm1
1428 r , pmea, pvaror, ppic
1463 REAL pte(nlon,nlev),
1468 REAL pum1(nlon,nlev),
1471 * plat(nlon),pmea(nlon),
1474 * pgeom1(nlon,nlev),
1475 * paphm1(nlon,nlev+1)
1485 integer jl, ilevh, jk
1486 real zcons1, ztmst, zrtmst,zpi, zhgeo
1487 real zdelp, zslow, zsqua, zscav, zbet
1491 LOGICAL ll1(klon,
klev+1)
1493 REAL ztau(klon,
klev+1),
1494 * ztav(klon,
klev+1),
1498 REAL zhcrit(klon,
klev)
1499 CHARACTER (LEN=20) :: modname=
'orografi'
1500 CHARACTER (LEN=80) :: abort_message
1508 IF(nlon.NE.klon.OR.nlev.NE.
klev)
THEN
1509 abort_message =
'pb dimension'
1518 DO 1001 jl=kidia,kfdia
1519 zrho(jl,
klev+1) =0.0
1540 DO 2006 jk=
klev,1,-1
1541 DO 2007 jl=kidia,kfdia
1542 IF(ktest(jl).EQ.1)
THEN
1543 zhcrit(jl,jk)=amax1(ppic(jl)-pmea(jl),100.)
1544 zhgeo=pgeom1(jl,jk)/rg
1545 ll1(jl,jk)=(zhgeo.GT.zhcrit(jl,jk))
1546 IF(ll1(jl,jk).neqv.ll1(jl,jk+1))
THEN
1553 do 2010 jl=kidia,kfdia
1554 IF(ktest(jl).EQ.1)
THEN
1555 iknub(jl)=max(iknub(jl),
klev/2)
1556 iknul(jl)=max(iknul(jl),2*
klev/3)
1557 if(iknub(jl).gt.nktopg) iknub(jl)=nktopg
1558 if(iknub(jl).eq.nktopg) iknul(jl)=
klev
1559 if(iknub(jl).eq.iknul(jl)) iknub(jl)=iknul(jl)-1
1572 DO 222 jl=kidia,kfdia
1573 zrho(jl,jk)=2.*paphm1(jl,jk)*zcons1/(ptm1(jl,jk)+ptm1(jl,jk-1))
1582 DO 2115 jk=
klev,1,-1
1583 DO 2116 jl=kidia,kfdia
1584 IF(ktest(jl).EQ.1)
THEN
1585 if(jk.ge.iknub(jl).and.jk.le.iknul(jl))
then
1586 pulow(jl)=pulow(jl)+pum1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
1587 pvlow(jl)=pvlow(jl)+pvm1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
1589 * +zrho(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
1594 DO 2110 jl=kidia,kfdia
1595 IF(ktest(jl).EQ.1)
THEN
1596 pulow(jl)=pulow(jl)/(paphm1(jl,iknul(jl)+1)-paphm1(jl,iknub(jl)))
1597 pvlow(jl)=pvlow(jl)/(paphm1(jl,iknul(jl)+1)-paphm1(jl,iknub(jl)))
1599 * /(paphm1(jl,iknul(jl)+1)-paphm1(jl,iknub(jl)))
1612 DO 301 jl=kidia,kfdia
1613 IF(ktest(jl).EQ.1)
THEN
1614 ztau(jl,
klev+1)= - gklift*zrho(jl,
klev+1)*2.*romega*
1617 * sin(zpi/180.*plat(jl))*pvlow(jl)
1618 ztav(jl,
klev+1)= gklift*zrho(jl,
klev+1)*2.*romega*
1621 * sin(zpi/180.*plat(jl))*pulow(jl)
1636 DO 401 jl=kidia,kfdia
1637 IF(ktest(jl).EQ.1)
THEN
1638 ztau(jl,jk)=ztau(jl,
klev+1)*paphm1(jl,jk)/paphm1(jl,
klev+1)
1639 ztav(jl,jk)=ztav(jl,
klev+1)*paphm1(jl,jk)/paphm1(jl,
klev+1)
1657 DO 523 jl=kidia,kfdia
1658 IF(ktest(jl).EQ.1)
THEN
1659 zdelp=paphm1(jl,jk+1)-paphm1(jl,jk)
1660 zdudt(jl)=-rg*(ztau(jl,jk+1)-ztau(jl,jk))/zdelp
1661 zdvdt(jl)=-rg*(ztav(jl,jk+1)-ztav(jl,jk))/zdelp
1669 DO 530 jl=kidia,kfdia
1670 IF(ktest(jl).EQ.1)
THEN
1672 zslow=sqrt(pulow(jl)**2+pvlow(jl)**2)
1673 zsqua=amax1(sqrt(pum1(jl,jk)**2+pvm1(jl,jk)**2),gvsec)
1674 zscav=-zdudt(jl)*pvm1(jl,jk)+zdvdt(jl)*pum1(jl,jk)
1675 IF(zsqua.GT.gvsec)
THEN
1676 pvom(jl,jk)=-zscav*pvm1(jl,jk)/zsqua**2
1677 pvol(jl,jk)= zscav*pum1(jl,jk)/zsqua**2
1682 zsqua=sqrt(pum1(jl,jk)**2+pum1(jl,jk)**2)
1683 IF(zsqua.LT.zslow)
THEN
1684 pvom(jl,jk)=zsqua/zslow*pvom(jl,jk)
1685 pvol(jl,jk)=zsqua/zslow*pvol(jl,jk)
1696 DO 601 jl=kidia,kfdia
1697 IF(ktest(jl).EQ.1)
THEN
1698 DO jk=
klev,iknub(jl),-1
1699 zbet=gklift*2.*romega*sin(zpi/180.*plat(jl))*ztmst*
1700 * (pgeom1(jl,iknub(jl)-1)-pgeom1(jl, jk))/
1701 * (pgeom1(jl,iknub(jl)-1)-pgeom1(jl,
klev))
1702 zdudt(jl)=-pum1(jl,jk)/ztmst/(1+zbet**2)
1703 zdvdt(jl)=-pvm1(jl,jk)/ztmst/(1+zbet**2)
1704 pvom(jl,jk)= zbet**2*zdudt(jl) - zbet *zdvdt(jl)
1705 pvol(jl,jk)= zbet *zdudt(jl) + zbet**2*zdvdt(jl)
1769 integer nlon,nlev, jk
1770 REAL paprs(nlon,nlev+1)
1771 REAL pplay(nlon,nlev)
1772 real zpr,zstra,zsigt,zpm1r
1773 REAL :: pplay_glo(klon_glo,nlev)
1774 REAL :: paprs_glo(klon_glo,nlev+1)
1782 print *,
' DANS SUGWD NLEV=',nlev
1793 CALL
bcast(pplay_glo)
1794 CALL
gather(paprs,paprs_glo)
1795 CALL
bcast(paprs_glo)
1799 zpm1r=pplay_glo((klon_glo/2)+1,jk)/paprs_glo((klon_glo/2)+1,1)
1800 IF(zpm1r.GE.zsigt)
THEN
1803 zpm1r=pplay_glo((klon_glo/2)+1,jk)/paprs_glo((klon_glo/2)+1,1)
1804 IF(zpm1r.GE.zstra)
THEN
1812 nktopg=nlev-nktopg+1
1814 print *,
' DANS SUGWD nktopg=', nktopg
1815 print *,
' DANS SUGWD nstra=', nstra