From 03fc30cfe621836ea7d09c0b8dcab220d4d452dc Mon Sep 17 00:00:00 2001 From: Dusan Jovic Date: Thu, 3 Apr 2025 16:50:41 +0000 Subject: [PATCH 1/3] 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 890aeb9fb0..f007846798 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 2/3] 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 75876f6fa5..e1ad81bb1a 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 c197599640..852f8060d2 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 3/3] 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 7dc8460ba8..55bfb6c9f6 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 c0bfcf6d92..bfd5d8c0f8 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)