SUBROUTINE DO_TSTEP( & kdt,lsout, & deltim,fhour,phour,zhour, & del,rdel2,tov,si,sl,cl,rk, & sl1,slk,rcs2,wgt,colrad,sinlat,coslat,slag,sdec,cdec, & idate,levshc,icen,icen2, & istrat, & rhcl,colat1, & ozplin,jindx1,jindx2,ddy, & pg0, un0, vn0, tn0, qn0, vvl, & hice,fice,tisfc,tprcp,srflag,slc,snwdpth,slope, & shdmin,shdmax,snoalb,sfalb, & SMC ,STC ,TSEA ,SHELEG,TG3 ,ZORL ,CV ,CVB , & CVT ,ALVSF ,ALVWF ,ALNSF ,ALNWF ,SLMSK ,VFRAC ,CANOPY, & F10M ,VTYPE ,STYPE ,FACSF ,FACWF ,UUSTAR,FFMM ,FFHH , & TMPMIN,TMPMAX,GESHEM,DUSFC ,DVSFC ,DTSFC ,DQSFC ,DLWSFC, & ULWSFC,GFLUX ,RUNOFF,EP ,CLDWRK,DUGWD ,DVGWD ,PSMEAN, & PSURF ,U10M ,V10M ,T2M ,Q2M ,HPBL ,PWAT ,BENGSH, & XLON ,XLAT ,HPRIME,fluxr, & COSZDG,COSZEN,SFCNSW,SFCDLW,TSFLW ,SWH,HLW,ORO, & phy_f3d,phy_f2d, & iflip,dt3dt,dq3dt,du3dt,dv3dt,cldcov,ak5,bk5,sncovr) c c*********************************************************************** c use ozne_def use namelist_def implicit none include 'resolution.h' integer kdt integer istrat,iflip integer levshc,idate(4) integer icen,icen2 real deltim,zhour,fhour,phour,colat1 logical lsout !->rsun logical fluxrzero !<-rsun real tor(levs),sv(levs),spdmax,sl1,pdryini real DEL(LEVS),RDEL2(LEVS),TOV(LEVS), & SI(LEVS+1),SL(LEVS),SLK(LEVS),CL(LEVS),RK real ak5(levs+1), bk5(levs+1) real rcs2(LENT),wgt(LENT),colrad(LENT),sinlat(LENT),coslat(LENT) real UN0(LENT,LEVS), VN0(LENT,LEVS), & TN0(LENT,LEVS), QN0(LENT,LEVS,NTRAC), & vvl(LENT,LEVS), PG0(LENT) !! real phy_f3d(LENT,LEVS,num_p3d), phy_f2d(LENT,num_p2d) real TPS(LENT,LEVS), QPS(LENT,LEVS), PSP(LENT) real TPS1(LENT,LEVS), QPS1(LENT,LEVS), PSP1(LENT) !! real SMC(LENT,LSOIL), STC(LENT,LSOIL), & TSEA (LENT), SHELEG(LENT), TG3 (LENT), & ZORL (LENT), CV (LENT), CVB (LENT), & CVT (LENT), ALVSF (LENT), ALVWF (LENT), & ALNSF (LENT), ALNWF (LENT), SLMSK (LENT), & VFRAC (LENT), CANOPY(LENT), F10M (LENT), & VTYPE (LENT), STYPE (LENT), FACSF (LENT), & FACWF (LENT), UUSTAR(LENT), FFMM (LENT), & FFHH (LENT), HPRIME(LENT,NMTVR) &, hice(lent), fice(lent),tisfc(lent), & tprcp(lent), slc(lent,lsoil), & snwdpth(lent), slope(lent), shdmin(lent), & shdmax(lent), snoalb(lent), sfalb(lent), & srflag(lent), sfcdsw(lent) real TMPMIN(LENT), TMPMAX(LENT), GESHEM(LENT), & DUSFC (LENT), DVSFC (LENT), DTSFC (LENT), & DQSFC (LENT), DLWSFC(LENT), ULWSFC(LENT), & GFLUX (LENT), RUNOFF(LENT), EP (LENT), & CLDWRK(LENT), DUGWD (LENT), DVGWD (LENT), & PSMEAN(LENT), BENGSH(LENT), XLON (LENT), & XLAT (LENT) real COSZDG(LENT), COSZEN(LENT), & SFCNSW(LENT), SFCDLW(LENT), TSFLW (LENT), & SWH(LENT,LEVS), HLW(LENT,LEVS), ORO (LENT) real PSURF (LENT), U10M (LENT), V10M (LENT), & T2M (LENT), Q2M (LENT), HPBL (LENT), & PWAT (LENT) real slag,sdec,cdec real fluxr(nfxr,LENT) real SNCOVR(lent) real dt3dt(lent,levs,6), dq3dt(lent,levs,7) real du3dt(lent,levs,3), dv3dt(lent,levs,3) &, cldcov(lent,levs) integer mcld,nseal,nbin,nlon,nlat,ida,k PARAMETER (MCLD=4,NSEAL=2,NBIN=100,NLON=2,NLAT=4,IDA=1) real RHCL(NBIN,NLON,NLAT,MCLD,NSEAL,IDA) ! ! Tendency terms ! ! dpdt should be (1000Pa)/second; vvel in Pa/second; wn0 in (1000Pa/second) real dudt11(lent,levs), dvdt11(lent,levs), dtdt11(lent,levs), & dqdt11(lent,levs,ntrac), dpdt11(lent), vvel11(lent,levs) c new ozone forcing integer JINDX1(lent),JINDX2(lent) !for ozon interpolaton real DDY(lent) !for ozon interpolaton real ozplin(latsozp,levozp,pl_coeff,timeoz) integer l logical lprnt ! include 'index.h' c !->rsun nsswr=nint(fhswr*3600./deltim) fluxrzero = mod(kdt,nsswr) .eq. 0 !<-rsun c@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ c c GLOOPR : radiations c ******************* !! CALL gloopr(spect,grid,ftop,pln,plntop,me, !! & latd,nlats,nlons,lonsinpe,latsinpe,ngrp,gr_ln,mylns, !! & table,rcs2,sinlat,coslat,del,sl,si,SWH,HLW, !! & XLON ,XLAT ,COSZDG,SLMSK,SHELEG,ZORL ,COSZEN,TSEA, !! & ALVSF,ALNSF ,ALVWF ,ALNWF,FACSF ,FACWF,CV ,CVT , !! & CVB ,SFCNSW,SFCDLW,TSFLW,HPRIME,STC ,FLUXR , !! & slag,sdec,cdec,fhswr,fhlwr,lsswr,lslwr,lssav, !! & phour,idate,rhcl,istrat,jo3) !! !! CALL gloopr(lent,levs,ntrac,ntoz,ntcw,lsoil,nmtvr,ncld,iflip, !! if (lsswr .or. lslwr) then ! Radiation Call! !! print *,' calling gloopr' !! lprnt = kdt .ge. 432 .and. kdt .lt. 434 !! if (lprnt) then !! print *,' calling gloopr KDT=',kdt !! print *,' tn0=',tn0 !! print *,' qn0=',qn0(:,:,1) !! endif ! CALL gloopr(iflip, ! & rcs2,sinlat,coslat,del,sl,si,SWH,HLW, ! & PG0, UN0, VN0, TN0, QN0, vvl, ! & XLON ,XLAT ,COSZDG,SLMSK,SHELEG,ZORL ,COSZEN,TSEA, ! & ALVSF,ALNSF ,ALVWF ,ALNWF,FACSF ,FACWF,CV ,CVT , ! & CVB ,SFCNSW,SFCDLW,TSFLW,HPRIME,STC ,FLUXR , ! & fice,sfcdsw,tisfc,sfalb, ! & slag,sdec,cdec,fhswr,fhlwr,lsswr,lslwr,lssav, ! & phour,idate,rhcl,istrat,jo3,slk,fhour, ! & cldcov,phy_f3d,LDIAG3D,lprnt) !! & phour,idate,rhcl,istrat,jo3,slk,fhour,cldcov) CALL gloopr(coslat,sinlat,phour, & XLON ,XLAT, COSZDG, COSZEN, & SLMSK,SHELEG,SNCOVR,SNOALB,ZORL ,TSEA,HPRIME, Clu [+1L]: extract snow-free albedo (SFALB) & SFALB, & ALVSF,ALNSF ,ALVWF ,ALNWF,FACSF ,FACWF,CV,CVT, & CVB,SWH,HLW,SFCNSW,SFCDLW, & FICE ,TISFC, SFCDSW, ! FOR SEA-ICE - XW Nov04 & TSFLW,FLUXR ,CLDCOV,phy_f3d,slag,sdec,cdec,KDT, & TN0, QN0, vvl,PG0, & si, sl, slk, & fhour, idate, & ak5,bk5) endif !! hlw = 0.0 !! swh = 0.0 !! if (lprnt) then !! print *,' hlwd=',hlw !! print *,' swhd=',swh !! print *,' sfcnsw=',sfcnsw,' sfcdlw=',sfcdlw !! print *, 'sfcdsw=', sfcdsw !! endif c c GLOOPA : dynamics (For the SCM dynamics is prescribed!) c ***************** !! CALL gloopa(spect,grid,ftop,pln,qln,plntop,deltim,me, !! & latd,nlats,nlons,lonsinpe,ngrp,gr_ln,mylns,table, !! & spdmax,rcs2,wgt,sinlat,del,rdel2,tov,rmu,rnu,rk,sl,si) !! CALL gloopa(kdt, DELTIM, fhour, & un0, vn0, tn0, qn0, pg0, vvl, & dudt11, dvdt11, dtdt11, dqdt11, dpdt11, vvel11) c c GLOOPB : physics c **************** !! CALL gloopb(lent,levs,ntrac,lsoil,nmtvr,deltim, !! & ntoz, ntcw, kdt, ncld,ras, !! if (lprnt) then !! print *,' tn0b=',tn0 !! print *,' qn0b=',qn0(:,:,1) !! endif CALL gloopb(deltim, kdt, & phour,fhour,idate, & rcs2,sinlat,coslat,del,sl,si,levshc,sl1,slk,cl, & PG0, UN0, VN0, TN0, QN0, vvl, & hice,fice,tisfc,sfcdsw,tprcp,srflag,slc,snwdpth,slope, & shdmin,shdmax,snoalb,sfalb, & TSEA ,SHELEG,SNCOVR, TG3 ,ZORL ,CV ,CVB ,CVT , & SLMSK ,VFRAC ,CANOPY,F10M ,VTYPE ,STYPE ,UUSTAR, & FFMM ,FFHH ,TMPMIN,TMPMAX,GESHEM,DUSFC ,DVSFC ,DTSFC , & DQSFC ,DLWSFC,ULWSFC,GFLUX ,RUNOFF,EP ,CLDWRK,DUGWD , & DVGWD ,PSMEAN,BENGSH,XLON ,COSZEN,SFCNSW,SFCDLW,TSFLW , & PSURF ,U10M ,V10M ,T2M ,Q2M ,HPBL ,PWAT , & SWH,HLW,SMC,STC,HPRIME,slag,sdec,cdec, & phy_f3d,phy_f2d,dt3dt,dq3dt,du3dt,dv3dt, !! & tps,qps,psp,tps1,qps1,psp1,dt3dt,dq3dt, & ozplin,jindx1,jindx2,ddy,ak5,bk5,oro,xlat) ! !! !! GCCYCLE !! !! if (nscyc .gt. 0) then !! IF (mod(kdt,nscyc).eq.0) THEN !! CALL gcycle(idate, fhour, fhcyc, !! & XLON ,XLAT ,ORO, SLMSK, SHELEG, ZORL, TSEA, !! & ALVSF,ALNSF ,ALVWF, ALNWF, FACSF , FACWF, !! & CV, CVT, CVB, TG3, CANOPY, F10M, !! & VFRAC,VTYPE, STYPE, SMC, STC) !! ENDIF !! endif IF (lsout.or.lsfwd) THEN CALL wrtout(lent,levs,lsoil,ntrac,ntoz,ntcw,ncld,nmtvr, & un0, vn0, tn0, qn0, pg0, geshem, xlon, xlat, & colat1,SL,SI,idate,fhour,zhour,fhswr,fhlwr, & TSEA,SMC,SHELEG,STC,TG3,ZORL,CV,CVB, & CVT,ALVSF,ALVWF,ALNSF,ALNWF,SLMSK,VFRAC,CANOPY,F10M, & VTYPE,STYPE,FACSF,FACWF,UUSTAR,FFMM,FFHH, & hice,fice,tisfc,tprcp,srflag,slc,snwdpth,slope, & shdmin,shdmax,snoalb,sfalb, & ICEN,IGEN,ICEN2, & tmpmax,tmpmin,runoff,t2m,q2m,psurf,dvgwd,hpbl,pwat,ep, & dugwd,v10m,dtsfc,dqsfc,gflux,dusfc,dvsfc,bengsh, & cldwrk,u10m,fluxr,dlwsfc,ulwsfc,dt3dt,dq3dt,cldcov, LDIAG3D &, du3dt, dv3dt, phy_f3d, phy_f2d, num_p3d, num_p2d, & dudt11, dvdt11, dtdt11, dqdt11, dpdt11, vvel11) IF (mod(kdt,nszer).eq.0) THEN CALL zerout(lent,tmpmin,tmpmax,geshem,bengsh,dusfc,dvsfc, & dtsfc,dqsfc,dlwsfc,ulwsfc,gflux,runoff,ep,cldwrk, & dugwd,dvgwd,psmean,fhour,zhour,fluxr, & dt3dt,dq3dt,du3dt,dv3dt,cldcov,levs,fluxrzero) ENDIF ENDIF RETURN END