2 e pmea,pstd, psig, pgam, pthe,ppic,pval,
5 s pulow, pvlow, pustr, pvstr,
75 REAL paprs(nlon,nlev+1)
77 REAL pmea(nlon),pstd(nlon),psig(nlon),pgam(nlon),pthe(nlon)
78 REAL ppic(nlon),pval(nlon)
79 REAL pulow(nlon),pvlow(nlon),pustr(nlon),pvstr(nlon)
80 REAL t(nlon,nlev),
u(nlon,nlev),
v(nlon,nlev)
81 REAL d_t(nlon,nlev), d_u(nlon,nlev), d_v(nlon,nlev)
83 INTEGER i,
k, kgwd, kdx(nlon), ktest(nlon)
88 REAL pdtdt(klon,
klev), pdudt(klon,
klev), pdvdt(klon,
klev)
90 REAL papmf(klon,
klev),papmh(klon,
klev+1)
91 CHARACTER (LEN=20) :: modname=
'orografi_strato'
92 CHARACTER (LEN=80) :: abort_message
135 zgeom(
i,
k) = zgeom(
i,
k+1) + rd * (pt(
i,
k)+pt(
i,
k+1))/2.0
136 . * log(papmf(
i,
k+1)/papmf(
i,
k))
144 . papmh, papmf, zgeom,
146 . pmea, pstd, psig, pgam, pthe, ppic,pval,
158 . +pdudt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
160 . +pdvdt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
170 r , paphm1,papm1,pgeom1,ptm1,pum1,pvm1
171 r , pmea, pstd, psig, pgam, pthe, ppic, pval
219 integer nlon,nlev,kgwd
270 real pum1(nlon,nlev),
273 * pmea(nlon),pstd(nlon),psig(nlon),
274 * pgam(nlon),pthe(nlon),ppic(nlon),pval(nlon),
277 * paphm1(nlon,nlev+1)
279 integer kdx(nlon),ktest(nlon)
293 real ztau(klon,
klev+1),
294 * zstab(klon,
klev+1),
315 real ztmst,zdelp,ztemp,zforc,ztend,rover
316 real zb,zc,zconb,zabsv,zzd1,ratio,zbet,zust,zvst,zdis
362 * ( nlon, nlev , ktest
363 * , ikcrit, ikcrith, icrit, isect, ikhlim, ikenvh,iknu,iknu2
364 * , paphm1, papm1 , pum1 , pvm1 , ptm1 , pgeom1, pstd
365 * , zrho , zri , zstab , ztau , zvph , zpsi, zzdep
367 * , pthe,pgam,pmea,ppic,pval,znu ,zd1, zd2, zdmod )
384 * , ikcrit, isect, ikhlim, ktest, ikcrith, icrit, ikenvh, iknu
385 * , zrho , zstab, zvph , pstd, psig, pmea, ppic, pval
387 * , pgeom1,pgam,zd1,zd2,zdmod,znu)
401 * , kgwd , kdx , ktest
402 * , ikcrit, ikcrith, icrit , ikenvh, iknu
403 * ,iknu2 , paphm1, zrho , zstab , ztfr , zvph
406 * , zdmod , znu , psig , pgam , pstd , ppic , pval)
420 do 510 jl=kidia,kfdia
435 do 523 ji=kidia,kfdia
437 if(ktest(ji).eq.1)
then
439 zdelp=paphm1(ji,jk+1)-paphm1(ji,jk)
440 ztemp=-rg*(ztau(ji,jk+1)-ztau(ji,jk))/(zvph(ji,
klev+1)*zdelp)
442 zdudt(ji)=(pulow(ji)*zd1(ji)-pvlow(ji)*zd2(ji))*ztemp/zdmod(ji)
443 zdvdt(ji)=(pvlow(ji)*zd1(ji)+pulow(ji)*zd2(ji))*ztemp/zdmod(ji)
450 if(abs(zdudt(ji)).gt.rover*abs(pum1(ji,jk))/ztmst)
451 c zdudt(ji)=rover*abs(pum1(ji,jk))/ztmst*
452 c zdudt(ji)/(abs(zdudt(ji))+1.e-10)
453 if(abs(zdvdt(ji)).gt.rover*abs(pvm1(ji,jk))/ztmst)
454 c zdvdt(ji)=rover*abs(pvm1(ji,jk))/ztmst*
455 c zdvdt(ji)/(abs(zdvdt(ji))+1.e-10)
459 zforc=sqrt(zdudt(ji)**2+zdvdt(ji)**2)
460 ztend=sqrt(pum1(ji,jk)**2+pvm1(ji,jk)**2)/ztmst
462 if(zforc.ge.rover*ztend)
then
463 zdudt(ji)=rover*ztend/zforc*zdudt(ji)
464 zdvdt(ji)=rover*ztend/zforc*zdvdt(ji)
470 if(jk.gt.ikenvh(ji))
then
471 zb=1.0-0.18*pgam(ji)-0.04*pgam(ji)**2
472 zc=0.48*pgam(ji)+0.3*pgam(ji)**2
473 zconb=2.*ztmst*gkwake*psig(ji)/(4.*pstd(ji))
474 zabsv=sqrt(pum1(ji,jk)**2+pvm1(ji,jk)**2)/2.
475 zzd1=zb*cos(zpsi(ji,jk))**2+zc*sin(zpsi(ji,jk))**2
476 ratio=(cos(zpsi(ji,jk))**2+pgam(ji)*sin(zpsi(ji,jk))**2)/
477 * (pgam(ji)*cos(zpsi(ji,jk))**2+sin(zpsi(ji,jk))**2)
478 zbet=max(0.,2.-1./ratio)*zconb*zzdep(ji,jk)*zzd1*zabsv
482 zdudt(ji)=-pum1(ji,jk)/ztmst
483 zdvdt(ji)=-pvm1(ji,jk)/ztmst
494 zdudt(ji)=zdudt(ji)*(zbet/(1.+zbet))
495 zdvdt(ji)=zdvdt(ji)*(zbet/(1.+zbet))
497 pvom(ji,jk)=zdudt(ji)
498 pvol(ji,jk)=zdvdt(ji)
499 zust=pum1(ji,jk)+ztmst*zdudt(ji)
500 zvst=pvm1(ji,jk)+ztmst*zdvdt(ji)
501 zdis=0.5*(pum1(ji,jk)**2+pvm1(ji,jk)**2-zust**2-zvst**2)
503 zvidis(ji)=zvidis(ji)+zdis*zdelp
504 zdtdt(ji)=zdedt(ji)/rcpd
523 * ( nlon , nlev , ktest
524 * , kkcrit, kkcrith, kcrit, ksect , kkhlim
525 * , kkenvh, kknu , kknu2
526 * , paphm1, papm1 , pum1 , pvm1 , ptm1 , pgeom1, pstd
527 * , prho , pri , pstab , ptau , pvph ,ppsi, pzdep
529 * , ptheta, pgam, pmea, ppic, pval
530 * , pnu , pd1 , pd2 ,pdmod )
632 integer kkcrit(nlon),kkcrith(nlon),kcrit(nlon),ksect(nlon),
633 * kkhlim(nlon),ktest(nlon),kkenvh(nlon)
636 real paphm1(nlon,
klev+1),papm1(nlon,
klev),pum1(nlon,
klev),
638 * prho(nlon,
klev+1),pri(nlon,
klev+1),pstab(nlon,
klev+1),
639 * ptau(nlon,
klev+1),pvph(nlon,
klev+1),ppsi(nlon,
klev+1),
641 real pulow(nlon),pvlow(nlon),ptheta(nlon),pgam(nlon),pnu(nlon),
642 * pd1(nlon),pd2(nlon),pdmod(nlon)
643 real pstd(nlon),pmea(nlon),ppic(nlon),pval(nlon)
652 real zcons1,zcons2,zhgeo,zu,zphi
653 real zvt1,zvt2,zdwind,zwind,zdelp
654 real zstabm,zstabp,zrhom,zrhop
656 logical ll1(klon,
klev+1)
657 integer kknu(klon),kknu2(klon),kknub(klon),kknul(klon),
658 * kentp(klon),ncount(klon)
660 real zhcrit(klon,
klev),zvpf(klon,
klev),
662 real znorm(klon),zb(klon),zc(klon),
663 * zulow(klon),zvlow(klon),znup(klon),znum(klon)
701 do 2001 jl=kidia,kfdia
706 pgam(jl) =max(pgam(jl),gtsec)
720 do 2002 jk=
klev,ilevh,-1
721 do 2003 jl=kidia,kfdia
722 if(ktest(jl).eq.1)
then
723 lo=(paphm1(jl,jk)/paphm1(jl,
klev+1)).ge.gsigcr
727 zhcrit(jl,jk)=ppic(jl)-pval(jl)
728 zhgeo=pgeom1(jl,jk)/rg
729 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
730 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
733 if(.not.ll1(jl,ilevh))kknu(jl)=ilevh
737 do 2004 jk=
klev,ilevh,-1
738 do 2005 jl=kidia,kfdia
739 if(ktest(jl).eq.1)
then
740 zhcrit(jl,jk)=ppic(jl)-pmea(jl)
741 zhgeo=pgeom1(jl,jk)/rg
742 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
743 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
746 if(.not.ll1(jl,ilevh))kknu2(jl)=ilevh
750 do 2006 jk=
klev,ilevh,-1
751 do 2007 jl=kidia,kfdia
752 if(ktest(jl).eq.1)
then
753 zhcrit(jl,jk)=amin1(ppic(jl)-pmea(jl),pmea(jl)-pval(jl))
754 zhgeo=pgeom1(jl,jk)/rg
755 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
756 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
759 if(.not.ll1(jl,ilevh))kknub(jl)=ilevh
764 do 2010 jl=kidia,kfdia
765 if(ktest(jl).eq.1)
then
766 kknu(jl)=min(kknu(jl),nktopg)
767 kknu2(jl)=min(kknu2(jl),nktopg)
768 kknub(jl)=min(kknub(jl),nktopg)
777 do 2107 jl=kidia,kfdia
781 pstab(jl,
klev+1) =0.0
783 pri(jl,
klev+1) =9999.0
807 do 222 jl=kidia,kfdia
808 if(ktest(jl).eq.1)
then
809 zdp(jl,jk)=papm1(jl,jk)-papm1(jl,jk-1)
810 prho(jl,jk)=2.*paphm1(jl,jk)*zcons1/(ptm1(jl,jk)+ptm1(jl,jk-1))
811 pstab(jl,jk)=2.*zcons2/(ptm1(jl,jk)+ptm1(jl,jk-1))*
812 * (1.-rcpd*prho(jl,jk)*(ptm1(jl,jk)-ptm1(jl,jk-1))/zdp(jl,jk))
813 pstab(jl,jk)=max(pstab(jl,jk),gssec)
822 do 2115 jk=
klev,ilevh,-1
823 do 2116 jl=kidia,kfdia
824 if(ktest(jl).eq.1)
then
825 if(jk.ge.kknu2(jl).and.jk.le.kknul(jl))
then
826 pulow(jl)=pulow(jl)+pum1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
827 pvlow(jl)=pvlow(jl)+pvm1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
829 c +pstab(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
831 c +prho(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
836 do 2110 jl=kidia,kfdia
837 if(ktest(jl).eq.1)
then
838 pulow(jl)=pulow(jl)/(paphm1(jl,kknul(jl)+1)-paphm1(jl,kknu2(jl)))
839 pvlow(jl)=pvlow(jl)/(paphm1(jl,kknul(jl)+1)-paphm1(jl,kknu2(jl)))
840 znorm(jl)=max(sqrt(pulow(jl)**2+pvlow(jl)**2),gvsec)
841 pvph(jl,
klev+1)=znorm(jl)
843 c /(paphm1(jl,kknul(jl)+1)-paphm1(jl,kknu2(jl)))
845 c /(paphm1(jl,kknul(jl)+1)-paphm1(jl,kknu2(jl)))
853 do 2112 jl=kidia,kfdia
854 if(ktest(jl).eq.1)
then
855 lo=(pulow(jl).lt.gvsec).and.(pulow(jl).ge.-gvsec)
857 zu=pulow(jl)+2.*gvsec
861 zphi=atan(pvlow(jl)/zu)
862 ppsi(jl,
klev+1)=ptheta(jl)*rpi/180.-zphi
863 zb(jl)=1.-0.18*pgam(jl)-0.04*pgam(jl)**2
864 zc(jl)=0.48*pgam(jl)+0.3*pgam(jl)**2
865 pd1(jl)=zb(jl)-(zb(jl)-zc(jl))*(sin(ppsi(jl,
klev+1))**2)
866 pd2(jl)=(zb(jl)-zc(jl))*sin(ppsi(jl,
klev+1))
867 * *cos(ppsi(jl,
klev+1))
868 pdmod(jl)=sqrt(pd1(jl)**2+pd2(jl)**2)
876 do 212 jl=kidia,kfdia
877 if(ktest(jl).eq.1)
then
878 zvt1 =pulow(jl)*pum1(jl,jk)+pvlow(jl)*pvm1(jl,jk)
879 zvt2 =-pvlow(jl)*pum1(jl,jk)+pulow(jl)*pvm1(jl,jk)
880 zvpf(jl,jk)=(zvt1*pd1(jl)+zvt2*pd2(jl))/(znorm(jl)*pdmod(jl))
889 do 214 jl=kidia,kfdia
890 if(ktest(jl).eq.1)
then
891 zdp(jl,jk)=papm1(jl,jk)-papm1(jl,jk-1)
892 pvph(jl,jk)=((paphm1(jl,jk)-papm1(jl,jk-1))*zvpf(jl,jk)+
893 * (papm1(jl,jk)-paphm1(jl,jk))*zvpf(jl,jk-1))
895 if(pvph(jl,jk).lt.gvsec)
then
908 do 231 jl=kidia,kfdia
909 if(ktest(jl).eq.1)
then
910 zdwind=max(abs(zvpf(jl,jk)-zvpf(jl,jk-1)),gvsec)
911 pri(jl,jk)=pstab(jl,jk)*(zdp(jl,jk)
912 * /(rg*prho(jl,jk)*zdwind))**2
913 pri(jl,jk)=max(pri(jl,jk),grcrit)
923 do 233 jl=kidia,kfdia
929 do 234 jl=kidia,kfdia
931 if(ktest(jl).eq.1)
then
933 if (jk.ge.kknu2(jl))
then
936 zwind=(pulow(jl)*pum1(jl,jk)+pvlow(jl)*pvm1(jl,jk))/
937 * max(sqrt(pulow(jl)**2+pvlow(jl)**2),gvsec)
938 zwind=max(sqrt(zwind**2),gvsec)
939 zdelp=paphm1(jl,jk+1)-paphm1(jl,jk)
940 zstabm=sqrt(max(pstab(jl,jk ),gssec))
941 zstabp=sqrt(max(pstab(jl,jk+1),gssec))
944 pnu(jl) = pnu(jl) + (zdelp/rg)*
945 * ((zstabp/zrhop+zstabm/zrhom)/2.)/zwind
946 if((znum(jl).le.gfrcrit).and.(pnu(jl).gt.gfrcrit)
947 * .and.(kkenvh(jl).eq.
klev))
962 do 235 jl=kidia,kfdia
967 do 236 jk=
klev-1,2,-1
968 do 236 jl=kidia,kfdia
970 if(ktest(jl).eq.1)
then
973 zwind=(pulow(jl)*pum1(jl,jk)+pvlow(jl)*pvm1(jl,jk))/
974 * max(sqrt(pulow(jl)**2+pvlow(jl)**2),gvsec)
975 zwind=max(sqrt(zwind**2),gvsec)
976 zdelp=paphm1(jl,jk+1)-paphm1(jl,jk)
977 zstabm=sqrt(max(pstab(jl,jk ),gssec))
978 zstabp=sqrt(max(pstab(jl,jk+1),gssec))
981 znup(jl) = znup(jl) + (zdelp/rg)*
982 * ((zstabp/zrhop+zstabm/zrhom)/2.)/zwind
983 if((znum(jl).le.rpi/4.).and.(znup(jl).gt.rpi/4.)
984 * .and.(kkcrith(jl).eq.
klev))
991 do 237 jl=kidia,kfdia
992 if(ktest(jl).eq.1)
then
993 kkcrith(jl)=max0(kkcrith(jl),ilevh*2)
994 kkcrith(jl)=max0(kkcrith(jl),kknu(jl))
995 if(kcrit(jl).ge.kkcrith(jl))kcrit(jl)=1
1002 do 252 jl=kidia,kfdia
1003 if(ktest(jl).eq.1)
then
1004 lo=(pum1(jl,jk).lt.gvsec).and.(pum1(jl,jk).ge.-gvsec)
1006 zu=pum1(jl,jk)+2.*gvsec
1010 zphi=atan(pvm1(jl,jk)/zu)
1011 ppsi(jl,jk)=ptheta(jl)*rpi/180.-zphi
1018 do 254 jk=ilevh,
klev
1019 do 253 jl=kidia,kfdia
1020 if(ktest(jl).eq.1)
then
1022 if(jk.ge.kkenvh(jl).and.kkenvh(jl).ne.
klev)
then
1023 pzdep(jl,jk)=(pgeom1(jl,kkenvh(jl) )-pgeom1(jl, jk))/
1024 * (pgeom1(jl,kkenvh(jl) )-pgeom1(jl,
klev))
1034 * , kkcrit, ksect, kkhlim, ktest, kkcrith, kcrit, kkenvh
1036 * , prho , pstab , pvph , pstd, psig
1037 * , pmea , ppic , pval , ptfr , ptau
1038 * , pgeom1 , pgamma , pd1 , pd2 , pdmod , pnu )
1099 integer kkcrit(nlon),kkcrith(nlon),kcrit(nlon),ksect(nlon),
1100 * kkhlim(nlon),ktest(nlon),kkenvh(nlon),kknu(nlon)
1102 real prho(nlon,nlev+1),pstab(nlon,nlev+1),ptau(nlon,nlev+1),
1103 * pvph(nlon,nlev+1),ptfr(nlon),
1104 * pgeom1(nlon,nlev),pstd(nlon)
1106 real pd1(nlon),pd2(nlon),pnu(nlon),psig(nlon),pgamma(nlon)
1107 real pmea(nlon),ppic(nlon),pval(nlon)
1136 do 301 jl=kidia,kfdia
1137 if(ktest(jl).eq.1)
then
1141 zeff=ppic(jl)-pval(jl)
1142 if(kkenvh(jl).lt.
klev)
then
1143 zeff=amin1(gfrcrit*pvph(jl,
klev+1)/sqrt(pstab(jl,
klev+1))
1148 ptau(jl,
klev+1)=gkdrag*prho(jl,
klev+1)
1149 * *psig(jl)*pdmod(jl)/4./pstd(jl)
1150 * *pvph(jl,
klev+1)*sqrt(pstab(jl,
klev+1))
1178 * , kgwd ,kdx , ktest
1179 * , kkcrit, kkcrith, kcrit , kkenvh, kknu,kknu2
1180 * , paphm1, prho , pstab , ptfr , pvph , pri , ptau
1181 * , pdmod , pnu , psig ,pgamma, pstd, ppic,pval)
1226 integer nlon,nlev,kgwd
1227 integer kkcrit(nlon),kkcrith(nlon),kcrit(nlon)
1228 * ,kdx(nlon),ktest(nlon)
1229 * ,kkenvh(nlon),kknu(nlon),kknu2(nlon)
1231 real paphm1(nlon,nlev+1), pstab(nlon,nlev+1),
1232 * prho(nlon,nlev+1), pvph(nlon,nlev+1),
1233 * pri(nlon,nlev+1), ptfr(nlon), ptau(nlon,nlev+1)
1235 real pdmod (nlon) , pnu (nlon) , psig(nlon),
1236 * pgamma(nlon) , pstd(nlon) , ppic(nlon), pval(nlon)
1244 real zsqr,zalfa,zriw,zdel,zb,zalpha,zdz2n,zdelp,zdelpt
1246 real zdz2 (klon,
klev) , znorm(klon) , zoro(klon)
1247 real ztau (klon,
klev+1)
1261 do 400 jl=kidia,kfdia
1262 if(ktest(jl).eq.1)
then
1263 zoro(jl)=psig(jl)*pdmod(jl)/4./pstd(jl)
1266 ztau(jl,kkcrith(jl))=grahilo*ptau(jl,
klev+1)
1271 do 430 jk=
klev+1,1,-1
1278 do 411 jl=kidia,kfdia
1279 if(ktest(jl).eq.1)
then
1280 if(jk.gt.kkcrith(jl))
then
1281 zdelp=paphm1(jl,jk)-paphm1(jl,
klev+1)
1282 zdelpt=paphm1(jl,kkcrith(jl))-paphm1(jl,
klev+1)
1283 ptau(jl,jk)=ztau(jl,
klev+1)+zdelp/zdelpt*
1284 c(ztau(jl,kkcrith(jl))-ztau(jl,
klev+1))
1286 ptau(jl,jk)=ztau(jl,kkcrith(jl))
1310 do 441 jl=kidia,kfdia
1311 if(ktest(jl).eq.1)
then
1312 znorm(jl)=prho(jl,jk)*sqrt(pstab(jl,jk))*pvph(jl,jk)
1313 zdz2(jl,jk)=ptau(jl,jk)/amax1(znorm(jl),gssec)/zoro(jl)
1317 do 442 jl=kidia,kfdia
1318 if(ktest(jl).eq.1)
then
1319 if(jk.lt.kkcrith(jl))
then
1320 if((ptau(jl,jk+1).lt.gtsec).or.(jk.le.kcrit(jl)))
then
1323 zsqr=sqrt(pri(jl,jk))
1324 zalfa=sqrt(pstab(jl,jk)*zdz2(jl,jk))/pvph(jl,jk)
1325 zriw=pri(jl,jk)*(1.-zalfa)/(1+zalfa*zsqr)**2
1326 if(zriw.lt.grcrit)
then
1328 zdel=4./zsqr/grcrit+1./grcrit**2+4./grcrit
1329 zb=1./grcrit+2./zsqr
1330 zalpha=0.5*(-zb+sqrt(zdel))
1331 zdz2n=(pvph(jl,jk)*zalpha)**2/pstab(jl,jk)
1332 ptau(jl,jk)=znorm(jl)*zdz2n*zoro(jl)
1335 ptau(jl,jk)=amin1(ptau(jl,jk),ptau(jl,jk+1))
1345 do 530 jl=kidia,kfdia
1346 if(ktest(jl).eq.1)
then
1347 ztau(jl,kkcrith(jl)-1)=ptau(jl,kkcrith(jl)-1)
1348 ztau(jl,nstra)=ptau(jl,nstra)
1354 do 532 jl=kidia,kfdia
1355 if(ktest(jl).eq.1)
then
1357 if(jk.gt.kkcrith(jl)-1)
then
1359 zdelp=paphm1(jl,jk)-paphm1(jl,
klev+1 )
1360 zdelpt=paphm1(jl,kkcrith(jl)-1)-paphm1(jl,
klev+1 )
1361 ptau(jl,jk)=ztau(jl,
klev+1 ) +
1362 . (ztau(jl,kkcrith(jl)-1)-ztau(jl,
klev+1 ) )*
1372 do 533 jl=kidia,kfdia
1373 if(ktest(jl).eq.1)
then
1377 zdelp =paphm1(jl,nstra)
1378 zdelpt=paphm1(jl,jk)
1379 ptau(jl,jk)=ztau(jl,nstra)*zdelpt/zdelp
1392 123
format(i4,1
x,20(f6.3,1
x))
1398 i plat,pmea,pstd, psig, pgam, pthe, ppic,pval,
1401 o pulow, pvlow, pustr, pvstr,
1473 REAL paprs(klon,
klev+1)
1475 REAL plat(nlon),pmea(nlon)
1476 REAL pstd(nlon),psig(nlon),pgam(nlon),pthe(nlon)
1477 REAL ppic(nlon),pval(nlon)
1478 REAL pulow(nlon),pvlow(nlon),pustr(nlon),pvstr(nlon)
1479 REAL t(nlon,nlev),
u(nlon,nlev),
v(nlon,nlev)
1480 REAL d_t(nlon,nlev), d_u(nlon,nlev), d_v(nlon,nlev)
1482 INTEGER i,
k, kgwd, kdx(nlon), ktest(nlon)
1486 REAL zgeom(klon,
klev)
1487 REAL pdtdt(klon,
klev), pdudt(klon,
klev), pdvdt(klon,
klev)
1489 REAL papmf(klon,
klev),papmh(klon,
klev+1)
1532 DO k =
klev-1, 1, -1
1534 zgeom(
i,
k) = zgeom(
i,
k+1) + rd * (pt(
i,
k)+pt(
i,
k+1))/2.0
1535 . * log(papmf(
i,
k+1)/papmf(
i,
k))
1544 . papmh, papmf, zgeom,
1546 . plat,pmea, pstd, psig, pgam, pthe, ppic,pval,
1548 . pdudt,pdvdt,pdtdt)
1556 . +pdudt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
1558 . +pdvdt(
i,
k)*(papmh(
i,
k+1)-papmh(
i,
k))/rg
1567 i , kgwd, kdx, ktest
1569 r , paphm1,papm1,pgeom1,ptm1,pum1,pvm1
1571 r , pmea, pstd, psig, pgam, pthe,ppic,pval
1646 integer nlon,nlev,kgwd
1648 real pte(nlon,nlev),
1653 real pum1(nlon,nlev),
1656 * plat(nlon),pmea(nlon),
1657 * pstd(nlon),psig(nlon),pgam(nlon),
1658 * pthe(nlon),ppic(nlon),pval(nlon),
1659 * pgeom1(nlon,nlev),
1661 * paphm1(nlon,nlev+1)
1663 INTEGER kdx(nlon),ktest(nlon)
1669 real zhgeo,zdelp,zslow,zsqua,zscav,zbet
1671 integer iknub(klon),
1673 logical ll1(klon,
klev+1)
1675 real ztau(klon,
klev+1),
1676 * ztav(klon,
klev+1),
1680 real zhcrit(klon,
klev)
1684 CHARACTER (LEN=20) :: modname=
'orolift_strato'
1685 CHARACTER (LEN=80) :: abort_message
1695 if(nlon.ne.klon.or.nlev.ne.
klev)
then
1696 abort_message =
'pb dimension'
1702 do 1001 jl=kidia,kfdia
1703 zrho(jl,
klev+1) =0.0
1724 do 2006 jk=
klev,1,-1
1725 do 2007 jl=kidia,kfdia
1726 if(ktest(jl).eq.1)
then
1727 zhcrit(jl,jk)=amax1(ppic(jl)-pval(jl),100.)
1728 zhgeo=pgeom1(jl,jk)/rg
1729 ll1(jl,jk)=(zhgeo.gt.zhcrit(jl,jk))
1730 if(ll1(jl,jk).neqv.ll1(jl,jk+1))
then
1738 do 2010 jl=kidia,kfdia
1739 if(ktest(jl).eq.1)
then
1740 iknub(jl)=max(iknub(jl),
klev/2)
1741 iknul(jl)=max(iknul(jl),2*
klev/3)
1742 if(iknub(jl).gt.nktopg) iknub(jl)=nktopg
1743 if(iknub(jl).eq.nktopg) iknul(jl)=
klev
1744 if(iknub(jl).eq.iknul(jl)) iknub(jl)=iknul(jl)-1
1749 do 222 jl=kidia,kfdia
1750 zrho(jl,jk)=2.*paphm1(jl,jk)*zcons1/(ptm1(jl,jk)+ptm1(jl,jk-1))
1759 do 2115 jk=
klev,1,-1
1760 do 2116 jl=kidia,kfdia
1761 if(ktest(jl).eq.1)
THEN
1762 if(jk.ge.iknub(jl).and.jk.le.iknul(jl))
then
1763 pulow(jl)=pulow(jl)+pum1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
1764 pvlow(jl)=pvlow(jl)+pvm1(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
1766 * +zrho(jl,jk)*(paphm1(jl,jk+1)-paphm1(jl,jk))
1771 do 2110 jl=kidia,kfdia
1772 if(ktest(jl).eq.1)
then
1773 pulow(jl)=pulow(jl)/(paphm1(jl,iknul(jl)+1)-paphm1(jl,iknub(jl)))
1774 pvlow(jl)=pvlow(jl)/(paphm1(jl,iknul(jl)+1)-paphm1(jl,iknub(jl)))
1776 * /(paphm1(jl,iknul(jl)+1)-paphm1(jl,iknub(jl)))
1789 do 301 jl=kidia,kfdia
1790 if(ktest(jl).eq.1)
then
1791 ztau(jl,
klev+1)= - gklift*zrho(jl,
klev+1)*2.*romega*
1794 * sin(rpi/180.*plat(jl))*pvlow(jl)
1795 ztav(jl,
klev+1)= gklift*zrho(jl,
klev+1)*2.*romega*
1798 * sin(rpi/180.*plat(jl))*pulow(jl)
1813 do 401 jl=kidia,kfdia
1814 if(ktest(jl).eq.1)
then
1815 ztau(jl,jk)=ztau(jl,
klev+1)*paphm1(jl,jk)/paphm1(jl,
klev+1)
1816 ztav(jl,jk)=ztav(jl,
klev+1)*paphm1(jl,jk)/paphm1(jl,
klev+1)
1833 do 523 jl=kidia,kfdia
1834 if(ktest(jl).eq.1)
then
1835 zdelp=paphm1(jl,jk+1)-paphm1(jl,jk)
1836 zdudt(jl)=-rg*(ztau(jl,jk+1)-ztau(jl,jk))/zdelp
1837 zdvdt(jl)=-rg*(ztav(jl,jk+1)-ztav(jl,jk))/zdelp
1845 do 530 jl=kidia,kfdia
1846 if(ktest(jl).eq.1)
then
1848 zslow=sqrt(pulow(jl)**2+pvlow(jl)**2)
1849 zsqua=amax1(sqrt(pum1(jl,jk)**2+pvm1(jl,jk)**2),gvsec)
1850 zscav=-zdudt(jl)*pvm1(jl,jk)+zdvdt(jl)*pum1(jl,jk)
1851 if(zsqua.gt.gvsec)
then
1852 pvom(jl,jk)=-zscav*pvm1(jl,jk)/zsqua**2
1853 pvol(jl,jk)= zscav*pum1(jl,jk)/zsqua**2
1858 zsqua=sqrt(pum1(jl,jk)**2+pum1(jl,jk)**2)
1859 if(zsqua.lt.zslow)
then
1860 pvom(jl,jk)=zsqua/zslow*pvom(jl,jk)
1861 pvol(jl,jk)=zsqua/zslow*pvol(jl,jk)
1872 do 601 jl=kidia,kfdia
1873 if(ktest(jl).eq.1)
then
1874 do jk=
klev,iknub(jl),-1
1875 zbet=gklift*2.*romega*sin(rpi/180.*plat(jl))*ztmst*
1876 * (pgeom1(jl,iknub(jl)-1)-pgeom1(jl, jk))/
1877 * (pgeom1(jl,iknub(jl)-1)-pgeom1(jl,
klev))
1878 zdudt(jl)=-pum1(jl,jk)/ztmst/(1+zbet**2)
1879 zdvdt(jl)=-pvm1(jl,jk)/ztmst/(1+zbet**2)
1880 pvom(jl,jk)= zbet**2*zdudt(jl) - zbet *zdvdt(jl)
1881 pvol(jl,jk)= zbet *zdudt(jl) + zbet**2*zdvdt(jl)
1977 REAL paprs(nlon,nlev+1)
1978 REAL pplay(nlon,nlev)
1981 REAL zpr,ztop,zsigt,zpm1r
1982 REAL :: pplay_glo(klon_glo,nlev)
1983 REAL :: paprs_glo(klon_glo,nlev+1)
1991 print *,
' DANS SUGWD NLEV=',nlev
2001 CALL
bcast(pplay_glo)
2002 CALL
gather(paprs,paprs_glo)
2003 CALL
bcast(paprs_glo)
2006 zpm1r=pplay_glo(klon_glo/2+1,jk)/paprs_glo(klon_glo/2+1,1)
2007 IF(zpm1r.GE.zsigt)
THEN
2010 zpm1r=pplay_glo(klon_glo/2+1,jk)/paprs_glo(klon_glo/2+1,1)
2011 IF(zpm1r.GE.ztop)
THEN
2017 nktopg=nlev-nktopg+1
2019 print *,
' DANS SUGWD nktopg=', nktopg
2020 print *,
' DANS SUGWD nstra=', nstra
2033 WRITE(
unit=6,fmt=
'('' *** SSO essential constants ***'')')
2034 WRITE(
unit=6,fmt=
'('' *** SPECIFIED IN SUGWD ***'')')
2035 WRITE(
unit=6,fmt=
'('' Gravity wave ct '',E13.7,'' '')')gkdrag
2036 WRITE(
unit=6,fmt=
'('' Trapped/total wave dag '',E13.7,'' '')')
2038 WRITE(
unit=6,fmt=
'('' Critical Richardson = '',E13.7,'' '')')
2040 WRITE(
unit=6,fmt=
'('' Critical Froude'',e13.7)') gfrcrit
2041 WRITE(
unit=6,fmt=
'('' Low level Wake bluff cte'',e13.7)') gkwake
2042 WRITE(
unit=6,fmt=
'('' Low level lift cte'',e13.7)') gklift