From 03fc30cfe621836ea7d09c0b8dcab220d4d452dc Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Thu, 3 Apr 2025 16:50:41 +0000 Subject: [PATCH 01/13] Add 'ebu_smoke' to restart if rrfs_sd is enabled --- ccpp/driver/GFS_restart.F90 | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/ccpp/driver/GFS_restart.F90 b/ccpp/driver/GFS_restart.F90 index 890aeb9fb..f00784679 100644 --- a/ccpp/driver/GFS_restart.F90 +++ b/ccpp/driver/GFS_restart.F90 @@ -179,7 +179,7 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop, & Restart%num3d = Restart%num3d + 9 endif if (Model%rrfs_sd) then - Restart%num3d = Restart%num3d + 4 + Restart%num3d = Restart%num3d + 5 endif !Prognostic area fraction if (Model%progsigma) then @@ -690,6 +690,11 @@ subroutine GFS_restart_populate (Restart, Model, Statein, Stateout, Sfcprop, & Restart%data(nb,num)%var3p => Coupling(nb)%chem3d(:,:,3) enddo num = num + 1 + Restart%name3d(num) = 'ebu_smoke' + do nb = 1,nblks + Restart%data(nb,num)%var3p => Coupling(nb)%ebu_smoke(:,:) + enddo + num = num + 1 Restart%name3d(num) = 'ext550' do nb = 1,nblks Restart%data(nb,num)%var3p => Radtend(nb)%ext550(:,:) From d0d2f9831d11e657a8de0dc0a1b2b9d7d6b5abdc Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Wed, 21 May 2025 14:16:16 -0400 Subject: [PATCH 02/13] update ccpp/physics (#10) This PR will restore restart reproducibility of RRFSv1 when using saSAS deep convection and progsigma. The change will add the correct logic when initializing sigmab (the updraft area fraction). Although not being turned on in RRFSv1, saSAS shallow convection is also modified accordingly for consistency. This PR has no impact on warm start runs. Co-authored-by: jili dong --- .gitmodules | 6 ++++-- ccpp/physics | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/.gitmodules b/.gitmodules index 75876f6fa..e1ad81bb1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,8 +8,10 @@ branch = production/RRFS.v1 [submodule "ccpp/physics"] path = ccpp/physics - url = https://github.com/ufs-community/ccpp-physics - branch = production/RRFS.v1 +# url = https://github.com/ufs-community/ccpp-physics +# branch = production/RRFS.v1 + url = https://github.com/JiliDong-NOAA/ccpp-physics + branch = sigmab_restart_fix [submodule "upp"] path = upp url = https://github.com/NOAA-EMC/UPP diff --git a/ccpp/physics b/ccpp/physics index c19759964..852f8060d 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit c197599640f63a35867c0cee993fee66a67e1b68 +Subproject commit 852f8060d20642272d707aa82a6222f5a04007fa From 26304d7a871a014a45e0cc14fd33b590fe701995 Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Tue, 27 May 2025 11:33:45 -0400 Subject: [PATCH 03/13] Acsnow restart fix (#11) * fix for snow water equivalent accumulation restart reproducibility --- io/fv3atm_restart_io.F90 | 2 ++ io/fv3atm_sfc_io.F90 | 8 ++++++-- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/io/fv3atm_restart_io.F90 b/io/fv3atm_restart_io.F90 index 7dc8460ba..55bfb6c9f 100644 --- a/io/fv3atm_restart_io.F90 +++ b/io/fv3atm_restart_io.F90 @@ -405,6 +405,8 @@ subroutine fv3atm_checksum (Model, GFS_Data, Atm_block) call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%tsnow_ice) call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%snowfallac_land) call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%snowfallac_ice) + call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%acsnow_land) + call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%acsnow_ice) call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%sfalb_lnd) call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%sfalb_lnd_bck) call copy_from_GFS_Data(ii1,jj1,isc,jsc,nt,temp2d,GFS_Data(nb)%Sfcprop%sfalb_ice) diff --git a/io/fv3atm_sfc_io.F90 b/io/fv3atm_sfc_io.F90 index c0bfcf6d9..bfd5d8c0f 100644 --- a/io/fv3atm_sfc_io.F90 +++ b/io/fv3atm_sfc_io.F90 @@ -123,9 +123,9 @@ function Sfc_io_calculate_indices(sfc, Model, reading, warm_start) endif if (Model%lsm == Model%lsm_ruc .and. warm_start) then if (Model%rdlai) then - nvar2r = 13 + nvar2r = 15 else - nvar2r = 12 + nvar2r = 14 endif nvar3 = 5 else @@ -534,6 +534,8 @@ subroutine Sfc_io_fill_2d_names(sfc,Model,warm_start) nt=nt+1 ; sfc%name2(nt) = 'tsnow_ice' nt=nt+1 ; sfc%name2(nt) = 'snowfall_acc_land' nt=nt+1 ; sfc%name2(nt) = 'snowfall_acc_ice' + nt=nt+1 ; sfc%name2(nt) = 'acsnow_land' + nt=nt+1 ; sfc%name2(nt) = 'acsnow_ice' nt=nt+1 ; sfc%name2(nt) = 'sfalb_lnd' nt=nt+1 ; sfc%name2(nt) = 'sfalb_lnd_bck' nt=nt+1 ; sfc%name2(nt) = 'sfalb_ice' @@ -1051,6 +1053,8 @@ subroutine Sfc_io_transfer(sfc, reading, Model, Atm_block, Sfcprop, warm_start, call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%tsnow_ice) call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%snowfallac_land) call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%snowfallac_ice) + call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%acsnow_land) + call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%acsnow_ice) call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%sfalb_lnd) call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%sfalb_lnd_bck) call GFS_Data_transfer(reading,ii1,jj1,isc,jsc,nt,sfc%var2,Sfcprop(nb)%sfalb_ice) From 9afc6280104df14209f9967a00214c2c6ec13b8a Mon Sep 17 00:00:00 2001 From: jili dong Date: Tue, 3 Jun 2025 14:22:12 +0000 Subject: [PATCH 04/13] update ccpp/physics --- .gitmodules | 10 ++++------ 1 file changed, 4 insertions(+), 6 deletions(-) diff --git a/.gitmodules b/.gitmodules index e1ad81bb1..6d4f3c43f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -6,13 +6,11 @@ path = ccpp/framework url = https://github.com/NCAR/ccpp-framework branch = production/RRFS.v1 -[submodule "ccpp/physics"] - path = ccpp/physics -# url = https://github.com/ufs-community/ccpp-physics -# branch = production/RRFS.v1 - url = https://github.com/JiliDong-NOAA/ccpp-physics - branch = sigmab_restart_fix [submodule "upp"] path = upp url = https://github.com/NOAA-EMC/UPP branch = develop +[submodule "ccpp/physics"] + path = ccpp/physics + url = https://github.com/JiliDong-NOAA/ccpp-physics.git + branch = sigmab_restart_fix From e5c76d156aba76a35f316b3f4a18e671ffbd5bc5 Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Thu, 12 Jun 2025 13:49:09 +0000 Subject: [PATCH 05/13] Add write grid comp. restart support for fv_diag.res file --- .gitmodules | 6 ++++-- atmos_cubed_sphere | 2 +- module_fcst_grid_comp.F90 | 37 +++++++++++++++++++++++++------------ 3 files changed, 30 insertions(+), 15 deletions(-) diff --git a/.gitmodules b/.gitmodules index e1ad81bb1..a9b719bb8 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,7 +1,9 @@ [submodule "atmos_cubed_sphere"] path = atmos_cubed_sphere - url = https://github.com/NOAA-EMC/GFDL_atmos_cubed_sphere - branch = production/RRFS.v1 +# url = https://github.com/NOAA-EMC/GFDL_atmos_cubed_sphere +# branch = production/RRFS.v1 + url = https://github.com/DusanJovic-NOAA/GFDL_atmos_cubed_sphere + branch = rrfs_v1_conus13km_tests [submodule "ccpp/framework"] path = ccpp/framework url = https://github.com/NCAR/ccpp-framework diff --git a/atmos_cubed_sphere b/atmos_cubed_sphere index 84c30284b..405ca88fe 160000 --- a/atmos_cubed_sphere +++ b/atmos_cubed_sphere @@ -1 +1 @@ -Subproject commit 84c30284b2a1e7efb4c6ef9c05566c1a27d1a8fd +Subproject commit 405ca88fefcda09d1158652970fbc023a66af145 diff --git a/module_fcst_grid_comp.F90 b/module_fcst_grid_comp.F90 index ea622369c..77ca8c1b8 100644 --- a/module_fcst_grid_comp.F90 +++ b/module_fcst_grid_comp.F90 @@ -59,7 +59,9 @@ module module_fcst_grid_comp use fv3atm_restart_io_mod, only: fv_phy_restart_bundle_setup, fv_sfc_restart_bundle_setup use fv_ufs_restart_io_mod, only: fv_core_restart_bundle_setup, & fv_srf_wnd_restart_bundle_setup, & - fv_tracer_restart_bundle_setup + fv_tracer_restart_bundle_setup, & + fv_diag_restart_bundle_setup + use module_diag_hailcast, only: do_hailcast use fms2_io_mod, only: FmsNetcdfFile_t, open_file, close_file, variable_exists, read_data @@ -361,6 +363,9 @@ subroutine init_dyn_fb(nest, importState, exportState, clock, rc) else if (fb_name(1:21) == 'restart_fv_tracer.res') then call fv_tracer_restart_bundle_setup(fbList(1), grid, rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return + else if (fb_name(1:19) == 'restart_fv_diag.res') then + call fv_diag_restart_bundle_setup(fbList(1), grid, rc=rc) + if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return else do i=1, itemCount call fv_dyn_bundle_setup(Atmos%axes, fbList(i), grid, quilting=.true., rc=rc) @@ -581,6 +586,11 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) logical,allocatable :: is_moving_on_all_pets(:), is_moving(:) character(len=7) :: nest_suffix + integer, parameter :: MAX_NUM_DYN_BUNDLES = 10 + character(len=esmf_maxstr), dimension(MAX_NUM_DYN_BUNDLES) :: dyn_bundles_name + + integer :: num_dyn_bundles = 0 + type(FmsNetcdfFile_t) :: fileobj ! !----------------------------------------------------------------------- @@ -1055,21 +1065,24 @@ subroutine fcst_initialize(fcst_comp, importState, exportState, clock, rc) if ( quilting_restart ) then - do i=1,3 ! 3 dynamics restart bundles + ! Number of non-optional dyn bundles (core, srf_wnd and tracer) + num_dyn_bundles = 3 + dyn_bundles_name(1) = 'restart_fv_core.res' + dyn_bundles_name(2) = 'restart_fv_srf_wnd.res' + dyn_bundles_name(3) = 'restart_fv_tracer.res' + + ! Optional dyn bundles + if (do_hailcast) then + num_dyn_bundles = num_dyn_bundles + 1 + dyn_bundles_name(num_dyn_bundles) = 'restart_fv_diag.res' + end if + + do i=1,num_dyn_bundles ! dynamics restart bundles tempState = ESMF_StateCreate(rc=rc) if (ESMF_LogFoundError(rcToCheck=rc, msg=ESMF_LOGERR_PASSTHRU, line=__LINE__, file=__FILE__)) return - if (i == 1) then - name_FB = 'restart_fv_core.res' - elseif (i == 2) then - name_FB = 'restart_fv_srf_wnd.res' - elseif (i == 3) then - name_FB = 'restart_fv_tracer.res' - else - write(0,*)' unknown name_dynamics restart bundle ', i - ESMF_ERR_ABORT(101) - endif + name_FB = dyn_bundles_name(i) if (n > 1) then write(nest_suffix,'(A5,I2.2)') '.nest', n From b6fad36d08f50faae07397e4c8b14374ed1d7113 Mon Sep 17 00:00:00 2001 From: jili dong Date: Wed, 27 Aug 2025 19:25:40 +0000 Subject: [PATCH 06/13] update ccpp/physics --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 852f8060d..5da47dc25 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 852f8060d20642272d707aa82a6222f5a04007fa +Subproject commit 5da47dc25298e8ce5588f687ea3a0023034975d0 From f82a79f43551149d29cc9eb5dbf941eaf03cd457 Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Thu, 28 Aug 2025 11:17:11 -0400 Subject: [PATCH 07/13] Restart fix (#12) * update ccpp/physics --------- Co-authored-by: jili dong Co-authored-by: jili dong --- .gitmodules | 10 ++++------ ccpp/physics | 2 +- 2 files changed, 5 insertions(+), 7 deletions(-) diff --git a/.gitmodules b/.gitmodules index a9b719bb8..a0b57149f 100644 --- a/.gitmodules +++ b/.gitmodules @@ -8,13 +8,11 @@ path = ccpp/framework url = https://github.com/NCAR/ccpp-framework branch = production/RRFS.v1 -[submodule "ccpp/physics"] - path = ccpp/physics -# url = https://github.com/ufs-community/ccpp-physics -# branch = production/RRFS.v1 - url = https://github.com/JiliDong-NOAA/ccpp-physics - branch = sigmab_restart_fix [submodule "upp"] path = upp url = https://github.com/NOAA-EMC/UPP branch = develop +[submodule "ccpp/physics"] + path = ccpp/physics + url = https://github.com/JiliDong-NOAA/ccpp-physics.git + branch = sigmab_restart_fix diff --git a/ccpp/physics b/ccpp/physics index 852f8060d..5da47dc25 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 852f8060d20642272d707aa82a6222f5a04007fa +Subproject commit 5da47dc25298e8ce5588f687ea3a0023034975d0 From 5ae98a8e3311330dbb5377aabcece1c588a07a94 Mon Sep 17 00:00:00 2001 From: jili dong Date: Mon, 22 Sep 2025 18:09:43 +0000 Subject: [PATCH 08/13] output sfc spfh to history file --- ccpp/driver/GFS_diagnostics.F90 | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/ccpp/driver/GFS_diagnostics.F90 b/ccpp/driver/GFS_diagnostics.F90 index 2a9cb5d90..5d68f3a89 100644 --- a/ccpp/driver/GFS_diagnostics.F90 +++ b/ccpp/driver/GFS_diagnostics.F90 @@ -3847,6 +3847,18 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%q2m(:) enddo + idx = idx + 1 + ExtDiag(idx)%axes = 2 + ExtDiag(idx)%name = 'qss' + ExtDiag(idx)%desc = 'surface specific humidity' + ExtDiag(idx)%unit = 'kg/kg' + ExtDiag(idx)%mod_name = 'gfs_sfc' + ExtDiag(idx)%intpl_method = 'bilinear' + allocate (ExtDiag(idx)%data(nblks)) + do nb = 1,nblks + ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%qss(:) + enddo + idx = idx + 1 ExtDiag(idx)%axes = 2 ExtDiag(idx)%name = 't2m' From c9269247f54ece55484aa61ce455dfd0a8d363f7 Mon Sep 17 00:00:00 2001 From: jili dong Date: Wed, 8 Oct 2025 13:17:15 +0000 Subject: [PATCH 09/13] update GFDL_atmos_cubed_sphere --- .gitmodules | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.gitmodules b/.gitmodules index a0b57149f..c2c556497 100644 --- a/.gitmodules +++ b/.gitmodules @@ -2,8 +2,10 @@ path = atmos_cubed_sphere # url = https://github.com/NOAA-EMC/GFDL_atmos_cubed_sphere # branch = production/RRFS.v1 - url = https://github.com/DusanJovic-NOAA/GFDL_atmos_cubed_sphere - branch = rrfs_v1_conus13km_tests +# url = https://github.com/DusanJovic-NOAA/GFDL_atmos_cubed_sphere +# branch = rrfs_v1_conus13km_tests + url = https://github.com/JiliDong-NOAA/GFDL_atmos_cubed_sphere + branch = restart_fix [submodule "ccpp/framework"] path = ccpp/framework url = https://github.com/NCAR/ccpp-framework From 9ecc36f0b3cda54a18dd9482bafca53f338ed782 Mon Sep 17 00:00:00 2001 From: jili dong Date: Wed, 8 Oct 2025 13:25:27 +0000 Subject: [PATCH 10/13] update atmos_cubed_sphere for hailcast --- atmos_cubed_sphere | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/atmos_cubed_sphere b/atmos_cubed_sphere index 405ca88fe..f7f935f33 160000 --- a/atmos_cubed_sphere +++ b/atmos_cubed_sphere @@ -1 +1 @@ -Subproject commit 405ca88fefcda09d1158652970fbc023a66af145 +Subproject commit f7f935f33b06986a5ee7ffaaf75b0bf3753f1700 From f4be1fc656902b62cfaaa85e788fc4b433ca15ce Mon Sep 17 00:00:00 2001 From: Jili Dong Date: Wed, 15 Oct 2025 19:21:37 +0000 Subject: [PATCH 11/13] update ccpp/physics to fix C3 compiling error --- ccpp/physics | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ccpp/physics b/ccpp/physics index 5da47dc25..6be462d37 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 5da47dc25298e8ce5588f687ea3a0023034975d0 +Subproject commit 6be462d37fefb0d2e759d6178d7a3b2b44472954 From fb88de3b0cb167a81ff480b9a250e0965184eaa3 Mon Sep 17 00:00:00 2001 From: jili dong Date: Tue, 20 Jan 2026 18:04:52 +0000 Subject: [PATCH 12/13] reverse ccpp-physics and atmos_cubed back to community --- .gitmodules | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/.gitmodules b/.gitmodules index c2c556497..75876f6fa 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,20 +1,16 @@ [submodule "atmos_cubed_sphere"] path = atmos_cubed_sphere -# url = https://github.com/NOAA-EMC/GFDL_atmos_cubed_sphere -# branch = production/RRFS.v1 -# url = https://github.com/DusanJovic-NOAA/GFDL_atmos_cubed_sphere -# branch = rrfs_v1_conus13km_tests - url = https://github.com/JiliDong-NOAA/GFDL_atmos_cubed_sphere - branch = restart_fix + url = https://github.com/NOAA-EMC/GFDL_atmos_cubed_sphere + branch = production/RRFS.v1 [submodule "ccpp/framework"] path = ccpp/framework url = https://github.com/NCAR/ccpp-framework branch = production/RRFS.v1 +[submodule "ccpp/physics"] + path = ccpp/physics + url = https://github.com/ufs-community/ccpp-physics + branch = production/RRFS.v1 [submodule "upp"] path = upp url = https://github.com/NOAA-EMC/UPP branch = develop -[submodule "ccpp/physics"] - path = ccpp/physics - url = https://github.com/JiliDong-NOAA/ccpp-physics.git - branch = sigmab_restart_fix From a28c4e473dae4fe3f0d68658685ea2ea4413079c Mon Sep 17 00:00:00 2001 From: jili dong Date: Tue, 20 Jan 2026 18:10:28 +0000 Subject: [PATCH 13/13] update atmos_cubed_sphere and ccpp/physics --- atmos_cubed_sphere | 2 +- ccpp/physics | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/atmos_cubed_sphere b/atmos_cubed_sphere index f7f935f33..019eb4c68 160000 --- a/atmos_cubed_sphere +++ b/atmos_cubed_sphere @@ -1 +1 @@ -Subproject commit f7f935f33b06986a5ee7ffaaf75b0bf3753f1700 +Subproject commit 019eb4c6865831c059663f750f632093bb802a60 diff --git a/ccpp/physics b/ccpp/physics index 6be462d37..db2ff85f4 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit 6be462d37fefb0d2e759d6178d7a3b2b44472954 +Subproject commit db2ff85f4fa448b45a4720297f1b561d978e6f4c