diff --git a/GFS_layer/GFS_physics_driver.F90 b/GFS_layer/GFS_physics_driver.F90 index db3148a40..b85c2544d 100644 --- a/GFS_layer/GFS_physics_driver.F90 +++ b/GFS_layer/GFS_physics_driver.F90 @@ -458,7 +458,7 @@ subroutine GFS_physics_driver & ! --- local variables !--- INTEGER VARIABLES - integer :: me, lprint, ipr, ix, im, levs, ntrac, nvdiff, kdt + integer :: lprint, ipr, nvdiff integer :: i, kk, ic, k, n, k1, iter, levshcm, tracers, & trc_shft, tottracer, num2, num3, nshocm, nshoc, ntk @@ -469,7 +469,7 @@ subroutine GFS_physics_driver & islmsk_cice !--- LOGICAL VARIABLES - logical :: lprnt, revap, do_awdd + logical :: revap, do_awdd logical, dimension(size(Grid%xlon,1)) :: & flag_iter, flag_guess, invrsn, skip_macro, & @@ -481,13 +481,13 @@ subroutine GFS_physics_driver & !--- REAL VARIABLES real(kind=kind_phys) :: & - dtf, dtp, rhbbot, rhbtop, rhpbl, frain, tem, tem1, tem2, & + rhbbot, rhbtop, rhpbl, frain, tem, tem1, tem2, & xcosz_loc, zsea1, zsea2, eng0, eng1, dpshc, & !--- experimental for shoc sub-stepping dtshoc real(kind=kind_phys), dimension(size(Grid%xlon,1)) :: & - ccwfac, garea, dlength, cumabs, cice, zice, tice, gflx, & + ccwfac, dlength, cumabs, cice, zice, tice, gflx, & rain1, raincs, snowmt, cd, cdq, qss, dusfcg, dvsfcg, dusfc1, & dvsfc1, dtsfc1, dqsfc1, rb, drain, cld1d, evap, hflx, & stress, t850, ep1d, gamt, gamq, sigmaf, oc, theta, gamma, & @@ -558,25 +558,20 @@ subroutine GFS_physics_driver & ! !===> ... begin here - me = Model%me - ix = size(Grid%xlon,1) - im = size(Grid%xlon,1) - levs = Model%levs - ntrac = Model%ntrac - dtf = Model%dtf - dtp = Model%dtp - kdt = Model%kdt - lprnt = Model%lprnt - nvdiff = ntrac ! vertical diffusion of all tracers! - ipr = min(im,10) - - do i = 1, im + ! DH* these two need to go into some interstitial scheme + nvdiff = Model%ntrac ! vertical diffusion of all tracers! + ipr = min(size(Grid%xlon,1),10) + ! *DH + + ! DH* this as well + do i = 1, size(Grid%xlon,1) if(nint(Sfcprop%slmsk(i)) == 1) then frland(i) = 1.0 else frland(i) = 0. endif enddo + ! *DH ! ! --- ... figure out number of extra tracers ! @@ -601,19 +596,20 @@ subroutine GFS_physics_driver & ! if (Model%ntke > 0) ntk = Model%ntke - trc_shft + 3 -! if (lprnt) write(0,*)' trans_trac=',trans_trac,' tottracer=', & +! if (Model%lprnt) write(0,*)' trans_trac=',trans_trac,' tottracer=', & ! write(0,*)' trans_trac=',trans_trac,' tottracer=', & -! & tottracer,' trc_shft=',trc_shft,' kdt=',kdt -! &, ntrac-ncld+2,' clstp=',clstp,' kdt=',kdt +! & tottracer,' trc_shft=',trc_shft,' kdt=',Model%kdt +! &, Model%ntrac-ncld+2,' clstp=',clstp,' kdt=',Model%kdt ! &,' ntk=',ntk,' lat=',lat ! skip_macro = .false. ! - ! allocate ( clw(ix,levs,tottracer+2) ) + ! allocate ( clw(size(Grid%xlon,1),Model%levs,tottracer+2) ) ! if (Model%imfdeepcnv >= 0 .or. Model%imfshalcnv > 0) then - ! allocate (cnvc(ix,levs), cnvw(ix,levs)) + ! allocate (cnvc(size(Grid%xlon,1),Model%levs), cnvw(size(Grid%xlon,1),Model%levs)) ! endif + ! DH* this entire routine can/must be removed once the full CCPP version is used - part of interstitial_create in GFS_typedefs.F90 *DH call GFS_suite_interstitial_1_run (Model, Grid, tottracer, trc_shft, tracers, ntk, skip_macro, clw, cnvc, cnvw) ! ! --- set initial quantities for stochastic physics deltas @@ -626,9 +622,9 @@ subroutine GFS_physics_driver & endif if (Model%do_shoc) then - allocate (qpl(im,levs), qpi(im,levs), ncpl(im,levs), ncpi(im,levs)) - do k=1,levs - do i=1,im + allocate (qpl(size(Grid%xlon,1),Model%levs), qpi(size(Grid%xlon,1),Model%levs), ncpl(size(Grid%xlon,1),Model%levs), ncpi(size(Grid%xlon,1),Model%levs)) + do k=1,Model%levs + do i=1,size(Grid%xlon,1) ncpl(i,k) = 0.0 ncpi(i,k) = 0.0 enddo @@ -636,12 +632,12 @@ subroutine GFS_physics_driver & endif if (Model%ncld == 2) then ! For MGB double moment microphysics - allocate (qlcn(im,levs), qicn(im,levs), w_upi(im,levs), & - cf_upi(im,levs), CNV_MFD(im,levs), CNV_PRC3(im,levs), & - CNV_DQLDT(im,levs), clcn(im,levs), cnv_fice(im,levs), & - cnv_ndrop(im,levs), cnv_nice(im,levs)) - allocate (cn_prc(im), cn_snr(im)) - allocate (qrn(im,levs), qsnw(im,levs), ncpr(im,levs), ncps(im,levs)) + allocate (qlcn(size(Grid%xlon,1),Model%levs), qicn(size(Grid%xlon,1),Model%levs), w_upi(size(Grid%xlon,1),Model%levs), & + cf_upi(size(Grid%xlon,1),Model%levs), CNV_MFD(size(Grid%xlon,1),Model%levs), CNV_PRC3(size(Grid%xlon,1),Model%levs), & + CNV_DQLDT(size(Grid%xlon,1),Model%levs), clcn(size(Grid%xlon,1),Model%levs), cnv_fice(size(Grid%xlon,1),Model%levs), & + cnv_ndrop(size(Grid%xlon,1),Model%levs), cnv_nice(size(Grid%xlon,1),Model%levs)) + allocate (cn_prc(size(Grid%xlon,1)), cn_snr(size(Grid%xlon,1))) + allocate (qrn(size(Grid%xlon,1),Model%levs), qsnw(size(Grid%xlon,1),Model%levs), ncpr(size(Grid%xlon,1),Model%levs), ncps(size(Grid%xlon,1),Model%levs)) else allocate (qlcn(1,1), qicn(1,1), w_upi(1,1), cf_upi(1,1), & CNV_MFD(1,1), CNV_PRC3(1,1), CNV_DQLDT(1,1), & @@ -650,13 +646,13 @@ subroutine GFS_physics_driver & #ifdef GFS_HYDRO - call get_prs(im, ix, levs, ntrac, Statein%tgrs, Statein%qgrs, & + call get_prs(size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%ntrac, Statein%tgrs, Statein%qgrs, & Model%thermodyn_id, Model%sfcpress_id, & Model%gen_coord_hybrid, Statein%prsi, Statein%prsik, & Statein%prsl, Statein%prslk, Statein%phii, Statein%phil, del) #else !GFDL Adjust the geopotential height hydrostatically in a way consistent with FV3 discretization - call get_prs_fv3_run (ix, levs, Statein%phii, Statein%prsi, & + call get_prs_fv3_run (size(Grid%xlon,1), Model%levs, Statein%phii, Statein%prsi, & Statein%tgrs, Statein%qgrs(:,:,1), del, del_gz) #endif @@ -668,27 +664,27 @@ subroutine GFS_physics_driver & ! --- ... frain=factor for centered difference scheme correction of rain amount. - ! frain = dtf / dtp + ! frain = Model%dtf / Model%dtp ! --- ... xw: transfer ice thickness & concentration from global to local variables call sfc_sice_pre_run & - & (im, Sfcprop%fice, Sfcprop%hice, Sfcprop%tisfc, & + & (size(Grid%xlon,1), Sfcprop%fice, Sfcprop%hice, Sfcprop%tisfc, & & Statein%prsik(:,1), Statein%prslk(:,1), & & cice, zice, tice, work3) - do i = 1, im + do i = 1, size(Grid%xlon,1) !GFDL tem1 = con_rerth * (con_pi+con_pi)*coslat(i)/nlons(i) !GFDL tem2 = con_rerth * con_pi / latr !GFDL garea(i) = tem1 * tem2 ! tem1 = Grid%dx(i) ! tem2 = Grid%dx(i) - garea(i) = Grid%area(i) +! garea(i) = Grid%area(i) ! dlength(i) = sqrt( tem1*tem1+tem2*tem2 ) ! cldf(i) = Model%cgwf(1)*work1(i) + Model%cgwf(2)*work2(i) wcbmax(i) = Model%cs_parm(1)*work1(i) + Model%cs_parm(2)*work2(i) enddo ! if (Model%cplflx) then - do i = 1, im + do i = 1, size(Grid%xlon,1) islmsk_cice(i) = nint(Coupling%slimskin_cpl(i)) flag_cice(i) = (islmsk_cice(i) == 4) @@ -730,7 +726,7 @@ subroutine GFS_physics_driver & Coupling%sfcnsw, Coupling%sfcdlw, Radtend%htrsw, Radtend%htrlw,& Coupling%nirbmui, Coupling%nirdfui, Coupling%visbmui, & Coupling%visdfui, Coupling%nirbmdi, Coupling%nirdfdi, & - Coupling%visbmdi, Coupling%visdfdi, ix, im, levs, & + Coupling%visbmdi, Coupling%visdfdi, size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, & ! --- input/output: dtdt, & ! --- outputs: @@ -750,7 +746,7 @@ subroutine GFS_physics_driver & Radtend%htrsw, Radtend%swhc, Radtend%htrlw, Radtend%lwhc, & Coupling%nirbmui, Coupling%nirdfui, Coupling%visbmui, & Coupling%visdfui, Coupling%nirbmdi, Coupling%nirdfdi, & - Coupling%visbmdi, Coupling%visdfdi, ix, im, levs, & + Coupling%visbmdi, Coupling%visdfdi, size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, & ! --- input/output: dtdt, dtdtc, & ! --- outputs: @@ -774,11 +770,11 @@ subroutine GFS_physics_driver & ! ! interval) that solar radiation falling on a plane perpendicular to the ! ! direction of the sun >= 120 w/m2 ! -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! if ( xcosz(i) >= czmin ) then ! zenth angle > 89.994 deg ! tem1 = adjsfcdsw(i) / xcosz(i) ! if ( tem1 >= 120.0 ) then -! Diag%suntim(i) = Diag%suntim(i) + dtf +! Diag%suntim(i) = Diag%suntim(i) + Model%dtf ! endif ! endif ! enddo @@ -786,26 +782,26 @@ subroutine GFS_physics_driver & ! ! --- ... sfc lw fluxes used by atmospheric model are saved for output ! ! if (Model%cplflx) then -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! if (flag_cice(i)) adjsfculw(i) = ulwsfc_cice(i) ! enddo ! endif -! Diag%dlwsfc(:) = Diag%dlwsfc(:) + adjsfcdlw(:)*dtf -! Diag%ulwsfc(:) = Diag%ulwsfc(:) + adjsfculw(:)*dtf -! Diag%psmean(:) = Diag%psmean(:) + Statein%pgr(:)*dtf ! mean surface pressure +! Diag%dlwsfc(:) = Diag%dlwsfc(:) + adjsfcdlw(:)*Model%dtf +! Diag%ulwsfc(:) = Diag%ulwsfc(:) + adjsfculw(:)*Model%dtf +! Diag%psmean(:) = Diag%psmean(:) + Statein%pgr(:)*Model%dtf ! mean surface pressure ! ! if (Model%ldiag3d) then ! if (Model%lsidea) then -! Diag%dt3dt(:,:,1) = Diag%dt3dt(:,:,1) + Radtend%lwhd(:,:,1)*dtf -! Diag%dt3dt(:,:,2) = Diag%dt3dt(:,:,2) + Radtend%lwhd(:,:,2)*dtf -! Diag%dt3dt(:,:,3) = Diag%dt3dt(:,:,3) + Radtend%lwhd(:,:,3)*dtf -! Diag%dt3dt(:,:,4) = Diag%dt3dt(:,:,4) + Radtend%lwhd(:,:,4)*dtf -! Diag%dt3dt(:,:,5) = Diag%dt3dt(:,:,5) + Radtend%lwhd(:,:,5)*dtf -! Diag%dt3dt(:,:,6) = Diag%dt3dt(:,:,6) + Radtend%lwhd(:,:,6)*dtf +! Diag%dt3dt(:,:,1) = Diag%dt3dt(:,:,1) + Radtend%lwhd(:,:,1)*Model%dtf +! Diag%dt3dt(:,:,2) = Diag%dt3dt(:,:,2) + Radtend%lwhd(:,:,2)*Model%dtf +! Diag%dt3dt(:,:,3) = Diag%dt3dt(:,:,3) + Radtend%lwhd(:,:,3)*Model%dtf +! Diag%dt3dt(:,:,4) = Diag%dt3dt(:,:,4) + Radtend%lwhd(:,:,4)*Model%dtf +! Diag%dt3dt(:,:,5) = Diag%dt3dt(:,:,5) + Radtend%lwhd(:,:,5)*Model%dtf +! Diag%dt3dt(:,:,6) = Diag%dt3dt(:,:,6) + Radtend%lwhd(:,:,6)*Model%dtf ! else -! do k = 1, levs -! Diag%dt3dt(:,k,1) = Diag%dt3dt(:,k,1) + Radtend%htrlw(:,k)*dtf -! Diag%dt3dt(:,k,2) = Diag%dt3dt(:,k,2) + Radtend%htrsw(:,k)*dtf*xmu(:) +! do k = 1, Model%levs +! Diag%dt3dt(:,k,1) = Diag%dt3dt(:,k,1) + Radtend%htrlw(:,k)*Model%dtf +! Diag%dt3dt(:,k,2) = Diag%dt3dt(:,k,2) + Radtend%htrsw(:,k)*Model%dtf*xmu(:) ! enddo ! endif ! endif @@ -815,10 +811,10 @@ subroutine GFS_physics_driver & call GFS_surface_generic_pre_run (Model, Grid, Sfcprop, Radtend, Statein,& adjsfcdlw, Diag, sigmaf, islmsk, soiltyp, vegtype, slopetyp, work3, & gabsbdlw, tsurf, flag_guess, flag_iter, ep1d) - call GFS_PBL_generic_pre_run (im, levs, kinver) + call GFS_PBL_generic_pre_run (size(Grid%xlon,1), Model%levs, kinver) !kcnv(:) = 0 - !kinver(:) = levs + !kinver(:) = Model%levs invrsn(:) = .false. tx1(:) = 0.0 tx2(:) = 10.0 @@ -829,8 +825,8 @@ subroutine GFS_physics_driver & if (((Model%imfshalcnv == 0 .and. Model%shal_cnv) .or. Model%old_monin) & .and. Model%mstrat) then ctei_rml(:) = Model%ctei_rm(1)*work1(:) + Model%ctei_rm(2)*work2(:) - do k = 1, levs/2 - do i = 1, im + do k = 1, Model%levs/2 + do i = 1, size(Grid%xlon,1) if (Statein%prsi(i,1)-Statein%prsi(i,k+1) < 0.35*Statein%prsi(i,1) & .and. (.not. invrsn(i))) then tem = (Statein%tgrs(i,k+1)-Statein%tgrs(i,k)) / (Statein%prsl(i,k)-Statein%prsl(i,k+1)) @@ -855,7 +851,7 @@ subroutine GFS_physics_driver & if ( ctei_rml(i) > ctei_r(i) ) then kinver(i) = k else - kinver(i) = levs + kinver(i) = Model%levs endif endif @@ -885,8 +881,8 @@ subroutine GFS_physics_driver & ! Diag%zlvl(:) = Statein%phil(:,1) * onebg ! Diag%smcwlt2(:) = 0.0 ! Diag%smcref2(:) = 0.0 - call lsm_noah_pre_run(im,Model%lsoil,drain,runof,evbs,evcw,trans,sbsno, & - snowc,snohf,Diag%smcwlt2(:),Diag%smcref2(:)) + call lsm_noah_pre_run(size(Grid%xlon,1),Model%lsoil,drain,runof,evbs,evcw,trans,sbsno, & + snowc,snohf,Diag%smcwlt2,Diag%smcref2) ! --- ... lu: iter-loop over (sfc_diff,sfc_drv,sfc_ocean,sfc_sice) @@ -894,10 +890,10 @@ subroutine GFS_physics_driver & ! --- ... surface exchange coefficients ! -! if (lprnt) write(0,*)' tsea=',tsea(ipr),' tsurf=',tsurf(ipr),iter +! if (Model%lprnt) write(0,*)' tsea=',tsea(ipr),' tsurf=',tsurf(ipr),iter -! call sfc_diff (im,Statein%pgr, Statein%ugrs, Statein%vgrs, & - call sfc_ex_coef_run(im,Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & +! call sfc_diff (size(Grid%xlon,1),Statein%pgr, Statein%ugrs, Statein%vgrs, & + call sfc_ex_coef_run(size(Grid%xlon,1),Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & Statein%tgrs(:,1), Statein%qgrs(:,1,1), Diag%zlvl, & Sfcprop%snowd, Sfcprop%tsfc, Sfcprop%zorl, cd, & cdq, rb, Statein%prsl(:,1), work3, islmsk, stress, & @@ -908,31 +904,31 @@ subroutine GFS_physics_driver & ! --- ... lu: update flag_guess -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! if (iter == 1 .and. wind(i) < 2.0) then ! flag_guess(i) = .true. ! endif ! enddo - call GFS_surface_loop_control_part1_run(im,iter,wind,flag_guess) + call GFS_surface_loop_control_part1_run(size(Grid%xlon,1),iter,wind,flag_guess) if (Model%nstf_name(1) > 0) then - call sfc_nst_pre_run(im, islmsk, Sfcprop%oro, Sfcprop%oro_uf, & + call sfc_nst_pre_run(size(Grid%xlon,1), islmsk, Sfcprop%oro, Sfcprop%oro_uf, & Sfcprop%tsfc, & ! --- Input/output tsurf, & ! --- outputs: tseal) - call sfc_nst_run (im, Model%lsoil, Statein%pgr, Statein%ugrs(:,1), & + call sfc_nst_run (size(Grid%xlon,1), Model%lsoil, Statein%pgr, Statein%ugrs(:,1), & Statein%vgrs(:,1), Statein%tgrs(:,1), & Statein%qgrs(:,1,1), Sfcprop%tref, cd, cdq, & Statein%prsl(:,1), work3, islmsk, Grid%xlon, & Grid%sinlat, stress, Radtend%semis, gabsbdlw, & - adjsfcnsw, Sfcprop%tprcp, dtf, kdt, Model%solhr, & + adjsfcnsw, Sfcprop%tprcp, Model%dtf, Model%kdt, Model%solhr, & xcosz, Tbd%phy_f2d(:,Model%num_p2d), flag_iter, & flag_guess, Model%nstf_name(1), Model%nstf_name(4),& - Model%nstf_name(5), lprnt, ipr, & + Model%nstf_name(5), Model%lprnt, ipr, & ! --- Input/output tseal, tsurf, Sfcprop%xt, Sfcprop%xs, Sfcprop%xu, & Sfcprop%xv, Sfcprop%xz, Sfcprop%zm, Sfcprop%xtts, & @@ -943,7 +939,7 @@ subroutine GFS_physics_driver & qss, gflx, Diag%cmm, Diag%chh, evap, hflx, ep1d) - call sfc_nst_post_run(im, islmsk, Sfcprop%oro, Sfcprop%oro_uf, & + call sfc_nst_post_run(size(Grid%xlon,1), islmsk, Sfcprop%oro, Sfcprop%oro_uf, & Model%nstf_name(1), Model%nstf_name(4), & Model%nstf_name(5), Sfcprop%xt, Sfcprop%xz, & Sfcprop%dt_cool, Sfcprop%z_c, Sfcprop%slmsk, & @@ -959,7 +955,7 @@ subroutine GFS_physics_driver & call sfc_ocean & ! --- inputs: - (im, Statein%pgr, Statein%ugrs, Statein%vgrs, Statein%tgrs, & + (size(Grid%xlon,1), Statein%pgr, Statein%ugrs, Statein%vgrs, Statein%tgrs, & Statein%qgrs, Sfcprop%tsfc, cd, cdq, Statein%prsl(1,1), & work3, islmsk, Tbd%phy_f2d(1,Model%num_p2d), flag_iter, & ! --- outputs: @@ -967,25 +963,25 @@ subroutine GFS_physics_driver & endif ! if ( nstf_name(1) > 0 ) then -! if (lprnt) write(0,*)' sfalb=',sfalb(ipr),' ipr=',ipr & +! if (Model%lprnt) write(0,*)' sfalb=',sfalb(ipr),' ipr=',ipr & ! &, ' weasd=',weasd(ipr),' snwdph=',snwdph(ipr) & -! &, ' tprcp=',tprcp(ipr),' kdt=',kdt,' iter=',iter & +! &, ' tprcp=',tprcp(ipr),' kdt=',Model%kdt,' iter=',iter & ! &,' tseabefland=',tsea(ipr) ! --- ... surface energy balance over land ! if (Model%lsm == 1) then ! noah lsm call -! if (lprnt) write(0,*)' tsead=',tsea(ipr),' tsurf=',tsurf(ipr),iter +! if (Model%lprnt) write(0,*)' tsead=',tsea(ipr),' tsurf=',tsurf(ipr),iter ! &,' pgr=',pgr(ipr),' sfcemis=',sfcemis(ipr) ! call sfc_drv & call lsm_noah_run & ! --- inputs: - (im, Model%lsoil, Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & + (size(Grid%xlon,1), Model%lsoil, Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & Statein%tgrs(:,1), Statein%qgrs(:,1,1), soiltyp, vegtype, sigmaf, & - Radtend%semis, gabsbdlw, adjsfcdsw, adjsfcnsw, dtf, & - Sfcprop%tg3, cd, cdq, Statein%prsl(:,1), work3, DIag%zlvl, & + Radtend%semis, gabsbdlw, adjsfcdsw, adjsfcnsw, Model%dtf, & + Sfcprop%tg3, cd, cdq, Statein%prsl(:,1), work3, Diag%zlvl, & islmsk, Tbd%phy_f2d(:,Model%num_p2d), slopetyp, & Sfcprop%shdmin, Sfcprop%shdmax, Sfcprop%snoalb, & Radtend%sfalb, flag_iter, flag_guess, Model%isot, & @@ -999,18 +995,18 @@ subroutine GFS_physics_driver & Diag%cmm, Diag%chh, evbs, evcw, sbsno, snowc, Diag%soilm, & snohf, Diag%smcwlt2, Diag%smcref2, Diag%wet1) -! if (lprnt) write(0,*)' tseae=',tsea(ipr),' tsurf=',tsurf(ipr),iter +! if (Model%lprnt) write(0,*)' tseae=',tsea(ipr),' tsurf=',tsurf(ipr),iter ! &,' phy_f2d=',phy_f2d(ipr,num_p2d) endif -! if (lprnt) write(0,*)' tseabeficemodel =',tsea(ipr),' me=',me & -! &, ' kdt=',kdt +! if (Model%lprnt) write(0,*)' tseabeficemodel =',tsea(ipr),' me=',Model%me & +! &, ' kdt=',Model%kdt ! --- ... surface energy balance over seaice if (Model%cplflx) then - do i = 1, im + do i = 1, size(Grid%xlon,1) if (flag_cice(i)) then islmsk (i) = islmsk_cice(i) endif @@ -1019,13 +1015,13 @@ subroutine GFS_physics_driver & call sfc_sice_run & ! --- inputs: - (im, Model%lsoil, Statein%pgr, Statein%ugrs(:,1), & + (size(Grid%xlon,1), Model%lsoil, Statein%pgr, Statein%ugrs(:,1), & Statein%vgrs(:,1), Statein%tgrs(:,1), Statein%qgrs(:,1,1), & - dtf, Radtend%semis, gabsbdlw, & + Model%dtf, Radtend%semis, gabsbdlw, & adjsfcnsw, adjsfcdsw, Sfcprop%srflag, cd, cdq, & Statein%prsl(:,1), work3, islmsk, & Tbd%phy_f2d(:,Model%num_p2d), flag_iter, Model%mom4ice, & - Model%lsm, lprnt, ipr, & + Model%lsm, Model%lprnt, ipr, & ! --- input/outputs: zice, cice, tice, Sfcprop%weasd, Sfcprop%tsfc, & Sfcprop%tprcp, Sfcprop%stc, ep1d, & @@ -1034,7 +1030,7 @@ subroutine GFS_physics_driver & hflx) if (Model%cplflx) then - do i = 1, im + do i = 1, size(Grid%xlon,1) if (flag_cice(i)) then islmsk(i) = nint(Sfcprop%slmsk(i)) endif @@ -1042,7 +1038,7 @@ subroutine GFS_physics_driver & call sfc_cice & ! --- inputs: - (im, Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, & + (size(Grid%xlon,1), Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, & cd, cdq, Statein%prsl(1,1), work3, islmsk_cice, & Tbd%phy_f2d(1,Model%num_p2d),flag_iter, dqsfc_cice, & dtsfc_cice, & @@ -1052,7 +1048,7 @@ subroutine GFS_physics_driver & ! --- ... lu: update flag_iter and flag_guess -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! flag_iter(i) = .false. ! flag_guess(i) = .false. ! @@ -1070,13 +1066,13 @@ subroutine GFS_physics_driver & ! if (wind(i) < 2.0) flag_iter(i) = .true. ! endif ! enddo - call GFS_surface_loop_control_part2_run(im,iter,wind,flag_guess,& + call GFS_surface_loop_control_part2_run(size(Grid%xlon,1),iter,wind,flag_guess,& flag_iter,islmsk,Model%nstf_name(1)) enddo ! end iter_loop call dcyc2t3_post_run ( & - im, adjsfcdlw, adjsfculw, adjsfcdsw, adjsfcnsw, Diag) + size(Grid%xlon,1), adjsfcdlw, adjsfculw, adjsfcdsw, adjsfcnsw, Diag) ! Diag%epi(:) = ep1d(:) @@ -1092,8 +1088,8 @@ subroutine GFS_physics_driver & ! --- ... update near surface fields -! call sfc_diag (im, Statein%pgr, Statein%ugrs, Statein%vgrs, & - call sfc_diag_run(im, Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & +! call sfc_diag (size(Grid%xlon,1), Statein%pgr, Statein%ugrs, Statein%vgrs, & + call sfc_diag_run(size(Grid%xlon,1), Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & Statein%tgrs(:,1), Statein%qgrs(:,1,1), Sfcprop%tsfc, qss, & Sfcprop%f10m, Diag%u10m, Diag%v10m, & Sfcprop%t2m, Sfcprop%q2m, work3, evap, & @@ -1104,18 +1100,18 @@ subroutine GFS_physics_driver & if (Model%cplflx) then Coupling%dlwsfci_cpl (:) = adjsfcdlw(:) Coupling%dswsfci_cpl (:) = adjsfcdsw(:) - Coupling%dlwsfc_cpl (:) = Coupling%dlwsfc_cpl(:) + adjsfcdlw(:)*dtf - Coupling%dswsfc_cpl (:) = Coupling%dswsfc_cpl(:) + adjsfcdsw(:)*dtf + Coupling%dlwsfc_cpl (:) = Coupling%dlwsfc_cpl(:) + adjsfcdlw(:)*Model%dtf + Coupling%dswsfc_cpl (:) = Coupling%dswsfc_cpl(:) + adjsfcdsw(:)*Model%dtf Coupling%dnirbmi_cpl (:) = adjnirbmd(:) Coupling%dnirdfi_cpl (:) = adjnirdfd(:) Coupling%dvisbmi_cpl (:) = adjvisbmd(:) Coupling%dvisdfi_cpl (:) = adjvisdfd(:) - Coupling%dnirbm_cpl (:) = Coupling%dnirbm_cpl(:) + adjnirbmd(:)*dtf - Coupling%dnirdf_cpl (:) = Coupling%dnirdf_cpl(:) + adjnirdfd(:)*dtf - Coupling%dvisbm_cpl (:) = Coupling%dvisbm_cpl(:) + adjvisbmd(:)*dtf - Coupling%dvisdf_cpl (:) = Coupling%dvisdf_cpl(:) + adjvisdfd(:)*dtf + Coupling%dnirbm_cpl (:) = Coupling%dnirbm_cpl(:) + adjnirbmd(:)*Model%dtf + Coupling%dnirdf_cpl (:) = Coupling%dnirdf_cpl(:) + adjnirdfd(:)*Model%dtf + Coupling%dvisbm_cpl (:) = Coupling%dvisbm_cpl(:) + adjvisbmd(:)*Model%dtf + Coupling%dvisdf_cpl (:) = Coupling%dvisdf_cpl(:) + adjvisdfd(:)*Model%dtf Coupling%nlwsfci_cpl (:) = adjsfcdlw(:) - adjsfculw(:) - Coupling%nlwsfc_cpl (:) = Coupling%nlwsfc_cpl(:) + Coupling%nlwsfci_cpl(:)*dtf + Coupling%nlwsfc_cpl (:) = Coupling%nlwsfc_cpl(:) + Coupling%nlwsfci_cpl(:)*Model%dtf Coupling%t2mi_cpl (:) = Sfcprop%t2m(:) Coupling%q2mi_cpl (:) = Sfcprop%q2m(:) Coupling%u10mi_cpl (:) = Diag%u10m(:) @@ -1126,7 +1122,7 @@ subroutine GFS_physics_driver & ! --- estimate mean albedo for ocean point without ice cover and apply ! them to net SW heat fluxes - do i = 1, im + do i = 1, size(Grid%xlon,1) if (islmsk(i) /= 1) then ! not a land point ! --- compute open water albedo xcosz_loc = max( 0.0, min( 1.0, xcosz(i) )) @@ -1149,11 +1145,11 @@ subroutine GFS_physics_driver & endif Coupling%nswsfci_cpl(i) = Coupling%nnirbmi_cpl(i) + Coupling%nnirdfi_cpl(i) + & Coupling%nvisbmi_cpl(i) + Coupling%nvisdfi_cpl(i) - Coupling%nswsfc_cpl(i) = Coupling%nswsfc_cpl(i) + Coupling%nswsfci_cpl(i)*dtf - Coupling%nnirbm_cpl(i) = Coupling%nnirbm_cpl(i) + Coupling%nnirbmi_cpl(i)*dtf - Coupling%nnirdf_cpl(i) = Coupling%nnirdf_cpl(i) + Coupling%nnirdfi_cpl(i)*dtf - Coupling%nvisbm_cpl(i) = Coupling%nvisbm_cpl(i) + Coupling%nvisbmi_cpl(i)*dtf - Coupling%nvisdf_cpl(i) = Coupling%nvisdf_cpl(i) + Coupling%nvisdfi_cpl(i)*dtf + Coupling%nswsfc_cpl(i) = Coupling%nswsfc_cpl(i) + Coupling%nswsfci_cpl(i)*Model%dtf + Coupling%nnirbm_cpl(i) = Coupling%nnirbm_cpl(i) + Coupling%nnirbmi_cpl(i)*Model%dtf + Coupling%nnirdf_cpl(i) = Coupling%nnirdf_cpl(i) + Coupling%nnirdfi_cpl(i)*Model%dtf + Coupling%nvisbm_cpl(i) = Coupling%nvisbm_cpl(i) + Coupling%nvisbmi_cpl(i)*Model%dtf + Coupling%nvisdf_cpl(i) = Coupling%nvisdf_cpl(i) + Coupling%nvisdfi_cpl(i)*Model%dtf enddo endif @@ -1161,7 +1157,7 @@ subroutine GFS_physics_driver & trans, sbsno, snowc, snohf, Diag, Sfcprop) !!!!!!!!!!!!!!!!!Commented by Moorthi on July 18, 2012 !!!!!!!!!!!!!!!!!!! -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! --- ... compute coefficient of evaporation in evapc ! ! if (evapc(i) > 1.0e0) evapc(i) = 1.0e0 @@ -1172,11 +1168,11 @@ subroutine GFS_physics_driver & ! --- ... Boundary Layer and Free atmospheic turbulence parameterization -! if (lprnt) write(0,*)' tsea3=',tsea(ipr),' slmsk=',slmsk(ipr) & -! &, ' kdt=',kdt,' evap=',evap(ipr) -! if (lprnt) write(0,*)' dtdtb=',(dtdt(ipr,k),k=1,15) +! if (Model%lprnt) write(0,*)' tsea3=',tsea(ipr),' slmsk=',slmsk(ipr) & +! &, ' kdt=',Model%kdt,' evap=',evap(ipr) +! if (Model%lprnt) write(0,*)' dtdtb=',(dtdt(ipr,k),k=1,15) -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! if (islmsk(i) == 0) then ! oro_land(i) = 0.0 ! else @@ -1184,59 +1180,59 @@ subroutine GFS_physics_driver & ! endif ! enddo -! write(0,*)' before monin clstp=',clstp,' kdt=',kdt,' lat=',lat +! write(0,*)' before monin clstp=',clstp,' kdt=',Model%kdt,' lat=',lat if (Model%do_shoc) then - call moninshoc(ix, im, levs, ntrac, Model%ntcw, dvdt, dudt, dtdt, dqdt, & + call moninshoc(size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%ntrac, Model%ntcw, dvdt, dudt, dtdt, dqdt, & Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, & Tbd%phy_f3d(1,1,Model%ntot3d-1), prnum, Model%ntke, & Statein%prsik(1,1), rb, Sfcprop%zorl, Diag%u10m, & Diag%v10m, Sfcprop%ffmm, Sfcprop%ffhh, Sfcprop%tsfc, hflx,& evap, stress, wind, kpbl, Statein%prsi, del, Statein%prsl,& - Statein%prslk, Statein%phii, Statein%phil, dtp, dusfc1, & + Statein%prslk, Statein%phii, Statein%phil, Model%dtp, dusfc1, & dvsfc1, dtsfc1, dqsfc1, dkt, Diag%hpbl, kinver, & - Model%xkzm_m, Model%xkzm_h, Model%xkzm_s, lprnt, ipr, me) + Model%xkzm_m, Model%xkzm_h, Model%xkzm_s, Model%lprnt, ipr, Model%me) else if (Model%hybedmf) then - call edmf_run (ix, im, levs, nvdiff, Model%ntcw, dvdt, dudt, dtdt, dqdt,& + call edmf_run (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, nvdiff, Model%ntcw, dvdt, dudt, dtdt, dqdt,& Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, & Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(:,1), & rb, Sfcprop%zorl, Diag%u10m, Diag%v10m, Sfcprop%ffmm, & Sfcprop%ffhh, Sfcprop%tsfc, hflx, evap, stress, & wind, kpbl, Statein%prsi, del, Statein%prsl, & - Statein%prslk, Statein%phii, Statein%phil, dtp, & + Statein%prslk, Statein%phii, Statein%phil, Model%dtp, & Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl,& gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, & - Model%xkzm_s, lprnt, ipr) -! if (lprnt) write(0,*)' dtdtm=',(dtdt(ipr,k),k=1,15) -! if (lprnt) write(0,*)' dqdtm=',(dqdt(ipr,k,1),k=1,15) + Model%xkzm_s, Model%lprnt, ipr) +! if (Model%lprnt) write(0,*)' dtdtm=',(dtdt(ipr,k),k=1,15) +! if (Model%lprnt) write(0,*)' dqdtm=',(dqdt(ipr,k,1),k=1,15) elseif (.not. Model%old_monin) then - call moninq(ix, im, levs, nvdiff, Model%ntcw, dvdt, dudt, dtdt, dqdt, & + call moninq(size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, nvdiff, Model%ntcw, dvdt, dudt, dtdt, dqdt, & Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, & Radtend%htrsw, Radtend%htrlw, xmu, Statein%prsik(1,1), rb,& Sfcprop%ffmm, Sfcprop%ffhh, Sfcprop%tsfc, qss, hflx, evap,& stress, wind, kpbl, Statein%prsi, del, Statein%prsl, & - Statein%prslk, Statein%phii, Statein%phil, dtp, & + Statein%prslk, Statein%phii, Statein%phil, Model%dtp, & Model%dspheat, dusfc1, dvsfc1, dtsfc1, dqsfc1, Diag%hpbl, & gamt, gamq, dkt, kinver, Model%xkzm_m, Model%xkzm_h, & - Model%xkzm_s, lprnt, ipr) + Model%xkzm_s, Model%lprnt, ipr) else if (Model%mstrat) then - call moninp1(ix, im, levs, nvdiff, dvdt, dudt, dtdt, dqdt, & + call moninp1(size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, nvdiff, dvdt, dudt, dtdt, dqdt, & Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs,& Statein%prsik(1,1), rb, Sfcprop%ffmm, Sfcprop%ffhh, & Sfcprop%tsfc, qss, hflx, evap, stress, wind, kpbl, & Statein%prsi, del, Statein%prsl, Statein%prslk, & - Statein%phii, Statein%phil, dtp, dusfc1, dvsfc1, & + Statein%phii, Statein%phil, Model%dtp, dusfc1, dvsfc1, & dtsfc1, dqsfc1, Diag%hpbl, gamt, gamq, dkt, kinver, & Model%xkzm_m, Model%xkzm_h) else - call moninp(ix, im, levs, nvdiff, dvdt, dudt, dtdt, dqdt, & + call moninp(size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, nvdiff, dvdt, dudt, dtdt, dqdt, & Statein%ugrs, Statein%vgrs, Statein%tgrs, Statein%qgrs, & Statein%prsik(1,1), rb, Sfcprop%ffmm, Sfcprop%ffhh, & Sfcprop%tsfc, qss, hflx, evap, stress, wind, kpbl, & Statein%prsi, del, Statein%prsl, Statein%phii, & - Statein%phil, dtp, dusfc1, dvsfc1, dtsfc1, dqsfc1, & + Statein%phil, Model%dtp, dusfc1, dvsfc1, dtsfc1, dqsfc1, & Diag%hpbl, gamt, gamq, dkt, Model%xkzm_m, Model%xkzm_h) endif @@ -1244,7 +1240,7 @@ subroutine GFS_physics_driver & endif ! end if_do_shoc if (Model%cplflx) then - do i = 1, im + do i = 1, size(Grid%xlon,1) if (flag_cice(i)) then cice(i) = fice_cice(i) Sfcprop%tsfc(i) = tsea_cice(i) @@ -1256,8 +1252,8 @@ subroutine GFS_physics_driver & enddo endif -! if (lprnt) then -! write(0,*) ' dusfc1=',dusfc1(ipr),' kdt=',kdt,' lat=',lat +! if (Model%lprnt) then +! write(0,*) ' dusfc1=',dusfc1(ipr),' kdt=',Model%kdt,' lat=',lat ! write(0,*)' dtsfc1=',dtsfc1(ipr) ! write(0,*)' dqsfc1=',dqsfc1(ipr) ! write(0,*)' dtdtc=',(dtdt(ipr,k),k=1,15) @@ -1268,10 +1264,10 @@ subroutine GFS_physics_driver & ! --- ... coupling insertion if (Model%cplflx) then - Coupling%dusfc_cpl (:) = Coupling%dusfc_cpl(:) + dusfc1(:)*dtf - Coupling%dvsfc_cpl (:) = Coupling%dvsfc_cpl(:) + dvsfc1(:)*dtf - Coupling%dtsfc_cpl (:) = Coupling%dtsfc_cpl(:) + dtsfc1(:)*dtf - Coupling%dqsfc_cpl (:) = Coupling%dqsfc_cpl(:) + dqsfc1(:)*dtf + Coupling%dusfc_cpl (:) = Coupling%dusfc_cpl(:) + dusfc1(:)*Model%dtf + Coupling%dvsfc_cpl (:) = Coupling%dvsfc_cpl(:) + dvsfc1(:)*Model%dtf + Coupling%dtsfc_cpl (:) = Coupling%dtsfc_cpl(:) + dtsfc1(:)*Model%dtf + Coupling%dqsfc_cpl (:) = Coupling%dqsfc_cpl(:) + dqsfc1(:)*Model%dtf Coupling%dusfci_cpl(:) = dusfc1(:) Coupling%dvsfci_cpl(:) = dvsfc1(:) Coupling%dtsfci_cpl(:) = dtsfc1(:) @@ -1282,50 +1278,50 @@ subroutine GFS_physics_driver & dtsfc1, dqsfc1, dudt, dvdt, dtdt, dqdt, xmu, Diag) ! !-------------------------------------------------------lssav if loop ---------- ! if (Model%lssav) then -! Diag%dusfc (:) = Diag%dusfc(:) + dusfc1(:)*dtf -! Diag%dvsfc (:) = Diag%dvsfc(:) + dvsfc1(:)*dtf -! Diag%dtsfc (:) = Diag%dtsfc(:) + dtsfc1(:)*dtf -! Diag%dqsfc (:) = Diag%dqsfc(:) + dqsfc1(:)*dtf +! Diag%dusfc (:) = Diag%dusfc(:) + dusfc1(:)*Model%dtf +! Diag%dvsfc (:) = Diag%dvsfc(:) + dvsfc1(:)*Model%dtf +! Diag%dtsfc (:) = Diag%dtsfc(:) + dtsfc1(:)*Model%dtf +! Diag%dqsfc (:) = Diag%dqsfc(:) + dqsfc1(:)*Model%dtf ! Diag%dusfci(:) = dusfc1(:) ! Diag%dvsfci(:) = dvsfc1(:) ! Diag%dtsfci(:) = dtsfc1(:) ! Diag%dqsfci(:) = dqsfc1(:) -! ! if (lprnt) then +! ! if (Model%lprnt) then ! ! write(0,*)' dusfc=',dusfc(ipr),' dusfc1=',dusfc1(ipr),' dtf=', -! ! & dtf,' kdt=',kdt,' lat=',lat +! ! & Model%dtf,' kdt=',Model%kdt,' lat=',lat ! ! endif ! ! if (Model%ldiag3d) then ! if (Model%lsidea) then -! Diag%dt3dt(:,:,3) = Diag%dt3dt(:,:,3) + dtdt(:,:)*dtf +! Diag%dt3dt(:,:,3) = Diag%dt3dt(:,:,3) + dtdt(:,:)*Model%dtf ! else -! do k = 1, levs -! do i = 1, im +! do k = 1, Model%levs +! do i = 1, size(Grid%xlon,1) ! tem = dtdt(i,k) - (Radtend%htrlw(i,k)+Radtend%htrsw(i,k)*xmu(i)) -! Diag%dt3dt(i,k,3) = Diag%dt3dt(i,k,3) + tem*dtf +! Diag%dt3dt(i,k,3) = Diag%dt3dt(i,k,3) + tem*Model%dtf ! enddo ! enddo ! endif -! Diag%du3dt(:,:,1) = Diag%du3dt(:,:,1) + dudt(:,:) * dtf -! Diag%du3dt(:,:,2) = Diag%du3dt(:,:,2) - dudt(:,:) * dtf -! Diag%dv3dt(:,:,1) = Diag%dv3dt(:,:,1) + dvdt(:,:) * dtf -! Diag%dv3dt(:,:,2) = Diag%dv3dt(:,:,2) - dvdt(:,:) * dtf +! Diag%du3dt(:,:,1) = Diag%du3dt(:,:,1) + dudt(:,:) * Model%dtf +! Diag%du3dt(:,:,2) = Diag%du3dt(:,:,2) - dudt(:,:) * Model%dtf +! Diag%dv3dt(:,:,1) = Diag%dv3dt(:,:,1) + dvdt(:,:) * Model%dtf +! Diag%dv3dt(:,:,2) = Diag%dv3dt(:,:,2) - dvdt(:,:) * Model%dtf ! ! update dqdt_v to include moisture tendency due to vertical diffusion ! ! if (lgocart) then -! ! do k = 1, levs -! ! do i = 1, im -! ! dqdt_v(i,k) = dqdt(i,k,1) * dtf +! ! do k = 1, Model%levs +! ! do i = 1, size(Grid%xlon,1) +! ! dqdt_v(i,k) = dqdt(i,k,1) * Model%dtf ! ! enddo ! ! enddo ! ! endif -! do k = 1, levs -! do i = 1, im -! tem = dqdt(i,k,1) * dtf +! do k = 1, Model%levs +! do i = 1, size(Grid%xlon,1) +! tem = dqdt(i,k,1) * Model%dtf ! Diag%dq3dt(i,k,1) = Diag%dq3dt(i,k,1) + tem ! enddo ! enddo ! if (Model%ntoz > 0) then -! Diag%dq3dt(:,:,5) = Diag%dq3dt(:,:,5) + dqdt(i,k,Model%ntoz) * dtf +! Diag%dq3dt(:,:,5) = Diag%dq3dt(:,:,5) + dqdt(i,k,Model%ntoz) * Model%dtf ! endif ! endif ! @@ -1383,44 +1379,44 @@ subroutine GFS_physics_driver & ! endif ! end if_nmtvr call gwdps_pre_run ( & - im, im, Model%nmtvr, Sfcprop%hprime, & + size(Grid%xlon,1), size(Grid%xlon,1), Model%nmtvr, Sfcprop%hprime, & hprime, oc, oa4, clx, theta, & sigma, gamma, elvmax) -! write(0,*)' before gwd clstp=',clstp,' kdt=',kdt,' lat=',lat +! write(0,*)' before gwd clstp=',clstp,' kdt=',Model%kdt,' lat=',lat call gwdps_run ( & - im, ix, im, levs, dvdt, dudt, dtdt, & + size(Grid%xlon,1), size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, dvdt, dudt, dtdt, & Statein%ugrs, Statein%vgrs, Statein%tgrs, & Statein%qgrs(:,:,1), kpbl, Statein%prsi, del, & Statein%prsl, Statein%prslk, Statein%phii, & - Statein%phil, dtp, kdt, & + Statein%phil, Model%dtp, Model%kdt, & ! Sfcprop%hprime(1,1), oc, oa4, clx, theta, & hprime, oc, oa4, clx, theta, & sigma, gamma, elvmax, dusfcg, dvsfcg, & con_g, con_cp, con_rd, con_rv, Model%lonr, & - Model%nmtvr, Model%cdmbgwd, me, lprnt,ipr) + Model%nmtvr, Model%cdmbgwd, Model%me, Model%lprnt,ipr) -! if (lprnt) print *,' dudtg=',dudt(ipr,:) +! if (Model%lprnt) print *,' dudtg=',dudt(ipr,:) ! GSK 9/21/2017: ! Move this portion into gwdps_pre_run(...) ! if (Model%lssav) then -! Diag%dugwd(:) = Diag%dugwd(:) + dusfcg(:)*dtf -! Diag%dvgwd(:) = Diag%dvgwd(:) + dvsfcg(:)*dtf +! Diag%dugwd(:) = Diag%dugwd(:) + dusfcg(:)*Model%dtf +! Diag%dvgwd(:) = Diag%dvgwd(:) + dvsfcg(:)*Model%dtf ! -!! if (lprnt) print *,' dugwd=',dugwd(ipr),' dusfcg=',dusfcg(ipr) -!! if (lprnt) print *,' dvgwd=',dvgwd(ipr),' dvsfcg=',dvsfcg(ipr) +!! if (Model%lprnt) print *,' dugwd=',dugwd(ipr),' dusfcg=',dusfcg(ipr) +!! if (Model%lprnt) print *,' dvgwd=',dvgwd(ipr),' dvsfcg=',dvsfcg(ipr) ! ! if (Model%ldiag3d) then -! Diag%du3dt(:,:,2) = Diag%du3dt(:,:,2) + dudt(:,:) * dtf -! Diag%dv3dt(:,:,2) = Diag%dv3dt(:,:,2) + dvdt(:,:) * dtf -! Diag%dt3dt(:,:,2) = Diag%dt3dt(:,:,2) + dtdt(:,:) * dtf +! Diag%du3dt(:,:,2) = Diag%du3dt(:,:,2) + dudt(:,:) * Model%dtf +! Diag%dv3dt(:,:,2) = Diag%dv3dt(:,:,2) + dvdt(:,:) * Model%dtf +! Diag%dt3dt(:,:,2) = Diag%dt3dt(:,:,2) + dtdt(:,:) * Model%dtf ! endif ! endif call gwdps_post_run ( & - Model%lssav, Model%ldiag3d, dtf, & + Model%lssav, Model%ldiag3d, Model%dtf, & dusfcg, dvsfcg, dudt, dvdt, dtdt, & Diag%dugwd, Diag%dvgwd, & Diag%du3dt(:,:,2), Diag%dv3dt(:,:,2), Diag%dt3dt(:,:,2)) @@ -1429,48 +1425,48 @@ subroutine GFS_physics_driver & ! Rayleigh damping near the model top ! if( .not. Model%lsidea .and. Model%ral_ts > 0.0) then call rayleigh_damp_run ( & - Model%lsidea, im, ix, im, levs, dvdt, dudt, dtdt, & - Statein%ugrs, Statein%vgrs, dtp, con_cp, & + Model%lsidea, size(Grid%xlon,1), size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, dvdt, dudt, dtdt, & + Statein%ugrs, Statein%vgrs, Model%dtp, con_cp, & Model%levr, Statein%pgr, Statein%prsl, & Model%prslrd0, Model%ral_ts) ! endif -! if (lprnt) then +! if (Model%lprnt) then ! write(0,*)' tgrs1=',(tgrs(ipr,ik),k=1,10) ! write(0,*)' dtdt=',(dtdt(ipr,ik),k=1,10) ! endif - ! Stateout%gt0(:,:) = Statein%tgrs(:,:) + dtdt(:,:) * dtp - ! Stateout%gu0(:,:) = Statein%ugrs(:,:) + dudt(:,:) * dtp - ! Stateout%gv0(:,:) = Statein%vgrs(:,:) + dvdt(:,:) * dtp - ! Stateout%gq0(:,:,:) = Statein%qgrs(:,:,:) + dqdt(:,:,:) * dtp + ! Stateout%gt0(:,:) = Statein%tgrs(:,:) + dtdt(:,:) * Model%dtp + ! Stateout%gu0(:,:) = Statein%ugrs(:,:) + dudt(:,:) * Model%dtp + ! Stateout%gv0(:,:) = Statein%vgrs(:,:) + dvdt(:,:) * Model%dtp + ! Stateout%gq0(:,:,:) = Statein%qgrs(:,:,:) + dqdt(:,:,:) * Model%dtp call GFS_suite_update_stateout_run (Statein, Model, Grid, dudt, dvdt, dtdt, dqdt, Stateout) -! if (lprnt) then +! if (Model%lprnt) then ! write(7000,*)' ugrs=',ugrs(ipr,:) -! &,' lat=',lat,' kdt=',kdt,' me=',me -! write(7000,*)' dudt*dtp=',dudt(ipr,:)*dtp +! &,' lat=',lat,' kdt=',Model%kdt,' me=',Model%me +! write(7000,*)' dudt*dtp=',dudt(ipr,:)*Model%dtp ! write(7000,*)' vgrs=',vgrs(ipr,:) -! write(7000,*)' dvdt*dtp ',dvdt(ipr,:)*dtp +! write(7000,*)' dvdt*dtp ',dvdt(ipr,:)*Model%dtp ! endif -! if(lprnt) write(1000+me,*)' gq0w=',gq0(ipr,:,ntcw) -! if(lprnt) write(0,*)' gq0i=',gq0(ipr,:,ntiw) +! if(Model%lprnt) write(1000+Model%me,*)' gq0w=',gq0(ipr,:,ntcw) +! if(Model%lprnt) write(0,*)' gq0i=',gq0(ipr,:,ntiw) if (Model%lsidea) then ! idea convective adjustment - call ideaca_up(Statein%prsi,Stateout%gt0,ix,im,levs+1) + call ideaca_up(Statein%prsi,Stateout%gt0,size(Grid%xlon,1),size(Grid%xlon,1),Model%levs+1) endif ! --- ... ozone physics - if ((Model%ntoz > 0) .and. (ntrac >= Model%ntoz)) then + if ((Model%ntoz > 0) .and. (Model%ntrac >= Model%ntoz)) then if (oz_coeff > 4) then - call ozphys_2015 (ix, im, levs, levozp, dtp, & + call ozphys_2015 (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, levozp, Model%dtp, & Stateout%gq0(1,1,Model%ntoz), & Stateout%gq0(1,1,Model%ntoz), & Stateout%gt0, oz_pres, Statein%prsl, & Tbd%ozpl, oz_coeff, del, Model%ldiag3d, & - dq3dt_loc(1,1,6), me) + dq3dt_loc(1,1,6), Model%me) if (Model%ldiag3d) then Diag%dq3dt(:,:,6) = dq3dt_loc(:,:,6) Diag%dq3dt(:,:,7) = dq3dt_loc(:,:,7) @@ -1479,12 +1475,12 @@ subroutine GFS_physics_driver & endif else call ozphys_run ( & - ix, im, levs, levozp, dtp, & + size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, levozp, Model%dtp, & Stateout%gq0(:,:,Model%ntoz), & Stateout%gq0(:,:,Model%ntoz), & Stateout%gt0, oz_pres, Statein%prsl, & Tbd%ozpl, oz_coeff, del, Model%ldiag3d, & - dq3dt_loc(:,:,6:6+oz_coeff-1), me) + dq3dt_loc(:,:,6:6+oz_coeff-1), Model%me) ! if (Model%ldiag3d) then ! Diag%dq3dt(:,:,6) = dq3dt_loc(:,:,6) ! Diag%dq3dt(:,:,7) = dq3dt_loc(:,:,7) @@ -1492,28 +1488,28 @@ subroutine GFS_physics_driver & ! Diag%dq3dt(:,:,9) = dq3dt_loc(:,:,9) ! endif call ozphys_post_run ( & - ix, levs, oz_coeff, dq3dt_loc(:,:,6:6+oz_coeff-1), Diag) + size(Grid%xlon,1), Model%levs, oz_coeff, dq3dt_loc(:,:,6:6+oz_coeff-1), Diag) endif endif if (Model%h2o_phys) then - call h2ophys (ix, im, levs, levh2o, dtp, Stateout%gq0(1,1,1), & + call h2ophys (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, levh2o, Model%dtp, Stateout%gq0(1,1,1), & Stateout%gq0(1,1,1), h2o_pres, Statein%prsl, & Tbd%h2opl, h2o_coeff, Model%ldiag3d, & - dq3dt_loc(1,1,1), me) + dq3dt_loc(1,1,1), Model%me) endif ! --- ... to side-step the ozone physics -! if (ntrac >= 2) then -! do k = 1, levs +! if (Model%ntrac >= 2) then +! do k = 1, Model%levs ! gq0(k,ntoz) = qgrs(k,ntoz) ! enddo ! endif -! if (lprnt) then -! write(0,*) ' levs=',levs,' jcap=',jcap,' dtp',dtp & -! &, ' slmsk=',slmsk(ilon,ilat),' kdt=',kdt +! if (Model%lprnt) then +! write(0,*) ' levs=',Model%levs,' jcap=',jcap,' dtp',Model%dtp & +! &, ' slmsk=',slmsk(ilon,ilat),' kdt=',Model%kdt ! print *,' rann=',rann,' ncld=',ncld,' iq=',iq,' lat=',lat ! print *,' pgr=',pgr ! print *,' del=',del(ipr,:) @@ -1521,19 +1517,19 @@ subroutine GFS_physics_driver & ! print *,' prslk=',prslk(ipr,:) ! print *,' rann=',rann(ipr,1) ! write(0,*)' gt0=',gt0(ipr,:) & -! &, ' kdt=',kdt,' xlon=',xlon(ipr),' xlat=',xlat(ipr) +! &, ' kdt=',Model%kdt,' xlon=',xlon(ipr),' xlat=',xlat(ipr) ! print *,' dtdt=',dtdt(ipr,:) ! print *,' gu0=',gu0(ipr,:) ! print *,' gv0=',gv0(ipr,:) -! write(0,*) ' gt0=',(gt0(ipr,k),k=1,levs),' kdt=',kdt -! write(0,*)' gq0=',(gq0(ipr,k,1),k=1,levs),' lat=',lat -! write(0,*)' gq0i2=',(gq0(ipr,k,ntiw),k=1,levs),' lat=',lat -! write(0,*)' gq1=',(gq0(ipr,k,ntcw),k=1,levs) +! write(0,*) ' gt0=',(gt0(ipr,k),k=1,Model%levs),' kdt=',Model%kdt +! write(0,*)' gq0=',(gq0(ipr,k,1),k=1,Model%levs),' lat=',lat +! write(0,*)' gq0i2=',(gq0(ipr,k,ntiw),k=1,Model%levs),' lat=',lat +! write(0,*)' gq1=',(gq0(ipr,k,ntcw),k=1,Model%levs) ! print *,' vvel=',vvel ! endif -! if (lprnt) write(7000,*)' bef convection gu0=',gu0(ipr,:) -! &,' lat=',lat,' kdt=',kdt,' me=',me -! if (lprnt) write(7000,*)' bef convection gv0=',gv0(ipr,:) +! if (Model%lprnt) write(7000,*)' bef convection gu0=',gu0(ipr,:) +! &,' lat=',lat,' kdt=',Model%kdt,' me=',Model%me +! if (Model%lprnt) write(7000,*)' bef convection gv0=',gv0(ipr,:) ! if (Model%ldiag3d) then ! dtdt(:,:) = Stateout%gt0(:,:) @@ -1550,18 +1546,18 @@ subroutine GFS_physics_driver & call GFS_DCNV_generic_pre_run (Model, Stateout, Grid, save_u, save_v, save_t, save_qv, save_qcw) #ifdef GFS_HYDRO - call get_phi(im, ix, levs, ntrac, Stateout%gt0, Stateout%gq0, & + call get_phi(size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%ntrac, Stateout%gt0, Stateout%gq0, & Model%thermodyn_id, Model%sfcpress_id, & Model%gen_coord_hybrid Statein%prsi, Statein%prsik, & Statein%prsl, Statein%prslk, Statein%phii, Statein%phil) #else !GFDL Adjust the height hydrostatically in a way consistent with FV3 discretization - call get_phi_fv3_run (ix, levs, Stateout%gt0, Stateout%gq0(:,:,1), & + call get_phi_fv3_run (size(Grid%xlon,1), Model%levs, Stateout%gt0, Stateout%gq0(:,:,1), & del_gz, Statein%phii, Statein%phil) #endif -! if (lprnt) then -! print *,' phii2=',phii(ipr,k=1,levs) +! if (Model%lprnt) then +! print *,' phii2=',phii(ipr,k=1,Model%levs) ! print *,' phil2=',phil(ipr,:) ! endif call GFS_suite_interstitial_4_run (Model, Grid, Statein, rhbbot, & @@ -1573,7 +1569,7 @@ subroutine GFS_physics_driver & ! cnvw(:,:) = 0.0 ! endif -! write(0,*)' before cnv clstp=',clstp,' kdt=',kdt,' lat=',lat +! write(0,*)' before cnv clstp=',clstp,' kdt=',Model%kdt,' lat=',lat ! --- ... for convective tracer transport (while using ras) @@ -1595,7 +1591,7 @@ subroutine GFS_physics_driver & endif ! end if_ras or cfscnv ktop(:) = 1 - kbot(:) = levs + kbot(:) = Model%levs ! --- ... calling condensation/precipitation processes ! -------------------------------------------- @@ -1611,7 +1607,7 @@ subroutine GFS_physics_driver & ! prautco_l(:) = Model%prautco(1)*work1(:) + Model%prautco(2)*work2(:) !zhang: zhao_carr_pre ! clw(:,:,1) = Stateout%gq0(:,:,Model%ntcw) - call GFS_zhao_carr_pre_run (im,ix, levs,Stateout%gq0(:,:,Model%ntcw),clw(:,:,1)) + call GFS_zhao_carr_pre_run (size(Grid%xlon,1),size(Grid%xlon,1), Model%levs,Stateout%gq0(:,:,Model%ntcw),clw(:,:,1)) endif ! end if_num_p3d endif ! end if (ncld == 2) else ! if_ntcw @@ -1630,8 +1626,8 @@ subroutine GFS_physics_driver & ncpl(:,:) = Stateout%gq0(:,:,Model%ntlnc) ncpi(:,:) = Stateout%gq0(:,:,Model%ntinc) elseif (Model%num_p3d == 4) then - do k=1,levs - do i=1,im + do k=1,Model%levs + do i=1,size(Grid%xlon,1) qpl(i,k) = 0.0 qpi(i,k) = 0.0 if (abs(Stateout%gq0(i,k,Model%ntcw)) < epsq) then @@ -1647,37 +1643,37 @@ subroutine GFS_physics_driver & ! dtshoc = 60.0 ! dtshoc = 120.0 -! dtshoc = dtp -! nshocm = (dtp/dtshoc) + 0.001 -! dtshoc = dtp / nshocm +! dtshoc = Model%dtp +! nshocm = (Model%dtp/dtshoc) + 0.001 +! dtshoc = Model%dtp / nshocm ! do nshoc=1,nshocm -! if (lprnt) write(1000+me,*)' before shoc tke=',clw(ipr,:,ntk), -! &' kdt=',kdt,' lat=',lat,'xlon=',xlon(ipr),' xlat=',xlat(ipr) +! if (Model%lprnt) write(1000+Model%me,*)' before shoc tke=',clw(ipr,:,ntk), +! &' kdt=',Model%kdt,' lat=',lat,'xlon=',xlon(ipr),' xlat=',xlat(ipr) ! phy_f3d(1,1,ntot3d-2) - shoc determined sgs clouds ! phy_f3d(1,1,ntot3d-1) - shoc determined diffusion coefficients ! phy_f3d(1,1,ntot3d ) - shoc determined w'theta' ! -! dqdt(1:im,:,1) = gq0(1:im,:,1) -! dqdt(1:im,:,2) = gq0(1:im,:,ntiw) -! dqdt(1:im,:,3) = gq0(1:im,:,ntcw) +! dqdt(1:size(Grid%xlon,1),:,1) = gq0(1:size(Grid%xlon,1),:,1) +! dqdt(1:size(Grid%xlon,1),:,2) = gq0(1:size(Grid%xlon,1),:,ntiw) +! dqdt(1:size(Grid%xlon,1),:,3) = gq0(1:size(Grid%xlon,1),:,ntcw) !GFDL lat has no meaning inside of shoc - changed to "1" -!GFDL call shoc(ix, im, 1, levs, levs+1, dtp, me, lat, - call shoc (ix, im, 1, levs, levs+1, dtp, me, 1, Statein%prsl(1,1), & +!GFDL call shoc(size(Grid%xlon,1), size(Grid%xlon,1), 1, Model%levs, Model%levs+1, Model%dtp, Model%me, lat, + call shoc (size(Grid%xlon,1), size(Grid%xlon,1), 1, Model%levs, Model%levs+1, Model%dtp, Model%me, 1, Statein%prsl(1,1), & Statein%phii(1,1), Statein%phil(1,1), Stateout%gu0(1,1), & Stateout%gv0(1,1), Statein%vvl(1,1), Stateout%gt0(1,1), & Stateout%gq0(1,1,1), clw(1,1,1), clw(1,1,2), qpi, qpl, & rhc, Model%sup, Tbd%phy_f3d(1,1,Model%ntot3d-2), & clw(1,1,ntk), hflx, evap, prnum, & Tbd%phy_f3d(1,1,Model%ntot3d-1), & - Tbd%phy_f3d(1,1,Model%ntot3d), lprnt, ipr, ncpl, ncpi, kdt) + Tbd%phy_f3d(1,1,Model%ntot3d), Model%lprnt, ipr, ncpl, ncpi, Model%kdt) -! if (lprnt) write(0,*)' aftshoccld=',phy_f3d(ipr,:,ntot3d-2)*100 -! if (lprnt) write(0,*)' aftshocice=',clw(ipr,:,1) -! if (lprnt) write(0,*)' aftshocwat=',clw(ipr,:,1) -! write(1000+me,*)' at latitude = ',lat +! if (Model%lprnt) write(0,*)' aftshoccld=',phy_f3d(ipr,:,ntot3d-2)*100 +! if (Model%lprnt) write(0,*)' aftshocice=',clw(ipr,:,1) +! if (Model%lprnt) write(0,*)' aftshocwat=',clw(ipr,:,1) +! write(1000+Model%me,*)' at latitude = ',lat ! rain1 = 0.0 -! call moist_bud(im,im,ix,levs,me,kdt,con_g,dtp,del,rain1 +! call moist_bud(size(Grid%xlon,1),size(Grid%xlon,1),size(Grid%xlon,1),Model%levs,Model%me,Model%kdt,con_g,Model%dtp,del,rain1 ! &, save_qv(1,1), dqdt(1,1,2), dqdt(1,1,3) ! &, gq0(1,1,1),clw(1,1,2),clw(1,1,1),'shoc ') @@ -1685,22 +1681,22 @@ subroutine GFS_physics_driver & Stateout%gq0(:,:,Model%ntlnc) = ncpl(:,:) Stateout%gq0(:,:,Model%ntinc) = ncpi(:,:) endif -! do k=1,levs -! do i=1,im +! do k=1,Model%levs +! do i=1,size(Grid%xlon,1) ! sgs_cld(i,k) = sgs_cld(i,k) + shoc_cld(i,k) ! enddo ! enddo -! if (lprnt) write(0,*)' gt03=',gt0(ipr,1:10) -! if (lprnt) write(0,*)' tke=',clw(ipr,1:10,ntk) +! if (Model%lprnt) write(0,*)' gt03=',gt0(ipr,1:10) +! if (Model%lprnt) write(0,*)' tke=',clw(ipr,1:10,ntk) -! if (lprnt) write(1000+me,*)' after shoc tke=',clw(1,:,ntk), -! &' kdt=',kdt +! if (Model%lprnt) write(1000+Model%me,*)' after shoc tke=',clw(1,:,ntk), +! &' kdt=',Model%kdt ! enddo ! -! do k=1,levs -! write(1000+me,*)' maxcld=',maxval(sgs_cld(1:im,k)), -! write(1000+me,*)' maxtkh=',maxval(phy_f3d(1:im,k,ntot3d-1)), -! &' k=',k,' kdt=',kdt,' lat=',lat +! do k=1,Model%levs +! write(1000+Model%me,*)' maxcld=',maxval(sgs_cld(1:size(Grid%xlon,1),k)), +! write(1000+Model%me,*)' maxtkh=',maxval(phy_f3d(1:size(Grid%xlon,1),k,ntot3d-1)), +! &' k=',k,' kdt=',Model%kdt,' lat=',lat ! enddo ! write(0,*)' aft shoc gt0=',gt0(1,:),' lat=',lat @@ -1714,29 +1710,29 @@ subroutine GFS_physics_driver & if (.not. Model%ras .and. .not. Model%cscnv) then if (Model%imfdeepcnv == 1) then ! no random cloud top - call sascnvn (im, ix, levs, Model%jcap, dtp, del, & + call sascnvn (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%jcap, Model%dtp, del, & Statein%prsl, Statein%pgr, Statein%phil, clw(:,:,1:2), & Stateout%gq0, Stateout%gt0, Stateout%gu0, & Stateout%gv0, cld1d, rain1, kbot, ktop, kcnv, & islmsk, Statein%vvl, Model%ncld, ud_mf, dd_mf, & dt_mf, cnvw, cnvc) elseif (Model%imfdeepcnv == 2) then - call sasasdeep_run (im, ix, levs, dtp, del, Statein%prsl, & + call sasasdeep_run (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, del, Statein%prsl, & Statein%pgr, Statein%phil, clw(:,:,1), & clw(:,:,2), Stateout%gq0(:,:,1), & Stateout%gt0, Stateout%gu0, Stateout%gv0, & cld1d, rain1, kbot, ktop, kcnv, islmsk, & - garea, Statein%vvl, Model%ncld, ud_mf, dd_mf, & - dt_mf, cnvw, cnvc) -! if (lprnt) print *,' rain1=',rain1(ipr) + Grid%area, Statein%vvl, Model%ncld, ud_mf, & + dd_mf, dt_mf, cnvw, cnvc) +! if (Model%lprnt) print *,' rain1=',rain1(ipr) elseif (Model%imfdeepcnv == 0) then ! random cloud top - call sascnv (im, ix, levs, Model%jcap, dtp, del, & + call sascnv (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%jcap, Model%dtp, del, & Statein%prsl, Statein%pgr, Statein%phil, clw(:,:,1:2), & Stateout%gq0, Stateout%gt0, Stateout%gu0, & Stateout%gv0, cld1d, rain1, kbot, ktop, kcnv, & islmsk, Statein%vvl, Tbd%rann, Model%ncld, & ud_mf, dd_mf, dt_mf, cnvw, cnvc) -! if (lprnt) print *,' rain1=',rain1(ipr),' rann=',rann(ipr,1) +! if (Model%lprnt) print *,' rain1=',rain1(ipr),' rann=',rann(ipr,1) endif else ! ras or cscnv if (Model%cscnv) then ! Chikira-Sugiyama convection scheme (via CSU) @@ -1754,52 +1750,52 @@ subroutine GFS_physics_driver & fswtr(:) = 0.0 ! write(0,*)' bef cs_cconv phii=',phii(ipr,:) ! &,' sizefsc=',size(fscav) -! write(0,*)' bef cs_cconv otspt=',otspt,' kdt=',kdt,' me=',me +! write(0,*)' bef cs_cconv otspt=',otspt,' kdt=',Model%kdt,' me=',Model%me save_qv(:,:) = Stateout%gq0(:,:,1) dqdt(:,:,2) = max(0.0,clw(:,:,2)) dqdt(:,:,3) = max(0.0,clw(:,:,1)) -! if (lprnt) write(0,*)' gq0bfcs=',gq0(ipr,1:35,1) -! if (lprnt) write(0,*)' gq0bfcs3=',gq0(ipr,1:35,3) -! if (lprnt) write(0,*)' gq0bfcs4=',gq0(ipr,1:35,4) +! if (Model%lprnt) write(0,*)' gq0bfcs=',gq0(ipr,1:35,1) +! if (Model%lprnt) write(0,*)' gq0bfcs3=',gq0(ipr,1:35,3) +! if (Model%lprnt) write(0,*)' gq0bfcs4=',gq0(ipr,1:35,4) do_awdd = ((Model%do_aw) .and. (Model%cs_parm(6) > 0.0)) -! if (lprnt) write(0,*)' do_awdd=',do_awdd +! if (Model%lprnt) write(0,*)' do_awdd=',do_awdd !GFDL again lat replaced with "1" -!GFDL & otspt, lat, kdt , & - call cs_convr (ix, im, levs, tottracer+3, Model%nctp, otspt, 1, & - kdt, Stateout%gt0, Stateout%gq0(1,1,1:1), rain1, & +!GFDL & otspt, lat, Model%kdt , & + call cs_convr (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, tottracer+3, Model%nctp, otspt, 1, & + Model%kdt, Stateout%gt0, Stateout%gq0(1,1,1:1), rain1, & clw, Statein%phil, Statein%phii, Statein%prsl, & - Statein%prsi, dtp, dtf, ud_mf, dd_mf, dt_mf, & + Statein%prsi, Model%dtp, Model%dtf, ud_mf, dd_mf, dt_mf, & Stateout%gu0, Stateout%gv0, fscav, fswtr, & - Tbd%phy_fctd, me, wcbmax, Model%cs_parm(3), & + Tbd%phy_fctd, Model%me, wcbmax, Model%cs_parm(3), & Model%cs_parm(4), sigmai, sigmatot, vverti, & - Model%do_aw, do_awdd, lprnt, ipr, QLCN, QICN, & + Model%do_aw, do_awdd, Model%lprnt, ipr, QLCN, QICN, & w_upi, cf_upi, CNV_MFD, CNV_PRC3, CNV_DQLDT, & CLCN, CNV_FICE, CNV_NDROP, CNV_NICE, Model%ncld) -! if (lprnt) write(0,*)' gq0afcs=',gq0(ipr,1:35,1) -! if (lprnt) write(0,*)' gq0afcs3=',gq0(ipr,1:35,3) -! if (lprnt) write(0,*)' gq0afcs4=',gq0(ipr,1:35,4) -! write(1000+me,*)' at latitude = ',lat -! call moist_bud(im,im,ix,levs,me,kdt,con_g,dtp,del,rain1 +! if (Model%lprnt) write(0,*)' gq0afcs=',gq0(ipr,1:35,1) +! if (Model%lprnt) write(0,*)' gq0afcs3=',gq0(ipr,1:35,3) +! if (Model%lprnt) write(0,*)' gq0afcs4=',gq0(ipr,1:35,4) +! write(1000+Model%me,*)' at latitude = ',lat +! call moist_bud(size(Grid%xlon,1),size(Grid%xlon,1),size(Grid%xlon,1),Model%levs,Model%me,Model%kdt,con_g,Model%dtp,del,rain1 ! &, save_qv(1,1), dqdt(1,1,2), dqdt(1,1,3) ! &, gq0(1,1,1),clw(1,1,2),clw(1,1,1),' cs_conv') - rain1(:) = rain1(:) * (dtp*0.001) + rain1(:) = rain1(:) * (Model%dtp*0.001) if (Model%do_aw) then - do k=1,levs - kk = min(k+1,levs) ! assuming no cloud top reaches the model top - do i = 1,im !DD + do k=1,Model%levs + kk = min(k+1,Model%levs) ! assuming no cloud top reaches the model top + do i = 1,size(Grid%xlon,1) !DD sigmafrac(i,k) = 0.5 * (sigmatot(i,k)+sigmatot(i,kk)) enddo enddo endif -! if (lprnt) then -! write(0,*)' gt01=',gt0(ipr,:),' kdt=',kdt -! write(0,*)' gq01=',gq0(ipr,:,1),' kdt=',kdt -! write(0,*)' clw1=',clw(ipr,:,1),' kdt=',kdt -! write(0,*)' clw2=',clw(ipr,:,1),' kdt=',kdt +! if (Model%lprnt) then +! write(0,*)' gt01=',gt0(ipr,:),' kdt=',Model%kdt +! write(0,*)' gq01=',gq0(ipr,:,1),' kdt=',Model%kdt +! write(0,*)' clw1=',clw(ipr,:,1),' kdt=',Model%kdt +! write(0,*)' clw2=',clw(ipr,:,1),' kdt=',Model%kdt ! write(0,*)' aft cs rain1=',rain1(ipr)*86400 ! write(0,*)' aft cs rain1=',rain1(ipr) ! endif @@ -1809,48 +1805,48 @@ subroutine GFS_physics_driver & if ((Model%ccwf(1) >= 0.0) .or. (Model%ccwf(2) >= 0)) then ccwfac(:) = Model%ccwf(1)*work1(:) + Model%ccwf(2)*work2(:) dlqfac(:) = Model%dlqf(1)*work1(:) + Model%dlqf(2)*work2(:) - lmh (:) = levs + lmh (:) = Model%levs else ccwfac(:) = -999.0 dlqfac(:) = 0.0 - lmh (:) = levs + lmh (:) = Model%levs endif -! if (lprnt) write(0,*) ' calling ras for kdt=',kdt,' me=',me & -! &, ' lprnt=',lprnt,' ccwfac=',ccwfac(ipr) +! if (Model%lprnt) write(0,*) ' calling ras for kdt=',Model%kdt,' me=',Model%me & +! &, ' Model%lprnt=',Model%lprnt,' ccwfac=',ccwfac(ipr) -! do k=1,levs -! do i=1,im +! do k=1,Model%levs +! do i=1,size(Grid%xlon,1) ! save_qv(i,k) = gq0(i,k,1) ! dqdt(i,k,2) = max(0.0,clw(i,k,2)) ! dqdt(i,k,3) = max(0.0,clw(i,k,1)) ! enddo ! enddo -! if (lat == 64 .and. kdt == 1) write(0,*)' qliq=',clw(1,:,1) -! if (lat == 64 .and. kdt == 1) write(0,*)' qice=',clw(1,:,2) +! if (lat == 64 .and. Model%kdt == 1) write(0,*)' qliq=',clw(1,:,1) +! if (lat == 64 .and. Model%kdt == 1) write(0,*)' qice=',clw(1,:,2) revap = .true. ! if (ncld ==2) revap = .false. - call rascnv (im, ix, levs, dtp, dtf, Tbd%rann, Stateout%gt0, & + call rascnv (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, Model%dtf, Tbd%rann, Stateout%gt0, & Stateout%gq0, Stateout%gu0, Stateout%gv0, clw, & tottracer, fscav, Statein%prsi, Statein%prsl, & Statein%prsik, Statein%prslk, Statein%phil, & Statein%phii, kpbl, cd, rain1, kbot, ktop, kcnv, & Tbd%phy_f2d(1,Model%num_p2d), Model%flipv, pa2mb, & - me, garea, lmh, ccwfac, Model%nrcm, rhc, ud_mf, & - dd_mf, dt_mf, dlqfac, lprnt, ipr, kdt, revap, QLCN, & + Model%me, Grid%area, lmh, ccwfac, Model%nrcm, rhc, ud_mf, & + dd_mf, dt_mf, dlqfac, Model%lprnt, ipr, Model%kdt, revap, QLCN, & QICN, w_upi, cf_upi, CNV_MFD, CNV_PRC3, CNV_DQLDT, & CLCN, CNV_FICE, CNV_NDROP, CNV_NICE, Model%ncld ) endif -! write(1000+me,*)' at latitude = ',lat +! write(1000+Model%me,*)' at latitude = ',lat ! tx1 = 1000.0 -! call moist_bud(im,im,ix,levs,me,kdt,con_g,tx1,del,rain1 +! call moist_bud(size(Grid%xlon,1),size(Grid%xlon,1),size(Grid%xlon,1),Model%levs,Model%me,Model%kdt,con_g,tx1,del,rain1 ! &, save_qv(1,1), dqdt(1,1,2), dqdt(1,1,3) ! &, gq0(1,1,1),clw(1,1,2),clw(1,1,1),' ras_conv') -! if(lprnt) write(0,*)' after ras rain1=',rain1(ipr) -! &,' cnv_prc3sum=',sum(cnv_prc3(ipr,1:levs)) -! if (lprnt) write(0,*)' gt04=',gt0(ipr,1:10) -! if (lprnt) write(0,*)' gq04=',gq0(ipr,:,1) +! if(Model%lprnt) write(0,*)' after ras rain1=',rain1(ipr) +! &,' cnv_prc3sum=',sum(cnv_prc3(ipr,1:Model%levs)) +! if (Model%lprnt) write(0,*)' gt04=',gt0(ipr,1:10) +! if (Model%lprnt) write(0,*)' gq04=',gq0(ipr,:,1) cld1d = 0 @@ -1891,19 +1887,19 @@ subroutine GFS_physics_driver & endif endif ! end if_not_ras -! if (lprnt) then -! write(0,*)' aftcnvgt0=',gt0(ipr,:),' kdt=',kdt,' lat=',lat -! write(0,*)' aftcnvgq0=',(gq0(ipr,k,1),k=1,levs),' lat=',lat -! write(0,*)' gq0i2=',(gq0(ipr,k,ntiw),k=1,levs),' lat=',lat -! write(0,*)' aftcnvgq1=',(gq0(ipr,k,ntcw),k=1,levs) +! if (Model%lprnt) then +! write(0,*)' aftcnvgt0=',gt0(ipr,:),' kdt=',Model%kdt,' lat=',lat +! write(0,*)' aftcnvgq0=',(gq0(ipr,k,1),k=1,Model%levs),' lat=',lat +! write(0,*)' gq0i2=',(gq0(ipr,k,ntiw),k=1,Model%levs),' lat=',lat +! write(0,*)' aftcnvgq1=',(gq0(ipr,k,ntcw),k=1,Model%levs) ! endif ! -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! Diag%rainc(:) = frain * rain1(:) ! enddo ! ! ! if (Model%lssav) then -! Diag%cldwrk (:) = Diag%cldwrk (:) + cld1d(:) * dtf +! Diag%cldwrk (:) = Diag%cldwrk (:) + cld1d(:) * Model%dtf ! Diag%cnvprcp(:) = Diag%cnvprcp(:) + Diag%rainc(:) ! ! if (Model%ldiag3d) then @@ -1941,9 +1937,9 @@ subroutine GFS_physics_driver & ! Tbd%phy_f3d(:,:,num2) = cnvw(:,:) ! endif -! if (lprnt) write(7000,*)' bef cnvgwd gu0=',gu0(ipr,:) -! &,' lat=',lat,' kdt=',kdt,' me=',me -! if (lprnt) write(7000,*)' bef cnvgwd gv0=',gv0(ipr,:) +! if (Model%lprnt) write(7000,*)' bef cnvgwd gu0=',gu0(ipr,:) +! &,' lat=',lat,' kdt=',Model%kdt,' me=',Model%me +! if (Model%lprnt) write(7000,*)' bef cnvgwd gv0=',gv0(ipr,:) ! !----------------Convective gravity wave drag parameterization starting -------- @@ -1955,23 +1951,23 @@ subroutine GFS_physics_driver & !! cuhr = temperature change due to deep convection ! cumabs(:) = 0.0 ! work3 (:) = 0.0 -! do k = 1, levs -! do i = 1, im +! do k = 1, Model%levs +! do i = 1, size(Grid%xlon,1) ! if (k >= kbot(i) .and. k <= ktop(i)) then ! cumabs(i) = cumabs(i) + (Stateout%gt0(i,k)-save_t(i,k)) * del(i,k) ! work3(i) = work3(i) + del(i,k) ! endif ! enddo ! enddo -! do i=1,im -! if (work3(i) > 0.0) cumabs(i) = cumabs(i) / (dtp*work3(i)) +! do i=1,size(Grid%xlon,1) +! if (work3(i) > 0.0) cumabs(i) = cumabs(i) / (Model%dtp*work3(i)) ! enddo call gwdc_pre_run ( & - im, Model%cgwf, Grid%dx, work1, work2, dlength, cldf, & - levs, kbot, ktop, dtp, Stateout%gt0, save_t, del, cumabs) + size(Grid%xlon,1), Model%cgwf, Grid%dx, work1, work2, dlength, cldf, & + Model%levs, kbot, ktop, Model%dtp, Stateout%gt0, save_t, del, cumabs) -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! do k = kbot(i), ktop(i) ! do k1 = kbot(i), k ! cumchr(i,k) = cuhr(i,k1) + cumchr(i,k) @@ -1982,13 +1978,13 @@ subroutine GFS_physics_driver & ! --- ... begin check print ****************************************** -! if (lprnt) then +! if (Model%lprnt) then ! if (kbot(ipr) <= ktop(ipr)) then ! write(*,*) 'kbot <= ktop for (lat,lon) = ', & ! & xlon(ipr)*57.29578,xlat(ipr)*57.29578 ! write(*,*) 'kcnv kbot ktop dlength ',kcnv(ipr), & ! & kbot(ipr),ktop(ipr),dlength(ipr) -! write(*,9000) kdt +! write(*,9000) Model%kdt !9000 format(/,3x,'k',5x,'cuhr(k)',4x,'cumchr(k)',5x, & ! & 'at kdt = ',i4,/) @@ -2000,18 +1996,18 @@ subroutine GFS_physics_driver & ! if (fhour >= fhourpr) then ! print *,' before gwdc in gbphys start print' -! write(*,*) 'fhour ix im levs = ',fhour,ix,im,levs -! print *,'dtp dtf = ',dtp,dtf +! write(*,*) 'fhour ix im levs = ',fhour,size(Grid%xlon,1),size(Grid%xlon,1),Model%levs +! print *,'dtp dtf = ',Model%dtp,Model%dtf ! write(*,9100) !9100 format(//,14x,'pressure levels',// & ! & ' ilev',7x,'prsi',8x,'prsl',8x,'delp',/) -! k = levs + 1 +! k = Model%levs + 1 ! write(*,9110) k,(10.*prsi(ipr,k)) !9110 format(i4,2x,f10.3) -! do k = levs, 1, -1 +! do k = Model%levs, 1, -1 ! write(*,9120) k,(10.*prsl(ipr,k)),(10.*del(ipr,k)) ! write(*,9110) k,(10.*prsi(ipr,k)) ! enddo @@ -2022,7 +2018,7 @@ subroutine GFS_physics_driver & ! & 'ugrs',9x,'gu0',8x,'vgrs',9x,'gv0',8x, & ! & 'tgrs',9x,'gt0',8x,'gt0b',8x,'save_u',8x,'save_v',/) -! do k = levs, 1, -1 +! do k = Model%levs, 1, -1 ! write(*,9140) k,ugrs(ipr,k),gu0(ipr,k), & ! & vgrs(ipr,k),gv0(ipr,k), & ! & tgrs(ipr,k),gt0(ipr,k),save_t(ipr,k), & @@ -2038,15 +2034,15 @@ subroutine GFS_physics_driver & !GFDL replacing lat with "1" -! call gwdc (im, ix, im, levs, lat, gu0, gv0, gt0, gq0, dtp, & +! call gwdc (size(Grid%xlon,1), size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, lat, gu0, gv0, gt0, gq0, Model%dtp, & call gwdc_run ( & - im, ix, im, levs, intgr_one, Statein%ugrs, Statein%vgrs, & - Statein%tgrs, Statein%qgrs(:,:,1), dtp, Statein%prsl, & + size(Grid%xlon,1), size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, intgr_one, Statein%ugrs, Statein%vgrs, & + Statein%tgrs, Statein%qgrs(:,:,1), Model%dtp, Statein%prsl, & Statein%prsi, del, cumabs, ktop, kbot, kcnv, cldf, & con_g, con_cp, con_rd, con_fvirt, con_pi, dlength, & - lprnt, ipr, Model%fhour, gwdcu, gwdcv, dusfcg, dvsfcg) + Model%lprnt, ipr, Model%fhour, gwdcu, gwdcv, dusfcg, dvsfcg) -! if (lprnt) then +! if (Model%lprnt) then ! if (fhour >= fhourpr) then ! print *,' after gwdc in gbphys start print' @@ -2055,7 +2051,7 @@ subroutine GFS_physics_driver & ! & 'ugrs',9x,'gu0',8x,'vgrs',9x,'gv0',8x, & ! & 'tgrs',9x,'gt0',8x,'gt0b',7x,'gwdcu',7x,'gwdcv',/) -! do k = levs, 1, -1 +! do k = Model%levs, 1, -1 ! write(*,9141) k,ugrs(ipr,k),gu0(ipr,k), & ! & vgrs(ipr,k),gv0(ipr,k), & ! & tgrs(ipr,k),gt0(ipr,k),save_t(ipr,k), & @@ -2073,37 +2069,37 @@ subroutine GFS_physics_driver & !! --- ... write out cloud top stress and wind tendencies ! ! if (Model%lssav) then -! Diag%dugwd(:) = Diag%dugwd(:) + dusfcg(:)*dtf -! Diag%dvgwd(:) = Diag%dvgwd(:) + dvsfcg(:)*dtf +! Diag%dugwd(:) = Diag%dugwd(:) + dusfcg(:)*Model%dtf +! Diag%dvgwd(:) = Diag%dvgwd(:) + dvsfcg(:)*Model%dtf ! ! if (Model%ldiag3d) then -! Diag%du3dt(:,:,4) = Diag%du3dt(:,:,4) + gwdcu(:,:) * dtf -! Diag%dv3dt(:,:,4) = Diag%dv3dt(:,:,4) + gwdcv(:,:) * dtf +! Diag%du3dt(:,:,4) = Diag%du3dt(:,:,4) + gwdcu(:,:) * Model%dtf +! Diag%dv3dt(:,:,4) = Diag%dv3dt(:,:,4) + gwdcv(:,:) * Model%dtf ! endif ! endif ! end if_lssav ! !! --- ... update the wind components with gwdc tendencies ! -! do k = 1, levs -! do i = 1, im +! do k = 1, Model%levs +! do i = 1, size(Grid%xlon,1) ! eng0 = 0.5*(Stateout%gu0(i,k)*Stateout%gu0(i,k)+Stateout%gv0(i,k)*Stateout%gv0(i,k)) -! Stateout%gu0(i,k) = Stateout%gu0(i,k) + gwdcu(i,k) * dtp -! Stateout%gv0(i,k) = Stateout%gv0(i,k) + gwdcv(i,k) * dtp +! Stateout%gu0(i,k) = Stateout%gu0(i,k) + gwdcu(i,k) * Model%dtp +! Stateout%gv0(i,k) = Stateout%gv0(i,k) + gwdcv(i,k) * Model%dtp ! eng1 = 0.5*(Stateout%gu0(i,k)*Stateout%gu0(i,k)+Stateout%gv0(i,k)*Stateout%gv0(i,k)) -! Stateout%gt0(i,k) = Stateout%gt0(i,k) + (eng0-eng1)/(dtp*con_cp) +! Stateout%gt0(i,k) = Stateout%gt0(i,k) + (eng0-eng1)/(Model%dtp*con_cp) ! enddo -!! if (lprnt) write(7000,*)' gu0=',gu0(ipr,k),' gwdcu=', +!! if (Model%lprnt) write(7000,*)' gu0=',gu0(ipr,k),' gwdcu=', !! &gwdcu(ipr,k), ' gv0=', gv0(ipr,k),' gwdcv=',gwdcv(ipr,k) !! &,' k=',k ! enddo call gwdc_post_run ( & - im, levs, Model%lssav, Model%ldiag3d, dtf, dtp, con_cp, & + size(Grid%xlon,1), Model%levs, Model%lssav, Model%ldiag3d, Model%dtf, Model%dtp, con_cp, & dusfcg, dvsfcg, gwdcu, gwdcv, & Diag%dugwd, Diag%dvgwd, Diag%du3dt(:,:,4), Diag%dv3dt(:,:,4), & Stateout%gu0, Stateout%gv0, Stateout%gt0) -! if (lprnt) then +! if (Model%lprnt) then ! if (fhour >= fhourpr) then ! print *,' after tendency gwdc in gbphys start print' @@ -2112,7 +2108,7 @@ subroutine GFS_physics_driver & ! & 'ugrs',9x,'gu0',8x,'vgrs',9x,'gv0',8x, & ! & 'tgrs',9x,'gt0',8x,'gt0b',7x,'gwdcu',7x,'gwdcv',/) -! do k = levs, 1, -1 +! do k = Model%levs, 1, -1 ! write(*,9142) k,ugrs(ipr,k),gu0(ipr,k),vgrs(ipr,k), & ! & gv0(ipr,k),tgrs(ipr,k),gt0(ipr,k),save_t(ipr,k), & ! & gwdcu(ipr,k),gwdcv(ipr,k) @@ -2125,9 +2121,9 @@ subroutine GFS_physics_driver & endif ! end if_cnvgwd (convective gravity wave drag) -! if (lprnt) write(7000,*)' aft cnvgwd gu0=',gu0(ipr,:) -! if (lprnt) write(7000,*)' aft cnvgwd gv0=',gv0(ipr,:) -! &,' lat=',lat,' kdt=',kdt,' me=',me +! if (Model%lprnt) write(7000,*)' aft cnvgwd gu0=',gu0(ipr,:) +! if (Model%lprnt) write(7000,*)' aft cnvgwd gv0=',gv0(ipr,:) +! &,' lat=',lat,' kdt=',Model%kdt,' me=',Model%me !----------------Convective gravity wave drag parameterization over -------- ! if (Model%ldiag3d) then @@ -2139,15 +2135,15 @@ subroutine GFS_physics_driver & call GFS_SCNV_generic_pre_run (Model, Stateout, Grid, save_t, save_qv) -! write(0,*)' before do_shoc shal clstp=',clstp,' kdt=',kdt, +! write(0,*)' before do_shoc shal clstp=',clstp,' kdt=',Model%kdt, ! & ' lat=',lat -! if (lprnt) then +! if (Model%lprnt) then ! write(0,*)' prsl=',prsl(ipr,:) ! write(0,*) ' del=',del(ipr,:) -! write(0,*) ' befshalgt0=',gt0(ipr,:),' kdt=',kdt -! write(0,*) ' befshalgq0=',gt0(ipr,:),' kdt=',kdt -! write(0,*) ' befshalgq0=',gq0(ipr,:,1),' kdt=',kdt -! write(0,*) ' befshalgqw=',gq0(ipr,:,3),' kdt=',kdt +! write(0,*) ' befshalgt0=',gt0(ipr,:),' kdt=',Model%kdt +! write(0,*) ' befshalgq0=',gt0(ipr,:),' kdt=',Model%kdt +! write(0,*) ' befshalgq0=',gq0(ipr,:,1),' kdt=',Model%kdt +! write(0,*) ' befshalgqw=',gq0(ipr,:,3),' kdt=',Model%kdt ! endif if (.not. Model%do_shoc) then @@ -2156,7 +2152,7 @@ subroutine GFS_physics_driver & ! -------------------------------------- if (Model%imfshalcnv == 1) then ! opr option now at 2014 !----------------------- - call shalcnv (im, ix, levs, Model%jcap, dtp, del, Statein%prsl, & + call shalcnv (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%jcap, Model%dtp, del, Statein%prsl, & Statein%pgr, Statein%phil, clw, Stateout%gq0, & Stateout%gt0, Stateout%gu0, Stateout%gv0, rain1, & kbot, ktop, kcnv, islmsk, Statein%vvl, Model%ncld,& @@ -2176,12 +2172,12 @@ subroutine GFS_physics_driver & endif elseif (Model%imfshalcnv == 2) then - call sasasshal_run (im, ix, levs, dtp, del, Statein%prsl, & + call sasasshal_run (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, del, Statein%prsl, & Statein%pgr, Statein%phil, clw(:,:,1), & clw(:,:,2), Stateout%gq0(:,:,1), & Stateout%gt0, Stateout%gu0, Stateout%gv0, & - rain1, kbot, ktop, kcnv, islmsk, garea, & - Statein%vvl, Model%ncld, DIag%hpbl, ud_mf, & + rain1, kbot, ktop, kcnv, islmsk, Grid%area, & + Statein%vvl, Model%ncld, Diag%hpbl, ud_mf, & dt_mf, cnvw, cnvc) call sasasshal_post_run (frain, rain1, cnvc, cnvw, Model, Grid, Diag, Tbd) @@ -2189,31 +2185,31 @@ subroutine GFS_physics_driver & elseif (Model%imfshalcnv == 0) then ! modified Tiedtke Shallow convecton !----------------------------------- levshc(:) = 0 - do k = 2, levs - do i = 1, im + do k = 2, Model%levs + do i = 1, size(Grid%xlon,1) dpshc = 0.3 * Statein%prsi(i,1) if (Statein%prsi(i,1)-Statein%prsi(i,k) <= dpshc) levshc(i) = k enddo enddo levshcm = 1 - do i = 1, im + do i = 1, size(Grid%xlon,1) levshcm = max(levshcm, levshc(i)) enddo -! if (lprnt) print *,' levshcm=',levshcm,' gt0sh=',gt0(ipr,:) +! if (Model%lprnt) print *,' levshcm=',levshcm,' gt0sh=',gt0(ipr,:) ! &, ' lat=',lat if (Model%mstrat) then ! As in CFSv2 - call shalcv (im, ix, levshcm, dtp, del, Statein%prsi, & + call shalcv (size(Grid%xlon,1), size(Grid%xlon,1), levshcm, Model%dtp, del, Statein%prsi, & Statein%prsl, Statein%prslk,kcnv, Stateout%gq0, & Stateout%gt0, levshc, Statein%phil, kinver, & - ctei_r, ctei_rml, lprnt, ipr) + ctei_r, ctei_rml, Model%lprnt, ipr) else - call shalcvt3 (im, ix, levshcm, dtp, del, Statein%prsi, & + call shalcvt3 (size(Grid%xlon,1), size(Grid%xlon,1), levshcm, Model%dtp, del, Statein%prsi, & Statein%prsl, Statein%prslk, kcnv, & Stateout%gq0, Stateout%gt0) endif -! if (lprnt) print *,' levshcm=',levshcm,' gt0sha=',gt0(ipr,:) +! if (Model%lprnt) print *,' levshcm=',levshcm,' gt0sha=',gt0(ipr,:) endif ! end if_imfshalcnv endif ! end if_shal_cnv @@ -2221,8 +2217,8 @@ subroutine GFS_physics_driver & ! if (Model%lssav) then ! ! update dqdt_v to include moisture tendency due to shallow convection ! if (Model%lgocart) then -! do k = 1, levs -! do i = 1, im +! do k = 1, Model%levs +! do i = 1, size(Grid%xlon,1) ! tem = (Stateout%gq0(i,k,1)-save_qv(i,k)) * frain ! Coupling%dqdti(i,k) = Coupling%dqdti(i,k) + tem ! enddo @@ -2234,15 +2230,15 @@ subroutine GFS_physics_driver & ! endif ! endif ! end if_lssav ! ! -! do k = 1, levs -! do i = 1, im +! do k = 1, Model%levs +! do i = 1, size(Grid%xlon,1) ! if (clw(i,k,2) <= -999.0) clw(i,k,2) = 0.0 ! enddo ! enddo call GFS_SCNV_generic_post_run (Model, Stateout, Grid, save_t, save_qv, frain, Diag, clw) -! if (lprnt) then +! if (Model%lprnt) then ! write(0,*)' prsl=',prsl(ipr,:) ! write(0,*) ' del=',del(ipr,:) ! write(0,*) ' befshgt0=',gt0(ipr,:) @@ -2257,8 +2253,8 @@ subroutine GFS_physics_driver & ! else ! if (clw(1,1,2) < -999.0) then ! if clw is not partitioned to ice and water -! do k=1,levs -! do i=1,im +! do k=1,Model%levs +! do i=1,size(Grid%xlon,1) ! tem = gq0(i,k,ntcw) & ! & * max(0.0, MIN(1.0, (TCR-gt0(i,k))*TCRF)) ! clw(i,k,1) = tem ! ice @@ -2270,31 +2266,31 @@ subroutine GFS_physics_driver & qpl(:,:) = 0.0 qpi(:,:) = 0.0 ! dtshoc = 60.0 -! nshocm = (dtp/dtshoc) + 0.001 -! dtshoc = dtp / nshocm +! nshocm = (Model%dtp/dtshoc) + 0.001 +! dtshoc = Model%dtp / nshocm ! do nshoc=1,nshocm -! call shoc(im, 1, levs, levs+1, dtp, me, lat, & -!! call shoc(im, 1, levs, levs+1, dtshoc, me, lat, & -! & prsl(1:im,:), phii (1:im,:), phil(1:im,:),& -! & gu0(1:im,:),gv0(1:im,:), vvl(1:im,:), gt0(1:im,:), & -! & gq0(1:im,:,1), & -! & clw(1:im,:,1), clw(1:im,:,2), qpi, qpl, sgs_cld(1:im,:)& -! &, gq0(1:im,:,ntke), & -! & phy_f3d(1:im,:,ntot3d-1), phy_f3d(1:im,:,ntot3d), & -! & lprnt, ipr, & +! call shoc(size(Grid%xlon,1), 1, Model%levs, Model%levs+1, Model%dtp, Model%me, lat, & +!! call shoc(size(Grid%xlon,1), 1, Model%levs, Model%levs+1, dtshoc, Model%me, lat, & +! & prsl(1:size(Grid%xlon,1),:), phii (1:size(Grid%xlon,1),:), phil(1:size(Grid%xlon,1),:),& +! & gu0(1:size(Grid%xlon,1),:),gv0(1:size(Grid%xlon,1),:), vvl(1:size(Grid%xlon,1),:), gt0(1:size(Grid%xlon,1),:), & +! & gq0(1:size(Grid%xlon,1),:,1), & +! & clw(1:size(Grid%xlon,1),:,1), clw(1:size(Grid%xlon,1),:,2), qpi, qpl, sgs_cld(1:size(Grid%xlon,1),:)& +! &, gq0(1:size(Grid%xlon,1),:,ntke), & +! & phy_f3d(1:size(Grid%xlon,1),:,ntot3d-1), phy_f3d(1:size(Grid%xlon,1),:,ntot3d), & +! & Model%lprnt, ipr, & ! & con_cp, con_g, con_hvap, con_hfus, con_hvap+con_hfus, & ! & con_rv, con_rd, con_pi, con_fvirt) !GFDL replace lat with "1: -! call shoc(ix, im, 1, levs, levs+1, dtshoc, me, lat, & - call shoc (ix, im, 1, levs, levs+1, dtp, me, 1, Statein%prsl(1,1), & +! call shoc(size(Grid%xlon,1), size(Grid%xlon,1), 1, Model%levs, Model%levs+1, dtshoc, Model%me, lat, & + call shoc (size(Grid%xlon,1), size(Grid%xlon,1), 1, Model%levs, Model%levs+1, Model%dtp, Model%me, 1, Statein%prsl(1,1), & Statein%phii(1,1), Statein%phil(1,1), Stateout%gu0(1,1), & Stateout%gv0(1,1), Statein%vvl(1,1), Stateout%gt0(1,1), & Stateout%gq0(1,1,1), clw(1,1,1), clw(1,1,2), qpi, qpl,rhc, & Model%sup, Tbd%phy_f3d(1,1,Model%ntot3d-2), & Stateout%gq0(1,1,Model%ntke), hflx, evap, prnum, & Tbd%phy_f3d(1,1,Model%ntot3d-1), Tbd%phy_f3d(1,1,Model%ntot3d),& - lprnt, ipr, ncpl, ncpi, kdt) + Model%lprnt, ipr, ncpl, ncpi, Model%kdt) if ((Model%ntlnc > 0) .and. (Model%ntinc > 0) .and. (Model%ncld >= 2)) then Stateout%gq0(:,:,Model%ntlnc) = ncpl(:,:) @@ -2302,9 +2298,9 @@ subroutine GFS_physics_driver & endif ! -! do k=1,levs -! write(1000+me,*)' maxtkh=',maxval(phy_f3d(1:im,k,ntot3d-1)), & -! ' k=',k,' kdt=',kdt,' lat=',lat +! do k=1,Model%levs +! write(1000+Model%me,*)' maxtkh=',maxval(phy_f3d(1:size(Grid%xlon,1),k,ntot3d-1)), & +! ' k=',k,' kdt=',Model%kdt,' lat=',lat ! enddo ! write(0,*)' aft shoc gt0=',gt0(1,:),' lat=',lat @@ -2313,7 +2309,7 @@ subroutine GFS_physics_driver & ! endif ! if( .not. do_shoc) ! -! if (lprnt) then +! if (Model%lprnt) then ! write(0,*)' prsl=',prsl(ipr,:) ! write(0,*) ' del=',del(ipr,:) ! write(0,*) ' aftshgt0=',gt0(ipr,:) @@ -2340,7 +2336,7 @@ subroutine GFS_physics_driver & ! Legacy routine which determines convectve clouds - should be removed at some point - call cnvc90_run (Model%clstp, im, ix, Diag%rainc, kbot, ktop, levs, Statein%prsi, & + call cnvc90_run (Model%clstp, size(Grid%xlon,1), size(Grid%xlon,1), Diag%rainc, kbot, ktop, Model%levs, Statein%prsi, & Tbd%acv, Tbd%acvb, Tbd%acvt, Cldprop%cv, Cldprop%cvb, Cldprop%cvt) if (Model%moist_adj) then ! moist convective adjustment @@ -2348,18 +2344,18 @@ subroutine GFS_physics_driver & ! ! To call moist convective adjustment ! -! if (lprnt) then +! if (Model%lprnt) then ! print *,' prsl=',prsl(ipr,:) ! print *,' del=',del(ipr,:) ! print *,' gt0b=',gt0(ipr,:) ! print *,' gq0b=',gq0(ipr,:,1) ! endif - call mstcnv (im, ix, levs, dtp, Stateout%gt0, Stateout%gq0, & + call mstcnv (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, Stateout%gt0, Stateout%gq0, & Statein%prsl,del, Statein%prslk, rain1, & - Stateout%gq0(1,1,Model%ntcw), rhc, lprnt, ipr) + Stateout%gq0(1,1,Model%ntcw), rhc, Model%lprnt, ipr) -! if (lprnt) then +! if (Model%lprnt) then ! print *,' rain1=',rain1(ipr),' rainc=',rainc(ipr) ! print *,' gt0a=',gt0(ipr,:) ! print *,' gq0a=',gq0(ipr,:,1) @@ -2371,11 +2367,11 @@ subroutine GFS_physics_driver & ! update dqdt_v to include moisture tendency due to surface processes ! dqdt_v : instaneous moisture tendency (kg/kg/sec) ! if (lgocart) then -! do k=1,levs -! do i=1,im +! do k=1,Model%levs +! do i=1,size(Grid%xlon,1) ! tem = (gq0(i,k,1)-save_qv(i,k)) * frain ! dqdt_v(i,k) = dqdt_v(i,k) + tem -! dqdt_v(i,k) = dqdt_v(i,k) / dtf +! dqdt_v(i,k) = dqdt_v(i,k) / Model%dtf ! enddo ! enddo ! endif @@ -2386,14 +2382,14 @@ subroutine GFS_physics_driver & endif endif ! moist convective adjustment over ! - call GFS_MP_generic_pre_run (im, ix,levs,clw(:,:,1),clw(:,:,2), & + call GFS_MP_generic_pre_run (size(Grid%xlon,1), size(Grid%xlon,1),Model%levs,clw(:,:,1),clw(:,:,2), & Model%ldiag3d, Model%ntcw, Model%ncld, & Model%num_p3d, Stateout%gt0,Stateout%gq0(:,:,1), & save_t, save_qv, save_qcw ) ! dqdt_v : instaneous moisture tendency (kg/kg/sec) if (Model%lgocart) then - Coupling%dqdti(:,:) = Coupling%dqdti(:,:) / dtf + Coupling%dqdti(:,:) = Coupling%dqdti(:,:) / Model%dtf endif ! ! grid-scale condensation/precipitations and microphysics parameterization @@ -2401,7 +2397,7 @@ subroutine GFS_physics_driver & if (Model%ncld == 0) then ! no cloud microphysics - call lrgscl (ix, im, levs, dtp, Stateout%gt0, Stateout%gq0, & + call lrgscl (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, Stateout%gt0, Stateout%gq0, & Statein%prsl, del, Statein%prslk, rain1, clw) elseif (Model%ncld == 1) then ! microphysics with single cloud condensate @@ -2410,63 +2406,63 @@ subroutine GFS_physics_driver & if (Model%npdf3d /= 3) then ! without pdf clouds -! if (lprnt) then +! if (Model%lprnt) then ! write(0,*)' prsl=',prsl(ipr,:) ! write(0,*) ' del=',del(ipr,:) -! write(0,*) ' beflsgt0=',gt0(ipr,:),' kdt=',kdt -! write(0,*) ' beflsgq0=',gq0(ipr,:,1),' kdt=',kdt -! write(0,*) ' beflsgw0=',gq0(ipr,:,3),' kdt=',kdt +! write(0,*) ' beflsgt0=',gt0(ipr,:),' kdt=',Model%kdt +! write(0,*) ' beflsgq0=',gq0(ipr,:,1),' kdt=',Model%kdt +! write(0,*) ' beflsgw0=',gq0(ipr,:,3),' kdt=',Model%kdt ! endif ! ------------------ if (Model%do_shoc) then - call precpd_shoc (im, ix, levs, dtp, del, Statein%prsl, & + call precpd_shoc (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, del, Statein%prsl, & Stateout%gq0(1,1,1), Stateout%gq0(1,1,Model%ntcw), & Stateout%gt0, rain1, Diag%sr, rainp, rhc, & psautco_l, prautco_l, Model%evpco, Model%wminco, & - Tbd%phy_f3d(1,1,Model%ntot3d-2), lprnt, ipr) + Tbd%phy_f3d(1,1,Model%ntot3d-2), Model%lprnt, ipr) else - call gscond_run (im, ix, levs, dtp, dtf, Statein%prsl, Statein%pgr,& + call gscond_run (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, Model%dtf, Statein%prsl, Statein%pgr,& Stateout%gq0(:,:,1), clw(:,:,1), clw(:,:,2), & Stateout%gq0(:,:,Model%ntcw), & Stateout%gt0, Tbd%phy_f3d(:,:,1), Tbd%phy_f3d(:,:,2), & Tbd%phy_f2d(:,1), Tbd%phy_f3d(:,:,3), & - Tbd%phy_f3d(:,:,4), Tbd%phy_f2d(:,2), rhc,lprnt, ipr) + Tbd%phy_f3d(:,:,4), Tbd%phy_f2d(:,2), rhc,Model%lprnt, ipr) - call precpd_run (im, ix, levs, dtp, del, Statein%prsl, & + call precpd_run (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, del, Statein%prsl, & Stateout%gq0(:,:,1), Stateout%gq0(:,:,Model%ntcw), & Stateout%gt0, rain1, Diag%sr, rainp, rhc, & Model%psautco, Model%prautco, Model%evpco, & - Model%wminco, work1, lprnt, ipr) + Model%wminco, work1, Model%lprnt, ipr) endif -! if (lprnt) then +! if (Model%lprnt) then ! write(0,*)' prsl=',prsl(ipr,:) ! write(0,*) ' del=',del(ipr,:) -! write(0,*) ' aftlsgt0=',gt0(ipr,:),' kdt=',kdt -! write(0,*) ' aftlsgq0=',gq0(ipr,:,1),' kdt=',kdt -! write(0,*) ' aftlsgw0=',gq0(ipr,:,3),' kdt=',kdt +! write(0,*) ' aftlsgt0=',gt0(ipr,:),' kdt=',Model%kdt +! write(0,*) ' aftlsgq0=',gq0(ipr,:,1),' kdt=',Model%kdt +! write(0,*) ' aftlsgw0=',gq0(ipr,:,3),' kdt=',Model%kdt ! write(0,*)' aft precpd rain1=',rain1(1:3),' lat=',lat ! endif else ! with pdf clouds ! --------------- - call gscondp (im, ix, levs, dtp, dtf, Statein%prsl, & + call gscondp (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, Model%dtf, Statein%prsl, & Statein%pgr, Stateout%gq0(1,1,1), & Stateout%gq0(1,1,Model%ntcw), Stateout%gt0, & Tbd%phy_f3d(1,1,1), Tbd%phy_f3d(1,1,2), & Tbd%phy_f2d(1,1), Tbd%phy_f3d(1,1,3), & Tbd%phy_f3d(1,1,4), Tbd%phy_f2d(1,2), rhc, & Tbd%phy_f3d(1,1,Model%num_p3d+1), Model%sup, & - lprnt, ipr, kdt) + Model%lprnt, ipr, Model%kdt) - call precpdp (im, ix, levs, dtp, del, Statein%prsl, & + call precpdp (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, del, Statein%prsl, & Statein%pgr, Stateout%gq0(1,1,1), & Stateout%gq0(1,1,Model%ntcw), Stateout%gt0, & rain1, Diag%sr, rainp, rhc, & Tbd%phy_f3d(1,1,Model%num_p3d+1), psautco_l, & - prautco_l, Model%evpco, Model%wminco, lprnt, ipr) + prautco_l, Model%evpco, Model%wminco, Model%lprnt, ipr) endif ! end of grid-scale precip/microphysics options endif ! end if_num_p3d -! if (lprnt) write(0,*) ' rain1=',rain1(ipr),' rainc=',rainc(ipr),' lat=',lat +! if (Model%lprnt) write(0,*) ' rain1=',rain1(ipr),' rainc=',rainc(ipr),' lat=',lat elseif (Model%ncld == 2) then ! MGB double-moment microphysics ! Acheng used clw here for other code to run smoothly and minimum change @@ -2533,15 +2529,15 @@ subroutine GFS_physics_driver & endif endif ! notice clw ix instead of im -! call m_micro_driver(im,ix,levs,flipv,del,dtp,prsl,prsi, +! call m_micro_driver(size(Grid%xlon,1),size(Grid%xlon,1),Model%levs,flipv,del,Model%dtp,prsl,prsi, ! & prslk,prsik,pgr,vvl,clw(1,1,2), QLCN, clw(1,1,1),QICN, -! if (lprnt) write(0,*)' cnv_mfdbef=',cnv_mfd(ipr,:),' flipv=',flipv -! if(lprnt) write(0,*) ' befgq0=',gq0(ipr,:,1),' kdt=',kdt -! if (lprnt) write(0,*)' clw1bef=',clw(ipr,:,1),' kdt=',kdt -! if (lprnt) write(0,*)' clw2bef=',clw(ipr,:,2),' kdt=',kdt -! if (lprnt) write(0,*)' cloudsb=',phy_f3d(ipr,:,1)*100,' kdt=',kdt +! if (Model%lprnt) write(0,*)' cnv_mfdbef=',cnv_mfd(ipr,:),' flipv=',flipv +! if(Model%lprnt) write(0,*) ' befgq0=',gq0(ipr,:,1),' kdt=',Model%kdt +! if (Model%lprnt) write(0,*)' clw1bef=',clw(ipr,:,1),' kdt=',Model%kdt +! if (Model%lprnt) write(0,*)' clw2bef=',clw(ipr,:,2),' kdt=',Model%kdt +! if (Model%lprnt) write(0,*)' cloudsb=',phy_f3d(ipr,:,1)*100,' kdt=',Model%kdt ! txa(:,:) = gq0(:,:,1) - call m_micro_driver (im, ix, levs, Model%flipv, dtp, Statein%prsl, & + call m_micro_driver (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%flipv, Model%dtp, Statein%prsl, & Statein%prsi, Statein%prslk, Statein%prsik, & Statein%vvl, clw(1,1,2), QLCN, clw(1,1,1), QICN, & Radtend%htrlw, Radtend%htrsw, w_upi, cf_upi, & @@ -2554,22 +2550,22 @@ subroutine GFS_physics_driver & Diag%sr, Stateout%gq0(1,1,Model%ntlnc), & Stateout%gq0(1,1,Model%ntinc), Model%fprcp, qrn, & qsnw, ncpr, ncps, Tbd%phy_f3d(1,1,1), kbot, & - Model%aero_in, skip_macro, cn_prc, cn_snr, lprnt, & - ipr, kdt, Grid%xlat, Grid%xlon) + Model%aero_in, skip_macro, cn_prc, cn_snr, Model%lprnt, & + ipr, Model%kdt, Grid%xlat, Grid%xlon) -! write(1000+me,*)' at latitude = ',lat +! write(1000+Model%me,*)' at latitude = ',lat ! tx1 = 1000.0 -! call moist_bud(im,ix,ix,levs,me,kdt,con_g,tx1,del,rain1 +! call moist_bud(size(Grid%xlon,1),size(Grid%xlon,1),size(Grid%xlon,1),Model%levs,Model%me,Model%kdt,con_g,tx1,del,rain1 ! &, txa, clw(1,1,2), clw(1,1,1) ! &, gq0(1,1,1),gq0(1,1,ntcw),gq0(1,1,ntcw+1),' m_micro ') -! if (lprnt) write(0,*) ' rain1=',rain1(ipr)*86400.0, +! if (Model%lprnt) write(0,*) ' rain1=',rain1(ipr)*86400.0, ! &' rainc=',rainc(ipr)*86400.0 ! &,' cn_prc=',cn_prc(ipr),' cn_snr=',cn_snr(ipr) -! if (lprnt) write(0,*) ' aftlsgq0=',gq0(ipr,:,1),' kdt=',kdt -! if (lprnt) write(0,*)' clw1aft=',gq0(ipr,:,ntiw),' kdt=',kdt -! if (lprnt) write(0,*)' cloudsm=',phy_f3d(ipr,:,1)*100,' kdt=',kdt -! if (lprnt) write(0,*)' clw2aft=',gq0(ipr,:,ntcw),' kdt=',kdt +! if (Model%lprnt) write(0,*) ' aftlsgq0=',gq0(ipr,:,1),' kdt=',Model%kdt +! if (Model%lprnt) write(0,*)' clw1aft=',gq0(ipr,:,ntiw),' kdt=',Model%kdt +! if (Model%lprnt) write(0,*)' cloudsm=',phy_f3d(ipr,:,1)*100,' kdt=',Model%kdt +! if (Model%lprnt) write(0,*)' clw2aft=',gq0(ipr,:,ntcw),' kdt=',Model%kdt if (Model%fprcp == 1) then Stateout%gq0(:,:,Model%ntrw) = qrn(:,:) @@ -2578,7 +2574,7 @@ subroutine GFS_physics_driver & Stateout%gq0(:,:,Model%ntsnc) = ncps(:,:) endif endif ! end if_ncld -! if (lprnt) write(0,*)' rain1 after ls=',rain1(ipr) +! if (Model%lprnt) write(0,*)' rain1 after ls=',rain1(ipr) ! if (Model%do_aw) then ! Arakawa-Wu adjustment of large-scale microphysics tendencies: @@ -2592,8 +2588,8 @@ subroutine GFS_physics_driver & ! vertically integrate reduction of water increments, reduce precip by that amount temrain1(:) = 0.0 - do k = 1,levs - do i = 1,im + do k = 1,Model%levs + do i = 1,size(Grid%xlon,1) tem1 = sigmafrac(i,k) Stateout%gt0(i,k) = Stateout%gt0(i,k) - tem1 * (Stateout%gt0(i,k)-save_t(i,k)) tem2 = tem1 * (Stateout%gq0(i,k,1)-save_qv(i,k)) @@ -2603,8 +2599,8 @@ subroutine GFS_physics_driver & enddo enddo do n=Model%ntcw,Model%ntcw+Model%ncld-1 - do k = 1,levs - do i = 1,im + do k = 1,Model%levs + do i = 1,size(Grid%xlon,1) tem1 = sigmafrac(i,k) * (Stateout%gq0(i,k,n)-dqdt(i,k,n)) Stateout%gq0(i,k,n) = Stateout%gq0(i,k,n) - tem1 temrain1(i) = temrain1(i) - (Statein%prsi(i,k)-Statein%prsi(i,k+1)) & @@ -2612,13 +2608,13 @@ subroutine GFS_physics_driver & enddo enddo enddo -! write(1000+me,*)' rain1=',rain1(4),' temrain1=',temrain1(i)*0.001 +! write(1000+Model%me,*)' rain1=',rain1(4),' temrain1=',temrain1(i)*0.001 rain1(:) = max(rain1(:) - temrain1(:)*0.001, 0.0_kind_phys) endif ! Diag%rain(:) = Diag%rainc(:) + frain * rain1(:) - call GFS_calpreciptype_run (kdt, Model%nrcm, im, ix, levs, levs+1, & + call GFS_calpreciptype_run (Model%kdt, Model%nrcm, size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%levs+1, & Tbd%rann, Model%cal_pre, Stateout%gt0, & Stateout%gq0(:,:,1), Statein%prsl, Statein%prsi, & Diag%rainc,frain,rain1, Statein%phii, Model%num_p3d, & @@ -2626,7 +2622,11 @@ subroutine GFS_physics_driver & Diag%rain, domr, domzr, domip, doms, Sfcprop%srflag, & ! output Sfcprop%tprcp) - call GFS_MP_generic_post_run (im, ix, levs, dtf, del, & + ! DH* inside GFS_MP_generic_post_run Diag%dq3dt(:,:,6) is called dq3dt4 + ! also, the original GFS_physics_driver had interstitial code around line 2599 + ! Diag%dq3dt(:,:,4) = Diag%dq3dt(:,:,4) + (Stateout%gq0(:,:,1)-dqdt(:,:,1)) * frain + ! --> I think Diag%dq3dt(:,:,6) should be Diag%dq3dt(:,:,4) here *DH + call GFS_MP_generic_post_run (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtf, del, & Model%lssav, Model%ldiag3d, Diag%rain,frain, & Model%ntcw, Model%ncld, & Stateout%gq0(:,:,Model%ntcw), & @@ -2636,16 +2636,16 @@ subroutine GFS_physics_driver & ! if (Model%cal_pre) then ! hchuang: add dominant precipitation type algorithm ! i = min(3,Model%num_p3d) -! call calpreciptype_run (kdt, Model%nrcm, im, ix, levs, levs+1, & +! call calpreciptype_run (Model%kdt, Model%nrcm, size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%levs+1, & ! Tbd%rann, Grid%xlat, Grid%xlon, Stateout%gt0, & ! Stateout%gq0, Statein%prsl, Statein%prsi, & ! Diag%rain, Statein%phii, Model%num_p3d, & ! Sfcprop%tsfc, Diag%sr, Tbd%phy_f3d(:,:,i), & ! input ! domr, domzr, domip, doms) ! output ! -! if (lprnt) print*,'debug calpreciptype: DOMR,DOMZR,DOMIP,DOMS ' +! if (Model%lprnt) print*,'debug calpreciptype: DOMR,DOMZR,DOMIP,DOMS ' ! &,DOMR(ipr),DOMZR(ipr),DOMIP(ipr),DOMS(ipr) -! do i=1,im +! do i=1,size(Grid%xlon,1) ! if (abs(xlon(i)*57.29578-114.0) .lt. 0.2 .and. ! & abs(xlat(i)*57.29578-40.0) .lt. 0.2) ! & print*,'debug calpreciptype: DOMR,DOMZR,DOMIP,DOMS ', @@ -2653,7 +2653,7 @@ subroutine GFS_physics_driver & ! end do ! HCHUANG: use new precipitation type to decide snow flag for LSM snow accumulation -! do i=1,im +! do i=1,size(Grid%xlon,1) ! if(doms(i) > 0.0 .or. domip(i) > 0.0) then ! Sfcprop%srflag(i) = 1. ! else @@ -2666,8 +2666,8 @@ subroutine GFS_physics_driver & ! t850(:) = Stateout%gt0(:,1) -! do k = 1, levs-1 -! do i = 1, im +! do k = 1, Model%levs-1 +! do i = 1, size(Grid%xlon,1) ! if (Statein%prsl(i,k) > p850 .and. Statein%prsl(i,k+1) <= p850) then ! t850(i) = Stateout%gt0(i,k) - (Statein%prsl(i,k)-p850) / & ! (Statein%prsl(i,k)-Statein%prsl(i,k+1)) * & @@ -2681,7 +2681,7 @@ subroutine GFS_physics_driver & ! if (Model%cal_pre) then ! hchuang: new precip type algorithm defines srflag ! Sfcprop%tprcp(:) = max(0.0, Diag%rain(:)) ! clu: rain -> tprcp ! else -! do i = 1, im +! do i = 1, size(Grid%xlon,1) ! Sfcprop%tprcp(i) = max(0.0, Diag%rain(i) )! clu: rain -> tprcp ! Sfcprop%srflag(i) = 0. ! clu: default srflag as 'rain' (i.e. 0) ! if (t850(i) <= 273.16) then @@ -2693,7 +2693,7 @@ subroutine GFS_physics_driver & ! --- ... coupling insertion if (Model%cplflx .or. Model%do_sppt) then - do i = 1, im + do i = 1, size(Grid%xlon,1) if (t850(i) > 273.16) then Coupling%rain_cpl(i) = Coupling%rain_cpl(i) + Diag%rain(i) else @@ -2708,12 +2708,12 @@ subroutine GFS_physics_driver & !!! this change allows gocart to use filtered wind fields !!! if (Model%lgocart) then -! call sfc_diag (im, Statein%pgr, Stateout%gu0, Stateout%gv0, & +! call sfc_diag (size(Grid%xlon,1), Statein%pgr, Stateout%gu0, Stateout%gv0, & ! Stateout%gt0, Stateout%gq0, Sfcprop%tsfc, qss, & ! Sfcprop%f10m, Diag%u10m, Diag%v10m, Sfcprop%t2m, & ! Sfcprop%q2m, work3, evap, Sfcprop%ffmm, & ! Sfcprop%ffhh, fm10, fh2) - call sfc_diag_run(im, Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & + call sfc_diag_run(size(Grid%xlon,1), Statein%pgr, Statein%ugrs(:,1), Statein%vgrs(:,1), & Statein%tgrs(:,1), Statein%qgrs(:,1,1), Sfcprop%tsfc, qss, & Sfcprop%f10m, Diag%u10m, Diag%v10m, & Sfcprop%t2m, Sfcprop%q2m, work3, evap, & @@ -2730,18 +2730,18 @@ subroutine GFS_physics_driver & ! --- ... total runoff is composed of drainage into water table and ! runoff at the surface and is accumulated in unit of meters ! if (Model%lssav) then -! tem = dtf * 0.001 +! tem = Model%dtf * 0.001 ! Diag%runoff(:) = Diag%runoff(:) + (drain(:)+runof(:)) * tem ! Diag%srunoff(:) = Diag%srunoff(:) + runof(:) * tem ! endif - call lsm_noah_post_run(im,Model%lsoil,Model%lssav,dtf,drain,runof,& - Diag%runoff(:),Diag%srunoff(:)) + call lsm_noah_post_run(size(Grid%xlon,1),Model%lsoil,Model%lssav,Model%dtf,drain,runof,& + Diag%runoff,Diag%srunoff) ! --- ... xw: return updated ice thickness & concentration to global array call sfc_sice_post_run & - & (im, islmsk, cice, zice, tice, Sfcprop%tsfc, & + & (size(Grid%xlon,1), islmsk, cice, zice, tice, Sfcprop%tsfc, & & Sfcprop%fice, Sfcprop%hice, Sfcprop%tisfc) -!DRS do i = 1, im +!DRS do i = 1, size(Grid%xlon,1) !DRS !DRS Sfcprop%hice(i) = zice(i) !DRS Sfcprop%fice(i) = cice(i) @@ -2760,8 +2760,8 @@ subroutine GFS_physics_driver & ! --- ... calculate column precipitable water "pwat" ! Diag%pwat(:) = 0.0 -! tem = dtf * 0.03456 / 86400.0 -! do k = 1, levs +! tem = Model%dtf * 0.03456 / 86400.0 +! do k = 1, Model%levs ! work1(:) = 0.0 ! if (Model%ncld > 0) then ! do ic = Model%ntcw, Model%ntcw+Model%ncld-1 @@ -2769,37 +2769,37 @@ subroutine GFS_physics_driver & ! enddo ! endif ! Diag%pwat(:) = Diag%pwat(:) + del(:,k)*(Stateout%gq0(:,k,1)+work1(:)) -! if (lprnt .and. i == ipr) write(0,*)' gq0=', +! if (Model%lprnt .and. i == ipr) write(0,*)' gq0=', ! &gq0(i,k,1),' qgrs=',qgrs(i,k,1),' work2=',work2(i),' k=',k ! enddo ! Diag%pwat(:) = Diag%pwat(:) * onebg -! write(1000+me,*)' pwat=',pwat(i),'i=',i,', -! &' rain=',rain(i)*1000.0,' dqsfc1=',dqsfc1(i)*tem,' kdt=',kdt +! write(1000+Model%me,*)' pwat=',pwat(i),'i=',i,', +! &' rain=',rain(i)*1000.0,' dqsfc1=',dqsfc1(i)*tem,' kdt=',Model%kdt ! &,' e-p=',dqsfc1(i)*tem-rain(i)*1000.0 -! if (lprnt) write(0,*)' pwat=',pwat(ipr),', -! &' rain=',rain(ipr)*1000.0,' dqsfc1=',dqsfc1(ipr)*tem,' kdt=',kdt +! if (Model%lprnt) write(0,*)' pwat=',pwat(ipr),', +! &' rain=',rain(ipr)*1000.0,' dqsfc1=',dqsfc1(ipr)*tem,' kdt=',Model%kdt ! &,' e-p=',dqsfc1(ipr)*tem-rain(ipr)*1000.0 ! -! if (lprnt .and. rain(ipr) > 5) call mpi_quit(5678) -! if (lat == 45) write(1000+me,*)' pwat=',pwat(1),' kdt=',kdt -! if (lprnt) then -! write(7000,*) ' endgu0=',gu0(ipr,:),' kdt=',kdt -! write(7000,*) ' endgv0=',gv0(ipr,:),' kdt=',kdt,' nnp=',nnp -! write(0,*) ' endgt0=',gt0(ipr,:),' kdt=',kdt -! write(0,*) ' endgq0=',gq0(ipr,:,1),' kdt=',kdt,' lat=',lat -! write(0,*) ' endgw0=',gq0(ipr,:,3),' kdt=',kdt,' lat=',lat +! if (Model%lprnt .and. rain(ipr) > 5) call mpi_quit(5678) +! if (lat == 45) write(1000+Model%me,*)' pwat=',pwat(1),' kdt=',Model%kdt +! if (Model%lprnt) then +! write(7000,*) ' endgu0=',gu0(ipr,:),' kdt=',Model%kdt +! write(7000,*) ' endgv0=',gv0(ipr,:),' kdt=',Model%kdt,' nnp=',nnp +! write(0,*) ' endgt0=',gt0(ipr,:),' kdt=',Model%kdt +! write(0,*) ' endgq0=',gq0(ipr,:,1),' kdt=',Model%kdt,' lat=',lat +! write(0,*) ' endgw0=',gq0(ipr,:,3),' kdt=',Model%kdt,' lat=',lat ! endif if (Model%do_sppt) then !--- radiation heating rate - Tbd%dtdtr(:,:) = Tbd%dtdtr(:,:) + dtdtc(:,:)*dtf + Tbd%dtdtr(:,:) = Tbd%dtdtr(:,:) + dtdtc(:,:)*Model%dtf !--- change in total precip Tbd%dtotprcp (:) = Diag%rain (:) - Tbd%dtotprcp(:) !--- change in convective precip Tbd%dcnvprcp (:) = Diag%rainc (:) - Tbd%dcnvprcp(:) - do i = 1, im + do i = 1, size(Grid%xlon,1) if (t850(i) > 273.16) then !--- change in change in rain precip Tbd%drain_cpl(i) = Diag%rain(i) - Tbd%drain_cpl(i) @@ -2820,15 +2820,15 @@ subroutine GFS_physics_driver & ! deallocate (fscav, fswtr) ! -! if (lprnt) write(0,*)' end of gbphys maxu=', -! &maxval(gu0(1:im,1:levs)),' minu=',minval(gu0(1:im,1:levs)) -! &,' maxv=',maxval(gv0(1:im,1:levs)),' minv=', -! & minval(gv0(1:im,1:levs)),' kdt=',kdt,' lat=',lat,' nnp=',nnp -! if (lprnt) write(0,*)' end of gbphys gv0=',gv0(:,120:128) -! if (lprnt) write(0,*)' end of gbphys at kdt=',kdt, +! if (Model%lprnt) write(0,*)' end of gbphys maxu=', +! &maxval(gu0(1:size(Grid%xlon,1),1:Model%levs)),' minu=',minval(gu0(1:size(Grid%xlon,1),1:Model%levs)) +! &,' maxv=',maxval(gv0(1:size(Grid%xlon,1),1:Model%levs)),' minv=', +! & minval(gv0(1:size(Grid%xlon,1),1:Model%levs)),' kdt=',Model%kdt,' lat=',lat,' nnp=',nnp +! if (Model%lprnt) write(0,*)' end of gbphys gv0=',gv0(:,120:128) +! if (Model%lprnt) write(0,*)' end of gbphys at kdt=',Model%kdt, ! &' rain=',rain(ipr),' rainc=',rainc(ipr) -! if (lprnt) call mpi_quit(7) -! if (kdt > 2 ) call mpi_quit(70) +! if (Model%lprnt) call mpi_quit(7) +! if (Model%kdt > 2 ) call mpi_quit(70) if (Model%ncld == 2) then ! For MGB double moment microphysics deallocate (qlcn, qicn, w_upi, cf_upi, CNV_MFD, CNV_PRC3, & diff --git a/GFS_layer/GFS_radiation_driver.F90 b/GFS_layer/GFS_radiation_driver.F90 index 8f350f5de..b73de5f44 100644 --- a/GFS_layer/GFS_radiation_driver.F90 +++ b/GFS_layer/GFS_radiation_driver.F90 @@ -1237,7 +1237,7 @@ subroutine GFS_radiation_driver & !CCPP: L1620-1686 call GFS_radsw_post_run (Model, Grid, Diag, Radtend, Coupling, & - ltp, nday, lm, kd, htswc, htsw0, & + LTP, nday, lm, kd, htswc, htsw0, & sfcalb(:,1), sfcalb(:,2), sfcalb(:,3), sfcalb(:,4), scmpsw) !CCPP: L1689-1698 @@ -1261,11 +1261,11 @@ subroutine GFS_radiation_driver & !CCPP: L1718-1747 call GFS_radlw_post_run (Model, Grid, Radtend, Coupling, & - ltp, lm, kd, tsfa, htlwc, htlw0) + LTP, lm, kd, tsfa, htlwc, htlw0) !CCPP: L1757-1841 call GFS_RRTMG_post_run (Model, Grid, Diag, Radtend, Statein, & - Coupling, scmpsw, im, lm, ltp, kt, kb, kd, raddt, aerodp, & + Coupling, scmpsw, im, lm, LTP, kt, kb, kd, raddt, aerodp, & cldsa, mtopa, mbota, clouds(:,:,1)) diff --git a/physics/GFS_DCNV_generic.f90 b/physics/GFS_DCNV_generic.f90 index a00178b9a..ce92106dc 100644 --- a/physics/GFS_DCNV_generic.f90 +++ b/physics/GFS_DCNV_generic.f90 @@ -14,9 +14,9 @@ end subroutine GFS_DCNV_generic_pre_finalize !> \section arg_table_GFS_DCNV_generic_pre_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------|--------------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_typedefs%GFS_stateout_type| | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_stateout_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | !! | save_u | x_wind_save | x-wind before entering a physics scheme | m s-1 | 2 | real | kind_phys | inout | F | !! | save_v | y_wind_save | y-wind before entering a physics scheme | m s-1 | 2 | real | kind_phys | inout | F | !! | save_t | air_temperature_save | air temperature before entering a physics scheme | K | 2 | real | kind_phys | inout | F | @@ -62,11 +62,11 @@ end subroutine GFS_DCNV_generic_post_finalize !> \section arg_table_GFS_DCNV_generic_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|-----------------------------------------------------------|--------------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_typedefs%GFS_stateout_type| | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_stateout_type | | in | F | !! | frain | dynamics_to_physics_timestep_ratio | ratio of dynamics timestep to physics timestep | none | 0 | real | kind_phys | in | F | -!! | rain1 | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys | in | F | +!! | rain1 | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys | in | F | !! | cld1d | cloud_work_function | cloud work function | m2 s-2 | 1 | real | kind_phys | in | F | !! | save_u | x_wind_save | x-wind before entering a physics scheme | m s-1 | 2 | real | kind_phys | in | F | !! | save_v | y_wind_save | y-wind before entering a physics scheme | m s-1 | 2 | real | kind_phys | in | F | @@ -77,8 +77,8 @@ end subroutine GFS_DCNV_generic_post_finalize !! | dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | 2 | real | kind_phys | in | F | !! | cnvw | convective_cloud_water_specific_humidity | convective cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | out | F | !! | cnvc | convective_cloud_cover | convective cloud cover | frac | 2 | real | kind_phys | out | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | -!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS miscellaneous data | DDT | 0 | GFS_typedefs%GFS_tbd_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | +!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS miscellaneous data | DDT | 0 | GFS_tbd_type | | inout | F | !! subroutine GFS_DCNV_generic_post_run (Grid, Model, Stateout, frain, rain1, cld1d, save_u, save_v, save_t, save_qv, & ud_mf, dd_mf, dt_mf, cnvw, cnvc, Diag, Tbd) diff --git a/physics/GFS_MP_generic_post.f90 b/physics/GFS_MP_generic_post.f90 index 0c85988fc..e5400658a 100644 --- a/physics/GFS_MP_generic_post.f90 +++ b/physics/GFS_MP_generic_post.f90 @@ -36,15 +36,15 @@ end subroutine GFS_MP_generic_post_init !! | q | water_vapor_specific_humidity_updated_by_physics | water vapor specific humidity | kg kg-1 | 2 | real | kind_phys | in | F | !! | save_t | air_temperature_save | air temperature before entering a physics scheme | K | 2 | real | kind_phys | in | F | !! | save_qv | water_vapor_specific_humidity_save | water vapor specific humidity before entering a physics scheme | kg kg-1 | 2 | real | kind_phys | in | F | -!! | totprcp | precipitation_rate_at_surface | precipitation rate at surface | kg m-2 s-1 | 1 | real | kind_phys | inout | F | +!! | totprcp | accumulated_total_rainfall_amount | accumulated total_rainfall_amount | m | 1 | real | kind_phys | inout | F | !! | dt3dt6 | large_scale_condensate_heating_rate_at_model_layers | large scale condensate heating rate at model layers | K s-1 | 2 | real | kind_phys | inout | F | !! | dq3dt4 | large_scale_condensate_moistening_rate_at_model_layers | large scale condensate moistening rate at model layers | kg kg-1 s-1 | 2 | real | kind_phys | inout | F | !! | pwat | column_precipitable_water | column integrated precipitable water | kg m-2 | 1 | real | kind_phys | out | F | !! - subroutine GFS_MP_generic_post_run(im, ix, levs,dtf,del, & + subroutine GFS_MP_generic_post_run(im,ix,levs,dtf,del, & lssav,ldiag3d,rain,frain,ntcw,ncld,cwm, & !input - t,q,save_t, save_qv, & - totprcp, dt3dt6,dq3dt4,pwat ) ! output + t,q,save_t,save_qv, & + totprcp,dt3dt6,dq3dt4,pwat) ! output ! use machine, only: kind_phys diff --git a/physics/GFS_PBL_generic.f90 b/physics/GFS_PBL_generic.f90 index f38d550e0..1abe293a1 100644 --- a/physics/GFS_PBL_generic.f90 +++ b/physics/GFS_PBL_generic.f90 @@ -44,9 +44,9 @@ end subroutine GFS_PBL_generic_post_finalize !> \section arg_table_GFS_PBL_generic_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies needed in physics | DDT | 0 | GFS_typedefs%GFS_radtend_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies needed in physics | DDT | 0 | GFS_radtend_type | | in | F | !! | dusfc1 | instantaneous_surface_x_momentum_flux | surface momentum flux in the x-direction valid for current call | Pa | 1 | real | kind_phys | in | F | !! | dvsfc1 | instantaneous_surface_y_momentum_flux | surface momentum flux in the y-direction valid for current call | Pa | 1 | real | kind_phys | in | F | !! | dtsfc1 | instantaneous_surface_upward_sensible_heat_flux | surface upward sensible heat flux valid for current call | W m-2 | 1 | real | kind_phys | in | F | @@ -56,7 +56,7 @@ end subroutine GFS_PBL_generic_post_finalize !! | dtdt | tendency_of_air_temperature_due_to_model_physics | updated tendency of the temperature | K s-1 | 2 | real | kind_phys | in | F | !! | dqdt | tendency_of_tracers_due_to_model_physics | updated tendency of the tracers | kg kg-1 s-1 | 3 | real | kind_phys | in | F | !! | xmu | zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes | zenith angle temporal adjustment factor for shortwave fluxes | none | 1 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | in | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | in | F | !! subroutine GFS_PBL_generic_post_run (Grid, Model, Radtend, dusfc1, dvsfc1, dtsfc1, dqsfc1, & dudt, dvdt, dtdt, dqdt, xmu, Diag) diff --git a/physics/GFS_RRTMG_post.f90 b/physics/GFS_RRTMG_post.f90 index 7285b05ba..c2987a879 100644 --- a/physics/GFS_RRTMG_post.f90 +++ b/physics/GFS_RRTMG_post.f90 @@ -13,21 +13,21 @@ end subroutine GFS_RRTMG_post_init !> \section arg_table_GFS_RRTMG_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |-------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------|----------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS diagnotics data | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_typedefs%GFS_radtend_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | -!! | Coupling | FV3-GFS_Coupling_type | Fortran DDT containing FV3-GFS fields to/from coupling with other components | DDT | 0 | GFS_typedefs%GFS_coupling_type| | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS diagnotics data | DDT | 0 | GFS_diag_type | | inout | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_radtend_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | +!! | Coupling | FV3-GFS_Coupling_type | Fortran DDT containing FV3-GFS fields to/from coupling with other components | DDT | 0 | GFS_coupling_type | | inout | F | !! | scmpsw | components_of_surface_downward_shortwave_fluxes | derived type for special components of surface downward shortwave fluxes | W m-2 | 1 | cmpfsw_type | | in | F | !! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | -!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | index | 0 | integer | | in | F | +!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | count | 0 | integer | | in | F | !! | ltp | extra_top_layer | extra top layers | none | 0 | integer | | in | F | !! | kt | vertical_index_difference_between_layer_and_upper_bound | vertical index difference between layer and upper bound | index | 0 | integer | | in | F | !! | kb | vertical_index_difference_between_layer_and_lower_bound | vertical index difference between layer and lower bound | index | 0 | integer | | in | F | !! | kd | vertical_index_difference_between_in-out_and_local | vertical index difference between in/out and local | index | 0 | integer | | in | F | !! | raddt | time_step_for_radiation | radiation time step | s | 0 | real | kind_phys | in | F | -!! | aerodp | atmosphere_optical_thickness_due_to_ambient_aerosol_particals | vertical integrated optical depth for various aerosol species | none | 2 | real | kind_phys | in | F | +!! | aerodp | atmosphere_optical_thickness_due_to_ambient_aerosol_particles | vertical integrated optical depth for various aerosol species | none | 2 | real | kind_phys | in | F | !! | cldsa | cloud_area_fraction_for_radiation | fraction of clouds for low, middle, high, total and BL | frac | 2 | real | kind_phys | in | F | !! | mtopa | model_layer_number_at_cloud_top | vertical indices for low, middle and high cloud tops | index | 2 | integer | | in | F | !! | mbota | model_layer_number_at_cloud_base | vertical indices for low, middle and high cloud bases | index | 2 | integer | | in | F | diff --git a/physics/GFS_RRTMG_pre.f90 b/physics/GFS_RRTMG_pre.f90 index ef9b043d9..28d98a97a 100644 --- a/physics/GFS_RRTMG_pre.f90 +++ b/physics/GFS_RRTMG_pre.f90 @@ -16,17 +16,17 @@ end subroutine GFS_RRTMG_pre_init !> \section arg_table_GFS_RRTMG_pre_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |-------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------|----------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_typedefs%GFS_sfcprop_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | -!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS data not yet assigned to a defined container | DDT | 0 | GFS_typedefs%GFS_tbd_type | | in | F | -!! | Cldprop | FV3-GFS_Cldprop_type | Fortran DDT containing FV3-GFS cloud fields needed by radiation from physics | DDT | 0 | GFS_typedefs%GFS_cldprop_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_typedefs%GFS_radtend_type | | in | F | -!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | index | 0 | integer | | out | F | -!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | out | F | -!! | lmk | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | index | 0 | integer | | out | F | -!! | lmp | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | index | 0 | integer | | out | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_sfcprop_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | +!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS data not yet assigned to a defined container | DDT | 0 | GFS_tbd_type | | in | F | +!! | Cldprop | FV3-GFS_Cldprop_type | Fortran DDT containing FV3-GFS cloud fields needed by radiation from physics | DDT | 0 | GFS_cldprop_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_radtend_type | | in | F | +!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | count | 0 | integer | | out | F | +!! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | out | F | +!! | lmk | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | count | 0 | integer | | out | F | +!! | lmp | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | count | 0 | integer | | out | F | !! | kd | vertical_index_difference_between_in-out_and_local | vertical index difference between in/out and local | index | 0 | integer | | out | F | !! | kt | vertical_index_difference_between_layer_and_upper_bound | vertical index difference between layer and upper bound | index | 0 | integer | | out | F | !! | kb | vertical_index_difference_between_layer_and_lower_bound | vertical index difference between layer and lower bound | index | 0 | integer | | out | F | @@ -36,16 +36,16 @@ end subroutine GFS_RRTMG_pre_init !! | tlvl | air_temperature_at_interface_for_radiation | air temperature at vertical interface for radiation calculation | K | 2 | real | kind_phys | out | F | !! | tlyr | air_temperature_at_layer_for_radiation | air temperature at vertical layer for radiation calculation | K | 2 | real | kind_phys | out | F | !! | tsfg | surface_ground_temperature_for_radiation | surface ground temperature for radiation | K | 1 | real | kind_phys | out | F | -!! | tsfa | surface_air_temperature_for_radiation | lowest model layer air temperature for radiation | K | 1 | real | kind_phys | out | F | -!! | qlyr | water_vapor_specific_humidity_at_layer_for_radiation | water vapor specific humidity at vertical layer for radiation calculation | kg kg-1 | 2 | real | kind_phys | out | F | -!! | nday | daytime_points_dimension | daytime points dimension | index | 0 | integer | | out | F | -!! | idxday | daytime_points | daytime points | count | 1 | integer | | out | F | +!! | tsfa | surface_air_temperature_for_radiation | lowest model layer air temperature for radiation | K | 1 | real | kind_phys | out | F | +!! | qlyr | water_vapor_specific_humidity_at_layer_for_radiation | water vapor specific humidity at vertical layer for radiation calculation | kg kg-1 | 2 | real | kind_phys | out | F | +!! | nday | daytime_points_dimension | daytime points dimension | count | 0 | integer | | out | F | +!! | idxday | daytime_points | daytime points | index | 1 | integer | | out | F | !! | olyr | ozone_concentration_at_layer_for_radiation | ozone concentration | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_co2 | volume_mixing_ratio_co2 | CO2 volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_n2o | volume_mixing_ratio_n2o | N2O volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_ch4 | volume_mixing_ratio_ch4 | CH4 volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_o2 | volume_mixing_ratio_o2 | O2 volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | -!! | gasvmr_co | volume_mixing_ratio_co | CO volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | +!! | gasvmr_co | volume_mixing_ratio_co | CO volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_cfc11 | volume_mixing_ratio_cfc11 | CFC11 volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_cfc12 | volume_mixing_ratio_cfc12 | CFC12 volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | !! | gasvmr_cfc22 | volume_mixing_ratio_cfc22 | CFC22 volume mixing ratio | kg kg-1 | 2 | real | kind_phys | out | F | @@ -57,7 +57,7 @@ end subroutine GFS_RRTMG_pre_init !! | faerlw1 | aerosol_optical_depth_for_longwave_bands_01-16 | aerosol optical depth for longwave bands 01-16 | none | 3 | real | kind_phys | out | F | !! | faerlw2 | aerosol_single_scattering_albedo_for_longwave_bands_01-16 | aerosol single scattering albedo for longwave bands 01-16 | frac | 3 | real | kind_phys | out | F | !! | faerlw3 | aerosol_asymmetry_parameter_for_longwave_bands_01-16 | aerosol asymmetry parameter for longwave bands 01-16 | none | 3 | real | kind_phys | out | F | -!! | aerodp | atmosphere_optical_thickness_due_to_ambient_aerosol_particals | vertical integrated optical depth for various aerosol species | none | 2 | real | kind_phys | out | F | +!! | aerodp | atmosphere_optical_thickness_due_to_ambient_aerosol_particles | vertical integrated optical depth for various aerosol species | none | 2 | real | kind_phys | out | F | !! | clouds1 | total_cloud_fraction | layer total cloud fraction | frac | 2 | real | kind_phys | out | F | !! | clouds2 | cloud_liquid_water_path | layer cloud liquid water path | g m-2 | 2 | real | kind_phys | out | F | !! | clouds3 | mean_effective_radius_for_liquid_cloud | mean effective radius for liquid cloud | micron | 2 | real | kind_phys | out | F | @@ -65,10 +65,10 @@ end subroutine GFS_RRTMG_pre_init !! | clouds5 | mean_effective_radius_for_ice_cloud | mean effective radius for ice cloud | micron | 2 | real | kind_phys | out | F | !! | clouds6 | cloud_rain_water_path | cloud rain water path | g m-2 | 2 | real | kind_phys | out | F | !! | clouds7 | mean_effective_radius_for_rain_drop | mean effective radius for rain drop | micron | 2 | real | kind_phys | out | F | -!! | clouds8 | cloud_snow_water_path | cloud snow water path | g m-2 | 2 | real | kind_phys | out | F | +!! | clouds8 | cloud_snow_water_path | cloud snow water path | g m-2 | 2 | real | kind_phys | out | F | !! | clouds9 | mean_effective_radius_for_snow_flake | mean effective radius for snow flake | micron | 2 | real | kind_phys | out | F | !! | cldsa | cloud_area_fraction_for_radiation | fraction of clouds for low, middle,high, total and BL | frac | 2 | real | kind_phys | out | F | -!! | mtopa | model_layer_number_at_cloud_top | vertical indices for low, middle and high cloud tops | index | 2 | integer | | out | F | +!! | mtopa | model_layer_number_at_cloud_top | vertical indices for low, middle and high cloud tops | index | 2 | integer | | out | F | !! | mbota | model_layer_number_at_cloud_base | vertical indices for low, middle and high cloud bases | index | 2 | integer | | out | F | !! subroutine GFS_RRTMG_pre_run (Model, Grid, Sfcprop, Statein, & ! input diff --git a/physics/GFS_SCNV_generic.f90 b/physics/GFS_SCNV_generic.f90 index 2417200cd..8506c12ef 100644 --- a/physics/GFS_SCNV_generic.f90 +++ b/physics/GFS_SCNV_generic.f90 @@ -14,9 +14,9 @@ end subroutine GFS_SCNV_generic_pre_finalize !> \section arg_table_GFS_SCNV_generic_pre_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_typedefs%GFS_stateout_type| | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_stateout_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | !! | save_t | air_temperature_save | air temperature before entering a physics scheme | K | 2 | real | kind_phys | inout | F | !! | save_qv | water_vapor_specific_humidity_save | water vapor specific humidity before entering a physics scheme | kg kg-1 | 2 | real | kind_phys | inout | F | !! @@ -54,13 +54,13 @@ end subroutine GFS_SCNV_generic_post_finalize !> \section arg_table_GFS_SCNV_generic_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|-----------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_typedefs%GFS_stateout_type| | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_stateout_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | !! | save_t | air_temperature_save | air temperature before entering a physics scheme | K | 2 | real | kind_phys | in | F | !! | save_qv | water_vapor_specific_humidity_save | water vapor specific humidity before entering a physics scheme | kg kg-1 | 2 | real | kind_phys | in | F | !! | frain | dynamics_to_physics_timestep_ratio | ratio of dynamics timestep to physics timestep | none | 0 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | !! | clw | convective_transportable_tracers | array to contain cloud water and other convective trans. tracers | kg kg-1 | 3 | real | kind_phys | inout | F | !! subroutine GFS_SCNV_generic_post_run (Model, Stateout, Grid, save_t, save_qv, frain, Diag, clw) diff --git a/physics/GFS_calpreciptype.f90 b/physics/GFS_calpreciptype.f90 index a20d134fb..87cfbe172 100644 --- a/physics/GFS_calpreciptype.f90 +++ b/physics/GFS_calpreciptype.f90 @@ -27,7 +27,7 @@ end subroutine GFS_calpreciptype_init !! | prsi | air_pressure_at_interface | pressure at layer interface | Pa | 2 | real | kind_phys | in | F | !! | rainc | timestep_convective_rainfall_amount | convective rain | m | 1 | real | kind_phys | in | F | !! | frain | dynamics_to_physics_timestep_ratio | dtf/dtp, dynamics to physics timestep ratio | none | 0 | real | kind_phys | in | F | -!! | rain1 | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys | in | F | +!! | rain1 | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys | in | F | !! | phii | geopotential_at_interface | geopotential at model layer interfaces | m2 s-2 | 2 | real | kind_phys | in | F | !! | n3dfercld | array_dimension_of_microphysics | number of 3D arrays needed for microphysics | count | 0 | integer | | in | F | !! | tskin | surface_skin_temperature | surface skin temperature | K | 1 | real | kind_phys | in | F | diff --git a/physics/GFS_rad_time_vary.f90 b/physics/GFS_rad_time_vary.f90 index 0a3aa0138..6826383ca 100644 --- a/physics/GFS_rad_time_vary.f90 +++ b/physics/GFS_rad_time_vary.f90 @@ -13,9 +13,9 @@ end subroutine GFS_rad_time_vary_init !> \section arg_table_GFS_rad_time_vary_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |-------------------|---------------------------------------------------------------|-------------------------------------------------------------------------------|----------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | -!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS data not yet assigned to a defined container | DDT | 0 | GFS_typedefs%GFS_tbd_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | +!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS data not yet assigned to a defined container | DDT | 0 | GFS_tbd_type | | in | F | !! | blksz | horizontal_block_size | horizontal block size for explicit data blocking | none | 1 | integer | | in | F | !! | sec | seconds_elapsed_since_model_initialization | seconds elapsed since model initialization | s | 0 | real | kind_phys | in | F | !! | ictmflg | flag_for_initial_time-date_control | flag for initial time/date control | none | 0 | integer | | in | F | diff --git a/physics/GFS_radlw_post.f90 b/physics/GFS_radlw_post.f90 index e7348d083..85b424023 100644 --- a/physics/GFS_radlw_post.f90 +++ b/physics/GFS_radlw_post.f90 @@ -13,12 +13,12 @@ end subroutine GFS_radlw_post_init !> \section arg_table_GFS_radlw_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |-------------------|-----------------------------------------------------------------------------------------------|-------------------------------------------------------------------------------|----------|------|-------------------------------|-----------|-----------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS fields targetted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_radtend_type | | inout | F | -!! | Coupling | FV3-GFS_Coupling_type | Fortran DDT containing FV3-GFS fields to/from coupling with other components | DDT | 0 | GFS_typedefs%GFS_coupling_type| | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS fields targetted for diagnostic output | DDT | 0 | GFS_radtend_type | | inout | F | +!! | Coupling | FV3-GFS_Coupling_type | Fortran DDT containing FV3-GFS fields to/from coupling with other components | DDT | 0 | GFS_coupling_type | | inout | F | !! | ltp | extra_top_layer | extra top layers | none | 0 | integer | | in | F | -!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | index | 0 | integer | | in | F | +!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | count | 0 | integer | | in | F | !! | kd | vertical_index_difference_between_in-out_and_local | vertical index difference between in/out and local | index | 0 | integer | | in | F | !! | tsfa | surface_air_temperature_for_radiation | lowest model layer air temperature for radiation | K | 1 | real | kind_phys | in | F | !! | htlwc | tendency_of_air_temperature_due_to_longwave_heating_on_radiation_time_step | total sky heating rate due to longwave radiation | K s-1 | 2 | real | kind_phys | in | F | diff --git a/physics/GFS_radlw_pre.f90 b/physics/GFS_radlw_pre.f90 index 23349e894..ca440c1e3 100644 --- a/physics/GFS_radlw_pre.f90 +++ b/physics/GFS_radlw_pre.f90 @@ -14,10 +14,10 @@ end subroutine GFS_radlw_pre_init !> \section arg_table_GFS_radlw_pre_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |-------------------|-------------------------------------------|----------------------------------------------------------------------|----------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_typedefs%GFS_sfcprop_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_typedefs%GFS_radtend_type | | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_sfcprop_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_radtend_type | | inout | F | !! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | !! | tsfg | surface_ground_temperature_for_radiation | surface ground temperature for radiation | K | 1 | real | kind_phys | in | F | !! | tsfa | surface_air_temperature_for_radiation | lowest model layer air temperature for radiation | K | 1 | real | kind_phys | in | F | diff --git a/physics/GFS_radsw_post.f90 b/physics/GFS_radsw_post.f90 index 68d70f2c7..e58dfb8f5 100644 --- a/physics/GFS_radsw_post.f90 +++ b/physics/GFS_radsw_post.f90 @@ -13,14 +13,14 @@ end subroutine GFS_radsw_post_init !> \section arg_table_GFS_radsw_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |-------------------|-------------------------------------------------------------------------|-------------------------------------------------------------------------------|----------|------|-------------------------------|-----------|-----------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS diagnotics data | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS fields targetted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_radtend_type | | inout | F | -!! | Coupling | FV3-GFS_Coupling_type | Fortran DDT containing FV3-GFS fields to/from coupling with other components | DDT | 0 | GFS_typedefs%GFS_coupling_type| | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS diagnotics data | DDT | 0 | GFS_diag_type | | inout | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS fields targetted for diagnostic output | DDT | 0 | GFS_radtend_type | | inout | F | +!! | Coupling | FV3-GFS_Coupling_type | Fortran DDT containing FV3-GFS fields to/from coupling with other components | DDT | 0 | GFS_coupling_type | | inout | F | !! | ltp | extra_top_layer | extra top layers | none | 0 | integer | | in | F | -!! | nday | daytime_points_dimension | daytime points dimension | index | 0 | integer | | in | F | -!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | index | 0 | integer | | in | F | +!! | nday | daytime_points_dimension | daytime points dimension | count | 0 | integer | | in | F | +!! | lm | vertical_layer_dimension_for_radiation | number of vertical layers for radiation calculation | count | 0 | integer | | in | F | !! | kd | vertical_index_difference_between_in-out_and_local | vertical index difference between in/out and local | index | 0 | integer | | in | F | !! | htswc | tendency_of_air_temperature_due_to_shortwave_heating | total sky heating rate due to shortwave radiation | K s-1 | 2 | real | kind_phys | in | F | !! | htsw0 | tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky | clear sky heating rates due to shortwave radiation | K s-1 | 2 | real | kind_phys | in | F | diff --git a/physics/GFS_radsw_pre.f90 b/physics/GFS_radsw_pre.f90 index 81bf62681..c0f3b1bda 100644 --- a/physics/GFS_radsw_pre.f90 +++ b/physics/GFS_radsw_pre.f90 @@ -14,10 +14,10 @@ end subroutine GFS_radsw_pre_init !> \section arg_table_GFS_radsw_pre_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|-------------------------------------------|----------------------------------------------------------------------|----------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_typedefs%GFS_sfcprop_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_typedefs%GFS_radtend_type | | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_sfcprop_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies | DDT | 0 | GFS_radtend_type | | inout | F | !! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | !! | tsfg | surface_ground_temperature_for_radiation | surface ground temperature for radiation | K | 1 | real | kind_phys | in | F | !! | tsfa | surface_air_temperature_for_radiation | lowest model layer air temperature for radiation | K | 1 | real | kind_phys | in | F | diff --git a/physics/GFS_suite_interstitial.f90 b/physics/GFS_suite_interstitial.f90 index ac06ee452..f71da7d40 100644 --- a/physics/GFS_suite_interstitial.f90 +++ b/physics/GFS_suite_interstitial.f90 @@ -14,11 +14,11 @@ end subroutine GFS_suite_interstitial_1_finalize !> \section arg_table_GFS_suite_interstitial_1_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | !! | tottracer | number_of_total_tracers | total number of tracers | count | 0 | integer | | out | F | !! | trc_shft | start_index_of_other_tracers | beginning index of the non-water tracer species | index | 0 | integer | | out | F | -!! | tracers | number_of_water_tracers | number of water-related tracers | index | 0 | integer | | out | F | +!! | tracers | number_of_water_tracers | number of water-related tracers | count | 0 | integer | | out | F | !! | ntk | index_of_TKE | index of TKE in the tracer array | index | 0 | integer | | out | F | !! | skip_macro | flag_skip_macro | flag to skip cloud macrophysics in Morrison scheme | flag | 1 | logical | | out | F | !! | clw | convective_transportable_tracers | array to contain cloud water and other convective trans. tracers | kg kg-1 | 3 | real | kind_phys | out | F | @@ -36,6 +36,13 @@ subroutine GFS_suite_interstitial_1_run (Model, Grid, tottracer, trc_shft, trace logical, dimension(size(Grid%xlon,1)), intent(out) :: skip_macro real(kind=kind_phys), allocatable, intent(out) :: clw(:,:,:), cnvc(:,:), cnvw(:,:) + ! DH* + ! ATTENTION - tottracer, trc_shft, tracers and ntk will be calculated as part of Interstitial_type -> create + ! and arrays clw (and potentially cnvc will be allocated there as well NEED TO REMOVE FROM HERE!!! + write(0,*) 'ATTENTION - THE ENTIRE CODE CONTAINED IN GFS_suite_interstitial_1_run' + write(0,*) 'must be skipped once the full CCPP-version is used (tracers are calculated' + write(0,*) 'and fields are allocated in GFS_typedefs.F90 ->interstitial_create)' + tottracer = 0 ! no convective transport of tracers if (Model%trans_trac .or. Model%cscnv) then if (Model%ntcw > 0) then @@ -63,6 +70,8 @@ subroutine GFS_suite_interstitial_1_run (Model, Grid, tottracer, trc_shft, trace allocate (cnvc(size(Grid%xlon,1),Model%levs), cnvw(size(Grid%xlon,1),Model%levs)) endif + ! *DH + end subroutine GFS_suite_interstitial_1_run end module @@ -80,11 +89,11 @@ end subroutine GFS_suite_interstitial_2_finalize !> \section arg_table_GFS_suite_interstitial_2_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------------------------|-------------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_typedefs%GFS_sfcprop_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_sfcprop_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | !! | rhbbot | critical_relative_humidity_at_surface | critical relative humidity at the surface | frac | 0 | real | kind_phys | out | F | !! | rhpbl | critical_relative_humidity_at_PBL_top | critical relative humidity at the PBL top | frac | 0 | real | kind_phys | out | F | !! | rhbtop | critical_relative_humidity_at_top_of_atmosphere | critical relative humidity at the top of atmosphere | frac | 0 | real | kind_phys | out | F | @@ -155,16 +164,16 @@ end subroutine GFS_suite_interstitial_3_finalize !> \section arg_table_GFS_suite_interstitial_3_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies needed in physics | DDT | 0 | GFS_typedefs%GFS_radtend_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies needed in physics | DDT | 0 | GFS_radtend_type | | in | F | !! | xcosz | instantaneous_cosine_of_zenith_angle | cosine of zenith angle at current time | none | 1 | real | kind_phys | in | F | !! | adjsfcdsw | surface_downwelling_shortwave_flux | surface downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | !! | adjsfcdlw | surface_downwelling_longwave_flux | surface downwelling longwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | !! | adjsfculw | surface_upwelling_longwave_flux | surface upwelling longwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | !! | xmu | zenith_angle_temporal_adjustment_factor_for_shortwave_fluxes | zenith angle temporal adjustment factor for shortwave fluxes | none | 1 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | !! | kcnv | flag_deep_convection | flag indicating whether convection occurs in column (0 or 1) | flag | 1 | integer | | out | F | !! | heat | kinematic_surface_upward_sensible_heat_flux | kinematic surface upward sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | !! | evap | kinematic_surface_upward_latent_heat_flux | kinematic surface upward latent heat flux | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | @@ -255,14 +264,14 @@ end subroutine GFS_suite_update_stateout_finalize !> \section arg_table_GFS_suite_update_stateout_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | !! | dudt | tendency_of_x_wind_due_to_model_physics | updated tendency of the x wind | m s-2 | 2 | real | kind_phys | in | F | !! | dvdt | tendency_of_y_wind_due_to_model_physics | updated tendency of the y wind | m s-2 | 2 | real | kind_phys | in | F | !! | dtdt | tendency_of_air_temperature_due_to_model_physics | updated tendency of the temperature | K s-1 | 2 | real | kind_phys | in | F | !! | dqdt | tendency_of_tracers_due_to_model_physics | updated tendency of the tracers | kg kg-1 s-1 | 3 | real | kind_phys | in | F | -!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_typedefs%GFS_stateout_type| | inout | F | +!! | Stateout | FV3-GFS_Stateout_type | Fortran DDT containing FV3-GFS prognostic state to return to dycore | DDT | 0 | GFS_stateout_type | | inout | F | !! subroutine GFS_suite_update_stateout_run (Statein, Model, Grid, dudt, dvdt, dtdt, dqdt, Stateout) @@ -299,9 +308,9 @@ end subroutine GFS_suite_interstitial_4_finalize !> \section arg_table_GFS_suite_interstitial_4_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | !! | rhbbot | critical_relative_humidity_at_surface | critical relative humidity at the surface | frac | 0 | real | kind_phys | in | F | !! | rhbtop | critical_relative_humidity_at_top_of_atmosphere | critical relative humidity at the top of atmosphere | frac | 0 | real | kind_phys | in | F | !! | work1 | grid_size_related_coefficient_used_in_scale-sensitive_schemes | grid size related coefficient used in scale-sensitive schemes | none | 1 | real | kind_phys | in | F | diff --git a/physics/GFS_suite_setup.f90 b/physics/GFS_suite_setup.f90 index c7457faab..bde96b58d 100644 --- a/physics/GFS_suite_setup.f90 +++ b/physics/GFS_suite_setup.f90 @@ -14,7 +14,7 @@ end subroutine GFS_suite_setup_1_finalize !> \section arg_table_GFS_suite_setup_1_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|--------------------------------------------------------|-----------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | inout | F | !! | sec | seconds_elapsed_since_model_initialization | seconds elapsed since model initialization | s | 0 | real | kind_phys | inout | F | !! subroutine GFS_suite_setup_1_run (Model, sec) @@ -82,12 +82,12 @@ end subroutine GFS_suite_setup_2_finalize !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|-------------------------------------------------------------------------|-------------------------------------------------------------------------|---------------|------|-------------------------------|-----------|--------|----------| !! | blksz | horizontal_block_size_tmp_all_blocks | number of grid columns used for explicit data blocking for physics | count | 1 | integer | | in | F | -!! | Grid | FV3-GFS_Grid_type_tmp_all_blocks | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 1 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | inout | F | -!! | Tbd | FV3-GFS_Tbd_type_tmp_all_blocks | Fortran DDT containing FV3-GFS miscellaneous data | DDT | 1 | GFS_typedefs%GFS_tbd_type | | inout | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type_tmp_all_blocks | Fortran DDT containing FV3-GFS surface fields | DDT | 1 | GFS_typedefs%GFS_sfcprop_type | | inout | F | -!! | Cldprop | FV3-GFS_Cldprop_type_tmp_all_blocks | Fortran DDT containing FV3-GFS cloud fields | DDT | 1 | GFS_typedefs%GFS_cldprop_type | | inout | F | -!! | Diag | FV3-GFS_Diag_type_tmp_all_blocks | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 1 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Grid | FV3-GFS_Grid_type_tmp_all_blocks | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 1 | GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | inout | F | +!! | Tbd | FV3-GFS_Tbd_type_tmp_all_blocks | Fortran DDT containing FV3-GFS miscellaneous data | DDT | 1 | GFS_tbd_type | | inout | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type_tmp_all_blocks | Fortran DDT containing FV3-GFS surface fields | DDT | 1 | GFS_sfcprop_type | | inout | F | +!! | Cldprop | FV3-GFS_Cldprop_type_tmp_all_blocks | Fortran DDT containing FV3-GFS cloud fields | DDT | 1 | GFS_cldprop_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type_tmp_all_blocks | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 1 | GFS_diag_type | | inout | F | !! subroutine GFS_suite_setup_2_run (blksz, Grid, Model, Tbd, Sfcprop, Cldprop, Diag) use mersenne_twister, only: random_setseed, random_number diff --git a/physics/GFS_surface_generic.f90 b/physics/GFS_surface_generic.f90 index 4cec32d4a..7038013ee 100644 --- a/physics/GFS_surface_generic.f90 +++ b/physics/GFS_surface_generic.f90 @@ -14,13 +14,13 @@ end subroutine GFS_surface_generic_pre_finalize !> \section arg_table_GFS_surface_generic_pre_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|------------------------------------------------------------------------------|-----------------------------------------------------------------------|------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_typedefs%GFS_sfcprop_type | | in | F | -!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies needed in physics | DDT | 0 | GFS_typedefs%GFS_radtend_type | | in | F | -!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_typedefs%GFS_statein_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_sfcprop_type | | in | F | +!! | Radtend | FV3-GFS_Radtend_type | Fortran DDT containing FV3-GFS radiation tendencies needed in physics | DDT | 0 | GFS_radtend_type | | in | F | +!! | Statein | FV3-GFS_Statein_type | Fortran DDT containing FV3-GFS prognostic state data in from dycore | DDT | 0 | GFS_statein_type | | in | F | !! | adjsfcdlw | surface_downwelling_longwave_flux | surface downwelling longwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | !! | sigmaf | vegetation_area_fraction | areal fractional cover of green vegetation | frac | 1 | real | kind_phys | inout | F | !! | islmsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | inout | F | !! | soiltyp | cell_soil_type | soil type at each grid cell | index | 1 | integer | | inout | F | @@ -127,8 +127,8 @@ end subroutine GFS_surface_generic_post_finalize !> \section arg_table_GFS_surface_generic_post_run Argument Table !! | local var name | longname | description | units | rank | type | kind | intent | optional | !! |----------------|-----------------------------------------------------|----------------------------------------------------------------------|------------|------|-------------------------------|-----------|--------|----------| -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | !! | ep1d | surface_upward_potential_latent_heat_flux | surface upward potential latent heat flux | W m-2 | 1 | real | kind_phys | in | F | !! | gflx | upward_heat_flux_in_soil | upward soil heat flux | W m-2 | 1 | real | kind_phys | in | F | !! | evbs | soil_upward_latent_heat_flux | soil upward latent heat flux | W m-2 | 1 | real | kind_phys | in | F | @@ -137,8 +137,8 @@ end subroutine GFS_surface_generic_post_finalize !! | sbsno | snow_deposition_sublimation_upward_latent_heat_flux | latent heat flux from snow depo/subl | W m-2 | 1 | real | kind_phys | in | F | !! | snowc | surface_snow_area_fraction | surface snow area fraction | frac | 1 | real | kind_phys | in | F | !! | snohf | snow_freezing_rain_upward_latent_heat_flux | latent heat flux due to snow and frz rain | W m-2 | 1 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | -!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_typedefs%GFS_sfcprop_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | +!! | Sfcprop | FV3-GFS_Sfcprop_type | Fortran DDT containing FV3-GFS surface fields | DDT | 0 | GFS_sfcprop_type | | inout | F | !! subroutine GFS_surface_generic_post_run (Model, Grid, ep1d, gflx, evbs, evcw, trans, sbsno, snowc, snohf, Diag, & Sfcprop) diff --git a/physics/cnvc90.f b/physics/cnvc90.f index 3b3a4e5f7..fcb72c84c 100644 --- a/physics/cnvc90.f +++ b/physics/cnvc90.f @@ -23,7 +23,7 @@ end subroutine cnvc90_init !! | acv | convective_rainfall_accumulated_thus_far | convective rainfall accumulated thus far | m | 1 | real | kind_phys | inout | F | !! | acvb | smallest_cloud_base_vertical_index_encountered_thus_far | smallest cloud base vertical index encountered thus far | index | 1 | real | kind_phys | inout | F | !! | acvt | largest_cloud_top_vertical_index_encountered_thus_far | largest cloud top vertical index encountered thus far | index | 1 | real | kind_phys | inout | F | -!! | cv | fraction_of_convective_cloud | fraction of convective cloud | none | 1 | real | kind_phys | inout | F | +!! | cv | fraction_of_convective_cloud | fraction of convective cloud | frac | 1 | real | kind_phys | inout | F | !! | cvb | pressure_at_bottom_of_convective_cloud | pressure at bottom of convective cloud | Pa | 1 | real | kind_phys | inout | F | !! | cvt | pressure_at_top_of_convective_cloud | pressure at top of convective cloud | Pa | 1 | real | kind_phys | inout | F | !! diff --git a/physics/dcyc2.f b/physics/dcyc2.f index aac73294a..7845eafbe 100644 --- a/physics/dcyc2.f +++ b/physics/dcyc2.f @@ -356,7 +356,7 @@ end subroutine dcyc2t3_post_init !! | adjsfculw | surface_upwelling_longwave_flux | surface upwelling longwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | !! | adjsfcdsw | surface_downwelling_shortwave_flux | surface downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | !! | adjsfcnsw | surface_net_downwelling_shortwave_flux | surface net downwelling shortwave flux at current time | W m-2 | 1 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | GFS diagnostics derived data type variable | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | GFS diagnostics derived data type variable | DDT | 0 | GFS_diag_type | | inout | F | !! subroutine dcyc2t3_post_run( & & im, adjsfcdlw, adjsfculw, adjsfcdsw, adjsfcnsw, Diag) diff --git a/physics/gscond.f b/physics/gscond.f index 764f590aa..1b61291d8 100644 --- a/physics/gscond.f +++ b/physics/gscond.f @@ -78,9 +78,9 @@ end subroutine gscond_init !! | clw2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | in | F | !! | cwm | cloud_condensed_water_specific_humidity_updated_by_physics | cloud condensed water specific humidity | kg kg-1 | 2 | real | kind_phys | out | F | !! | t | air_temperature_updated_by_physics | layer mean air temperature | K | 2 | real | kind_phys | inout | F | -!! | tp | air_temperature_at_two_time_step_back | air temperature at two time step back | K | 2 | real | kind_phys | inout | F | -!! | qp | water_vapor_specific_humidity_at_two_time_step_back | water vapor specific humidity at two time step back | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | psp | surface_air_pressure_at_two_time_step_back | surface air pressure at two time step back | Pa | 1 | real | kind_phys | inout | F | +!! | tp | air_temperature_two_time_steps_back | air temperature two time steps back | K | 2 | real | kind_phys | inout | F | +!! | qp | water_vapor_specific_humidity_two_time_steps_back | water vapor specific humidity two time steps back | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | psp | surface_air_pressure_two_time_steps_back | surface air pressure two time steps back | Pa | 1 | real | kind_phys | inout | F | !! | tp1 | air_temperature_at_previous_time_step | air temperature at previous time step | K | 2 | real | kind_phys | inout | F | !! | qp1 | water_vapor_specific_humidity_at_previous_time_step | water vapor specific humidity at previous time step | kg kg-1 | 2 | real | kind_phys | inout | F | !! | psp1 | surface_air_pressure_at_previous_time_step | surface air surface pressure at previous time step | Pa | 1 | real | kind_phys | inout | F | diff --git a/physics/gwdc.f b/physics/gwdc.f index a34593304..de5d56c4a 100644 --- a/physics/gwdc.f +++ b/physics/gwdc.f @@ -86,7 +86,7 @@ end subroutine gwdc_pre_init !! |----------------|--------------------------------------------------------------------------|---------------------------------------------------------------|-------|------|---------|-----------|--------|----------| !! | im | horizontal_loop_extent | horizontal loop extent | index | 0 | integer | default | in | F | !! | cgwf | multiplication_factors_for_convective_gravity_wave_drag | multiplication factors for convective gravity wave drag | none | 1 | real | kind_phys | in | F | -!! | dx | grid_size_in_x | grid size in zonal direction | m | 1 | real | kind_phys | in | F | +!! | dx | cell_size | grid size in zonal direction | m | 1 | real | kind_phys | in | F | !! | work1 | grid_size_related_coefficient_used_in_scale-sensitive_schemes | grid size related coefficient used in scale-sensitive schemes | none | 1 | real | kind_phys | in | F | !! | work2 | grid_size_related_coefficient_used_in_scale-sensitive_schemes_complement | complement to work1 | none | 1 | real | kind_phys | in | F | !! | dlength | characteristic_grid_length_scale | representative horizontal length scale of grid box | m | 1 | real | kind_phys | out | F | @@ -1598,8 +1598,8 @@ end subroutine gwdc_post_init !! | taucty | instantaneous_y_stress_due_to_gravity_wave_drag | meridional stress at cloud top due to convective gravity wave drag | Pa | 1 | real | kind_phys | in | F | !! | gwdcu | tendency_of_x_wind_due_to_convective_gravity_wave_drag | zonal wind tendency due to convective gravity wave drag | m s-2 | 2 | real | kind_phys | in | F | !! | gwdcv | tendency_of_y_wind_due_to_convective_gravity_wave_drag | meridional wind tendency due to convective gravity wave drag | m s-2 | 2 | real | kind_phys | in | F | -!! | dugwd | time_integral_of_x_stress_due_to_gravity_wave_drag | integral over time of zonal stress due to gravity wave drag | Pa s | 2 | real | kind_phys | inout | F | -!! | dvgwd | time_integral_of_y_stress_due_to_gravity_wave_drag | integral over time of meridional stress due to gravity wave drag | Pa s | 2 | real | kind_phys | inout | F | +!! | dugwd | time_integral_of_x_stress_due_to_gravity_wave_drag | integral over time of zonal stress due to gravity wave drag | Pa s | 1 | real | kind_phys | inout | F | +!! | dvgwd | time_integral_of_y_stress_due_to_gravity_wave_drag | integral over time of meridional stress due to gravity wave drag | Pa s | 1 | real | kind_phys | inout | F | !! | du3dt | cumulative_change_in_x_wind_due_to_convective_gravity_wave_drag | cumulative change in zonal wind due to convective gravity wave drag | m s-1 | 2 | real | kind_phys | inout | F | !! | dv3dt | cumulative_change_in_y_wind_due_to_convective_gravity_wave_drag | cumulative change in meridional wind due to convective gravity wave drag | m s-1 | 2 | real | kind_phys | inout | F | !! | gu0 | x_wind_updated_by_physics | updated zonal wind | m s-1 | 2 | real | kind_phys | inout | F | diff --git a/physics/gwdps.f b/physics/gwdps.f index 3fa45f97e..c2e988e21 100644 --- a/physics/gwdps.f +++ b/physics/gwdps.f @@ -1424,8 +1424,8 @@ end subroutine gwdps_post_init !! | dudt | tendency_of_x_wind_due_to_model_physics | zonal wind tendency due to model physics | m s-2 | 2 | real | kind_phys | in | F | !! | dvdt | tendency_of_y_wind_due_to_model_physics | meridional wind tendency due to model physics | m s-2 | 2 | real | kind_phys | in | F | !! | dtdt | tendency_of_air_temperature_due_to_model_physics | air temperature tendency due to model physics | K s-1 | 2 | real | kind_phys | in | F | -!! | dugwd | time_integral_of_x_stress_due_to_gravity_wave_drag | integral over time of zonal stress due to gravity wave drag | Pa s | 2 | real | kind_phys | inout | F | -!! | dvgwd | time_integral_of_y_stress_due_to_gravity_wave_drag | integral over time of meridional stress due to gravity wave drag | Pa s | 2 | real | kind_phys | inout | F | +!! | dugwd | time_integral_of_x_stress_due_to_gravity_wave_drag | integral over time of zonal stress due to gravity wave drag | Pa s | 1 | real | kind_phys | inout | F | +!! | dvgwd | time_integral_of_y_stress_due_to_gravity_wave_drag | integral over time of meridional stress due to gravity wave drag | Pa s | 1 | real | kind_phys | inout | F | !! | du3dt | cumulative_change_in_x_wind_due_to_surface_processes | cumulative change in zonal wind due to surface processes | m s-1 | 2 | real | kind_phys | inout | F | !! | dv3dt | cumulative_change_in_y_wind_due_to_surface_processes | cumulative change in meridional wind due to surface processes | m s-1 | 2 | real | kind_phys | inout | F | !! | dt3dt | cumulative_change_in_temperature_due_to_surface_processes | cumulative change in temperature due to surface processes | K | 2 | real | kind_phys | inout | F | diff --git a/physics/mfshalcnv.f b/physics/mfshalcnv.f index 3b6e9c207..700c91b64 100755 --- a/physics/mfshalcnv.f +++ b/physics/mfshalcnv.f @@ -1518,10 +1518,10 @@ module sasas_shal_post !! | rain1 | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys | in | F | !! | cnvc | convective_cloud_cover | convective cloud cover | frac | 2 | real | kind_phys | in | F | !! | cnvw | convective_cloud_water_specific_humidity | convective cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | in | F | -!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_typedefs%GFS_control_type | | in | F | -!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_typedefs%GFS_grid_type | | in | F | -!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | -!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS miscellaneous data | DDT | 0 | GFS_typedefs%GFS_tbd_type | | inout | F | +!! | Model | FV3-GFS_Control_type | Fortran DDT containing FV3-GFS model control parameters | DDT | 0 | GFS_control_type | | in | F | +!! | Grid | FV3-GFS_Grid_type | Fortran DDT containing FV3-GFS grid and interpolation related data | DDT | 0 | GFS_grid_type | | in | F | +!! | Diag | FV3-GFS_Diag_type | Fortran DDT containing FV3-GFS fields targeted for diagnostic output | DDT | 0 | GFS_diag_type | | inout | F | +!! | Tbd | FV3-GFS_Tbd_type | Fortran DDT containing FV3-GFS miscellaneous data | DDT | 0 | GFS_tbd_type | | inout | F | !! subroutine sasasshal_post_run (frain, rain1, cnvc, cnvw, Model, & & Grid, Diag, Tbd) diff --git a/physics/ozphys.f b/physics/ozphys.f index 6fa54f6b2..359afa4d8 100644 --- a/physics/ozphys.f +++ b/physics/ozphys.f @@ -249,7 +249,7 @@ end subroutine ozphys_post_init !! | levs | vertical_dimension | number of vertical layers | index | 0 | integer | default | in | F | !! | pl_coeff | number_of_coefficients_in_ozone_forcing_data | number of coefficients in ozone forcing data | index | 0 | integer | default | in | F | !! | ozp | change_in_ozone_concentration | change in ozone concentration | kg kg-1 | 3 | real | kind_phys | in | F | -!! | Diag | FV3-GFS_Diag_type | GFS diagnostics derived data type variable | DDT | 0 | GFS_typedefs%GFS_diag_type | | inout | F | +!! | Diag | FV3-GFS_Diag_type | GFS diagnostics derived data type variable | DDT | 0 | GFS_diag_type | | inout | F | !! subroutine ozphys_post_run(ix, levs, pl_coeff, ozp, Diag) diff --git a/physics/precpd.f b/physics/precpd.f index 1c5c61f52..db142211d 100644 --- a/physics/precpd.f +++ b/physics/precpd.f @@ -34,14 +34,14 @@ end subroutine precpd_init !! | q | water_vapor_specific_humidity_updated_by_physics | water vapor specific humidity | kg kg-1 | 2 | real | kind_phys| inout | F | !! | cwm | cloud_condensed_water_specific_humidity_updated_by_physics | cloud condensed water specific humidity | kg kg-1 | 2 | real | kind_phys| inout | F | !! | t | air_temperature_updated_by_physics | layer mean air temperature | K | 2 | real | kind_phys| inout | F | -!! | rn | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys| out | F | +!! | rn | rainfall_amount_on_physics_timestep | convective rainfall amount on physics timestep | m | 1 | real | kind_phys| out | F | !! | sr | ratio_of_snowfall_to_rainfall | ratio of snowfall to large-scale rainfall | frac | 1 | real | kind_phys| out | F | !! | rainp | rain_water_path | rainwater path | kg m-3 | 2 | real | kind_phys| out | F | !! | u00k | critical_relative_humidity | critical relative humidity | frac | 2 | real | kind_phys| in | F | -!! | psautco | coefficient_from_cloud_ice_to_snow | conversion coefficient from cloud ice to snow | 1 | 0 | real | kind_phys| in | F | -!! | prautco | coefficient_from_cloud_water_to_rain | conversion coefficient from cloud water to rain | 1 | 0 | real | kind_phys| in | F | -!! | evpco | coefficient_for_evaporation_of_rainfall | coefficient for evaporation of rainfall | 1 | 0 | real | kind_phys| in | F | -!! | wminco | cloud_condensed_water_conversion_threshold | conversion coefficient from cloud liquid and ice to precipitation | 1 | 0 | real | kind_phys| in | F | +!! | psautco | coefficient_from_cloud_ice_to_snow | conversion coefficient from cloud ice to snow | none | 1 | real | kind_phys| in | F | +!! | prautco | coefficient_from_cloud_water_to_rain | conversion coefficient from cloud water to rain | none | 1 | real | kind_phys| in | F | +!! | evpco | coefficient_for_evaporation_of_rainfall | coefficient for evaporation of rainfall | none | 0 | real | kind_phys| in | F | +!! | wminco | cloud_condensed_water_conversion_threshold | conversion coefficient from cloud liquid and ice to precipitation | none | 1 | real | kind_phys| in | F | !! | wk1 | grid_size_related_coefficient_used_in_scale-sensitive_schemes | grid size related coefficient used in scale-sensitive schemes | none | 1 | real | kind_phys| in | F | !! | lprnt | flag_print | flag for printing diagnostics to output | flag | 0 | logical | | in | F | !! | jpr | horizontal_index_of_printed_column | horizontal index of printed column | index | 0 | integer | | in | F | diff --git a/physics/radiation_aerosols.f b/physics/radiation_aerosols.f index e8b2e5a1b..23df641c8 100644 --- a/physics/radiation_aerosols.f +++ b/physics/radiation_aerosols.f @@ -46,7 +46,7 @@ ! ! ! aerolw(IMAX,NLAY,NBDLW,1) - aerosols optical depth for lw ! ! aerolw(IMAX,NLAY,NBDLW,2) - aerosols single scattering albedo ! -! aerolw(IMAX,NLAY,NBDLW,3) - aerosols asymetry parameter ! +! aerolw(IMAX,NLAY,NBDLW,3) - aerosols asymmetry parameter ! ! ! ! ! ! program history: ! diff --git a/physics/radlw_main.f b/physics/radlw_main.f index 1df691f1b..2c6de17ab 100644 --- a/physics/radlw_main.f +++ b/physics/radlw_main.f @@ -469,14 +469,14 @@ end subroutine lwrad_init !! | gasvmr_cfc12 | volume_mixing_ratio_cfc12 | volume mixing ratio cfc12 | kg kg-1 | 2 | real | kind_phys | in | F | !! | gasvmr_cfc22 | volume_mixing_ratio_cfc22 | volume mixing ratio cfc22 | kg kg-1 | 2 | real | kind_phys | in | F | !! | gasvmr_ccl4 | volume_mixing_ratio_ccl4 | volume mixing ratio ccl4 | kg kg-1 | 2 | real | kind_phys | in | F | -!! | icseed | seed_random_numbers | seed for random number generation | none | 2 | integer | | in | F | +!! | icseed | seed_random_numbers_lw | seed for random number generation for longwave radiation | none | 1 | integer | | in | F | !! | aeraod | aerosol_optical_depth_for_longwave_bands_01-16 | aerosol optical depth for longwave bands 01-16 | none | 3 | real | kind_phys | in | F | !! | aerssa | aerosol_single_scattering_albedo_for_longwave_bands_01-16 | aerosol single scattering albedo for longwave bands 01-16 | frac | 3 | real | kind_phys | in | F | !! | sfemis | surface_longwave_emissivity | surface emissivity | frac | 1 | real | kind_phys | in | F | !! | sfgtmp | surface_ground_temperature_for_radiation | surface ground temperature for radiation | K | 1 | real | kind_phys | in | F | !! | npts | horizontal_loop_extent | horizontal dimension | index | 0 | integer | | in | F | -!! | nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | index | 0 | integer | | in | F | -!! | nlp1 | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | index | 0 | integer | | in | F | +!! | nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | count | 0 | integer | | in | F | +!! | nlp1 | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | count | 0 | integer | | in | F | !! | lprnt | flag_to_print | logical flag to print | logical | 0 | logical | | in | F | !! | cld_cf | total_cloud_fraction | total cloud fraction | frac | 2 | real | kind_phys | in | F | !! | lslwr | flag_to_calc_lw | logical flag to calculate LW irradiances | logical | 0 | logical | | in | F | diff --git a/physics/radsw_main.f b/physics/radsw_main.f index e547d562d..2e9d20b74 100644 --- a/physics/radsw_main.f +++ b/physics/radsw_main.f @@ -585,54 +585,54 @@ end subroutine swrad_init !! \section arg_table_swrad_run Argument Table -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |-----------------|-------------------------------------------------------------------------|--------------------------------------------------------------------------|---------|------|-------------|-----------|--------|----------| -!! | plyr | air_pressure_at_layer_for_radiation_in_hPa | air pressure layer | hPa | 2 | real | kind_phys | in | F | -!! | plvl | air_pressure_at_interface_for_radiation_in_hPa | air pressure level | hPa | 2 | real | kind_phys | in | F | -!! | tlyr | air_temperature_at_layer_for_radiation | air temperature layer | K | 2 | real | kind_phys | in | F | -!! | tlvl | air_temperature_at_interface_for_radiation | air temperature level | K | 2 | real | kind_phys | in | F | -!! | qlyr | water_vapor_specific_humidity_at_layer_for_radiation | specific humidity layer | kg kg-1 | 2 | real | kind_phys | in | F | -!! | olyr | ozone_concentration_at_layer_for_radiation | ozone concentration layer | kg kg-1 | 2 | real | kind_phys | in | F | -!! | gasvmr_co2 | volume_mixing_ratio_co2 | volume mixing ratio co2 | kg kg-1 | 2 | real | kind_phys | in | F | -!! | gasvmr_n2o | volume_mixing_ratio_n2o | volume mixing ratio no2 | kg kg-1 | 2 | real | kind_phys | in | F | -!! | gasvmr_ch4 | volume_mixing_ratio_ch4 | volume mixing ratio ch4 | kg kg-1 | 2 | real | kind_phys | in | F | -!! | gasvmr_o2 | volume_mixing_ratio_o2 | volume mixing ratio o2 | kg kg-1 | 2 | real | kind_phys | in | F | -!! | icseed | seed_random_numbers | seed for random number generation | none | 2 | integer | | in | F | -!! | aeraod | aerosol_optical_depth_for_shortwave_bands_01-16 | aerosol optical depth for shortwave bands 01-16 | none | 3 | real | kind_phys | in | F | -!! | aerssa | aerosol_single_scattering_albedo_for_shortwave_bands_01-16 | aerosol single scattering albedo for shortwave bands 01-16 | frac | 3 | real | kind_phys | in | F | -!! | aerasy | aerosol_asymmetry_parameter_for_shortwave_bands_01-16 | aerosol asymmetry paramter for shortwave bands 01-16 | none | 3 | real | kind_phys | in | F | -!! | sfcalb_nir_dir | surface_albedo_due_to_near_IR_direct | surface albedo due to near IR direct beam | frac | 1 | real | kind_phys | in | F | -!! | sfcalb_nir_dif | surface_albedo_due_to_near_IR_diffused | surface albedo due to near IR diffused beam | frac | 1 | real | kind_phys | in | F | -!! | sfcalb_uvis_dir | surface_albedo_due_to_UV_and_VIS_direct | surface albedo due to UV+VIS direct beam | frac | 1 | real | kind_phys | in | F | -!! | sfcalb_uvis_dif | surface_albedo_due_to_UV_and_VIS_diffused | surface albedo due to UV+VIS diffused beam | frac | 1 | real | kind_phys | in | F | -!! | cosz | cosine_of_zenith_angle | cosine of the solar zenit angle | none | 1 | real | kind_phys | in | F | -!! | solcon | solar_constant | solar constant | W m-2 | 0 | real | kind_phys | in | F | -!! | nday | daytime_points_dimension | daytime points dimension | index | 0 | integer | | in | F | -!! | idxday | daytime_points | daytime points | count | 1 | integer | | in | F | -!! | npts | horizontal_loop_extent | horizontal dimension | index | 0 | integer | | in | F | -!! | nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | index | 0 | integer | | in | F | -!! | nlp1 | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | index | 0 | integer | | in | F | -!! | lprnt | flag_to_print | logical flag to print | logical | 0 | logical | | in | F | -!! | cld_cf | total_cloud_fraction | total cloud fraction | frac | 2 | real | kind_phys | in | F | -!! | lsswr | flag_to_calc_sw | logical flag to calculate SW irradiances | logical | 0 | logical | | in | F | -!! | hswc | tendency_of_air_temperature_due_to_shortwave_heating | shortwave total sky heating rate | K s-1 | 2 | real | kind_phys | out | F | -!! | topflx | sw_fluxes_top_atmosphere | shortwave total sky fluxes at the top of the atm | W m-2 | 1 | topfsw_type | kind_phys | out | F | -!! | sfcflx | sw_fluxes_sfc | shortwave total sky fluxes at the Earth surface | W m-2 | 1 | sfcfsw_type | kind_phys | out | F | -!! | hsw0 | tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky | shortwave clear sky heating rate | K s-1 | 2 | real | kind_phys | out | T | -!! | hswb | sw_heating_rate_spectral | shortwave total sky heating rate (spectral) | K s-1 | 3 | real | kind_phys | out | T | -!! | flxprf | sw_fluxes | sw fluxes total sky / csk and up / down at levels | W m-2 | 2 | profsw_type | kind_phys | out | T | -!! | fdncmp | components_of_surface_downward_shortwave_fluxes | derived type for special components of surface downward shortwave fluxes | W m-2 | 1 | cmpfsw_type | kind_phys | out | T | -!! | cld_lwp | cloud_liquid_water_path | cloud liquid water path | g m-2 | 2 | real | kind_phys | in | T | -!! | cld_ref_liq | mean_effective_radius_for_liquid_cloud | mean effective radius for liquid cloud | micron | 2 | real | kind_phys | in | T | -!! | cld_iwp | cloud_ice_water_path | cloud ice water path | g m-2 | 2 | real | kind_phys | in | T | -!! | cld_ref_ice | mean_effective_radius_for_ice_cloud | mean effective radius for ice cloud | micron | 2 | real | kind_phys | in | T | -!! | cld_rwp | cloud_rain_water_path | cloud rain water path | g m-2 | 2 | real | kind_phys | in | T | -!! | cld_ref_rain | mean_effective_radius_for_rain_drop | mean effective radius for rain drop | micron | 2 | real | kind_phys | in | T | -!! | cld_swp | cloud_snow_water_path | cloud snow water path | g m-2 | 2 | real | kind_phys | in | T | -!! | cld_ref_snow | mean_effective_radius_for_snow_flake | mean effective radius for snow flake | micron | 2 | real | kind_phys | in | T | -!! | cld_od | cloud_optical_depth | cloud optical depth | none | 2 | real | kind_phys | in | T | -!! | cld_ssa | cloud_single_scattering_albedo | cloud single scattering albedo | frac | 2 | real | kind_phys | in | T | -!! | cld_asy | cloud_asymetry_parameter | cloud asymetry parameter | none | 2 | real | kind_phys | in | T | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |-----------------|-----------------------------------------------------------------------------------------------|--------------------------------------------------------------------------|---------|------|-------------|-----------|--------|----------| +!! | plyr | air_pressure_at_layer_for_radiation_in_hPa | air pressure layer | hPa | 2 | real | kind_phys | in | F | +!! | plvl | air_pressure_at_interface_for_radiation_in_hPa | air pressure level | hPa | 2 | real | kind_phys | in | F | +!! | tlyr | air_temperature_at_layer_for_radiation | air temperature layer | K | 2 | real | kind_phys | in | F | +!! | tlvl | air_temperature_at_interface_for_radiation | air temperature level | K | 2 | real | kind_phys | in | F | +!! | qlyr | water_vapor_specific_humidity_at_layer_for_radiation | specific humidity layer | kg kg-1 | 2 | real | kind_phys | in | F | +!! | olyr | ozone_concentration_at_layer_for_radiation | ozone concentration layer | kg kg-1 | 2 | real | kind_phys | in | F | +!! | gasvmr_co2 | volume_mixing_ratio_co2 | volume mixing ratio co2 | kg kg-1 | 2 | real | kind_phys | in | F | +!! | gasvmr_n2o | volume_mixing_ratio_n2o | volume mixing ratio no2 | kg kg-1 | 2 | real | kind_phys | in | F | +!! | gasvmr_ch4 | volume_mixing_ratio_ch4 | volume mixing ratio ch4 | kg kg-1 | 2 | real | kind_phys | in | F | +!! | gasvmr_o2 | volume_mixing_ratio_o2 | volume mixing ratio o2 | kg kg-1 | 2 | real | kind_phys | in | F | +!! | icseed | seed_random_numbers_sw | seed for random number generation for shortwave radiation | none | 1 | integer | | in | F | +!! | aeraod | aerosol_optical_depth_for_shortwave_bands_01-16 | aerosol optical depth for shortwave bands 01-16 | none | 3 | real | kind_phys | in | F | +!! | aerssa | aerosol_single_scattering_albedo_for_shortwave_bands_01-16 | aerosol single scattering albedo for shortwave bands 01-16 | frac | 3 | real | kind_phys | in | F | +!! | aerasy | aerosol_asymmetry_parameter_for_shortwave_bands_01-16 | aerosol asymmetry paramter for shortwave bands 01-16 | none | 3 | real | kind_phys | in | F | +!! | sfcalb_nir_dir | surface_albedo_due_to_near_IR_direct | surface albedo due to near IR direct beam | frac | 1 | real | kind_phys | in | F | +!! | sfcalb_nir_dif | surface_albedo_due_to_near_IR_diffused | surface albedo due to near IR diffused beam | frac | 1 | real | kind_phys | in | F | +!! | sfcalb_uvis_dir | surface_albedo_due_to_UV_and_VIS_direct | surface albedo due to UV+VIS direct beam | frac | 1 | real | kind_phys | in | F | +!! | sfcalb_uvis_dif | surface_albedo_due_to_UV_and_VIS_diffused | surface albedo due to UV+VIS diffused beam | frac | 1 | real | kind_phys | in | F | +!! | cosz | cosine_of_zenith_angle | cosine of the solar zenit angle | none | 1 | real | kind_phys | in | F | +!! | solcon | solar_constant | solar constant | W m-2 | 0 | real | kind_phys | in | F | +!! | nday | daytime_points_dimension | daytime points dimension | count | 0 | integer | | in | F | +!! | idxday | daytime_points | daytime points | index | 1 | integer | | in | F | +!! | npts | horizontal_loop_extent | horizontal dimension | index | 0 | integer | | in | F | +!! | nlay | adjusted_vertical_layer_dimension_for_radiation | number of vertical layers for radiation | count | 0 | integer | | in | F | +!! | nlp1 | adjusted_vertical_level_dimension_for_radiation | number of vertical levels for radiation | count | 0 | integer | | in | F | +!! | lprnt | flag_to_print | logical flag to print | logical | 0 | logical | | in | F | +!! | cld_cf | total_cloud_fraction | total cloud fraction | frac | 2 | real | kind_phys | in | F | +!! | lsswr | flag_to_calc_sw | logical flag to calculate SW irradiances | logical | 0 | logical | | in | F | +!! | hswc | tendency_of_air_temperature_due_to_shortwave_heating_on_radiation_timestep | shortwave total sky heating rate | K s-1 | 2 | real | kind_phys | out | F | +!! | topflx | sw_fluxes_top_atmosphere | shortwave total sky fluxes at the top of the atm | W m-2 | 1 | topfsw_type | kind_phys | out | F | +!! | sfcflx | sw_fluxes_sfc | shortwave total sky fluxes at the Earth surface | W m-2 | 1 | sfcfsw_type | kind_phys | out | F | +!! | hsw0 | tendency_of_air_temperature_due_to_shortwave_heating_assuming_clear_sky_on_radiation_timestep | shortwave clear sky heating rate | K s-1 | 2 | real | kind_phys | out | T | +!! | hswb | sw_heating_rate_spectral | shortwave total sky heating rate (spectral) | K s-1 | 3 | real | kind_phys | out | T | +!! | flxprf | sw_fluxes | sw fluxes total sky / csk and up / down at levels | W m-2 | 2 | profsw_type | kind_phys | out | T | +!! | fdncmp | components_of_surface_downward_shortwave_fluxes | derived type for special components of surface downward shortwave fluxes | W m-2 | 1 | cmpfsw_type | kind_phys | out | T | +!! | cld_lwp | cloud_liquid_water_path | cloud liquid water path | g m-2 | 2 | real | kind_phys | in | T | +!! | cld_ref_liq | mean_effective_radius_for_liquid_cloud | mean effective radius for liquid cloud | micron | 2 | real | kind_phys | in | T | +!! | cld_iwp | cloud_ice_water_path | cloud ice water path | g m-2 | 2 | real | kind_phys | in | T | +!! | cld_ref_ice | mean_effective_radius_for_ice_cloud | mean effective radius for ice cloud | micron | 2 | real | kind_phys | in | T | +!! | cld_rwp | cloud_rain_water_path | cloud rain water path | g m-2 | 2 | real | kind_phys | in | T | +!! | cld_ref_rain | mean_effective_radius_for_rain_drop | mean effective radius for rain drop | micron | 2 | real | kind_phys | in | T | +!! | cld_swp | cloud_snow_water_path | cloud snow water path | g m-2 | 2 | real | kind_phys | in | T | +!! | cld_ref_snow | mean_effective_radius_for_snow_flake | mean effective radius for snow flake | micron | 2 | real | kind_phys | in | T | +!! | cld_od | cloud_optical_depth | cloud optical depth | none | 2 | real | kind_phys | in | T | +!! | cld_ssa | cloud_single_scattering_albedo | cloud single scattering albedo | frac | 2 | real | kind_phys | in | T | +!! | cld_asy | cloud_asymmetry_parameter | cloud asymmetry parameter | none | 2 | real | kind_phys | in | T | !! !> \section General_swrad General Algorithm !> @{ diff --git a/physics/sfc_diff.f b/physics/sfc_diff.f index d1f5dde54..31e1c7fe8 100644 --- a/physics/sfc_diff.f +++ b/physics/sfc_diff.f @@ -49,10 +49,10 @@ end subroutine sfc_ex_coef_finalize !!| sigmaf | vegetation_area_fraction | areal fractional cover of green vegetation | frac | 1 | real | kind_phys | in | F | !!| vegtype | cell_vegetation_type | vegetation type at each grid cell | index | 1 | integer | | in | F | !!| shdmax | maximum_vegetation_area_fraction | max fractnl cover of green veg | frac | 1 | real | kind_phys | in | F | -!!| ivegsrc | vegetation_type | vegetation type data source umd or igbp | index | 0 | integer | | in | F | +!!| ivegsrc | vegetation_type | vegetation type data source umd or igbp | index | 0 | integer | | in | F | !!| tsurf | surface_skin_temperature_after_iteration | surface skin temperature after iteration | K | 1 | real | kind_phys | in | F | !!| flag_iter | flag_for_iteration | flag for iteration | flag | 1 | logical | | in | F | -!!| redrag | flag_for_reduced_drag_coefficient_over_sea | flag for reduced drag coefficient over sea | flag | 1 | logical | | in | F | +!!| redrag | flag_for_reduced_drag_coefficient_over_sea | flag for reduced drag coefficient over sea | flag | 0 | logical | | in | F | !! !! \section general General Algorithm !! \section detailed Detailed Algorithm diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f index 2ab3b9b75..4108edf2c 100644 --- a/physics/sfc_nst.f +++ b/physics/sfc_nst.f @@ -64,7 +64,7 @@ end subroutine sfc_nst_finalize !! | v1 | y_wind_at_lowest_model_layer | y component of surface layer wind | m s-1 | 1 | real | kind_phys | in | F | !! | t1 | air_temperature_at_lowest_model_layer | surface layer mean temperature | K | 1 | real | kind_phys | in | F | !! | q1 | specific_humidity_at_lowest_model_layer | surface layer mean specific humidity | kg kg-1 | 1 | real | kind_phys | in | F | -!! | tref | sea_surface_foundation_temperature | reference/foundation temperature | K | 1 | real | kind_phys | in | F | +!! | tref | sea_surface_reference_temperature | reference/foundation temperature | K | 1 | real | kind_phys | in | F | !! | cm | surface_drag_coefficient_for_momentum_in_air | surface exchange coeff for momentum | none | 1 | real | kind_phys | in | F | !! | ch | surface_drag_coefficient_for_heat_and_moisture_in_air | surface exchange coeff heat & moisture | none | 1 | real | kind_phys | in | F | !! | prsl1 | air_pressure_at_lowest_model_layer | surface layer mean pressure | Pa | 1 | real | kind_phys | in | F | @@ -91,7 +91,7 @@ end subroutine sfc_nst_finalize !! | ipr | horizontal_index_of_printed_column | horizontal index of printed column | index | 0 | integer | | in | F | !! | tskin | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | inout | F | !! | tsurf | surface_skin_temperature_after_iteration | ocean surface skin temperature for guess run | K | 1 | real | kind_phys | inout | F | -!! | xt | diurnal thermocline layer_heat_content | heat content in diurnal thermocline layer | K m | 1 | real | kind_phys | inout | F | +!! | xt | diurnal_thermocline_layer_heat_content | heat content in diurnal thermocline layer | K m | 1 | real | kind_phys | inout | F | !! | xs | sea_water_salinity | salinity content in diurnal thermocline layer | ppt m | 1 | real | kind_phys | inout | F | !! | xu | diurnal_thermocline_layer_x_current | u-current content in diurnal thermocline layer | m2 s-1 | 1 | real | kind_phys | inout | F | !! | xv | diurnal_thermocline_layer_y_current | v-current content in diurnal thermocline layer | m2 s-1 | 1 | real | kind_phys | inout | F | @@ -746,8 +746,8 @@ end subroutine sfc_nst_pre_finalize !! |----------------|------------------------------------------------------------------------------|----------------------------------------------- |---------------|------|---------|-----------|--------|----------| !! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | !! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | -!! | oro | orography | orography | | 1 | real | kind_phys | in | F | -!! | oro_uf | orography_unfiltered | unfiltered orographyo | | 1 | real | kind_phys | in | F | +!! | oro | orography | orography | m | 1 | real | kind_phys | in | F | +!! | oro_uf | orography_unfiltered | unfiltered orographyo | m | 1 | real | kind_phys | in | F | !! | tsfc | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | in | F | !! | tsurf | surface_skin_temperature_after_iteration | ocean surface skin temperature for guess run | K | 1 | real | kind_phys | inout | F | !! | tskin | surface_skin_temperature | ocean surface skin temperature | K | 1 | real | kind_phys | out | F | @@ -845,17 +845,17 @@ end subroutine sfc_nst_post_finalize !! |----------------|------------------------------------------------------------------------------|----------------------------------------------- |---------------|------|---------|-----------|--------|----------| !! | im | horizontal_loop_extent | horizontal loop extent, start at 1 | index | 0 | integer | | in | F | !! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | -!! | oro | orography | orography | | 1 | real | kind_phys | in | F | -!! | oro_uf | orography_unfiltered | unfiltered orographyo | | 1 | real | kind_phys | in | F | +!! | oro | orography | orography | m | 1 | real | kind_phys | in | F | +!! | oro_uf | orography_unfiltered | unfiltered orography | m | 1 | real | kind_phys | in | F | !! | nstf_name1 | flag_for_nsstm_run | NSSTM flag: off/uncoupled/coupled=0/1/2 | flag | 0 | integer | | in | F | !! | nstf_name4 | vertical_temperature_average_range_lower_bound | zsea1 | mm | 1 | integer | | in | F | !! | nstf_name5 | vertical_temperature_average_range_upper_bound | zsea2 | mm | 1 | integer | | in | F | -!! | xt | diurnal thermocline layer_heat_content | heat content in diurnal thermocline layer | K m | 1 | real | kind_phys | in | F | +!! | xt | diurnal_thermocline_layer_heat_content | heat content in diurnal thermocline layer | K m | 1 | real | kind_phys | in | F | !! | xz | diurnal_thermocline_layer_thickness | diurnal thermocline layer thickness | m | 1 | real | kind_phys | in | F | !! | dt_cool | sub-layer_cooling_amount | sub-layer cooling amount | K | 1 | real | kind_phys | in | F | !! | z_c | sub-layer_cooling_thickness | sub-layer cooling thickness | m | 1 | real | kind_phys | in | F | !! | rslimsk | sea_land_ice_mask_real | landmask: sea/land/ice=0/1/2 | flag | 1 | real | kind_phys | in | F | -!! | tref | sea_surface_foundation_temperature | reference/foundation temperature | K | 1 | real | kind_phys | in | F | +!! | tref | sea_surface_reference_temperature | reference/foundation temperature | K | 1 | real | kind_phys | in | F | !! | xlon | longitude | longitude | radians | 1 | real | kind_phys | in | F | !! | tsurf | surface_skin_temperature_after_iteration | ocean surface skin temperature for guess run | K | 1 | real | kind_phys | inout | F | !! | dtzm | mean_change_over_depth_in_sea_water_temperature | mean of dT(z) (zsea1 to zsea2) | K | 1 | real | kind_phys | out | F | diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f index 54871e214..cb29717f6 100644 --- a/physics/sfc_sice.f +++ b/physics/sfc_sice.f @@ -46,7 +46,7 @@ end subroutine sfc_sice_finalize !! | islimsk | sea_land_ice_mask | sea/land/ice mask (=0/1/2) | flag | 1 | integer | | in | F | !! | ddvel | surface_wind_enhancement_due_to_convection | wind enhancement due to convection | m s-1 | 1 | real | kind_phys | in | F | !! | flag_iter | flag_for_iteration | flag for iteration | flag | 1 | logical | | in | F | -!! | mom4ice | flag_for_mom4_coupling | flag for Mom4 coupling | flag | 1 | logical | | in | F | +!! | mom4ice | flag_for_mom4_coupling | flag for Mom4 coupling | flag | 0 | logical | | in | F | !! | lsm | flag_for_land_surface_scheme | flag for land sfc scheme =0: osu; =1: noah | flag | 0 | integer | | in | F | !! | lprnt | flag_print | switch for printing sample column to stdout | flag | 0 | logical | | in | F | !! | ipr | horizontal_index_of_printed_column | horizontal index of printed column | index | 0 | integer | | in | F |