Skip to content

Commit ae65555

Browse files
authored
Merge pull request NCAR#1109 from grantfirl/ufs-dev-omnibus-20250204
ufs/dev "omnibus" changes from 11/2024-02/2025
2 parents 4532e83 + 66e9739 commit ae65555

29 files changed

+5464
-3665
lines changed

physics/CONV/Grell_Freitas/cu_gf_driver.F90

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ end subroutine cu_gf_driver_init
5656
!! \htmlinclude cu_gf_driver_run.html
5757
!!
5858
!>\section gen_gf_driver Grell-Freitas Cumulus Scheme Driver General Algorithm
59-
subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
59+
subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart, gf_coldstart, &
6060
cactiv,cactiv_m,g,cp,xlv,r_v,forcet,forceqv_spechum,phil,raincv, &
6161
qv_spechum,t,cld1d,us,vs,t2di,w,qv2di_spechum,p2di,psuri, &
6262
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,&
9797
integer :: its,ite, jts,jte, kts,kte
9898
integer, intent(in ) :: im,km,ntracer,nchem,kdt
9999
integer, intent(in ) :: ichoice_in,ichoicem_in,ichoice_s_in
100-
logical, intent(in ) :: flag_init, flag_restart, do_mynnedmf
100+
logical, intent(in ) :: flag_init, flag_restart, do_mynnedmf, gf_coldstart
101101
logical, intent(in ) :: flag_for_scnv_generic_tend,flag_for_dcnv_generic_tend
102102
real (kind=kind_phys), intent(in) :: g,cp,xlv,r_v
103103
logical, intent(in ) :: ldiag3d
@@ -431,7 +431,7 @@ subroutine cu_gf_driver_run(ntracer,garea,im,km,dt,flag_init,flag_restart,&
431431
ccn_m(i) = 0.
432432

433433
! set aod and ccn
434-
if (flag_init .and. .not.flag_restart) then
434+
if ((flag_init .and. .not.flag_restart) .or. gf_coldstart) then
435435
aod_gf(i)=aodc0
436436
else
437437
if((cactiv(i).eq.0) .and. (cactiv_m(i).eq.0))then

physics/CONV/Grell_Freitas/cu_gf_driver.meta

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -588,6 +588,13 @@
588588
dimensions = ()
589589
type = logical
590590
intent = in
591+
[gf_coldstart]
592+
standard_name = flag_for_cold_start_gf
593+
long_name = flag to cold start G-F
594+
units = flag
595+
dimensions = ()
596+
type = logical
597+
intent = in
591598
[ichoice_in]
592599
standard_name = identifier_for_c3_or_gf_deep_convection_closure
593600
long_name = flag for C3 or GF deep convection closure

physics/CONV/Grell_Freitas/cu_gf_driver_pre.F90

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ module cu_gf_driver_pre
1616
!> \section arg_table_cu_gf_driver_pre_run Argument Table
1717
!! \htmlinclude cu_gf_driver_pre_run.html
1818
!!
19-
subroutine cu_gf_driver_pre_run (flag_init, flag_restart, kdt, fhour, dtp, t, q, prevst, prevsq, &
19+
subroutine cu_gf_driver_pre_run (flag_init, flag_restart, gf_coldstart, kdt, fhour, dtp, t, q, prevst, prevsq, &
2020
forcet, forceq, cactiv, cactiv_m, conv_act, conv_act_m, &
2121
rrfs_sd, ntsmoke, ntdust, ntcoarsepm, chem3d, gq0, &
2222
errmsg, errflg)
@@ -27,6 +27,7 @@ subroutine cu_gf_driver_pre_run (flag_init, flag_restart, kdt, fhour, dtp, t, q,
2727

2828
logical, intent(in) :: flag_init
2929
logical, intent(in) :: flag_restart
30+
logical, intent(in) :: gf_coldstart
3031
logical, intent(in) :: rrfs_sd
3132
integer, intent(in) :: kdt
3233
real(kind_phys), intent(in) :: fhour
@@ -60,7 +61,7 @@ subroutine cu_gf_driver_pre_run (flag_init, flag_restart, kdt, fhour, dtp, t, q,
6061
! For restart runs, can assume that prevst and prevsq
6162
! are read from the restart files beforehand, same
6263
! for conv_act.
63-
if(flag_init .and. .not.flag_restart) then
64+
if((flag_init .and. .not.flag_restart) .or. gf_coldstart) then
6465
!$acc kernels
6566
forcet(:,:)=0.0
6667
forceq(:,:)=0.0

physics/CONV/Grell_Freitas/cu_gf_driver_pre.meta

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -130,6 +130,13 @@
130130
kind = kind_phys
131131
intent = in
132132
optional = True
133+
[gf_coldstart]
134+
standard_name = flag_for_cold_start_gf
135+
long_name = flag to cold start G-F
136+
units = flag
137+
dimensions = ()
138+
type = logical
139+
intent = in
133140
[rrfs_sd]
134141
standard_name = do_smoke_coupling
135142
long_name = flag controlling rrfs_sd collection

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.F90

Lines changed: 11 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -44,9 +44,7 @@ module GFS_phys_time_vary
4444

4545
private
4646

47-
public GFS_phys_time_vary_init, GFS_phys_time_vary_timestep_init, GFS_phys_time_vary_timestep_finalize, GFS_phys_time_vary_finalize
48-
49-
logical :: is_initialized = .false.
47+
public GFS_phys_time_vary_init, GFS_phys_time_vary_timestep_init, GFS_phys_time_vary_finalize
5048

5149
real(kind=kind_phys), parameter :: con_hr = 3600.0_kind_phys
5250
real(kind=kind_phys), parameter :: con_99 = 99.0_kind_phys
@@ -95,7 +93,8 @@ subroutine GFS_phys_time_vary_init (
9593
smcwtdxy, deeprechxy, rechxy, snowxy, snicexy, snliqxy, tsnoxy , smoiseq, zsnsoxy, &
9694
slc, smc, stc, tsfcl, snowd, canopy, tg3, stype, con_t0c, lsm_cold_start, nthrds, &
9795
lkm, use_lake_model, lakefrac, lakedepth, iopt_lake, iopt_lake_clm, iopt_lake_flake, &
98-
lakefrac_threshold, lakedepth_threshold, ozphys, h2ophys, errmsg, errflg)
96+
lakefrac_threshold, lakedepth_threshold, ozphys, h2ophys, is_initialized, errmsg, &
97+
errflg)
9998

10099
implicit none
101100

@@ -193,6 +192,7 @@ subroutine GFS_phys_time_vary_init (
193192
real(kind_phys), intent(in) :: con_t0c
194193

195194
integer, intent(in) :: nthrds
195+
logical, intent(inout) :: is_initialized
196196
character(len=*), intent(out) :: errmsg
197197
integer, intent(out) :: errflg
198198

@@ -713,7 +713,8 @@ subroutine GFS_phys_time_vary_timestep_init (
713713
tsfc, tsfco, tisfc, hice, fice, facsf, facwf, alvsf, alvwf, alnsf, alnwf, zorli, zorll, &
714714
zorlo, weasd, slope, snoalb, canopy, vfrac, vtype, stype,scolor, shdmin, shdmax, snowd, &
715715
cv, cvb, cvt, oro, oro_uf, xlat_d, xlon_d, slmsk, landfrac, ozphys, h2ophys, &
716-
do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, tau_amf, errmsg, errflg)
716+
do_ugwp_v1, jindx1_tau, jindx2_tau, ddy_j1tau, ddy_j2tau, tau_amf, is_initialized, &
717+
errmsg, errflg)
717718

718719
implicit none
719720

@@ -762,6 +763,7 @@ subroutine GFS_phys_time_vary_timestep_init (
762763
real(kind_phys), intent(inout), optional :: smois(:,:), sh2o(:,:), tslb(:,:), tref(:)
763764
integer, intent(inout) :: vtype(:), stype(:),scolor(:), slope(:)
764765

766+
logical, intent(in) :: is_initialized
765767
character(len=*), intent(out) :: errmsg
766768
integer, intent(out) :: errflg
767769

@@ -931,36 +933,17 @@ subroutine GFS_phys_time_vary_timestep_init (
931933
end subroutine GFS_phys_time_vary_timestep_init
932934
!> @}
933935

934-
!> \section arg_table_GFS_phys_time_vary_timestep_finalize Argument Table
935-
!! \htmlinclude GFS_phys_time_vary_timestep_finalize.html
936-
!!
937-
!>\section gen_GFS_phys_time_vary_timestep_finalize GFS_phys_time_vary_timestep_finalize General Algorithm
938-
!> @{
939-
subroutine GFS_phys_time_vary_timestep_finalize (errmsg, errflg)
940-
941-
implicit none
942-
943-
! Interface variables
944-
character(len=*), intent(out) :: errmsg
945-
integer, intent(out) :: errflg
946-
947-
! Initialize CCPP error handling variables
948-
errmsg = ''
949-
errflg = 0
950-
951-
end subroutine GFS_phys_time_vary_timestep_finalize
952-
!> @}
953-
954936
!> \section arg_table_GFS_phys_time_vary_finalize Argument Table
955937
!! \htmlinclude GFS_phys_time_vary_finalize.html
956938
!!
957-
subroutine GFS_phys_time_vary_finalize(errmsg, errflg)
939+
subroutine GFS_phys_time_vary_finalize(is_initialized, errmsg, errflg)
958940

959941
implicit none
960942

961943
! Interface variables
962-
character(len=*), intent(out) :: errmsg
963-
integer, intent(out) :: errflg
944+
logical, intent(inout) :: is_initialized
945+
character(len=*), intent(out) :: errmsg
946+
integer, intent(out) :: errflg
964947

965948
! Initialize CCPP error handling variables
966949
errmsg = ''

physics/Interstitials/UFS_SCM_NEPTUNE/GFS_phys_time_vary.fv3.meta

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1042,6 +1042,13 @@
10421042
dimensions = ()
10431043
type = ty_h2ophys
10441044
intent = in
1045+
[is_initialized]
1046+
standard_name = flag_for_gfs_phys_time_vary_interstitial_initialization
1047+
long_name = flag carrying interstitial initialization status
1048+
units = flag
1049+
dimensions = ()
1050+
type = logical
1051+
intent = inout
10451052
[errmsg]
10461053
standard_name = ccpp_error_message
10471054
long_name = error message for error handling in CCPP
@@ -1062,6 +1069,13 @@
10621069
[ccpp-arg-table]
10631070
name = GFS_phys_time_vary_finalize
10641071
type = scheme
1072+
[is_initialized]
1073+
standard_name = flag_for_gfs_phys_time_vary_interstitial_initialization
1074+
long_name = flag carrying interstitial initialization status
1075+
units = flag
1076+
dimensions = ()
1077+
type = logical
1078+
intent = inout
10651079
[errmsg]
10661080
standard_name = ccpp_error_message
10671081
long_name = error message for error handling in CCPP
@@ -2055,26 +2069,13 @@
20552069
dimensions = ()
20562070
type = ty_h2ophys
20572071
intent = in
2058-
[errmsg]
2059-
standard_name = ccpp_error_message
2060-
long_name = error message for error handling in CCPP
2061-
units = none
2062-
dimensions = ()
2063-
type = character
2064-
kind = len=*
2065-
intent = out
2066-
[errflg]
2067-
standard_name = ccpp_error_code
2068-
long_name = error code for error handling in CCPP
2069-
units = 1
2072+
[is_initialized]
2073+
standard_name = flag_for_gfs_phys_time_vary_interstitial_initialization
2074+
long_name = flag carrying interstitial initialization status
2075+
units = flag
20702076
dimensions = ()
2071-
type = integer
2072-
intent = out
2073-
2074-
########################################################################
2075-
[ccpp-arg-table]
2076-
name = GFS_phys_time_vary_timestep_finalize
2077-
type = scheme
2077+
type = logical
2078+
intent = in
20782079
[errmsg]
20792080
standard_name = ccpp_error_message
20802081
long_name = error message for error handling in CCPP

physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.F90

Lines changed: 2 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,7 @@ subroutine sgscloud_radpre_run( &
5555
nlay, plyr, xlat, dz,de_lgth, &
5656
cldsa,mtopa,mbota, &
5757
imp_physics, imp_physics_gfdl,&
58-
imp_physics_fa, &
58+
imp_physics_fa, conv_cf_opt, &
5959
iovr, &
6060
errmsg, errflg )
6161

@@ -75,7 +75,7 @@ subroutine sgscloud_radpre_run( &
7575
real(kind=kind_phys) :: gfac
7676
integer, intent(in) :: im, levs, imfdeepcnv, imfdeepcnv_gf, &
7777
& nlay, imfdeepcnv_sas, imfdeepcnv_c3, imp_physics, &
78-
& imp_physics_gfdl, imp_physics_fa
78+
& imp_physics_gfdl, imp_physics_fa, conv_cf_opt
7979
logical, intent(in) :: flag_init, flag_restart, do_mynnedmf
8080

8181
real(kind=kind_phys), dimension(:,:), intent(inout) :: qc, qi
@@ -120,9 +120,6 @@ subroutine sgscloud_radpre_run( &
120120
real :: a, f, sigq, qmq, qt, xl, th, thl, rsl, cpm, cb_cf
121121
real(kind=kind_phys) :: tlk
122122

123-
!Option to convective cloud fraction
124-
integer, parameter :: conv_cf_opt = 0 !0: C-B, 1: X-R
125-
126123
! Initialize CCPP error handling variables
127124
errmsg = ''
128125
errflg = 0

physics/Interstitials/UFS_SCM_NEPTUNE/sgscloud_radpre.meta

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -275,6 +275,13 @@
275275
dimensions = ()
276276
type = integer
277277
intent = in
278+
[conv_cf_opt]
279+
standard_name = option_for_convection_scheme_cloud_fraction_computation
280+
long_name = option for convection scheme cloud fraction computation
281+
units = flag
282+
dimensions = ()
283+
type = integer
284+
intent = in
278285
[qc_save]
279286
standard_name = cloud_condensed_water_mixing_ratio_save
280287
long_name = ratio of mass of cloud water to mass of dry air plus vapor (without condensates) before entering a physics scheme

0 commit comments

Comments
 (0)