From eb94f897f865a22c32b2ef639ce382ebbd85b4aa Mon Sep 17 00:00:00 2001 From: "Grant.Firl" Date: Tue, 16 Jan 2018 12:30:57 -0700 Subject: [PATCH] rain variable refactoring --- GFS_layer/GFS_physics_driver.F90 | 106 +++++++++++++++------------- physics/GFS_DCNV_generic.f90 | 2 +- physics/GFS_MP_generic_post.f90 | 25 ++++--- physics/GFS_calpreciptype.f90 | 58 +++++++-------- physics/cnvc90.f | 33 +++++---- physics/mfdeepcnv.f | 60 ++++++++-------- physics/mfshalcnv.f | 80 ++++++++++----------- physics/precpd.f | 4 +- physics/sfc_drv.f | 4 +- physics/sfc_nst.f | 6 +- physics/sfc_sice.f | 117 +++++++++++++++---------------- 11 files changed, 249 insertions(+), 246 deletions(-) diff --git a/GFS_layer/GFS_physics_driver.F90 b/GFS_layer/GFS_physics_driver.F90 index b7173be80..2d8c79e9f 100644 --- a/GFS_layer/GFS_physics_driver.F90 +++ b/GFS_layer/GFS_physics_driver.F90 @@ -109,11 +109,11 @@ module module_physics_driver ! ! ! get_prs, dcyc2t2_pre_rad (testing), dcyc2t3, sfc_diff, ! ! sfc_ocean,sfc_drv, sfc_land, sfc_sice, sfc_diag, moninp1, ! -! moninp, moninq1, moninq, -! gwdps_pre_run, gwdps_run, gwdps_post_run, +! moninp, moninq1, moninq, +! gwdps_pre_run, gwdps_run, gwdps_post_run, ! ozphys, get_phi, ! -! sascnv, sascnvn, rascnv, cs_convr, -! gwdc_pre_run, gwdc_run, gwdc_post_run, +! sascnv, sascnvn, rascnv, cs_convr, +! gwdc_pre_run, gwdc_run, gwdc_post_run, ! shalcvt3,shalcv,! ! shalcnv, cnvc90_run, lrgscl, gsmdrive, gscond, precpd, ! ! progt2. ! @@ -488,7 +488,7 @@ subroutine GFS_physics_driver & real(kind=kind_phys), dimension(size(Grid%xlon,1)) :: & ccwfac, dlength, cumabs, cice, zice, tice, gflx, & - rain1, raincs, snowmt, cd, cdq, qss, dusfcg, dvsfcg, dusfc1, & + 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, & hprime, & @@ -506,6 +506,12 @@ subroutine GFS_physics_driver & !--- for CS-convection wcbmax + real(kind=kind_phys), dimension(size(Grid%xlon,1)) :: & + lwe_thickness_of_deep_convective_precipitation_amount, & + lwe_thickness_of_shallow_convective_precipitation_amount, & + lwe_thickness_of_moist_convective_adj_precipitation_amount, & + lwe_thickness_of_stratiform_precipitation_amount + real(kind=kind_phys), dimension(size(Grid%xlon,1),4) :: & oa4, clx @@ -559,7 +565,7 @@ subroutine GFS_physics_driver & !===> ... begin here ! DH* UPDATE - in the final CCPP version, these are part of the - ! create_interstitital routine in GFS_typedefs.F90. Hence, the + ! create_interstitital routine in GFS_typedefs.F90. Hence, the ! following two lines of code have to go nvdiff = Model%ntrac ! vertical diffusion of all tracers! ipr = min(size(Grid%xlon,1),10) @@ -968,7 +974,7 @@ subroutine GFS_physics_driver & ! if (Model%lprnt) write(0,*)' sfalb=',sfalb(ipr),' ipr=',ipr & ! &, ' weasd=',weasd(ipr),' snwdph=',snwdph(ipr) & -! &, ' tprcp=',tprcp(ipr),' kdt=',Model%kdt,' iter=',iter & +! &, ' tprcp=',Diag%tprcp(ipr),' kdt=',Model%kdt,' iter=',iter & ! &,' tseabefland=',tsea(ipr) ! --- ... surface energy balance over land @@ -1422,7 +1428,7 @@ subroutine GFS_physics_driver & Model%lssav, Model%ldiag3d, Model%dtf, & dusfcg, dvsfcg, dudt, dvdt, dtdt, & Diag%dugwd, Diag%dvgwd, & - Diag%du3dt(:,:,2), Diag%dv3dt(:,:,2), Diag%dt3dt(:,:,2)) + Diag%du3dt(:,:,2), Diag%dv3dt(:,:,2), Diag%dt3dt(:,:,2)) ! Rayleigh damping near the model top @@ -1675,8 +1681,8 @@ subroutine GFS_physics_driver & ! 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(size(Grid%xlon,1),size(Grid%xlon,1),size(Grid%xlon,1),Model%levs,Model%me,Model%kdt,con_g,Model%dtp,del,rain1 +! lwe_thickness_of_deep_convective_precipitation_amount = 0.0 +! 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,lwe_thickness_of_deep_convective_precipitation_amount ! &, 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 ') @@ -1716,7 +1722,7 @@ subroutine GFS_physics_driver & 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, & + Stateout%gv0, cld1d, lwe_thickness_of_deep_convective_precipitation_amount, kbot, ktop, kcnv, & islmsk, Statein%vvl, Model%ncld, ud_mf, dd_mf, & dt_mf, cnvw, cnvc) elseif (Model%imfdeepcnv == 2) then @@ -1724,18 +1730,18 @@ subroutine GFS_physics_driver & Statein%pgr, Statein%phil, clw(:,:,1), & clw(:,:,2), Stateout%gq0(:,:,1), & Stateout%gt0, Stateout%gu0, Stateout%gv0, & - cld1d, rain1, kbot, ktop, kcnv, islmsk, & + cld1d, lwe_thickness_of_deep_convective_precipitation_amount, kbot, ktop, kcnv, islmsk, & Grid%area, Statein%vvl, Model%ncld, ud_mf, & dd_mf, dt_mf, cnvw, cnvc) -! if (Model%lprnt) print *,' rain1=',rain1(ipr) +! if (Model%lprnt) print *,' lwe_thickness_of_deep_convective_precipitation_amount=',lwe_thickness_of_deep_convective_precipitation_amount(ipr) elseif (Model%imfdeepcnv == 0) then ! random cloud top 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, & + Stateout%gv0, cld1d, lwe_thickness_of_deep_convective_precipitation_amount, kbot, ktop, kcnv, & islmsk, Statein%vvl, Tbd%rann, Model%ncld, & ud_mf, dd_mf, dt_mf, cnvw, cnvc) -! if (Model%lprnt) print *,' rain1=',rain1(ipr),' rann=',rann(ipr,1) +! if (Model%lprnt) print *,' lwe_thickness_of_deep_convective_precipitation_amount=',lwe_thickness_of_deep_convective_precipitation_amount(ipr),' rann=',rann(ipr,1) endif else ! ras or cscnv if (Model%cscnv) then ! Chikira-Sugiyama convection scheme (via CSU) @@ -1766,7 +1772,7 @@ subroutine GFS_physics_driver & !GFDL again lat replaced with "1" !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, & + Model%kdt, Stateout%gt0, Stateout%gq0(1,1,1:1), lwe_thickness_of_deep_convective_precipitation_amount, & clw, Statein%phil, Statein%phii, Statein%prsl, & Statein%prsi, Model%dtp, Model%dtf, ud_mf, dd_mf, dt_mf, & Stateout%gu0, Stateout%gv0, fscav, fswtr, & @@ -1780,11 +1786,11 @@ subroutine GFS_physics_driver & ! 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 +! 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,lwe_thickness_of_deep_convective_precipitation_amount ! &, 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(:) * (Model%dtp*0.001) + lwe_thickness_of_deep_convective_precipitation_amount(:) = lwe_thickness_of_deep_convective_precipitation_amount(:) * (Model%dtp*0.001) if (Model%do_aw) then do k=1,Model%levs kk = min(k+1,Model%levs) ! assuming no cloud top reaches the model top @@ -1799,8 +1805,8 @@ subroutine GFS_physics_driver & ! 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) +! write(0,*)' aft cs lwe_thickness_of_deep_convective_precipitation_amount=',lwe_thickness_of_deep_convective_precipitation_amount(ipr)*86400 +! write(0,*)' aft cs lwe_thickness_of_deep_convective_precipitation_amount=',lwe_thickness_of_deep_convective_precipitation_amount(ipr) ! endif else ! ras version 2 @@ -1833,7 +1839,7 @@ subroutine GFS_physics_driver & 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, & + Statein%phii, kpbl, cd, lwe_thickness_of_deep_convective_precipitation_amount, kbot, ktop, kcnv, & Tbd%phy_f2d(1,Model%num_p2d), Model%flipv, pa2mb, & Model%me, Grid%area, lmh, ccwfac, Model%nrcm, rhc, ud_mf, & dd_mf, dt_mf, dlqfac, Model%lprnt, ipr, Model%kdt, revap, QLCN, & @@ -1843,10 +1849,10 @@ subroutine GFS_physics_driver & ! write(1000+Model%me,*)' at latitude = ',lat ! tx1 = 1000.0 -! 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 +! 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,lwe_thickness_of_deep_convective_precipitation_amount ! &, 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(Model%lprnt) write(0,*)' after ras rain1=',rain1(ipr) +! if(Model%lprnt) write(0,*)' after ras lwe_thickness_of_deep_convective_precipitation_amount=',lwe_thickness_of_deep_convective_precipitation_amount(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) @@ -1898,7 +1904,7 @@ subroutine GFS_physics_driver & ! endif ! ! do i = 1, size(Grid%xlon,1) -! Diag%rainc(:) = frain * rain1(:) +! Diag%rainc(:) = frain * lwe_thickness_of_deep_convective_precipitation_amount(:) ! enddo ! ! ! if (Model%lssav) then @@ -1918,7 +1924,7 @@ subroutine GFS_physics_driver & ! ! endif ! end if_lssav - call GFS_DCNV_generic_post_run (Grid, Model, Stateout, frain, rain1, cld1d, & + call GFS_DCNV_generic_post_run (Grid, Model, Stateout, frain, lwe_thickness_of_deep_convective_precipitation_amount, cld1d, & save_u, save_v, save_t, save_qv, ud_mf, dd_mf, dt_mf, cnvw, cnvc, Diag, Tbd) ! ! update dqdt_v to include moisture tendency due to deep convection @@ -1950,7 +1956,7 @@ subroutine GFS_physics_driver & ! GSK 9/26/2017: ! Move this portion into gwdc_pre_run(...) -!! --- ... calculate maximum convective heating rate +!! --- ... calculate maximum convective heating rate !! cuhr = temperature change due to deep convection ! cumabs(:) = 0.0 ! work3 (:) = 0.0 @@ -2038,7 +2044,7 @@ subroutine GFS_physics_driver & !GFDL replacing lat with "1" ! 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 ( & + call gwdc_run ( & 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, & @@ -2097,7 +2103,7 @@ subroutine GFS_physics_driver & ! enddo call gwdc_post_run ( & - size(Grid%xlon,1), Model%levs, Model%lssav, Model%ldiag3d, Model%dtf, Model%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) @@ -2157,11 +2163,11 @@ subroutine GFS_physics_driver & !----------------------- 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, & + Stateout%gt0, Stateout%gu0, Stateout%gv0, lwe_thickness_of_shallow_convective_precipitation_amount, & kbot, ktop, kcnv, islmsk, Statein%vvl, Model%ncld,& Diag%hpbl, hflx, evap, ud_mf, dt_mf, cnvw, cnvc) - raincs(:) = frain * rain1(:) + raincs(:) = frain * lwe_thickness_of_shallow_convective_precipitation_amount(:) Diag%rainc(:) = Diag%rainc(:) + raincs(:) if (Model%lssav) then Diag%cnvprcp(:) = Diag%cnvprcp(:) + raincs(:) @@ -2179,11 +2185,11 @@ subroutine GFS_physics_driver & Statein%pgr, Statein%phil, clw(:,:,1), & clw(:,:,2), Stateout%gq0(:,:,1), & Stateout%gt0, Stateout%gu0, Stateout%gv0, & - rain1, kbot, ktop, kcnv, islmsk, Grid%area, & + lwe_thickness_of_shallow_convective_precipitation_amount, 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) + call sasasshal_post_run (frain, lwe_thickness_of_shallow_convective_precipitation_amount, cnvc, cnvw, Model, Grid, Diag, Tbd) elseif (Model%imfshalcnv == 0) then ! modified Tiedtke Shallow convecton !----------------------------------- @@ -2355,17 +2361,17 @@ subroutine GFS_physics_driver & ! endif call mstcnv (size(Grid%xlon,1), size(Grid%xlon,1), Model%levs, Model%dtp, Stateout%gt0, Stateout%gq0, & - Statein%prsl,del, Statein%prslk, rain1, & + Statein%prsl,del, Statein%prslk, lwe_thickness_of_moist_convective_adj_precipitation_amount, & Stateout%gq0(1,1,Model%ntcw), rhc, Model%lprnt, ipr) ! if (Model%lprnt) then -! print *,' rain1=',rain1(ipr),' rainc=',rainc(ipr) +! print *,' lwe_thickness_of_moist_convective_adj_precipitation_amount=',lwe_thickness_of_moist_convective_adj_precipitation_amount(ipr),' rainc=',Diag%rainc(ipr) ! print *,' gt0a=',gt0(ipr,:) ! print *,' gq0a=',gq0(ipr,:,1) ! endif - Diag%rainc(:) = Diag%rainc(:) + frain * rain1(:) + Diag%rainc(:) = Diag%rainc(:) + frain * lwe_thickness_of_moist_convective_adj_precipitation_amount(:) if(Model%lssav) then - Diag%cnvprcp(:) = Diag%cnvprcp(:) + rain1(:) * frain + Diag%cnvprcp(:) = Diag%cnvprcp(:) + lwe_thickness_of_moist_convective_adj_precipitation_amount(:) * frain ! update dqdt_v to include moisture tendency due to surface processes ! dqdt_v : instaneous moisture tendency (kg/kg/sec) @@ -2401,7 +2407,7 @@ subroutine GFS_physics_driver & if (Model%ncld == 0) then ! no cloud microphysics 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) + Statein%prsl, del, Statein%prslk, lwe_thickness_of_stratiform_precipitation_amount, clw) elseif (Model%ncld == 1) then ! microphysics with single cloud condensate @@ -2420,7 +2426,7 @@ subroutine GFS_physics_driver & if (Model%do_shoc) then 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, & + Stateout%gt0, lwe_thickness_of_stratiform_precipitation_amount, Diag%sr, rainp, rhc, & psautco_l, prautco_l, Model%evpco, Model%wminco, & Tbd%phy_f3d(1,1,Model%ntot3d-2), Model%lprnt, ipr) else @@ -2433,7 +2439,7 @@ subroutine GFS_physics_driver & 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, & + Stateout%gt0, lwe_thickness_of_stratiform_precipitation_amount, Diag%sr, rainp, rhc, & Model%psautco, Model%prautco, Model%evpco, & Model%wminco, work1, Model%lprnt, ipr) endif @@ -2443,7 +2449,7 @@ subroutine GFS_physics_driver & ! 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 +! write(0,*)' aft precpd lwe_thickness_of_stratiform_precipitation_amount=',lwe_thickness_of_stratiform_precipitation_amount(1:3),' lat=',lat ! endif else ! with pdf clouds ! --------------- @@ -2459,13 +2465,13 @@ subroutine GFS_physics_driver & 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, & + lwe_thickness_of_stratiform_precipitation_amount, Diag%sr, rainp, rhc, & Tbd%phy_f3d(1,1,Model%num_p3d+1), psautco_l, & prautco_l, Model%evpco, Model%wminco, Model%lprnt, ipr) endif ! end of grid-scale precip/microphysics options endif ! end if_num_p3d -! if (Model%lprnt) write(0,*) ' rain1=',rain1(ipr),' rainc=',rainc(ipr),' lat=',lat +! if (Model%lprnt) write(0,*) ' lwe_thickness_of_stratiform_precipitation_amount=',lwe_thickness_of_stratiform_precipitation_amount(ipr),' rainc=',Diag%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 @@ -2549,7 +2555,7 @@ subroutine GFS_physics_driver & Diag%dvsfc, dusfc1, dvsfc1, dusfc1, dvsfc1, & CNV_FICE, CNV_NDROP, CNV_NICE, Stateout%gq0(1,1,1), & Stateout%gq0(1,1,Model%ntcw), & - Stateout%gq0(1,1,Model%ntiw), Stateout%gt0, rain1, & + Stateout%gq0(1,1,Model%ntiw), Stateout%gt0, lwe_thickness_of_stratiform_precipitation_amount, & 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, & @@ -2558,12 +2564,12 @@ subroutine GFS_physics_driver & ! write(1000+Model%me,*)' at latitude = ',lat ! tx1 = 1000.0 -! 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 +! 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,lwe_thickness_of_stratiform_precipitation_amount ! &, 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 (Model%lprnt) write(0,*) ' rain1=',rain1(ipr)*86400.0, -! &' rainc=',rainc(ipr)*86400.0 +! if (Model%lprnt) write(0,*) ' lwe_thickness_of_stratiform_precipitation_amount=',lwe_thickness_of_stratiform_precipitation_amount(ipr)*86400.0, +! &' rainc=',Diag%rainc(ipr)*86400.0 ! &,' cn_prc=',cn_prc(ipr),' cn_snr=',cn_snr(ipr) ! if (Model%lprnt) write(0,*) ' aftlsgq0=',gq0(ipr,:,1),' kdt=',Model%kdt ! if (Model%lprnt) write(0,*)' clw1aft=',gq0(ipr,:,ntiw),' kdt=',Model%kdt @@ -2577,7 +2583,7 @@ subroutine GFS_physics_driver & Stateout%gq0(:,:,Model%ntsnc) = ncps(:,:) endif endif ! end if_ncld -! if (Model%lprnt) write(0,*)' rain1 after ls=',rain1(ipr) +! if (Model%lprnt) write(0,*)' lwe_thickness_of_stratiform_precipitation_amount after ls=',lwe_thickness_of_stratiform_precipitation_amount(ipr) ! if (Model%do_aw) then ! Arakawa-Wu adjustment of large-scale microphysics tendencies: @@ -2611,8 +2617,8 @@ subroutine GFS_physics_driver & enddo enddo enddo -! write(1000+Model%me,*)' rain1=',rain1(4),' temrain1=',temrain1(i)*0.001 - rain1(:) = max(rain1(:) - temrain1(:)*0.001, 0.0_kind_phys) +! write(1000+Model%me,*)' lwe_thickness_of_stratiform_precipitation_amount=',lwe_thickness_of_stratiform_precipitation_amount(4),' temrain1=',temrain1(i)*0.001 + lwe_thickness_of_stratiform_precipitation_amount(:) = max(lwe_thickness_of_stratiform_precipitation_amount(:) - temrain1(:)*0.001, 0.0_kind_phys) endif ! Diag%rain(:) = Diag%rainc(:) + frain * rain1(:) @@ -2620,7 +2626,7 @@ subroutine GFS_physics_driver & 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, & + Diag%rainc,frain,lwe_thickness_of_stratiform_precipitation_amount, Statein%phii, Model%num_p3d, & Sfcprop%tsfc, Diag%sr, Tbd%phy_f3d(:,:,3), & ! input !zhang:Tbd%phy_f3d(:,:,3) comes from gscond_run Diag%rain, domr, domzr, domip, doms, Sfcprop%srflag, & ! output Sfcprop%tprcp) diff --git a/physics/GFS_DCNV_generic.f90 b/physics/GFS_DCNV_generic.f90 index ce92106dc..3136d2dee 100644 --- a/physics/GFS_DCNV_generic.f90 +++ b/physics/GFS_DCNV_generic.f90 @@ -66,7 +66,7 @@ end subroutine GFS_DCNV_generic_post_finalize !! | 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 | lwe_thickness_of_deep_convective_precipitation_amount | deep 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 | diff --git a/physics/GFS_MP_generic_post.f90 b/physics/GFS_MP_generic_post.f90 index 4c3b4e9b4..55ea1801a 100644 --- a/physics/GFS_MP_generic_post.f90 +++ b/physics/GFS_MP_generic_post.f90 @@ -1,5 +1,5 @@ !> \file GFS_MP_generic_post.f90 -!! This file contains the subroutines that calculates physics/diagnotics variables +!! This file contains the subroutines that calculates physics/diagnotics variables !! after calling microphysics scheme: !! - totprcp: precipitation rate at surface !! - dt3dt(:,:,6): large scale condensate heating rate at model layers @@ -7,13 +7,13 @@ !! - pwat: column integrated precipitable water module GFS_MP_generic_post - contains + contains -!> \defgroup GFS_MP_generic_post GFS MP generic post +!> \defgroup GFS_MP_generic_post GFS MP generic post !! @{ !! \section arg_table_GFS_MP_generic_post_init Argument Table !! - subroutine GFS_MP_generic_post_init + subroutine GFS_MP_generic_post_init end subroutine GFS_MP_generic_post_init @@ -27,7 +27,7 @@ end subroutine GFS_MP_generic_post_init !! | del | air_pressure_difference_between_midlayers | air pressure difference between midlayers | Pa | 2 | real | kind_phys | in | F | !! | lssav | flag_diagnostics | logical flag for model physics diagnostics | flag | 0 | logical | | in | F | !! | ldiag3d | flag_diagnostics_3D | logical flag for 3D diagnostics | flag | 0 | logical | | in | F | -!! | rain | timestep_total_rainfall_amount | total precipitation at surface (APCP) | m | 1 | real | kind_phys | in | F | +!! | rain | lwe_thickness_of_precipitation_amount_on_dynamics_timestep | total rainfall amount on dynamics timestep | 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 | !! | ntcw | index_for_liquid_cloud_condensate | cloud condensate index in tracer array(3) | index | 0 | integer | | in | F | !! | ncld | number_of_hydrometeors | number_of_hydrometeors(1 for Z-C) | count | 0 | integer | | in | F | @@ -36,7 +36,7 @@ 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 | accumulated_total_rainfall_amount | accumulated total_rainfall_amount | m | 1 | real | kind_phys | inout | F | +!! | totprcp | accumulated_lwe_thickness_of_precipitation_amount | accumulated total precipitation 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 | @@ -45,13 +45,13 @@ 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 - + ! use machine, only: kind_phys use physcons, only: con_g implicit none -! +! ! declare variables. ! integer,intent(in) :: im, ix, levs, ntcw, ncld @@ -62,7 +62,7 @@ subroutine GFS_MP_generic_post_run(im,ix,levs,dtf,del, & real(kind=kind_phys),dimension(im), intent(in) :: rain real(kind=kind_phys),dimension(ix,levs), intent(in) :: t,q, & cwm, del, save_t, & - save_qv + save_qv real(kind=kind_phys),dimension(im), intent(inout) :: totprcp real(kind=kind_phys),dimension(im), intent(out) :: pwat real(kind=kind_phys),dimension(ix,levs), intent(inout) :: & @@ -74,7 +74,7 @@ subroutine GFS_MP_generic_post_run(im,ix,levs,dtf,del, & do i = 1, im totprcp(i) = totprcp(i) + rain(i) enddo - + if (ldiag3d) then do i = 1, im do k = 1,levs @@ -99,13 +99,13 @@ subroutine GFS_MP_generic_post_run(im,ix,levs,dtf,del, & !if (ncld > 0) then !do ic = ntcw, ntcw+ncld-1 ! work1(i) = work1(i) + Stateout%gq0(i,k,ic) - work1(i) = work1(i) + cwm(i,k) + work1(i) = work1(i) + cwm(i,k) !enddo !endif pwat(i) = pwat(i) + del(i,k)*(q(i,k)+work1(i)) enddo pwat(i) = pwat(i) * onebg - + enddo !deallocate (clw) @@ -118,4 +118,3 @@ subroutine GFS_MP_generic_post_finalize end subroutine GFS_MP_generic_post_finalize !! @} end module GFS_MP_generic_post - diff --git a/physics/GFS_calpreciptype.f90 b/physics/GFS_calpreciptype.f90 index 0310eff3d..196e4fc42 100644 --- a/physics/GFS_calpreciptype.f90 +++ b/physics/GFS_calpreciptype.f90 @@ -11,35 +11,35 @@ subroutine GFS_calpreciptype_init end subroutine GFS_calpreciptype_init !> \section arg_table_GFS_calpreciptype_run Argument Table -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|---------------------------------------------------|-------------------------------------------------------|---------|------|---------|-----------|--------|----------| -!! | kdt | index_of_time_step | current time step index | index | 0 | integer | | in | F | -!! | nrcm | array_dimension_of_random_number | second dimension of random number array | count | 0 | integer | | in | F | -!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | -!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | | in | F | -!! | lm | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | -!! | lp1 | vertical_interface_dimension | vertical interface dimension | index | 0 | integer | | in | F | -!! | randomno | random_number_array | random number array | none | 2 | real | | in | F | -!! | cal_pre | flag_for_precipitation_type_algorithm | flag controls precip type algorithm | flag | 0 | logical | | in | F | -!! | gt0 | air_temperature_updated_by_physics | layer mean air temperature | K | 2 | real | kind_phys | in | F | -!! | gq0 | water_vapor_specific_humidity_updated_by_physics | water vapor specific humidity | kg kg-1 | 2 | real | kind_phys | in | F | -!! | prsl | air_pressure | layer mean pressure | Pa | 2 | real | kind_phys | in | F | -!! | 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 | -!! | 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 | -!! | sr | ratio_of_snowfall_to_rainfall | ratio of snowfall to rainfall | frac | 1 | real | kind_phys | in | F | -!! | phy_f3d | air_temperature_at_previous_time_step | air temperature at previous time step | K | 2 | real | kind_phys | in | F | -!! | prec | timestep_total_rainfall_amount | total rain | m | 1 | real | kind_phys | out | F | -!! | domr | dominant_rain_type | dominant rain type | none | 1 | real | kind_phys | out | F | -!! | domzr | dominant_freezing_rain_type | dominant freezing rain type | none | 1 | real | kind_phys | out | F | -!! | domip | dominant_sleet_type | dominant sleet type | none | 1 | real | kind_phys | out | F | -!! | doms | dominant_snow_type | dominant snow type | none | 1 | real | kind_phys | out | F | -!! | srflag | flag_for_precipitation_type | snow(1)/rain(0) flag for precipitation | flag | 1 | real | kind_phys | out | F | -!! | tprcp | precipitation_amount_in_one_dynamics_time_step | precipitation amount in one dynamics time step | m | 1 | real | kind_phys | out | F | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|------------------------------------------------------------------------|------------------------------------------------------------|---------|------|---------|-----------|--------|----------| +!! | kdt | index_of_time_step | current time step index | index | 0 | integer | | in | F | +!! | nrcm | array_dimension_of_random_number | second dimension of random number array | count | 0 | integer | | in | F | +!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | +!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | | in | F | +!! | lm | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | +!! | lp1 | vertical_interface_dimension | vertical interface dimension | index | 0 | integer | | in | F | +!! | randomno | random_number_array | random number array | none | 2 | real | | in | F | +!! | cal_pre | flag_for_precipitation_type_algorithm | flag controls precip type algorithm | flag | 0 | logical | | in | F | +!! | gt0 | air_temperature_updated_by_physics | layer mean air temperature | K | 2 | real | kind_phys | in | F | +!! | gq0 | water_vapor_specific_humidity_updated_by_physics | water vapor specific humidity | kg kg-1 | 2 | real | kind_phys | in | F | +!! | prsl | air_pressure | layer mean pressure | Pa | 2 | real | kind_phys | in | F | +!! | prsi | air_pressure_at_interface | pressure at layer interface | Pa | 2 | real | kind_phys | in | F | +!! | rainc | lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep | convective rainfall amount on dynamics timestep | 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 | lwe_thickness_of_stratiform_precipitation_amount | stratiform 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 | +!! | sr | ratio_of_snowfall_to_rainfall | ratio of snowfall to rainfall | frac | 1 | real | kind_phys | in | F | +!! | phy_f3d | air_temperature_at_previous_time_step | air temperature at previous time step | K | 2 | real | kind_phys | in | F | +!! | prec | lwe_thickness_of_precipitation_amount_on_dynamics_timestep | total rainfall amount on dynamics timestep | m | 1 | real | kind_phys | out | F | +!! | domr | dominant_rain_type | dominant rain type | none | 1 | real | kind_phys | out | F | +!! | domzr | dominant_freezing_rain_type | dominant freezing rain type | none | 1 | real | kind_phys | out | F | +!! | domip | dominant_sleet_type | dominant sleet type | none | 1 | real | kind_phys | out | F | +!! | doms | dominant_snow_type | dominant snow type | none | 1 | real | kind_phys | out | F | +!! | srflag | flag_for_precipitation_type | snow(1)/rain(0) flag for precipitation | flag | 1 | real | kind_phys | out | F | +!! | tprcp | nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep | nonnegative precipitation amount in one dynamics time step | m | 1 | real | kind_phys | out | F | !! subroutine GFS_calpreciptype_run(kdt,nrcm,im,ix,lm,lp1,randomno, & cal_pre, & diff --git a/physics/cnvc90.f b/physics/cnvc90.f index fe580b8dc..eadc45aa5 100644 --- a/physics/cnvc90.f +++ b/physics/cnvc90.f @@ -10,22 +10,22 @@ end subroutine cnvc90_init !! \section arg_table_cnvc90_run Argument Table -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|---------------------------------------------------------|---------------------------------------------------------|-------|------|---------|-----------|--------|----------| -!! | clstp | convective_cloud_switch | switch for saving convective clouds | none | 0 | real | kind_phys | in | F | -!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | default | in | F | -!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | default | in | F | -!! | rn | timestep_convective_rainfall_amount | convective rainfall amount | m | 1 | real | kind_phys | in | F | -!! | kbot | vertical_index_at_cloud_base | vertical index at cloud base | index | 1 | integer | default | in | F | -!! | ktop | vertical_index_at_cloud_top | vertical index at cloud top | index | 1 | integer | default | in | F | -!! | km | vertical_dimension | number of vertical layers | index | 0 | integer | default | in | F | -!! | prsi | air_pressure_at_interface | interface pressure | Pa | 2 | real | kind_phys | in | F | -!! | 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 | 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 | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-----------------------------------------------------------------------|---------------------------------------------------------|-------|------|---------|-----------|--------|----------| +!! | clstp | convective_cloud_switch | switch for saving convective clouds | none | 0 | real | kind_phys | in | F | +!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | default | in | F | +!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | default | in | F | +!! | rn | lwe_thickness_of_convective_precipitation_amount_on_dynamics_timestep | convective rainfall amount on dynamics timestep | m | 1 | real | kind_phys | in | F | +!! | kbot | vertical_index_at_cloud_base | vertical index at cloud base | index | 1 | integer | default | in | F | +!! | ktop | vertical_index_at_cloud_top | vertical index at cloud top | index | 1 | integer | default | in | F | +!! | km | vertical_dimension | number of vertical layers | index | 0 | integer | default | in | F | +!! | prsi | air_pressure_at_interface | interface pressure | Pa | 2 | real | kind_phys | in | F | +!! | acv | accumulated_lwe_thickness_of_convective_precipitation_amount_cnvc90 | accumulated convective rainfall amount for cnvc90 only | 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 | 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 | !! SUBROUTINE cnvc90_run(CLSTP,IM,IX,RN,KBOT,KTOP,KM,PRSI, 1 ACV,ACVB,ACVT,CV,CVB,CVT) @@ -125,4 +125,3 @@ end subroutine cnvc90_finalize end module cnvc90 - diff --git a/physics/mfdeepcnv.f b/physics/mfdeepcnv.f index 692862f3d..f28221a4c 100644 --- a/physics/mfdeepcnv.f +++ b/physics/mfdeepcnv.f @@ -33,36 +33,36 @@ end subroutine sasasdeep_finalize !> \brief Brief description of the subroutine !! !! \section arg_table_sasasdeep_run Argument Table -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|-----------------------------------------------------------|-------------------------------------------------|---------|------|---------|-----------|--------|----------| -!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | -!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | | in | F | -!! | km | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | -!! | delt | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F | -!! | delp | air_pressure_difference_between_midlayers | pres(k) - pres(k+1) | Pa | 2 | real | kind_phys | in | F | -!! | prslp | air_pressure | mean layer pressure | Pa | 2 | real | kind_phys | in | F | -!! | psp | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | -!! | phil | geopotential | layer geopotential | m2 s-2 | 2 | real | kind_phys | in | F | -!! | ql1 | cloud_ice_specific_humidity | cloud ice specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | ql2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | q1 | water_vapor_specific_humidity_updated_by_physics | updated vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | t1 | air_temperature_updated_by_physics | updated temperature | K | 2 | real | kind_phys | inout | F | -!! | u1 | x_wind_updated_by_physics | updated x-direction wind | m s-1 | 2 | real | kind_phys | inout | F | -!! | v1 | y_wind_updated_by_physics | updated y-direction wind | m s-1 | 2 | real | kind_phys | inout | F | -!! | cldwrk | cloud_work_function | cloud work function | m2 s-2 | 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 | -!! | kbot | vertical_index_at_cloud_base | index for cloud base | index | 1 | integer | | out | F | -!! | ktop | vertical_index_at_cloud_top | index for cloud top | index | 1 | integer | | out | F | -!! | kcnv | flag_deep_convection | deep convection: 0=no, 1=yes | flag | 1 | integer | | out | F | -!! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | -!! | garea | cell_area | grid cell area | m2 | 1 | real | kind_phys | in | F | -!! | dot | omega | layer mean vertical velocity | Pa s-1 | 2 | real | kind_phys | in | F | -!! | ncloud | number_of_hydrometeors | number of hydrometeors | count | 0 | integer | | in | F | -!! | ud_mf | instantaneous_atmosphere_updraft_convective_mass_flux | (updraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | -!! | dd_mf | instantaneous_atmosphere_downdraft_convective_mass_flux | (downdraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | -!! | dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | -!! | cnvw | convective_cloud_water_specific_humidity | convective cloud water | kg kg-1 | 2 | real | kind_phys | out | F | -!! | cnvc | convective_cloud_cover | convective cloud cover | frac | 2 | real | kind_phys | out | F | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-----------------------------------------------------------|-----------------------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | +!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | | in | F | +!! | km | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | +!! | delt | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F | +!! | delp | air_pressure_difference_between_midlayers | pres(k) - pres(k+1) | Pa | 2 | real | kind_phys | in | F | +!! | prslp | air_pressure | mean layer pressure | Pa | 2 | real | kind_phys | in | F | +!! | psp | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | +!! | phil | geopotential | layer geopotential | m2 s-2 | 2 | real | kind_phys | in | F | +!! | ql1 | cloud_ice_specific_humidity | cloud ice specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | ql2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | q1 | water_vapor_specific_humidity_updated_by_physics | updated vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | t1 | air_temperature_updated_by_physics | updated temperature | K | 2 | real | kind_phys | inout | F | +!! | u1 | x_wind_updated_by_physics | updated x-direction wind | m s-1 | 2 | real | kind_phys | inout | F | +!! | v1 | y_wind_updated_by_physics | updated y-direction wind | m s-1 | 2 | real | kind_phys | inout | F | +!! | cldwrk | cloud_work_function | cloud work function | m2 s-2 | 1 | real | kind_phys | out | F | +!! | rn | lwe_thickness_of_deep_convective_precipitation_amount | deep convective rainfall amount on physics timestep | m | 1 | real | kind_phys | out | F | +!! | kbot | vertical_index_at_cloud_base | index for cloud base | index | 1 | integer | | out | F | +!! | ktop | vertical_index_at_cloud_top | index for cloud top | index | 1 | integer | | out | F | +!! | kcnv | flag_deep_convection | deep convection: 0=no, 1=yes | flag | 1 | integer | | out | F | +!! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!! | garea | cell_area | grid cell area | m2 | 1 | real | kind_phys | in | F | +!! | dot | omega | layer mean vertical velocity | Pa s-1 | 2 | real | kind_phys | in | F | +!! | ncloud | number_of_hydrometeors | number of hydrometeors | count | 0 | integer | | in | F | +!! | ud_mf | instantaneous_atmosphere_updraft_convective_mass_flux | (updraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | dd_mf | instantaneous_atmosphere_downdraft_convective_mass_flux | (downdraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | cnvw | convective_cloud_water_specific_humidity | convective cloud water | kg kg-1 | 2 | real | kind_phys | out | F | +!! | cnvc | convective_cloud_cover | convective cloud cover | frac | 2 | real | kind_phys | out | F | !! !! \section general General Algorithm !! \section detailed Detailed Algorithm diff --git a/physics/mfshalcnv.f b/physics/mfshalcnv.f index a1387bd32..db7154927 100644 --- a/physics/mfshalcnv.f +++ b/physics/mfshalcnv.f @@ -20,35 +20,35 @@ end subroutine sasasshal_init !> \brief Brief description of the subroutine !! !! \section arg_table_sasasshal_run Argument Table -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|-----------------------------------------------------------|-------------------------------------------------|---------|------|---------|-----------|--------|----------| -!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | -!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | | in | F | -!! | km | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | -!! | delt | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F | -!! | delp | air_pressure_difference_between_midlayers | pres(k) - pres(k+1) | Pa | 2 | real | kind_phys | in | F | -!! | prslp | air_pressure | mean layer pressure | Pa | 2 | real | kind_phys | in | F | -!! | psp | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | -!! | phil | geopotential | layer geopotential | m2 s-2 | 2 | real | kind_phys | in | F | -!! | ql1 | cloud_ice_specific_humidity | cloud ice specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | ql2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | q1 | water_vapor_specific_humidity_updated_by_physics | updated vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | -!! | t1 | air_temperature_updated_by_physics | updated temperature | K | 2 | real | kind_phys | inout | F | -!! | u1 | x_wind_updated_by_physics | updated x-direction wind | m s-1 | 2 | real | kind_phys | inout | F | -!! | v1 | y_wind_updated_by_physics | updated y-direction wind | m s-1 | 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 | -!! | kbot | vertical_index_at_cloud_base | index at cloud base | index | 1 | integer | | out | F | -!! | ktop | vertical_index_at_cloud_top | index at cloud top | index | 1 | integer | | out | F | -!! | kcnv | flag_deep_convection | deep convection: 0=no, 1=yes | flag | 1 | integer | | out | F | -!! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | -!! | garea | cell_area | grid cell area | m2 | 1 | real | kind_phys | in | F | -!! | dot | omega | layer mean vertical velocity | Pa s-1 | 2 | real | kind_phys | in | F | -!! | ncloud | number_of_hydrometeors | number of hydrometeors | count | 0 | integer | | in | F | -!! | hpbl | atmosphere_boundary_layer_thickness | PBL top height | m | 1 | real | kind_phys | in | F | -!! | ud_mf | instantaneous_atmosphere_updraft_convective_mass_flux | (updraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | -!! | dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | 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 | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|-----------------------------------------------------------|--------------------------------------------------------|---------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | +!! | ix | horizontal_dimension | horizontal dimension | count | 0 | integer | | in | F | +!! | km | vertical_dimension | vertical layer dimension | index | 0 | integer | | in | F | +!! | delt | time_step_for_physics | physics time step | s | 0 | real | kind_phys | in | F | +!! | delp | air_pressure_difference_between_midlayers | pres(k) - pres(k+1) | Pa | 2 | real | kind_phys | in | F | +!! | prslp | air_pressure | mean layer pressure | Pa | 2 | real | kind_phys | in | F | +!! | psp | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | +!! | phil | geopotential | layer geopotential | m2 s-2 | 2 | real | kind_phys | in | F | +!! | ql1 | cloud_ice_specific_humidity | cloud ice specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | ql2 | cloud_liquid_water_specific_humidity | cloud water specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | q1 | water_vapor_specific_humidity_updated_by_physics | updated vapor specific humidity | kg kg-1 | 2 | real | kind_phys | inout | F | +!! | t1 | air_temperature_updated_by_physics | updated temperature | K | 2 | real | kind_phys | inout | F | +!! | u1 | x_wind_updated_by_physics | updated x-direction wind | m s-1 | 2 | real | kind_phys | inout | F | +!! | v1 | y_wind_updated_by_physics | updated y-direction wind | m s-1 | 2 | real | kind_phys | inout | F | +!! | rn | lwe_thickness_of_shallow_convective_precipitation_amount | shallow convective rainfall amount on physics timestep | m | 1 | real | kind_phys | out | F | +!! | kbot | vertical_index_at_cloud_base | index at cloud base | index | 1 | integer | | out | F | +!! | ktop | vertical_index_at_cloud_top | index at cloud top | index | 1 | integer | | out | F | +!! | kcnv | flag_deep_convection | deep convection: 0=no, 1=yes | flag | 1 | integer | | out | F | +!! | islimsk | sea_land_ice_mask | landmask: sea/land/ice=0/1/2 | flag | 1 | integer | | in | F | +!! | garea | cell_area | grid cell area | m2 | 1 | real | kind_phys | in | F | +!! | dot | omega | layer mean vertical velocity | Pa s-1 | 2 | real | kind_phys | in | F | +!! | ncloud | number_of_hydrometeors | number of hydrometeors | count | 0 | integer | | in | F | +!! | hpbl | atmosphere_boundary_layer_thickness | PBL top height | m | 1 | real | kind_phys | in | F | +!! | ud_mf | instantaneous_atmosphere_updraft_convective_mass_flux | (updraft mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | F | +!! | dt_mf | instantaneous_atmosphere_detrainment_convective_mass_flux | (detrainment mass flux) * delt | kg m-2 | 2 | real | kind_phys | out | 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 | !! !! \section general General Algorithm !! \section detailed Detailed Algorithm @@ -1512,16 +1512,16 @@ module sasas_shal_post !> \brief Brief description of the subroutine !! !! \section arg_table_sasasshal_post_run Argument Table -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|-------------------------------------------------|----------------------------------------------------------------------|---------|------|-------------------------------|-----------|--------|----------| -!! | 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 | -!! | 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_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 | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|----------------------------------------------------------|----------------------------------------------------------------------|---------|------|-------------------------------|-----------|--------|----------| +!! | frain | dynamics_to_physics_timestep_ratio | ratio of dynamics timestep to physics timestep | none | 0 | real | kind_phys | in | F | +!! | rain1 | lwe_thickness_of_shallow_convective_precipitation_amount | shallow 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_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) @@ -1545,7 +1545,7 @@ subroutine sasasshal_post_run (frain, rain1, cnvc, cnvw, Model, & integer :: num2, num3 raincs(:) = frain * rain1(:) - Diag%rainc(:) = DIag%rainc(:) + raincs(:) + Diag%rainc(:) = Diag%rainc(:) + raincs(:) if (Model%lssav) then Diag%cnvprcp(:) = Diag%cnvprcp(:) + raincs(:) endif diff --git a/physics/precpd.f b/physics/precpd.f index 439de58b2..d7fc8baff 100644 --- a/physics/precpd.f +++ b/physics/precpd.f @@ -34,7 +34,7 @@ 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 | lwe_thickness_of_stratiform_precipitation_amount | stratiform 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 | @@ -202,7 +202,7 @@ subroutine precpd_run (im,ix,km,dt,del,prsl,q,cwm,t,rn,sr & wk2(i) = 1.0-wk1(i) psautco_l(i) = psautco(1)*wk1(i) + psautco(2)*wk2(i) prautco_l(i) = prautco(1)*wk1(i) + prautco(2)*wk2(i) - enddo + enddo !-----------------------preliminaries --------------------------------- ! ! do k=1,km diff --git a/physics/sfc_drv.f b/physics/sfc_drv.f index 22f796e2f..54136c7a7 100644 --- a/physics/sfc_drv.f +++ b/physics/sfc_drv.f @@ -291,7 +291,7 @@ end subroutine lsm_noah_finalize !!| weasd | water_equivalent_accumulated_snow_depth | water equivalent accumulated snow depth | mm | 1 | real | kind_phys | inout | F | !!| snwdph | surface_snow_thickness_water_equivalent | water equivalent snow depth over land | mm | 1 | real | kind_phys | inout | F | !!| tskin | surface_skin_temperature | surface skin temperature | K | 1 | real | kind_phys | inout | F | -!!| tprcp | precipitation_amount_in_one_dynamics_time_step | total precipitation in each time step | m | 1 | real | kind_phys | inout | F | +!!| tprcp | nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep | nonnegative precipitation amount in one dynamics time step | m | 1 | real | kind_phys | inout | F | !!| srflag | flag_for_precipitation_type | flag for snow or rain precipitation | flag | 1 | real | kind_phys | inout | F | !!| smc | volume_fraction_of_soil_moisture | volumetric fraction of soil moisture | frac | 2 | real | kind_phys | inout | F | !!| stc | soil_temperature | soil temperature | K | 2 | real | kind_phys | inout | F | @@ -305,7 +305,7 @@ end subroutine lsm_noah_finalize !!| gflux | upward_heat_flux_in_soil | upward soil heat flux | W m-2 | 1 | real | kind_phys | out | F | !!| drain | subsurface_runoff_flux | subsurface runoff flux | g m-2 s-1 | 1 | real | kind_phys | out | F | !!| evap | kinematic_surface_upward_latent_heat_flux | surface upward evaporation flux | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | -!!| hflx | kinematic_surface_upward_sensible_heat_flux | surface upward sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | +!!| hflx | kinematic_surface_upward_sensible_heat_flux | surface upward sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | !!| ep | surface_upward_potential_latent_heat_flux | surface upward potential latent heat flux | W m-2 | 1 | real | kind_phys | out | F | !!| runoff | surface_runoff_flux | surface runoff flux | g m-2 s-1 | 1 | real | kind_phys | out | F | !!| cmm | surface_drag_wind_speed_for_momentum_in_air | surf mom exch coef time mean surf wind | m s-1 | 1 | real | kind_phys | out | F | diff --git a/physics/sfc_nst.f b/physics/sfc_nst.f index 0c2e8931c..fd133e430 100644 --- a/physics/sfc_nst.f +++ b/physics/sfc_nst.f @@ -25,7 +25,7 @@ module sfc_nst !!Prediction for the skin layer is made using the Thermal Skin-layer Model (TSM), while prediction for the thermocline is based on the Diurnal Thermocline Model (DTM), both with an origin on Fairall et al. (1996) \cite Fairall_all_1996. Atmospheric inputs include short- and long-wave radiation, surface pressure, surface layer winds, temperature and specific humidity, and rainfall. !! !! \htmlonly -!! \endhtmlonly +!! \endhtmlonly !! @image html NSST.png "Figure 1: NSST profile." !! !! \section intraphysics Intraphysics Communication @@ -76,7 +76,7 @@ end subroutine sfc_nst_finalize !! | sfcemis | surface_longwave_emissivity | surface longwave emissivity | frac | 1 | real | kind_phys | in | F | !! | dlwflx | surface_downwelling_longwave_flux_absorbed_by_ground | total sky sfc downward lw flux absorbed by the ocean | W m-2 | 1 | real | kind_phys | in | F | !! | sfcnsw | surface_net_downwelling_shortwave_flux | total sky sfc net sw flx into ocean | W m-2 | 1 | real | kind_phys | in | F | -!! | rain | precipitation_amount_in_one_dynamics_time_step | precipitation amount in one dynamics time step | m | 1 | real | kind_phys | in | F | +!! | rain | nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep | nonnegative precipitation amount on dyn time step | m | 1 | real | kind_phys | in | F | !! | timestep | time_step_for_dynamics | timestep interval | s | 0 | real | kind_phys | in | F | !! | kdt | index_of_time_step | current time step index | index | 0 | integer | | in | F | !! | solhr | forecast_hour | fcst hour at the end of prev time step | h | 0 | real | kind_phys | in | F | @@ -120,7 +120,7 @@ end subroutine sfc_nst_finalize !! !! This is the main subroutine for the NSST scheme, and it calls the DTM and TSM. !! -!! \section NSST_detailed_algorithm +!! \section NSST_detailed_algorithm !! !! Under construction !! diff --git a/physics/sfc_sice.f b/physics/sfc_sice.f index a1e140fde..077594b55 100644 --- a/physics/sfc_sice.f +++ b/physics/sfc_sice.f @@ -24,48 +24,48 @@ subroutine sfc_sice_finalize end subroutine sfc_sice_finalize !! !! \section arg_table_sfc_sice_run Arguments -!! | local var name | longname | description | units | rank | type | kind | intent | optional | -!! |----------------|-------------------------------------------------------|----------------------------------------------------------|---------------|------|---------|-----------|--------|----------| -!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | -!! | km | soil_vertical_dimension | vertical loop extent for soil levels, start at 1 | index | 0 | integer | | in | F | -!! | ps | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | -!! | u1 | x_wind_at_lowest_model_layer | u component of surface layer wind | m s-1 | 1 | real | kind_phys | in | F | -!! | v1 | y_wind_at_lowest_model_layer | v 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 | -!! | delt | time_step_for_dynamics | time step | s | 0 | real | kind_phys | in | F | -!! | sfcemis | surface_longwave_emissivity | sfc lw emissivity | frac | 1 | real | kind_phys | in | F | -!! | dlwflx | surface_downwelling_longwave_flux_absorbed_by_ground | total sky surface downward longwave flux absorbed by the ground | W m-2 | 1 | real | kind_phys | in | F | -!! | sfcnsw | surface_net_downwelling_shortwave_flux | total sky sfc netsw flx into ground | W m-2 | 1 | real | kind_phys | in | F | -!! | sfcdsw | surface_downwelling_shortwave_flux | total sky sfc downward sw flux | W m-2 | 1 | real | kind_phys | in | F | -!! | srflag | flag_for_precipitation_type | snow/rain flag for precipitation | flag | 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 | -!! | prslki | ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer | Exner function ratio at 1st layer | ratio | 1 | real | kind_phys | in | F | -!! | 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 | 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 | -!! | hice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | inout | F | -!! | fice | sea_ice_concentration | sea-ice concentration [0,1] | frac | 1 | real | kind_phys | inout | F | -!! | tice | sea_ice_temperature | sea-ice surface temperature | K | 1 | real | kind_phys | inout | F | -!! | weasd | water_equivalent_accumulated_snow_depth | water equivalent accumulated snow depth | mm | 1 | real | kind_phys | inout | F | -!! | tskin | surface_skin_temperature | ground surface skin temperature | K | 1 | real | kind_phys | inout | F | -!! | tprcp | precipitation_amount_in_one_dynamics_time_step | total precipitation | m | 1 | real | kind_phys | inout | F | -!! | stc | soil_temperature | soil temp | K | 2 | real | kind_phys | inout | F | -!! | ep | surface_upward_potential_latent_heat_flux | potential evaporation | W m-2 | 1 | real | kind_phys | inout | F | -!! | snwdph | surface_snow_thickness_water_equivalent | water equivalent snow depth | mm | 1 | real | kind_phys | out | F | -!! | qsurf | surface_specific_humidity | sfc air saturation specific humidity | kg kg-1 | 1 | real | kind_phys | out | F | -!! | snowmt | surface_snow_melt | snow melt during timestep | m | 1 | real | kind_phys | out | F | -!! | gflux | upward_heat_flux_in_soil | soil heat flux | W m-2 | 1 | real | kind_phys | out | F | -!! | cmm | surface_drag_wind_speed_for_momentum_in_air | surf mom exch coef time mean surf wind | m s-1 | 1 | real | kind_phys | out | F | -!! | chh | surface_drag_mass_flux_for_heat_and_moisture_in_air | surf h&m exch coef time surf wind & density | kg m-2 s-1 | 1 | real | kind_phys | out | F | -!! | evap | kinematic_surface_upward_latent_heat_flux | evaperative latent heat flux | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | -!! | hflx | kinematic_surface_upward_sensible_heat_flux | kinematic sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | +!! | local var name | longname | description | units | rank | type | kind | intent | optional | +!! |----------------|------------------------------------------------------------------------------|-----------------------------------------------------------------|---------------|------|---------|-----------|--------|----------| +!! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | +!! | km | soil_vertical_dimension | vertical loop extent for soil levels, start at 1 | index | 0 | integer | | in | F | +!! | ps | surface_air_pressure | surface pressure | Pa | 1 | real | kind_phys | in | F | +!! | u1 | x_wind_at_lowest_model_layer | u component of surface layer wind | m s-1 | 1 | real | kind_phys | in | F | +!! | v1 | y_wind_at_lowest_model_layer | v 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 | +!! | delt | time_step_for_dynamics | time step | s | 0 | real | kind_phys | in | F | +!! | sfcemis | surface_longwave_emissivity | sfc lw emissivity | frac | 1 | real | kind_phys | in | F | +!! | dlwflx | surface_downwelling_longwave_flux_absorbed_by_ground | total sky surface downward longwave flux absorbed by the ground | W m-2 | 1 | real | kind_phys | in | F | +!! | sfcnsw | surface_net_downwelling_shortwave_flux | total sky sfc netsw flx into ground | W m-2 | 1 | real | kind_phys | in | F | +!! | sfcdsw | surface_downwelling_shortwave_flux | total sky sfc downward sw flux | W m-2 | 1 | real | kind_phys | in | F | +!! | srflag | flag_for_precipitation_type | snow/rain flag for precipitation | flag | 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 | +!! | prslki | ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer | Exner function ratio at 1st layer | ratio | 1 | real | kind_phys | in | F | +!! | 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 | 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 | +!! | hice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | inout | F | +!! | fice | sea_ice_concentration | sea-ice concentration [0,1] | frac | 1 | real | kind_phys | inout | F | +!! | tice | sea_ice_temperature | sea-ice surface temperature | K | 1 | real | kind_phys | inout | F | +!! | weasd | water_equivalent_accumulated_snow_depth | water equivalent accumulated snow depth | mm | 1 | real | kind_phys | inout | F | +!! | tskin | surface_skin_temperature | ground surface skin temperature | K | 1 | real | kind_phys | inout | F | +!! | tprcp | nonnegative_lwe_thickness_of_precipitation_amount_on_dynamics_timestep | nonnegative precipitation amount in one dynamics time step | m | 1 | real | kind_phys | inout | F | +!! | stc | soil_temperature | soil temp | K | 2 | real | kind_phys | inout | F | +!! | ep | surface_upward_potential_latent_heat_flux | potential evaporation | W m-2 | 1 | real | kind_phys | inout | F | +!! | snwdph | surface_snow_thickness_water_equivalent | water equivalent snow depth | mm | 1 | real | kind_phys | out | F | +!! | qsurf | surface_specific_humidity | sfc air saturation specific humidity | kg kg-1 | 1 | real | kind_phys | out | F | +!! | snowmt | surface_snow_melt | snow melt during timestep | m | 1 | real | kind_phys | out | F | +!! | gflux | upward_heat_flux_in_soil | soil heat flux | W m-2 | 1 | real | kind_phys | out | F | +!! | cmm | surface_drag_wind_speed_for_momentum_in_air | surf mom exch coef time mean surf wind | m s-1 | 1 | real | kind_phys | out | F | +!! | chh | surface_drag_mass_flux_for_heat_and_moisture_in_air | surf h&m exch coef time surf wind & density | kg m-2 s-1 | 1 | real | kind_phys | out | F | +!! | evap | kinematic_surface_upward_latent_heat_flux | evaporative latent heat flux | kg kg-1 m s-1 | 1 | real | kind_phys | out | F | +!! | hflx | kinematic_surface_upward_sensible_heat_flux | kinematic sensible heat flux | K m s-1 | 1 | real | kind_phys | out | F | !! !! \section general General Algorithm !! \section detailed Detailed Algorithm @@ -718,7 +718,7 @@ end subroutine ice3lay ! =========================== ! !................................... - end subroutine sfc_sice_run + end subroutine sfc_sice_run !----------------------------------- end module sfc_sice @@ -728,14 +728,14 @@ module sfc_sice_pre contains !! -!> \brief This subroutine is empty since there are no procedures needed +!> \brief This subroutine is empty since there are no procedures needed !! \section arg_table_sfc_sice_pre_init Argument Table !! subroutine sfc_sice_pre_init end subroutine sfc_sice_pre_init !! -!> \brief This subroutine is empty since there are no procedures needed +!> \brief This subroutine is empty since there are no procedures needed !! \section arg_table_sfc_sice_pre_finalize Argument Table !! subroutine sfc_sice_pre_finalize @@ -748,29 +748,29 @@ end subroutine sfc_sice_pre_finalize !! |----------------|-------------------------------------------------------|----------------------------------------------------------|---------------|------|---------|-----------|--------|----------| !! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | !! | fice | sea_ice_concentration | sea-ice concentration [0,1] | frac | 1 | real | kind_phys | in | F | -!! | hice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | in | F | +!! | hice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | in | F | !! | tisfc | sea_ice_temperature | sea-ice surface temperature | K | 1 | real | kind_phys | in | F | !! | prsik | exner_function_at_lowest_model_interface | Exner function at lowest model interface | none | 1 | real | kind_phys | in | F | !! | prslk | dimensionless_exner_function_at_lowest_model_layer | dimensionless Exner function at lowest model layer | none | 1 | real | kind_phys | in | F | !! | cice | sea_ice_concentration | sea-ice concentration [0,1] | frac | 1 | real | kind_phys | out | F | -!! | zice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | out | F | +!! | zice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | out | F | !! | tice | sea_ice_temperature | sea-ice surface temperature | K | 1 | real | kind_phys | out | F | !! | work3 | ratio_of_exner_function_between_midlayer_and_interface_at_lowest_model_layer | Exner function ratio at 1st layer | ratio | 1 | real | kind_phys | out | F | !! !! @{ subroutine sfc_sice_pre_run(im, fice, hice, tisfc , prsik, prslk, & & cice, zice, tice, work3) - + use machine, only : kind_phys implicit none -! --- inputs +! --- inputs integer :: im real(kind=kind_phys), dimension(im), intent(in) :: fice, hice, & & tisfc, prsik, prslk - -! --- input/output + +! --- input/output real(kind=kind_phys), dimension(im), intent(out) :: cice, zice, & & tice, work3 @@ -795,14 +795,14 @@ module sfc_sice_post contains !! -!> \brief This subroutine is empty since there are no procedures needed +!> \brief This subroutine is empty since there are no procedures needed !! \section arg_table_sfc_sice_post_init Argument Table !! subroutine sfc_sice_post_init end subroutine sfc_sice_post_init !! -!> \brief This subroutine is empty since there are no procedures needed +!> \brief This subroutine is empty since there are no procedures needed !! \section arg_table_sfc_sice_post_finalize Argument Table !! subroutine sfc_sice_post_finalize @@ -816,15 +816,15 @@ end subroutine sfc_sice_post_finalize !! | im | horizontal_loop_extent | horizontal loop extent | count | 0 | integer | | in | F | !! | islmsk | sea_land_ice_mask | sea/land/ice mask (=0/1/2) | flag | 1 | integer | | in | F | !! | cice | sea_ice_concentration | sea-ice concentration [0,1] | frac | 1 | real | kind_phys | in | F | -!! | zice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | in | F | +!! | zice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | in | F | !! | tice | sea_ice_temperature | sea-ice surface temperature | K | 1 | real | kind_phys | in | F | !! | tsfc | surface_skin_temperature | surface skin temperature | K | 1 | real | kind_phys | in | F | !! | fice | sea_ice_concentration | sea-ice concentration [0,1] | frac | 1 | real | kind_phys | out | F | -!! | hice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | out | F | +!! | hice | sea_ice_thickness | sea-ice thickness | m | 1 | real | kind_phys | out | F | !! | tisfc | sea_ice_temperature | sea-ice surface temperature | K | 1 | real | kind_phys | out | F | !! !! @{ - subroutine sfc_sice_post_run(im, islmsk, cice, zice, tice, tsfc, & + subroutine sfc_sice_post_run(im, islmsk, cice, zice, tice, tsfc, & & fice, hice, tisfc) use machine, only : kind_phys @@ -840,12 +840,12 @@ subroutine sfc_sice_post_run(im, islmsk, cice, zice, tice, tsfc, & ! --- outputs real(kind=kind_phys), dimension(im), intent(out) :: fice, hice, & & tisfc - + ! --- locals integer :: i !--- return updated ice thickness & concentration to global arrays -! where there is no ice, set temperature to surface skin temperature. +! where there is no ice, set temperature to surface skin temperature. do i = 1, im if (islmsk(i) == 2) then @@ -863,4 +863,3 @@ end subroutine sfc_sice_post_run end module sfc_sice_post !> @} -