Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion atmos_cubed_sphere
12 changes: 12 additions & 0 deletions ccpp/driver/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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'
Expand Down
7 changes: 6 additions & 1 deletion ccpp/driver/GFS_restart.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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(:,:)
Expand Down
2 changes: 2 additions & 0 deletions io/fv3atm_restart_io.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down
8 changes: 6 additions & 2 deletions io/fv3atm_sfc_io.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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'
Expand Down Expand Up @@ -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)
Expand Down
37 changes: 25 additions & 12 deletions module_fcst_grid_comp.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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

Expand Down Expand Up @@ -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)
Expand Down Expand Up @@ -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
!
!-----------------------------------------------------------------------
Expand Down Expand Up @@ -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
Expand Down