From 5ed21c435cbe7f3c6bcce4ca72801c954d7b00a1 Mon Sep 17 00:00:00 2001 From: "Haiqin.Li" Date: Fri, 23 Feb 2024 03:22:07 +0000 Subject: [PATCH 1/3] "MYNN, GF, RUC LSM and smoke plumerise updates for RRFSv1 code freeze" --- physics/CONV/Grell_Freitas/cu_gf_deep.F90 | 14 ++++---- .../UFS_SCM_NEPTUNE/GFS_MP_generic_post.F90 | 11 +++--- .../UFS_SCM_NEPTUNE/GFS_MP_generic_post.meta | 15 ++++++++ physics/PBL/MYNN_EDMF/module_bl_mynn.F90 | 8 ++--- physics/SFC_Models/Land/RUC/lsm_ruc.F90 | 3 +- .../SFC_Models/Land/RUC/module_sf_ruclsm.F90 | 4 +-- physics/smoke_dust/module_smoke_plumerise.F90 | 36 +++++++++++++------ physics/smoke_dust/rrfs_smoke_wrapper.F90 | 9 +++-- physics/smoke_dust/rrfs_smoke_wrapper.meta | 8 +++++ 9 files changed, 76 insertions(+), 32 deletions(-) diff --git a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 index 8a2c73600..cbf02effb 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_deep.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_deep.F90 @@ -425,9 +425,9 @@ subroutine cu_gf_deep_run( & integer :: turn,pmin_lev(its:ite),start_level(its:ite),ktopkeep(its:ite) real(kind=kind_phys), dimension (its:ite,kts:kte) :: dtempdz integer, dimension (its:ite,kts:kte) :: k_inv_layers - real(kind=kind_phys), dimension (its:ite) :: c0 ! HCB + real(kind=kind_phys), dimension (its:ite) :: c0, rrfs_factor ! HCB real(kind=kind_phys), dimension (its:ite,kts:kte) :: c0t3d ! hli for smoke/dust wet scavenging -!$acc declare create(pmin_lev,start_level,ktopkeep,dtempdz,k_inv_layers,c0,c0t3d) +!$acc declare create(pmin_lev,start_level,ktopkeep,dtempdz,k_inv_layers,c0,rrfs_factor,c0t3d) ! rainevap from sas real(kind=kind_phys) zuh2(40) @@ -486,6 +486,7 @@ subroutine cu_gf_deep_run( & ! Set cloud water to rain water conversion rate (c0) !$acc kernels c0(:)=0.004 + rrfs_factor(:)=1. do i=its,itf xland1(i)=int(xland(i)+.0001) ! 1. if(xland(i).gt.1.5 .or. xland(i).lt.0.5)then @@ -495,6 +496,7 @@ subroutine cu_gf_deep_run( & if(imid.eq.1)then c0(i)=0.002 endif + if(kdt.le.(4500./dtime))rrfs_factor(i)=1.-(float(kdt)/(4500./dtime)-1.)**2 enddo !$acc end kernels @@ -591,7 +593,6 @@ subroutine cu_gf_deep_run( & sig(i)=(1.-frh)**2 !frh_out(i) = frh if(forcing(i,7).eq.0.)sig(i)=1. - if(kdt.le.(3600./dtime))sig(i)=1. frh_out(i) = frh*sig(i) enddo !$acc end kernels @@ -2029,7 +2030,7 @@ subroutine cu_gf_deep_run( & zuo,pre,pwo_ens,xmb,ktop, & edto,pwdo,'deep',ierr2,ierr3, & po_cup,pr_ens,maxens3, & - sig,closure_n,xland1,xmbm_in,xmbs_in, & + sig,closure_n,xland1,xmbm_in,xmbs_in,rrfs_factor, & ichoice,imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,xf_dicycle ) @@ -4056,7 +4057,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & zu,pre,pw,xmb,ktop, & edt,pwd,name,ierr2,ierr3,p_cup,pr_ens, & maxens3, & - sig,closure_n,xland1,xmbm_in,xmbs_in, & + sig,closure_n,xland1,xmbm_in,xmbs_in,rrfs_factor, & ichoice,imid,ipr,itf,ktf, & its,ite, kts,kte, & dicycle,xf_dicycle ) @@ -4118,7 +4119,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & ,intent (inout) :: & ierr,ierr2,ierr3 integer, intent(in) :: dicycle - real(kind=kind_phys), intent(in), dimension (its:ite) :: xf_dicycle + real(kind=kind_phys), intent(in), dimension (its:ite) :: xf_dicycle, rrfs_factor !$acc declare copyin(zu,pwd,p_cup,sig,xmbm_in,xmbs_in,edt,xff_mid,dellat,dellaqc,dellaq,pw,ktop,xland1,xf_dicycle) !$acc declare copy(xf_ens,pr_ens,outtem,outq,outqc,pre,xmb,closure_n,ierr,ierr2,ierr3) ! @@ -4198,6 +4199,7 @@ subroutine cup_output_ens_3d(xff_mid,xf_ens,ierr,dellat,dellaq,dellaqc, & clos_wei=16./max(1.,closure_n(i)) xmb_ave(i)=min(xmb_ave(i),100.) xmb(i)=clos_wei*sig(i)*xmb_ave(i) + if(dx(i) get_thread_coms() -IF (frp_inst