From a1d1d23295692e3095853d05a58fd9e367bbc7f4 Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Thu, 22 Aug 2024 15:13:01 +0000 Subject: [PATCH] add a new parameter to control if G-F cold starts or not --- physics/CONV/Grell_Freitas/cu_gf_driver.F90 | 6 +++--- physics/CONV/Grell_Freitas/cu_gf_driver.meta | 7 +++++++ physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 | 5 +++-- physics/CONV/Grell_Freitas/cu_gf_driver_pre.meta | 7 +++++++ 4 files changed, 20 insertions(+), 5 deletions(-) diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver.F90 b/physics/CONV/Grell_Freitas/cu_gf_driver.F90 index 76bbf52e7..f951029ad 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_driver.F90 @@ -56,7 +56,7 @@ end subroutine cu_gf_driver_init !! \htmlinclude cu_gf_driver_run.html !! !>\section gen_gf_driver Grell-Freitas Cumulus Scheme Driver General Algorithm - subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& + subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart, gf_coldstart, & cactiv,cactiv_m,g,cp,xlv,r_v,forcet,forceqv_spechum,phil,raincv, & qv_spechum,t,cld1d,us,vs,t2di,w,qv2di_spechum,p2di,psuri, & hbot,htop,kcnv,xland,hfx2,qfx2,aod_gf,cliw,clcw, & @@ -97,7 +97,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& integer :: its,ite, jts,jte, kts,kte integer, intent(in ) :: im,km,ntracer,nchem,kdt integer, intent(in ) :: ichoice_in,ichoicem_in,ichoice_s_in - logical, intent(in ) :: flag_init, flag_restart, do_mynnedmf + logical, intent(in ) :: flag_init, flag_restart, do_mynnedmf, gf_coldstart logical, intent(in ) :: flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend real (kind=kind_phys), intent(in) :: g,cp,xlv,r_v logical, intent(in ) :: ldiag3d @@ -431,7 +431,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,& ccn_m(i) = 0. ! set aod and ccn - if (flag_init .and. .not.flag_restart) then + if ((flag_init .and. .not.flag_restart) .or. gf_coldstart) then aod_gf(i)=aodc0 else if((cactiv(i).eq.0) .and. (cactiv_m(i).eq.0))then diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver.meta b/physics/CONV/Grell_Freitas/cu_gf_driver.meta index f76d0c30c..4a645b4ab 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver.meta +++ b/physics/CONV/Grell_Freitas/cu_gf_driver.meta @@ -588,6 +588,13 @@ dimensions = () type = logical intent = in +[gf_coldstart] + standard_name = flag_for_cold_start_gf + long_name = flag to cold start G-F + units = flag + dimensions = () + type = logical + intent = in [ichoice_in] standard_name = identifier_for_c3_or_gf_deep_convection_closure long_name = flag for C3 or GF deep convection closure diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 b/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 index 1bc9aed34..7e022d983 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 +++ b/physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90 @@ -15,7 +15,7 @@ module cu_gf_driver_pre !> \section arg_table_cu_gf_driver_pre_run Argument Table !! \htmlinclude cu_gf_driver_pre_run.html !! - subroutine cu_gf_driver_pre_run (flag_init, flag_restart, kdt, fhour, dtp, t, q, prevst, prevsq, & + subroutine cu_gf_driver_pre_run (flag_init, flag_restart, gf_coldstart, kdt, fhour, dtp, t, q, prevst, prevsq, & forcet, forceq, cactiv, cactiv_m, conv_act, conv_act_m, & rrfs_sd, ntsmoke, ntdust, ntcoarsepm, chem3d, gq0, & errmsg, errflg) @@ -26,6 +26,7 @@ subroutine cu_gf_driver_pre_run (flag_init, flag_restart, kdt, fhour, dtp, t, q, logical, intent(in) :: flag_init logical, intent(in) :: flag_restart + logical, intent(in) :: gf_coldstart logical, intent(in) :: rrfs_sd integer, intent(in) :: kdt real(kind_phys), intent(in) :: fhour @@ -59,7 +60,7 @@ subroutine cu_gf_driver_pre_run (flag_init, flag_restart, kdt, fhour, dtp, t, q, ! For restart runs, can assume that prevst and prevsq ! are read from the restart files beforehand, same ! for conv_act. - if(flag_init .and. .not.flag_restart) then + if((flag_init .and. .not.flag_restart) .or. gf_coldstart) then !$acc kernels forcet(:,:)=0.0 forceq(:,:)=0.0 diff --git a/physics/CONV/Grell_Freitas/cu_gf_driver_pre.meta b/physics/CONV/Grell_Freitas/cu_gf_driver_pre.meta index 105461758..397c42f8c 100644 --- a/physics/CONV/Grell_Freitas/cu_gf_driver_pre.meta +++ b/physics/CONV/Grell_Freitas/cu_gf_driver_pre.meta @@ -130,6 +130,13 @@ kind = kind_phys intent = in optional = True +[gf_coldstart] + standard_name = flag_for_cold_start_gf + long_name = flag to cold start G-F + units = flag + dimensions = () + type = logical + intent = in [rrfs_sd] standard_name = do_smoke_coupling long_name = flag controlling rrfs_sd collection