From 9aed23f91cea354f8cb6c6691c471a285026a54c Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Thu, 13 Apr 2023 20:26:20 +0000 Subject: [PATCH 1/3] "update to run RRFS with GF" --- physics/cu_gf_deep.F90 | 107 +++++++++++++++++++-------------- physics/cu_gf_driver.F90 | 84 ++++++++++++++------------ physics/cu_gf_driver.meta | 16 +++++ physics/cu_gf_driver_post.F90 | 29 ++++++++- physics/cu_gf_driver_post.meta | 47 +++++++++++++++ physics/set_soilveg_ruc.F90 | 20 +++--- 6 files changed, 207 insertions(+), 96 deletions(-) diff --git a/physics/cu_gf_deep.F90 b/physics/cu_gf_deep.F90 index 5abb990de..2368dc05a 100644 --- a/physics/cu_gf_deep.F90 +++ b/physics/cu_gf_deep.F90 @@ -560,6 +560,7 @@ subroutine cu_gf_deep_run( & c1d(i,:)= 0. !c1 ! 0. ! c1 ! max(.003,c1+float(csum(i))*.0001) entr_rate(i)=7.e-5 - min(20.,float(csum(i))) * 3.e-6 if(xland1(i) == 0)entr_rate(i)=7.e-5 + if(dx(i)<6500.) entr_rate(i)=2.e-4 if(imid.eq.1)entr_rate(i)=3.e-4 ! if(imid.eq.1)c1d(i,:)=c1 ! comment to test warm bias 08/14/17 radius=.2/entr_rate(i) @@ -571,6 +572,7 @@ subroutine cu_gf_deep_run( & endif sig(i)=(1.-frh)**2 frh_out(i) = frh + if((dx(i)<6500.).and.(forcing(i,7).eq.0.))sig(i)=1. enddo !$acc end kernels sig_thresh = (1.-frh_thresh)**2 @@ -606,14 +608,15 @@ subroutine cu_gf_deep_run( & ! !$acc kernels edtmax(:)=1. - if(imid.eq.1)edtmax(:)=.15 +! if(imid.eq.1)edtmax(:)=.15 edtmin(:)=.1 - if(imid.eq.1)edtmin(:)=.05 +! if(imid.eq.1)edtmin(:)=.05 !$acc end kernels ! !--- minimum depth (m), clouds must have ! depth_min=3000. + if(dx(its)<6500.)depth_min=5000. if(imid.eq.1)depth_min=2500. ! !--- maximum depth (mb) of capping @@ -1323,9 +1326,9 @@ subroutine cu_gf_deep_run( & do i=its,itf if(ierr(i)/=0)cycle beta=max(.025,.055-float(csum(i))*.0015) !.02 - if(imid.eq.0 .and. xland1(i) == 0)then - edtmax(i)=max(0.1,.4-float(csum(i))*.015) !.3) - endif +! if(imid.eq.0 .and. xland1(i) == 0)then +! edtmax(i)=max(0.1,.4-float(csum(i))*.015) !.3) +! endif if(imid.eq.1)beta=.025 bud(i)=0. cdd(i,1:jmin(i))=.1*entr_rate(i) @@ -1508,8 +1511,8 @@ subroutine cu_gf_deep_run( & tau_ecmwf (:) = 0. !$acc end kernels !- way to calculate the fraction of cape consumed by shallow convection - iversion=1 ! ecmwf - !iversion=0 ! orig + !iversion=1 ! ecmwf + iversion=0 ! orig ! ! betchold et al 2008 time-scale of cape removal ! @@ -1549,6 +1552,29 @@ subroutine cu_gf_deep_run( & endif enddo !$acc end kernels +!$acc kernels + !-get the profiles modified only by bl tendencies + do i=its,itf + tn_bl(i,:)=0.;qo_bl(i,:)=0. + if ( ierr(i) == 0 )then + !below kbcon -> modify profiles + tn_bl(i,1:kbcon(i)) = tn(i,1:kbcon(i)) + qo_bl(i,1:kbcon(i)) = qo(i,1:kbcon(i)) + !above kbcon -> keep environment profiles + tn_bl(i,kbcon(i)+1:ktf) = t(i,kbcon(i)+1:ktf) + qo_bl(i,kbcon(i)+1:ktf) = q(i,kbcon(i)+1:ktf) + endif + enddo +!$acc end kernels + !> - Call cup_env() to calculate moist static energy, heights, qes, ... only by bl tendencies + call cup_env(zo,qeso_bl,heo_bl,heso_bl,tn_bl,qo_bl,po,z1, & + psur,ierr,tcrit,-1, & + itf,ktf, its,ite, kts,kte) + !> - Call cup_env_clev() to calculate environmental values on cloud levels only by bl tendencies + call cup_env_clev(tn_bl,qeso_bl,qo_bl,heo_bl,heso_bl,zo,po,qeso_cup_bl,qo_cup_bl, & + heo_cup_bl,heso_cup_bl,zo_cup,po_cup,gammao_cup_bl,tn_cup_bl,psur, & + ierr,z1, & + itf,ktf,its,ite, kts,kte) if(iversion == 1) then !-- version ecmwf @@ -1581,29 +1607,6 @@ subroutine cu_gf_deep_run( & !- version for real cloud-work function -!$acc kernels - !-get the profiles modified only by bl tendencies - do i=its,itf - tn_bl(i,:)=0.;qo_bl(i,:)=0. - if ( ierr(i) == 0 )then - !below kbcon -> modify profiles - tn_bl(i,1:kbcon(i)) = tn(i,1:kbcon(i)) - qo_bl(i,1:kbcon(i)) = qo(i,1:kbcon(i)) - !above kbcon -> keep environment profiles - tn_bl(i,kbcon(i)+1:ktf) = t(i,kbcon(i)+1:ktf) - qo_bl(i,kbcon(i)+1:ktf) = q(i,kbcon(i)+1:ktf) - endif - enddo -!$acc end kernels - !> - Call cup_env() to calculate moist static energy, heights, qes, ... only by bl tendencies - call cup_env(zo,qeso_bl,heo_bl,heso_bl,tn_bl,qo_bl,po,z1, & - psur,ierr,tcrit,-1, & - itf,ktf, its,ite, kts,kte) - !> - Call cup_env_clev() to calculate environmental values on cloud levels only by bl tendencies - call cup_env_clev(tn_bl,qeso_bl,qo_bl,heo_bl,heso_bl,zo,po,qeso_cup_bl,qo_cup_bl, & - heo_cup_bl,heso_cup_bl,zo_cup,po_cup,gammao_cup_bl,tn_cup_bl,psur, & - ierr,z1, & - itf,ktf,its,ite, kts,kte) !$acc kernels do i=its,itf if(ierr(i).eq.0)then @@ -1661,7 +1664,7 @@ subroutine cu_gf_deep_run( & aa1_bl(i) = aa1_bl(i)* tau_bl(i)/ dtime !endif #ifndef _OPENACC - print*,'aa0,aa1bl=',aa0(i),aa1_bl(i),aa0(i)-aa1_bl(i),tau_bl(i)!,dtime,xland(i) +! print*,'aa0,aa1bl=',aa0(i),aa1_bl(i),aa0(i)-aa1_bl(i),tau_bl(i)!,dtime,xland(i) #endif endif enddo @@ -2116,6 +2119,9 @@ subroutine cu_gf_deep_run( & imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,tau_ecmwf,aa1_bl,xf_dicycle) + do i=its,itf + if((dx(i)<6500.).and.(forcing(i,3).le.0.))sig(i)=1. + enddo ! !$acc kernels do k=kts,ktf @@ -2157,6 +2163,8 @@ subroutine cu_gf_deep_run( & xff_mid(i,1)=min(0.1,xff_mid(i,1)) endif xff_mid(i,2)=min(0.1,.03*zws(i)) + forcing(i,1)=xff_mid(i,1) + forcing(i,2)=xff_mid(i,2) endif enddo !$acc end kernels @@ -2181,6 +2189,7 @@ subroutine cu_gf_deep_run( & !$acc kernels do i=its,itf if(ierr(i).eq.0 .and.pre(i).gt.0.) then + forcing(i,6)=sig(i) pre(i)=max(pre(i),0.) xmb_out(i)=xmb(i) outu(i,1)=dellu(i,1)*xmb(i) @@ -3308,11 +3317,11 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2 xff_ens3(4)=betajb*xff_ens3(4) xff_ens3(5)=xff_ens3(4) xff_ens3(6)=xff_ens3(4) + forcing(i,2)=xff_ens3(4) if(xff_ens3(4).lt.0.)xff_ens3(4)=0. if(xff_ens3(5).lt.0.)xff_ens3(5)=0. if(xff_ens3(6).lt.0.)xff_ens3(6)=0. xff_ens3(14)=xff_ens3(4) - forcing(i,2)=xff_ens3(4) ! !--- more like krishnamurti et al.; pick max and average values ! @@ -3328,7 +3337,8 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2 xff_ens3(11)=aa1(i)/tau_ecmwf(i) xff_ens3(12)=aa1(i)/tau_ecmwf(i) xff_ens3(13)=(aa1(i))/tau_ecmwf(i) !(60.*15.) !tau_ecmwf(i) -! forcing(i,4)=xff_ens3(10) + forcing(i,4)=xff_ens3(10) +! forcing(i,5)= aa1_bl(i)/tau_ecmwf(i) !!- more like bechtold et al. (jas 2014) !! if(dicycle == 1) xff_dicycle = max(0.,aa1_bl(i)/tau_ecmwf(i)) !(60.*30.) !tau_ecmwf(i) @@ -3349,13 +3359,16 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2 endif ! ichoice xk(1)=(xaa0(i,1)-aa1(i))/mbdt - forcing(i,4)=aa0(i) - forcing(i,5)=aa1(i) - forcing(i,6)=xaa0(i,1) - forcing(i,7)=xk(1) - if(xk(1).le.0.and.xk(1).gt.-.01*mbdt) & + forcing(i,8)=mbdt*xk(1)/aa1(i) +! if(forcing(i,1).lt.0. .or. forcing(i,8).gt.-4.)ierr(i)=333 +! if(forcing(i,2).lt.-0.05)ierr(i)=333 +! forcing(i,4)=aa0(i) +! forcing(i,5)=aa1(i) +! forcing(i,6)=xaa0(i,1) +! forcing(i,7)=xk(1) + if(xk(1).lt.0.and.xk(1).gt.-.01*mbdt) & xk(1)=-.01*mbdt - if(xk(1).gt.0.and.xk(1).lt.1.e-2) & + if(xk(1).ge.0.and.xk(1).lt.1.e-2) & xk(1)=1.e-2 ! enddo ! @@ -3446,13 +3459,13 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2 xf_ens(i,11)=xf_ens(i,11)+xf_ens(i,11)*rand_clos(i,4) xf_ens(i,12)=xf_ens(i,12)+xf_ens(i,12)*rand_clos(i,4) xf_ens(i,13)=xf_ens(i,13)+xf_ens(i,13)*rand_clos(i,4) - forcing(i,8)=xf_ens(i,11) +! forcing(i,8)=xf_ens(i,11) else xf_ens(i,10)=0. xf_ens(i,11)=0. xf_ens(i,12)=0. xf_ens(i,13)=0. - forcing(i,8)=0. + !forcing(i,8)=0. endif !srf-begin !! if(xk(1).lt.0.)then @@ -3504,13 +3517,16 @@ subroutine cup_forcing_ens_3d(closure_n,xland,aa0,aa1,xaa0,mbdt,dtime,ierr,ierr2 if(ierr(i) /= 0)cycle xk(1)=(xaa0(i,1)-aa1(i))/mbdt - if(xk(1).le.0.and.xk(1).gt.-.01*mbdt) xk(1)=-.01*mbdt - if(xk(1).gt.0.and.xk(1).lt.1.e-2) xk(1)=1.e-2 - +! forcing(i,8)=xk(1) + if(xk(1).lt.0.and.xk(1).gt.-.01*mbdt) xk(1)=-.01*mbdt + if(xk(1).ge.0.and.xk(1).lt.1.e-2) xk(1)=1.e-2 + xff_dicycle = (aa1(i)-aa1_bl(i))/tau_ecmwf(i) +! forcing(i,8)=xff_dicycle if(xk(1).lt.0) xf_dicycle(i)= max(0.,-xff_dicycle/xk(1)) - + xf_dicycle(i)= xf_ens(i,10)-xf_dicycle(i) +! forcing(i,6)=xf_dicycle(i) enddo !$acc end kernels else @@ -4146,6 +4162,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & ! used in cup_forcing_ens (including screening of some ! closures over water) to properly normalize xmb clos_wei=16./max(1.,closure_n(i)) + clos_wei=1. xmb_ave(i)=min(xmb_ave(i),100.) xmb(i)=clos_wei*sig(i)*xmb_ave(i) diff --git a/physics/cu_gf_driver.F90 b/physics/cu_gf_driver.F90 index 61abb29a9..ca9f0bec2 100644 --- a/physics/cu_gf_driver.F90 +++ b/physics/cu_gf_driver.F90 @@ -66,7 +66,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& index_of_y_wind,index_of_process_scnv,index_of_process_dcnv, & fhour,fh_dfi_radar,ix_dfi_radar,num_dfi_radar,cap_suppress, & dfi_radar_max_intervals,ldiag3d,qci_conv,do_cap_suppress, & - errmsg,errflg) + maxupmf,maxMF,errmsg,errflg) !------------------------------------------------------------- implicit none integer, parameter :: maxiens=1 @@ -74,12 +74,12 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& integer, parameter :: maxens2=1 integer, parameter :: maxens3=16 integer, parameter :: ensdim=16 - integer, parameter :: imid_gf=1 ! testgf2 turn on middle gf conv. + integer :: imid_gf=1 ! gf congest conv. integer, parameter :: ideep=1 - integer, parameter :: ichoice=0 ! 0 2 5 13 8 + integer :: ichoice=0 ! 0 2 5 13 8 !integer, parameter :: ichoicem=5 ! 0 2 5 13 - integer, parameter :: ichoicem=13 ! 0 2 5 13 - integer, parameter :: ichoice_s=3 ! 0 1 2 3 + integer, parameter :: ichoicem=13 ! 0 2 5 13 + integer, parameter :: ichoice_s=3 ! 0 1 2 3 logical, intent(in) :: do_cap_suppress real(kind=kind_phys), parameter :: aodc0=0.14 @@ -121,7 +121,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& integer, dimension (:), intent(out) :: hbot,htop,kcnv integer, dimension (:), intent(in) :: xland - real(kind=kind_phys), dimension (:), intent(in) :: pbl + real(kind=kind_phys), dimension (:), intent(in) :: pbl,maxMF !$acc declare copyout(hbot,htop,kcnv) !$acc declare copyin(xland,pbl) integer, dimension (im) :: tropics @@ -129,7 +129,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& ! ruc variable real(kind=kind_phys), dimension (:), intent(in) :: hfx2,qfx2,psuri real(kind=kind_phys), dimension (:,:), intent(out) :: ud_mf,dd_mf,dt_mf - real(kind=kind_phys), dimension (:), intent(out) :: raincv,cld1d + real(kind=kind_phys), dimension (:), intent(out) :: raincv,cld1d,maxupmf real(kind=kind_phys), dimension (:,:), intent(in) :: t2di,p2di !$acc declare copyin(hfx2,qfx2,psuri,t2di,p2di) !$acc declare copyout(ud_mf,dd_mf,dt_mf,raincv,cld1d) @@ -228,7 +228,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& ! gf needs them in w/m2. define hfx and qfx after simple unit conversion real(kind=kind_phys), dimension (im) :: hfx,qfx !$acc declare create(hfx,qfx) - real(kind=kind_phys) tem,tem1,tf,tcr,tcrf + real(kind=kind_phys) tem,tem1,tf,tcr,tcrf,psum real(kind=kind_phys) :: cliw_shal,clcw_shal,tem_shal, cliw_both, weight_sum real(kind=kind_phys) :: cliw_deep,clcw_deep,tem_deep, clcw_both integer :: cliw_deep_idx, clcw_deep_idx, cliw_shal_idx, clcw_shal_idx @@ -537,6 +537,9 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& subm(:,:)=0. dhdt(:,:)=0. + frhm(:)=0. + frhd(:)=0. + do k=kts,ktf do i=its,itf p2d(i,k)=0.01*p2di(i,k) @@ -601,17 +604,34 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& endif enddo enddo + do i = its,itf + psum=0. + do k=kts,ktf-3 + if (clcw(i,k) .gt. -999.0 .and. clcw(i,k+1) .gt. -999.0 )then + dp=(p2d(i,k)-p2d(i,k+1)) + psum=psum+dp + clwtot = cliw(i,k) + clcw(i,k) + if(clwtot.lt.1.e-32)clwtot=0. + forcing(i,7)=forcing(i,7)+clwtot*dp + endif + enddo + if(psum.gt.0)forcing(i,7)=forcing(i,7)/psum + forcing2(i,7)=forcing(i,7) + enddo do k=kts,ktf-1 do i = its,itf omeg(i,k)= w(i,k) !-g*rhoi(i,k)*w(i,k) -! dq=(q2d(i,k+1)-q2d(i,k)) -! mconv(i)=mconv(i)+omeg(i,k)*dq/g enddo enddo do i = its,itf if(mconv(i).lt.0.)mconv(i)=0. + if(maxMF(i).gt.0.)ierr(i)=555 enddo !$acc end kernels + if (dx(its)<6500.) then + ichoice=10 + imid_gf=0 + endif ! !---- call cumulus parameterization ! @@ -654,8 +674,8 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& if(imid_gf == 1)then call cu_gf_deep_run( & itf,ktf,its,ite, kts,kte & - ,dicycle_m & - ,ichoicem & + ,dicycle_m & + ,ichoicem & ,ipr & ,ccn_m & ,ccnclean & @@ -664,25 +684,23 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& ,kpbli & ,dhdt & ,xlandi & - ,zo & - ,forcing2 & + ,forcing & ,t2d & ,q2d & ,ter11 & ,tshall & ,qshall & - ,p2d & + ,p2d & ,psur & ,us & ,vs & ,rhoi & ,hfx & ,qfx & - ,dx & !hj dx(im) + ,dx & ,mconv & ,omeg & - ,cactiv_m & ,cnvwtm & ,zum & @@ -748,7 +766,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& ,xlandi & ,zo & - ,forcing & + ,forcing2 & ,t2d & ,q2d & ,ter11 & @@ -761,7 +779,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& ,rhoi & ,hfx & ,qfx & - ,dx & !hj replace dx(im) + ,dx & ,mconv & ,omeg & @@ -815,25 +833,6 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& outqc,pret,its,ite,kts,kte,itf,ktf,ktop) ! endif -! do i=its,itf -! kcnv(i)=0 -! if(pret(i).gt.0.)then -! cuten(i)=1. -! kcnv(i)= 1 !jmin(i) -! else -! kbcon(i)=0 -! ktop(i)=0 -! cuten(i)=0. -! endif ! pret > 0 -! if(pretm(i).gt.0.)then -! kcnv(i)= 1 !jmin(i) -! cutenm(i)=1. -! else -! kbconm(i)=0 -! ktopm(i)=0 -! cutenm(i)=0. -! endif ! pret > 0 -! enddo !$acc kernels do i=its,itf kcnv(i)=0 @@ -880,6 +879,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& endif dtime_max=dt + forcing2(i,3)=0. do k=kts,kstop cnvc(i,k) = 0.04 * log(1. + 675. * zu(i,k) * xmb(i)) + & 0.04 * log(1. + 675. * zum(i,k) * xmbm(i)) + & @@ -954,6 +954,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& -(xmbm(i)*(zdm(i,k)-edtm(i)*zdm(i,k))) & -(xmbs(i)*zus(i,k)) trcflx_in1(k)=massflx(k)*.5*(clwtot+clwtot1) + forcing2(i,3)=forcing2(i,3)+clwtot endif enddo @@ -991,6 +992,13 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& gdc(i,13,10)=hfx(i) gdc(i,15,10)=qfx(i) gdc(i,16,10)=pret(i)*3600. + + if(forcing(i,6).gt.0.)then + maxupmf(i)=maxval(xmb(i)*zu(i,kts:ktf)/forcing(i,6)) + else + maxupmf(i)=0. + endif + if(ktop(i).gt.2 .and.pret(i).gt.0.)dt_mf(i,ktop(i)-1)=ud_mf(i,ktop(i)) endif enddo diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta index 311a9cb3e..adcf49f2f 100644 --- a/physics/cu_gf_driver.meta +++ b/physics/cu_gf_driver.meta @@ -553,6 +553,22 @@ type = real kind = kind_phys intent = in +[maxupmf] + standard_name = maximum_conv_up_draft_mass_flux + long_name = maximum convective up draft mass flux within a column + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = out +[maxMF] + standard_name = maximum_mass_flux + long_name = maximum mass flux within a column + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/cu_gf_driver_post.F90 b/physics/cu_gf_driver_post.F90 index 4015fed35..71877c5f4 100644 --- a/physics/cu_gf_driver_post.F90 +++ b/physics/cu_gf_driver_post.F90 @@ -15,28 +15,36 @@ module cu_gf_driver_post !> \section arg_table_cu_gf_driver_post_run Argument Table !! \htmlinclude cu_gf_driver_post_run.html !! - subroutine cu_gf_driver_post_run (im, t, q, prevst, prevsq, cactiv, cactiv_m, conv_act, conv_act_m, errmsg, errflg) + subroutine cu_gf_driver_post_run (im, km, t, q, prevst, prevsq, cactiv, cactiv_m, conv_act, conv_act_m,dt, garea, raincv, maxupmf, refl_10cm, errmsg, errflg) use machine, only: kind_phys implicit none ! Interface variables - integer, intent(in) :: im + integer, intent(in) :: im, km real(kind_phys), intent(in) :: t(:,:) real(kind_phys), intent(in) :: q(:,:) + real(kind_phys), dimension(:),intent(in) :: garea real(kind_phys), intent(out) :: prevst(:,:) real(kind_phys), intent(out) :: prevsq(:,:) integer, intent(in) :: cactiv(:) integer, intent(in) :: cactiv_m(:) real(kind_phys), intent(out) :: conv_act(:) real(kind_phys), intent(out) :: conv_act_m(:) + ! for Radar reflectivity + real(kind_phys), intent(in) :: dt + real(kind_phys), intent(in) :: raincv(:), maxupmf(:) + real(kind_phys), intent(inout) :: refl_10cm(:,:) character(len=*), intent(out) :: errmsg !$acc declare copyin(t,q,cactiv,cactiv_m) copyout(prevst,prevsq,conv_act,conv_act_m) integer, intent(out) :: errflg ! Local variables - integer :: i + real, parameter :: dbzmin=-10.0 ! dcd + real :: cuprate ! dcd + real :: ze, ze_conv, dbz_sum ! dcd + integer :: i, k ! Initialize CCPP error handling variables errmsg = '' @@ -57,6 +65,21 @@ subroutine cu_gf_driver_post_run (im, t, q, prevst, prevsq, cactiv, cactiv_m, co else conv_act_m(i)=0.0 endif + ! reflectivity parameterization for parameterized convection (reference:Unipost MDLFLD.f) + if(sqrt(garea(i)).lt.6500.)then + ze = 0.0 + ze_conv = 0.0 + dbz_sum = 0.0 + cuprate = raincv(i) * 3600.0 / dt ! cu precip rate (mm/h) + ze_conv = 300.0 * cuprate**1.4 + if (maxupmf(i).gt.0.05) then + do k = 1, km + ze = 10.0 ** (0.1 * refl_10cm(i,k)) + dbz_sum = max(dbzmin, 10.0 * log10(ze + ze_conv)) + refl_10cm(i,k) = dbz_sum + enddo + endif + endif enddo !$acc end kernels diff --git a/physics/cu_gf_driver_post.meta b/physics/cu_gf_driver_post.meta index b50c2ab40..18f062b2d 100644 --- a/physics/cu_gf_driver_post.meta +++ b/physics/cu_gf_driver_post.meta @@ -14,6 +14,13 @@ dimensions = () type = integer intent = in +[km] + standard_name = vertical_layer_dimension + long_name = number of vertical levels + units = count + dimensions = () + type = integer + intent = in [t] standard_name = air_temperature_of_new_state long_name = temperature updated by physics @@ -76,6 +83,46 @@ type = real kind = kind_phys intent = out +[dt] + standard_name = timestep_for_physics + long_name = physics time step + units = s + dimensions = () + type = real + kind = kind_phys + intent = in +[garea] + standard_name = cell_area + long_name = grid cell area + units = m2 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[raincv] + standard_name = lwe_thickness_of_deep_convective_precipitation_amount + long_name = deep convective rainfall amount on physics timestep + units = m + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[maxupmf] + standard_name = maximum_conv_up_draft_mass_flux + long_name = maximum convective up draft mass flux within a column + units = m s-1 + dimensions = (horizontal_loop_extent) + type = real + kind = kind_phys + intent = in +[refl_10cm] + standard_name = radar_reflectivity_10cm + long_name = instantaneous refl_10cm + units = dBZ + dimensions = (horizontal_loop_extent,vertical_layer_dimension) + type = real + kind = kind_phys + intent = inout [errmsg] standard_name = ccpp_error_message long_name = error message for error handling in CCPP diff --git a/physics/set_soilveg_ruc.F90 b/physics/set_soilveg_ruc.F90 index 7c4f0ffdf..db56fb8a4 100644 --- a/physics/set_soilveg_ruc.F90 +++ b/physics/set_soilveg_ruc.F90 @@ -338,63 +338,63 @@ subroutine set_soilveg_ruc(me,isot,ivet,nlunit,errmsg,errflg) ! SOIL TEXTURE-RELATED ARRAYS. ! ---------------------------------------------------------------------- BB =(/4.05, 4.38, 4.90, 5.30, 5.30, 5.39, & - & 7.12, 7.75, 8.52, 10.40, 10.40, 11.40, & + & 7.12, 7.75, 5.39, 10.40, 10.40, 11.40, & & 5.39, 0.00, 4.05, 4.90, 11.40, 4.05, & & 4.05, 0.00, 0.00, 0.00, 0.00, 0.00, & & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) DRYSMC =(/0.002, 0.035, 0.041, 0.034, 0.034, 0.050, & - & 0.068, 0.060, 0.085, 0.100, 0.070, 0.068, & + & 0.068, 0.060, 0.050, 0.070, 0.070, 0.068, & & 0.027, 0.000, 0.004, 0.065, 0.030, 0.006, & & 0.010, 0.000, 0.000, 0.000, 0.000, 0.000, & & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) HC =(/1.47, 1.41, 1.34, 1.27, 1.27, 1.21, 1.18, & - & 1.32, 1.23, 1.18, 1.15, 1.09, 1.21, 4.18, & + & 1.32, 1.21, 1.18, 1.15, 1.09, 1.21, 4.18, & & 2.03, 2.10, 1.41, 1.41, 1.47, 0.00, 0.00, & & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, 0.00, & & 0.00, 0.00/) MAXSMC =(/0.395, 0.410, 0.435, 0.485, 0.485, 0.451, & - & 0.420, 0.477, 0.476, 0.426, 0.492, 0.482, & + & 0.420, 0.477, 0.451, 0.426, 0.492, 0.482, & & 0.451, 1.000, 0.200, 0.435, 0.468, 0.200, & & 0.339, 0.000, 0.000, 0.000, 0.000, 0.000, & & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) REFSMC =(/0.174, 0.179, 0.249, 0.369, 0.369, 0.314, & - & 0.299, 0.357, 0.391, 0.316, 0.409, 0.400, & + & 0.299, 0.357, 0.314, 0.316, 0.409, 0.400, & & 0.314, 1.000, 0.100, 0.249, 0.454, 0.170, & & 0.236, 0.000, 0.000, 0.000, 0.000, 0.000, & & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) SATPSI =(/0.121, 0.090, 0.218, 0.786, 0.786, 0.478, & - & 0.299, 0.356, 0.630, 0.153, 0.490, 0.405, & + & 0.299, 0.356, 0.478, 0.153, 0.490, 0.405, & & 0.478, 0.000, 0.121, 0.218, 0.468, 0.069, & & 0.069, 0.00, 0.00, 0.00, 0.00, 0.00, & & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) SATDK =(/1.76e-4, 1.56e-4, 3.47e-5, 7.20e-6, 7.20e-6, & - & 6.95e-6, 6.30e-6, 1.70e-6, 2.45e-6, 2.17e-6, & + & 6.95e-6, 6.30e-6, 1.70e-6, 6.95e-6, 2.17e-6, & & 1.03e-6, 1.28e-6, 6.95e-6, 0.0, 1.41e-4, & & 3.47e-5, 9.74e-7, 1.41e-4, 1.76e-4, 0.00, & & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, & & 0.00 , 0.00 , 0.00 , 0.00 , 0.00/) SATDW =(/0.608e-6, 0.514e-5, 0.805e-5, 0.239e-4, 0.239e-4, & - & 0.143e-4, 0.990e-5, 0.237e-4, 0.113e-4, 0.187e-4, & + & 0.143e-4, 0.990e-5, 0.237e-4, 0.143e-4, 0.187e-4, & & 0.964e-5, 0.112e-4, 0.143e-4, 0.0, 0.136e-03, & & 0.514e-5, 0.112e-4, 0.136e-3, 0.608e-6, 0.00, & & 0.00 , 0.00 , 0.00 , 0.00 , 0.00, & & 0.00 , 0.00 , 0.00 , 0.00 , 0.00/) WLTSMC =(/0.033, 0.055, 0.095, 0.143, 0.143, 0.137, & - & 0.148, 0.208, 0.230, 0.210, 0.250, 0.268, & + & 0.148, 0.170, 0.137, 0.158, 0.190, 0.198, & & 0.117, 0.000, 0.006, 0.114, 0.030, 0.006, & & 0.060, 0.000, 0.000, 0.000, 0.000, 0.000, & & 0.000, 0.000, 0.000, 0.000, 0.000, 0.000/) QTZ =(/0.92, 0.82, 0.60, 0.25, 0.10, 0.40, & - & 0.60, 0.10, 0.35, 0.52, 0.10, 0.25, & + & 0.60, 0.10, 0.40, 0.52, 0.10, 0.25, & & 0.05, 0.00, 0.60, 0.05, 0.60, 0.52, & & 0.92, 0.00, 0.00, 0.00, 0.00, 0.00, & & 0.00, 0.00, 0.00, 0.00, 0.00, 0.00/) From 9e4e2cbddb5a634f8b010e4d1a9cd21c0d52e2c9 Mon Sep 17 00:00:00 2001 From: Grant Firl Date: Fri, 14 Apr 2023 13:52:47 -0400 Subject: [PATCH 2/3] update CODEOWNERS to replace Chunxi with Qingfu --- CODEOWNERS | 372 ++++++++++++++++++++++++++--------------------------- 1 file changed, 186 insertions(+), 186 deletions(-) diff --git a/CODEOWNERS b/CODEOWNERS index 15821a791..4b7e45310 100644 --- a/CODEOWNERS +++ b/CODEOWNERS @@ -4,198 +4,198 @@ # Default codeowners for files that don't have specific owners: -* @grantfirl @ChunxiZhang-NOAA @dustinswales @mzhangw +* @grantfirl @Qingfu-Liu @dustinswales @mzhangw # The following lines are from the CCPP Primary Schemes Points of Contact # https://docs.google.com/spreadsheets/d/14y0Th_sSpCqlssEMNfSZ_Ni9wrpPqfpPY0kRG7jCZB8/edit#gid=0 # (Internal NOAA document.) -smoke/* @haiqinli @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/aerclm_def.F @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/aer_cloud.F @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/aerinterp.F90 @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/bl_mynn_common.f90 @joeolson42 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/calpreciptype.f90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cires_orowam2017.f @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cires_tauamf_data.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cires_ugwp* @ValeryYudin-NOAA @mdtoyNOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cldmacro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cldwat2m_micro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cnvc90.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cs_conv_aw_adj.* @AnningCheng-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cs_conv.* @AnningCheng-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cu_gf* @hannahcbarnes @haiqinli @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/cu_ntiedtke* @ChunxiZhang-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/date_def.f @XuLi-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/dcyc2t3.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/drag_suite.* @mdtoyNOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/flake* @YihuaWu-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/funcphys.f90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/fv_sat_adj.* @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gcycle.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/get_phi_fv3.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/get_prs_fv3.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gfdl_cloud_microphys.* @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFDL_parse_tracers.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gfdl_sfc_layer.* @ZhanZhang-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_cloud_diagnostics.* @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_DCNV_generic_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_DCNV_generic_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_debug.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_GWD_generic_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_GWD_generic_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_MP_generic_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_MP_generic_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_PBL_generic_common.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_PBL_generic_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_PBL_generic_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_phys_time_vary.fv3.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_phys_time_vary.scm.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gfs_phy_tracer_config.F @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_radiation_surface.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rad_time_vary.fv3.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rad_time_vary.scm.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_cloud_mp.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_cloud_overlap.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_lw_post.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmg_post.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_pre.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmg_pre.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_setup.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_sw_post.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmgp_sw_pre.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_rrtmg_setup.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_SCNV_generic_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_SCNV_generic_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_stochastics.* @pjpegion @lisa-bengtsson @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_1.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_2.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_3.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_4.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_5.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_phys_reset.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_interstitial_rad_reset.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_stateout_reset.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_suite_stateout_update.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_composites_inter.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_composites_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_composites_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_generic_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_generic_pre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_loop_control_part1.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_surface_loop_control_part2.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_time_vary_pre.fv3.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/GFS_time_vary_pre.scm.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gocart_tracer_config_stub.f @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gwdc.* @Songyou184 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/gwdps.* @Songyou184 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/h2o_def.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/h2ointerp.f90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/h2ophys.* @SMoorthi-emc @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/hedmf.* @JongilHan66 @WeiguoWang-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/iccn_def.F @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/iccninterp.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/iounitdef.f @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/lsm_noah.* @HelinWei-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/lsm_ruc.* @tanyasmirnova @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/machine.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/maximum_hourly_diagnostics.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mersenne_twister.f @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mfpbl.f @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mfpblt.f @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mfpbltq.f @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mfscu.f @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mfscuq.f @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/micro_mg* @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/m_micro* @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_bfmicrophysics.f @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_BL_MYJPBL.* @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_bl_mynn.* @joeolson42 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_gfdl_cloud_microphys.* @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_MP_FER_HIRES.* @ericaligo-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_mp_nssl_2mom.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_mp_radar.* @gthompsnWRF @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_mp_thompson* @gthompsnWRF @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_nst* @XuLi-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_sf_exchcoef.f90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_SF_JSFC.F90 @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_sf_mynn.F90 @joeolson42 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_sf_ruclsm.* @tanyasmirnova @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/module_soil_pre.* @tanyasmirnova @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/moninshoc.* @SMoorthi-emc @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mp_fer_hires.* @ericaligo-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mp_nssl.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mp_thompson* @gthompsnWRF @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/multi_gases.F90 @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/myjpbl_wrapper.* @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/myjsfc_wrapper.* @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mynnedmf_wrapper.* @joeolson42 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/mynnsfc_wrapper.* @joeolson42 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/namelist_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/namelist_soilveg_ruc.* @tanyasmirnova @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/*noahmp* @barlage @cenlinhe @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ozinterp.f90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ozne_def.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ozphys* @SMoorthi-emc @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/physcons.F90 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/phys_tend.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/progsigma_calc.f90 @lisa-bengtsson @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radcons.f90 @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_aerosols.f @Qingfu-Liu @dustinswales @AnningCheng-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_astronomy.f @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_cloud_overlap.F90 @dustinswales @mjiacono @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_clouds.f @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_gases.f @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_surface.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radiation_tools.F90 @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radlw_* @mjiacono @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/radsw_* @mjiacono @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rad_sw_pre.* @dustinswales @Qingfu-Liu @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rascnv.* @SMoorthi-emc @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rayleigh_damp.* @yangfanglin @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmg_lw_cloud_optics.F90 @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmg_lw_post.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmg_lw_pre.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmgp_aerosol_optics.* @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmgp_lw_* @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmgp_sw_* @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmg_sw_cloud_optics.F90 @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rrtmg_sw_post.* @Qingfu-Liu @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/rte-rrtmgp @RobertPincus @dustinswales @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/samfdeepcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/samfshalcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/samfaerosols.* @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sascnvn.* @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/satmedmfvdif.* @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/satmedmfvdifq.* @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/scm_sfc_flux_spec.* @grantfirl @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/set_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/set_soilveg_ruc.* @tanyasmirnova @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_cice.* @wd20xw @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_diag.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_diag_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_diff.* @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_nst* @XuLi-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_ocean.* @HelinWei-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sfc_sice.* @wd20xw @grantfirl @ChunxiZhang-NOAA @dustinswales -#physics/sfcsub.F @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sflx.f @HelinWei-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sgscloud_radpost.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/sgscloud_radpre.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/shalcnv.* @JongilHan66 @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/shinhongvdif.* @ChunxiZhang-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/shoc.* @SMoorthi-emc @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/surface_perturbation.* @HelinWei-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/tridi.f @JongilHan66 @ChunxiZhang-NOAA @WeiguoWang-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ugwp_driver_v0.F @mdtoyNOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ugwpv1_gsldrag.* @mdtoyNOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ugwpv1_gsldrag_post.* @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/unified_ugwp* @mdtoyNOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/wv_saturation.F @AnningCheng-NOAA @andrewgettelman @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/ysuvdif.* @ChunxiZhang-NOAA @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/zhaocarr_gscond.* @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales -physics/zhaocarr_precpd.* @RuiyuSun @grantfirl @ChunxiZhang-NOAA @dustinswales +smoke/* @haiqinli @grantfirl @Qingfu-Liu @dustinswales +physics/aerclm_def.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/aer_cloud.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/aerinterp.F90 @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/bl_mynn_common.f90 @joeolson42 @grantfirl @Qingfu-Liu @dustinswales +physics/calpreciptype.f90 @grantfirl @Qingfu-Liu @dustinswales +physics/cires_orowam2017.f @grantfirl @Qingfu-Liu @dustinswales +physics/cires_tauamf_data.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/cires_ugwp* @ValeryYudin-NOAA @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales +physics/cldmacro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/cldwat2m_micro.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/cnvc90.* @grantfirl @Qingfu-Liu @dustinswales +physics/cs_conv_aw_adj.* @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/cs_conv.* @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/cu_gf* @hannahcbarnes @haiqinli @grantfirl @Qingfu-Liu @dustinswales +physics/cu_ntiedtke* @grantfirl @Qingfu-Liu @dustinswales +physics/date_def.f @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/dcyc2t3.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/drag_suite.* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales +physics/flake* @YihuaWu-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/funcphys.f90 @grantfirl @Qingfu-Liu @dustinswales +physics/fv_sat_adj.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/gcycle.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/get_phi_fv3.* @grantfirl @Qingfu-Liu @dustinswales +physics/get_prs_fv3.* @grantfirl @Qingfu-Liu @dustinswales +physics/gfdl_cloud_microphys.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/GFDL_parse_tracers.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/gfdl_sfc_layer.* @ZhanZhang-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_cloud_diagnostics.* @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_DCNV_generic_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_DCNV_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_debug.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_GWD_generic_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_GWD_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_MP_generic_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_MP_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_PBL_generic_common.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_PBL_generic_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_PBL_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_phys_time_vary.fv3.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_phys_time_vary.scm.* @grantfirl @Qingfu-Liu @dustinswales +physics/gfs_phy_tracer_config.F @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_radiation_surface.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rad_time_vary.fv3.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rad_time_vary.scm.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_cloud_mp.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_cloud_overlap.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_lw_post.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmg_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_pre.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmg_pre.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_setup.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_sw_post.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmgp_sw_pre.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_rrtmg_setup.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_SCNV_generic_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_SCNV_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_stochastics.* @pjpegion @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_1.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_2.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_3.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_4.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_5.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_phys_reset.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_interstitial_rad_reset.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_stateout_reset.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_suite_stateout_update.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_composites_inter.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_composites_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_composites_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_generic_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_generic_pre.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_loop_control_part1.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_surface_loop_control_part2.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_time_vary_pre.fv3.* @grantfirl @Qingfu-Liu @dustinswales +physics/GFS_time_vary_pre.scm.* @grantfirl @Qingfu-Liu @dustinswales +physics/gocart_tracer_config_stub.f @grantfirl @Qingfu-Liu @dustinswales +physics/gwdc.* @Songyou184 @grantfirl @Qingfu-Liu @dustinswales +physics/gwdps.* @Songyou184 @grantfirl @Qingfu-Liu @dustinswales +physics/h2o_def.* @grantfirl @Qingfu-Liu @dustinswales +physics/h2ointerp.f90 @grantfirl @Qingfu-Liu @dustinswales +physics/h2ophys.* @SMoorthi-emc @grantfirl @Qingfu-Liu @dustinswales +physics/hedmf.* @JongilHan66 @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/iccn_def.F @grantfirl @Qingfu-Liu @dustinswales +physics/iccninterp.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/iounitdef.f @grantfirl @Qingfu-Liu @dustinswales +physics/lsm_noah.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/lsm_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales +physics/machine.* @grantfirl @Qingfu-Liu @dustinswales +physics/maximum_hourly_diagnostics.* @grantfirl @Qingfu-Liu @dustinswales +physics/mersenne_twister.f @grantfirl @Qingfu-Liu @dustinswales +physics/mfpbl.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/mfpblt.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/mfpbltq.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/mfscu.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/mfscuq.f @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/micro_mg* @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/m_micro* @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/module_bfmicrophysics.f @grantfirl @Qingfu-Liu @dustinswales +physics/module_BL_MYJPBL.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/module_bl_mynn.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales +physics/module_gfdl_cloud_microphys.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/module_MP_FER_HIRES.* @ericaligo-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/module_mp_nssl_2mom.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/module_mp_radar.* @gthompsnWRF @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/module_mp_thompson* @gthompsnWRF @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/module_nst* @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/module_sf_exchcoef.f90 @grantfirl @Qingfu-Liu @dustinswales +physics/module_SF_JSFC.F90 @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/module_sf_mynn.F90 @joeolson42 @grantfirl @Qingfu-Liu @dustinswales +physics/module_sf_ruclsm.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales +physics/module_soil_pre.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales +physics/moninshoc.* @SMoorthi-emc @grantfirl @Qingfu-Liu @dustinswales +physics/mp_fer_hires.* @ericaligo-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/mp_nssl.* @grantfirl @Qingfu-Liu @dustinswales +physics/mp_thompson* @gthompsnWRF @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/multi_gases.F90 @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/myjpbl_wrapper.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/myjsfc_wrapper.* @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/mynnedmf_wrapper.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales +physics/mynnsfc_wrapper.* @joeolson42 @grantfirl @Qingfu-Liu @dustinswales +physics/namelist_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales +physics/namelist_soilveg_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales +physics/*noahmp* @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales +physics/ozinterp.f90 @grantfirl @Qingfu-Liu @dustinswales +physics/ozne_def.* @grantfirl @Qingfu-Liu @dustinswales +physics/ozphys* @SMoorthi-emc @grantfirl @Qingfu-Liu @dustinswales +physics/physcons.F90 @grantfirl @Qingfu-Liu @dustinswales +physics/phys_tend.* @grantfirl @Qingfu-Liu @dustinswales +physics/progsigma_calc.f90 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales +physics/radcons.f90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_aerosols.f @Qingfu-Liu @dustinswales @AnningCheng-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_astronomy.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_cloud_overlap.F90 @dustinswales @mjiacono @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_clouds.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_gases.f @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_surface.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/radiation_tools.F90 @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/radlw_* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/radsw_* @mjiacono @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/rad_sw_pre.* @dustinswales @Qingfu-Liu @grantfirl @Qingfu-Liu @dustinswales +physics/rascnv.* @SMoorthi-emc @grantfirl @Qingfu-Liu @dustinswales +physics/rayleigh_damp.* @yangfanglin @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmg_lw_cloud_optics.F90 @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmg_lw_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmg_lw_pre.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmgp_aerosol_optics.* @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmgp_lw_* @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmgp_sw_* @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmg_sw_cloud_optics.F90 @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rrtmg_sw_post.* @Qingfu-Liu @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/rte-rrtmgp @RobertPincus @dustinswales @grantfirl @Qingfu-Liu @dustinswales +physics/samfdeepcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales +physics/samfshalcnv.* @JongilHan66 @lisa-bengtsson @grantfirl @Qingfu-Liu @dustinswales +physics/samfaerosols.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/sascnvn.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/satmedmfvdif.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/satmedmfvdifq.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/scm_sfc_flux_spec.* @grantfirl @grantfirl @Qingfu-Liu @dustinswales +physics/set_soilveg.* @HelinWei-NOAA @barlage @cenlinhe @grantfirl @Qingfu-Liu @dustinswales +physics/set_soilveg_ruc.* @tanyasmirnova @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_cice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_diag.* @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_diag_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_diff.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_nst* @XuLi-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_ocean.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/sfc_sice.* @wd20xw @grantfirl @Qingfu-Liu @dustinswales +#physics/sfcsub.F @grantfirl @Qingfu-Liu @dustinswales +physics/sflx.f @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/sgscloud_radpost.* @grantfirl @Qingfu-Liu @dustinswales +physics/sgscloud_radpre.* @grantfirl @Qingfu-Liu @dustinswales +physics/shalcnv.* @JongilHan66 @grantfirl @Qingfu-Liu @dustinswales +physics/shinhongvdif.* @grantfirl @Qingfu-Liu @dustinswales +physics/shoc.* @SMoorthi-emc @grantfirl @Qingfu-Liu @dustinswales +physics/surface_perturbation.* @HelinWei-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/tridi.f @JongilHan66 @WeiguoWang-NOAA @grantfirl @Qingfu-Liu @dustinswales +physics/ugwp_driver_v0.F @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales +physics/ugwpv1_gsldrag.* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales +physics/ugwpv1_gsldrag_post.* @grantfirl @Qingfu-Liu @dustinswales +physics/unified_ugwp* @mdtoyNOAA @grantfirl @Qingfu-Liu @dustinswales +physics/wv_saturation.F @AnningCheng-NOAA @andrewgettelman @grantfirl @Qingfu-Liu @dustinswales +physics/ysuvdif.* @grantfirl @Qingfu-Liu @dustinswales +physics/zhaocarr_gscond.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales +physics/zhaocarr_precpd.* @RuiyuSun @grantfirl @Qingfu-Liu @dustinswales ######################################################################## From 3df601ead306f66c31c3c549bee165ffc9241654 Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Sat, 15 Apr 2023 04:39:34 +0000 Subject: [PATCH 3/3] "update to address UFS code manager's comments" --- physics/cu_gf_deep.F90 | 196 +++------------------------------ physics/cu_gf_driver.meta | 4 +- physics/cu_gf_driver_post.F90 | 8 +- physics/cu_gf_driver_post.meta | 4 +- 4 files changed, 22 insertions(+), 190 deletions(-) diff --git a/physics/cu_gf_deep.F90 b/physics/cu_gf_deep.F90 index 2368dc05a..2335a2308 100644 --- a/physics/cu_gf_deep.F90 +++ b/physics/cu_gf_deep.F90 @@ -28,6 +28,7 @@ module cu_gf_deep integer, parameter :: autoconv=1 !2 integer, parameter :: aeroevap=1 !3 real(kind=kind_phys), parameter :: scav_factor = 0.5 + real(kind=kind_phys), parameter :: dx_thresh = 6500. !> still 16 ensembles for clousres integer, parameter:: maxens3=16 @@ -434,8 +435,6 @@ subroutine cu_gf_deep_run( & el2orc=xlv*xlv/(r_v*cp) evfact=0.25 ! .4 evfactl=0.25 ! .2 - !evfact=.0 ! for 4F5f - !evfactl=.4 !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! @@ -499,10 +498,7 @@ subroutine cu_gf_deep_run( & zws(i) = zws(i)*rho(i,kpbl(i)) !check if zrho is correct enddo !$acc end kernels -! cap_maxs=225. -! if(imid.eq.1)cap_maxs=150. cap_maxs=75. ! 150. -! if(imid.eq.1)cap_maxs=100. !$acc kernels do i=its,itf edto(i)=0. @@ -510,13 +506,10 @@ subroutine cu_gf_deep_run( & xmb_out(i)=0. cap_max(i)=cap_maxs cap_max_increment(i)=20. -! if(imid.eq.1)cap_max_increment(i)=10. ! ! for water or ice ! if (xland1(i)==0) then -! if(imid.eq.0)cap_max(i)=cap_maxs-25. -! if(imid.eq.1)cap_max(i)=cap_maxs-50. cap_max_increment(i)=20. else if(ztexec(i).gt.0.)cap_max(i)=cap_max(i)+25. @@ -525,7 +518,6 @@ subroutine cu_gf_deep_run( & #ifndef _OPENACC ierrc(i)=" " #endif -! cap_max_increment(i)=1. enddo !$acc end kernels if(use_excess == 0 )then @@ -560,7 +552,7 @@ subroutine cu_gf_deep_run( & c1d(i,:)= 0. !c1 ! 0. ! c1 ! max(.003,c1+float(csum(i))*.0001) entr_rate(i)=7.e-5 - min(20.,float(csum(i))) * 3.e-6 if(xland1(i) == 0)entr_rate(i)=7.e-5 - if(dx(i)<6500.) entr_rate(i)=2.e-4 + if(dx(i) - Compute downdraft moist static energy + moisture budget do k=2,jmin(i)+1 @@ -1428,7 +1281,6 @@ subroutine cu_gf_deep_run( & dbydo(i,ki)=hcdo(i,ki)-heso_cup(i,ki) bud(i)=bud(i)+dbydo(i,ki)*dzo enddo - ! endif if(bud(i).gt.0)then ierr(i)=7 @@ -1448,25 +1300,6 @@ subroutine cu_gf_deep_run( & itf,ktf, & its,ite, kts,kte) ! -!---meltglac------------------------------------------------- -!--- calculate moisture properties of updraft -! -! if(imid.eq.1)then -! call cup_up_moisture('mid',ierr,zo_cup,qco,qrco,pwo,pwavo, & -! p_cup,kbcon,ktop,dbyo,clw_all,xland1, & -! qo,gammao_cup,zuo,qeso_cup,k22,qo_cup,c0, & -! zqexec,ccn,rho,c1d,tn_cup,up_massentr,up_massdetr,psum,psumh, & -! 1,itf,ktf, & -! its,ite, kts,kte) -! else -! call cup_up_moisture('deep',ierr,zo_cup,qco,qrco,pwo,pwavo, & -! p_cup,kbcon,ktop,dbyo,clw_all,xland1, & -! qo,gammao_cup,zuo,qeso_cup,k22,qo_cup,c0, & -! zqexec,ccn,rho,c1d,tn_cup,up_massentr,up_massdetr,psum,psumh, & -! 1,itf,ktf, & -! its,ite, kts,kte) -! endif -!---meltglac------------------------------------------------- !$acc kernels do i=its,itf if(ierr(i)/=0)cycle @@ -1868,16 +1701,12 @@ subroutine cu_gf_deep_run( & !-- take out cloud liquid water for detrainment detup=up_massdetro(i,k) dz=zo_cup(i,k)-zo_cup(i,k-1) -!! if(k.lt.ktop(i) .and. k.ge.jmin(i)) then -!! if(k.lt.ktop(i) .and. c1d(i,k).gt.0) then if(k.lt.ktop(i)) then dellaqc(i,k) = zuo(i,k)*c1d(i,k)*qrco(i,k)*dz/dp*g else dellaqc(i,k)= detup*0.5*(qrco(i,k+1)+qrco(i,k)) *g/dp endif -!! if(imid.eq.1) dellaqc(i,k)= detup*0.5*(qrco(i,k+1)+qrco(i,k)) *g/dp -! if(k.eq.ktop(i))dellaqc(i,k)= detup*0.5*(qrco(i,k+1)+qrco(i,k)) *g/dp -! !--- + !--- g_rain= 0.5*(pwo (i,k)+pwo (i,k+1))*g/dp e_dn = -0.5*(pwdo(i,k)+pwdo(i,k+1))*g/dp*edto(i) ! pwdo < 0 and e_dn must > 0 !-- condensation source term = detrained + flux divergence of @@ -2120,7 +1949,7 @@ subroutine cu_gf_deep_run( & its,ite, kts,kte, & dicycle,tau_ecmwf,aa1_bl,xf_dicycle) do i=its,itf - if((dx(i)<6500.).and.(forcing(i,3).le.0.))sig(i)=1. + if((dx(i) This subroutine calculates final output fields including !! physical tendencies, precipitation, and mass-flux. subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & - outtem,outq,outqc, & + outtem,outq,outqc,dx, & zu,pre,pw,xmb,ktop, & edt,pwd,name,ierr2,ierr3,p_cup,pr_ens, & maxens3, & @@ -4064,7 +3893,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & zu,pwd,p_cup real(kind=kind_phys), dimension (its:ite) & ,intent (in ) :: & - sig,xmbm_in,xmbs_in,edt + sig,xmbm_in,xmbs_in,edt,dx real(kind=kind_phys), dimension (its:ite,2) & ,intent (in ) :: & xff_mid @@ -4161,8 +3990,11 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & ! --- now use proper count of how many closures were actually ! used in cup_forcing_ens (including screening of some ! closures over water) to properly normalize xmb + if (dx(i).ge.dx_thresh)then clos_wei=16./max(1.,closure_n(i)) - clos_wei=1. + else + clos_wei=1. + endif xmb_ave(i)=min(xmb_ave(i),100.) xmb(i)=clos_wei*sig(i)*xmb_ave(i) diff --git a/physics/cu_gf_driver.meta b/physics/cu_gf_driver.meta index adcf49f2f..60c7e7fe5 100644 --- a/physics/cu_gf_driver.meta +++ b/physics/cu_gf_driver.meta @@ -554,8 +554,8 @@ kind = kind_phys intent = in [maxupmf] - standard_name = maximum_conv_up_draft_mass_flux - long_name = maximum convective up draft mass flux within a column + standard_name = maximum_convective_updraft_mass_flux + long_name = maximum convective updraft mass flux within a column units = m s-1 dimensions = (horizontal_loop_extent) type = real diff --git a/physics/cu_gf_driver_post.F90 b/physics/cu_gf_driver_post.F90 index 71877c5f4..56da0feba 100644 --- a/physics/cu_gf_driver_post.F90 +++ b/physics/cu_gf_driver_post.F90 @@ -41,9 +41,9 @@ subroutine cu_gf_driver_post_run (im, km, t, q, prevst, prevsq, cactiv, cactiv_m integer, intent(out) :: errflg ! Local variables - real, parameter :: dbzmin=-10.0 ! dcd - real :: cuprate ! dcd - real :: ze, ze_conv, dbz_sum ! dcd + real(kind_phys), parameter :: dbzmin=-10.0 + real(kind_phys) :: cuprate + real(kind_phys) :: ze, ze_conv, dbz_sum integer :: i, k ! Initialize CCPP error handling variables @@ -74,7 +74,7 @@ subroutine cu_gf_driver_post_run (im, km, t, q, prevst, prevsq, cactiv, cactiv_m ze_conv = 300.0 * cuprate**1.4 if (maxupmf(i).gt.0.05) then do k = 1, km - ze = 10.0 ** (0.1 * refl_10cm(i,k)) + ze = 10._kind_phys ** (0.1 * refl_10cm(i,k)) dbz_sum = max(dbzmin, 10.0 * log10(ze + ze_conv)) refl_10cm(i,k) = dbz_sum enddo diff --git a/physics/cu_gf_driver_post.meta b/physics/cu_gf_driver_post.meta index 18f062b2d..48e762cb4 100644 --- a/physics/cu_gf_driver_post.meta +++ b/physics/cu_gf_driver_post.meta @@ -108,8 +108,8 @@ kind = kind_phys intent = in [maxupmf] - standard_name = maximum_conv_up_draft_mass_flux - long_name = maximum convective up draft mass flux within a column + standard_name = maximum_convective_updraft_mass_flux + long_name = maximum convective updraft mass flux within a column units = m s-1 dimensions = (horizontal_loop_extent) type = real