diff --git a/ccpp/physics b/ccpp/physics
index 3d45390dc..efb68b5b9 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit 3d45390dcd118c3cb0c6fb008e2d21608bbf0648
+Subproject commit efb68b5b948937f256a1a90c2de446b0d9b09e0f
diff --git a/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml b/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml
new file mode 100644
index 000000000..42928357d
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_2017_satmedmf_coupled.xml
@@ -0,0 +1,87 @@
+
+
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_suite_interstitial_rad_reset
+ GFS_rrtmg_pre
+ rrtmg_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw_pre
+ rrtmg_lw
+ rrtmg_lw_post
+ GFS_rrtmg_post
+
+
+
+
+ GFS_suite_interstitial_phys_reset
+ GFS_suite_stateout_reset
+ get_prs_fv3
+ GFS_suite_interstitial_1
+ GFS_surface_generic_pre
+ GFS_surface_composites_pre
+ dcyc2t3
+ GFS_surface_composites_inter
+ GFS_suite_interstitial_2
+
+
+
+ sfc_diff
+ GFS_surface_loop_control_part1
+ sfc_ocean
+ lsm_noah
+ sfc_cice
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ satmedmfvdif
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ cires_ugwp
+ cires_ugwp_post
+ GFS_GWD_generic_post
+ rayleigh_damp
+ GFS_suite_stateout_update
+ ozphys
+ GFS_DCNV_generic_pre
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ zhaocarr_gscond
+ zhaocarr_precpd
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+
+
+
+
+ GFS_stochastics
+
+
+
+
diff --git a/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml b/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml
new file mode 100644
index 000000000..71f3665f9
--- /dev/null
+++ b/ccpp/suites/suite_FV3_GFS_v15p2_coupled.xml
@@ -0,0 +1,92 @@
+
+
+
+
+
+
+ fv_sat_adj
+
+
+
+
+ GFS_time_vary_pre
+ GFS_rrtmg_setup
+ GFS_rad_time_vary
+ GFS_phys_time_vary
+
+
+
+
+ GFS_suite_interstitial_rad_reset
+ GFS_rrtmg_pre
+ rrtmg_sw_pre
+ rrtmg_sw
+ rrtmg_sw_post
+ rrtmg_lw_pre
+ rrtmg_lw
+ rrtmg_lw_post
+ GFS_rrtmg_post
+
+
+
+
+ GFS_suite_interstitial_phys_reset
+ GFS_suite_stateout_reset
+ get_prs_fv3
+ GFS_suite_interstitial_1
+ GFS_surface_generic_pre
+ GFS_surface_composites_pre
+ dcyc2t3
+ GFS_surface_composites_inter
+ GFS_suite_interstitial_2
+
+
+
+ sfc_diff
+ GFS_surface_loop_control_part1
+ sfc_ocean
+ lsm_noah
+ sfc_cice
+ sfc_sice
+ GFS_surface_loop_control_part2
+
+
+
+ GFS_surface_composites_post
+ sfc_diag
+ sfc_diag_post
+ GFS_surface_generic_post
+ GFS_PBL_generic_pre
+ hedmf
+ GFS_PBL_generic_post
+ GFS_GWD_generic_pre
+ cires_ugwp
+ cires_ugwp_post
+ GFS_GWD_generic_post
+ rayleigh_damp
+ GFS_suite_stateout_update
+ ozphys_2015
+ h2ophys
+ GFS_DCNV_generic_pre
+ get_phi_fv3
+ GFS_suite_interstitial_3
+ samfdeepcnv
+ GFS_DCNV_generic_post
+ GFS_SCNV_generic_pre
+ samfshalcnv
+ GFS_SCNV_generic_post
+ GFS_suite_interstitial_4
+ cnvc90
+ GFS_MP_generic_pre
+ gfdl_cloud_microphys
+ GFS_MP_generic_post
+ maximum_hourly_diagnostics
+
+
+
+
+ GFS_stochastics
+
+
+
+
diff --git a/gfsphysics/GFS_layer/GFS_physics_driver.F90 b/gfsphysics/GFS_layer/GFS_physics_driver.F90
index c2bf254ac..98edf87d1 100644
--- a/gfsphysics/GFS_layer/GFS_physics_driver.F90
+++ b/gfsphysics/GFS_layer/GFS_physics_driver.F90
@@ -544,9 +544,6 @@ subroutine GFS_physics_driver &
doms, psautco_l, prautco_l, ocalnirbm_cpl, ocalnirdf_cpl, &
ocalvisbm_cpl, ocalvisdf_cpl, dtzm, temrain1, t2mmp, q2mp, &
psaur_l, praur_l, &
-!--- coupling inputs for physics
- dtsfc_cice, dqsfc_cice, dusfc_cice, dvsfc_cice, &
-! dtsfc_cice, dqsfc_cice, dusfc_cice, dvsfc_cice, ulwsfc_cice, &
!--- for CS-convection
wcbmax
@@ -678,16 +675,15 @@ subroutine GFS_physics_driver &
real :: pshltr,QCQ,rh02
real(kind=kind_phys), allocatable, dimension(:,:) :: den
- !! Initialize local variables (mainly for debugging purposes, because the
- !! corresponding variables Interstitial(nt)%... are reset to zero every time);
- !! these variables are only modified over parts of the entire domain (related
- !! to land surface mask etc.)
+ !! Initialize local variables (for debugging purposes only,
+ !! because the corresponding variables Interstitial(nt)%...
+ !! are reset to zero every time).
!snowmt = 0.
!gamq = 0.
!gamt = 0.
!gflx = 0.
!hflx = 0.
- !
+
!! Strictly speaking, this is not required. But when
!! hunting for bit-for-bit differences, doing the same as
!! in GFS_suite_stateout_reset makes life a lot easier.
@@ -911,10 +907,6 @@ subroutine GFS_physics_driver &
! --- set initial quantities for stochastic physics deltas
if (Model%do_sppt) then
Tbd%dtdtr = zero
- do i=1,im
- Tbd%drain_cpl(i) = Coupling%rain_cpl (i)
- Tbd%dsnow_cpl(i) = Coupling%snow_cpl (i)
- enddo
endif
! mg, sfc-perts
@@ -1113,14 +1105,6 @@ subroutine GFS_physics_driver &
do i=1,im
islmsk_cice(i) = nint(Coupling%slimskin_cpl(i))
flag_cice(i) = (islmsk_cice(i) == 4)
-
- if (flag_cice(i)) then
-! ulwsfc_cice(i) = Coupling%ulwsfcin_cpl(i)
- dusfc_cice(i) = Coupling%dusfcin_cpl(i)
- dvsfc_cice(i) = Coupling%dvsfcin_cpl(i)
- dtsfc_cice(i) = Coupling%dtsfcin_cpl(i)
- dqsfc_cice(i) = Coupling%dqsfcin_cpl(i)
- endif
enddo
endif
!*## CCPP ##
@@ -1145,9 +1129,8 @@ subroutine GFS_physics_driver &
endif
endif
if (fice(i) < one) then
- wet(i)=.true. !some open ocean/lake water exists
+ wet(i)=.true. ! some open ocean/lake water exists
if (.not. Model%cplflx) Sfcprop%tsfco(i) = max(Sfcprop%tsfco(i), Sfcprop%tisfc(i), tgice)
-
end if
else
fice(i) = zero
@@ -1659,13 +1642,14 @@ subroutine GFS_physics_driver &
sbsno(i) = zero
snowc(i) = zero
snohf(i) = zero
+ !## CCPP ##* GFS_surface_generic.F90/GFS_surface_generic_pre_run
Diag%zlvl(i) = Statein%phil(i,1) * onebg
Diag%smcwlt2(i) = zero
Diag%smcref2(i) = zero
-
wind(i) = max(sqrt(Statein%ugrs(i,1)*Statein%ugrs(i,1) + &
Statein%vgrs(i,1)*Statein%vgrs(i,1)) &
+ max(zero, min(Tbd%phy_f2d(i,Model%num_p2d), 30.0)), one)
+ !*## CCPP ##
enddo
!*## CCPP ##
@@ -1909,6 +1893,30 @@ subroutine GFS_physics_driver &
endif !lsm
+ !! Strictly speaking, this is not required. But when
+ !! hunting for bit-for-bit differences, updating the
+ !! subsurface variables in the Sfcprop DDT makes
+ !! life a lot easier
+ !if (Model%frac_grid) then
+ ! do k=1,lsoil
+ ! do i=1,im
+ ! if (dry(i)) then
+ ! Sfcprop%smc(i,k) = smsoil(i,k)
+ ! Sfcprop%stc(i,k) = stsoil(i,k)
+ ! Sfcprop%slc(i,k) = slsoil(i,k)
+ ! endif
+ ! enddo
+ ! enddo
+ !else
+ ! do k=1,lsoil
+ ! do i=1,im
+ ! Sfcprop%smc(i,k) = smsoil(i,k)
+ ! Sfcprop%stc(i,k) = stsoil(i,k)
+ ! Sfcprop%slc(i,k) = slsoil(i,k)
+ ! enddo
+ ! enddo
+ !endif
+
! if (lprnt) write(0,*)' tseabeficemodel =',Sfcprop%tsfc(ipr),' me=',me &
! &, ' kdt=',kdt,' tsfc32=',tsfc3(ipr,2),' fice=',fice(ipr) &
! &,' stsoil=',stsoil(ipr,:)
@@ -1931,8 +1939,9 @@ subroutine GFS_physics_driver &
(im, Statein%tgrs(:,1), &
Statein%qgrs(:,1,1), cd3(:,2), cdq3(:,2), &
Statein%prsl(:,1), wind, &
- flag_cice, flag_iter, dqsfc_cice, dtsfc_cice, &
- dusfc_cice, dvsfc_cice, &
+ flag_cice, flag_iter, &
+ Coupling%dqsfcin_cpl, Coupling%dtsfcin_cpl, &
+ Coupling%dusfcin_cpl, Coupling%dvsfcin_cpl, &
! --- outputs:
qss3(:,2), cmm3(:,2), chh3(:,2), evap3(:,2), hflx3(:,2), &
stress3(:,2))
@@ -2103,15 +2112,11 @@ subroutine GFS_physics_driver &
ep1d(i) = ep1d3(i,k)
Sfcprop%weasd(i) = weasd3(i,k)
Sfcprop%snowd(i) = snowd3(i,k)
-
evap(i) = evap3(i,k)
hflx(i) = hflx3(i,k)
qss(i) = qss3(i,k)
Sfcprop%tsfc(i) = tsfc3(i,k)
- Diag%cmm(i) = cmm3(i,k)
- Diag%chh(i) = chh3(i,k)
-
Sfcprop%zorll(i) = zorl3(i,1)
Sfcprop%zorlo(i) = zorl3(i,3)
@@ -2120,7 +2125,6 @@ subroutine GFS_physics_driver &
txo = one - txi
evap(i) = txi * evap3(i,2) + txo * evap3(i,3)
hflx(i) = txi * hflx3(i,2) + txo * hflx3(i,3)
-! Sfcprop%tsfc(i) = txi * tice(i) + txo * tsfc3(i,3)
Sfcprop%tsfc(i) = txi * tsfc3(i,2) + txo * tsfc3(i,3)
else ! return updated lake ice thickness & concentration to global array
if (islmsk(i) == 2) then
@@ -2839,10 +2843,10 @@ subroutine GFS_physics_driver &
do i=1,im
if (Sfcprop%oceanfrac(i) > zero) then ! Ocean only, NO LAKES
if (Sfcprop%fice(i) > one - epsln) then ! no open water, thus use results from CICE
- Coupling%dusfci_cpl(i) = dusfc_cice(i)
- Coupling%dvsfci_cpl(i) = dvsfc_cice(i)
- Coupling%dtsfci_cpl(i) = dtsfc_cice(i)
- Coupling%dqsfci_cpl(i) = dqsfc_cice(i)
+ Coupling%dusfci_cpl(i) = Coupling%dusfcin_cpl(i)
+ Coupling%dvsfci_cpl(i) = Coupling%dvsfcin_cpl(i)
+ Coupling%dtsfci_cpl(i) = Coupling%dtsfcin_cpl(i)
+ Coupling%dqsfci_cpl(i) = Coupling%dqsfcin_cpl(i)
elseif (icy(i) .or. dry(i)) then ! use stress_ocean from sfc_diff for opw component at mixed point
tem1 = max(Diag%q1(i), 1.e-8)
rho = Statein%prsl(i,1) / (con_rd*Diag%t1(i)*(one+con_fvirt*tem1))
@@ -2856,8 +2860,6 @@ subroutine GFS_physics_driver &
endif
Coupling%dtsfci_cpl(i) = con_cp * rho * hflx3(i,3) ! sensible heat flux over open ocean
Coupling%dqsfci_cpl(i) = con_hvap * rho * evap3(i,3) ! latent heat flux over open ocean
-! if (lprnt .and. i == ipr) write(0,*)' hflx33=',hflx3(i,3),' evap33=',evap3(i,3), &
-! ' con_cp=',con_cp,' rho=',rho,' con_hvap=',con_hvap
else ! use results from PBL scheme for 100% open ocean
Coupling%dusfci_cpl(i) = dusfc1(i)
Coupling%dvsfci_cpl(i) = dvsfc1(i)
@@ -5283,7 +5285,7 @@ subroutine GFS_physics_driver &
!*## CCPP ##
!## CCPP ##* GFS_MP_generic.F90/GFS_MP_generic_post_run
Diag%rain(:) = Diag%rainc(:) + frain * rain1(:) ! total rain per timestep
-
+
! --- get the amount of different precip type for Noah MP
! --- convert from m/dtp to mm/s
if (Model%lsm==Model%lsm_noahmp) then
@@ -5463,10 +5465,10 @@ subroutine GFS_physics_driver &
if (Model%cplflx .or. Model%cplchm) then
do i = 1, im
- Coupling%rain_cpl(i) = Coupling%rain_cpl(i) &
- + Diag%rain(i) * (one-Sfcprop%srflag(i))
- Coupling%snow_cpl(i) = Coupling%snow_cpl(i) &
- + Diag%rain(i) * Sfcprop%srflag(i)
+ Tbd%drain_cpl(i)= Diag%rain(i) * (one-Sfcprop%srflag(i))
+ Tbd%dsnow_cpl(i)= Diag%rain(i) * Sfcprop%srflag(i)
+ Coupling%rain_cpl(i) = Coupling%rain_cpl(i) + Tbd%drain_cpl(i)
+ Coupling%snow_cpl(i) = Coupling%snow_cpl(i) + Tbd%dsnow_cpl(i)
enddo
endif
@@ -5557,15 +5559,6 @@ subroutine GFS_physics_driver &
if (Model%do_sppt) then
!--- radiation heating rate
Tbd%dtdtr(1:im,:) = Tbd%dtdtr(1:im,:) + dtdtc(1:im,:)*dtf
- do i = 1, im
- if (t850(i) > 273.16) then
-!--- change in change in rain precip
- Tbd%drain_cpl(i) = Diag%rain(i) - Tbd%drain_cpl(i)
- else
-!--- change in change in snow precip
- Tbd%dsnow_cpl(i) = Diag%rain(i) - Tbd%dsnow_cpl(i)
- endif
- enddo
endif
!*## CCPP ##
!## CCPP ##* This block is not in the CCPP since it is not needed in the CCPP.
diff --git a/gfsphysics/GFS_layer/GFS_typedefs.F90 b/gfsphysics/GFS_layer/GFS_typedefs.F90
index 8250bea53..00bae3897 100644
--- a/gfsphysics/GFS_layer/GFS_typedefs.F90
+++ b/gfsphysics/GFS_layer/GFS_typedefs.F90
@@ -284,8 +284,8 @@ module GFS_typedefs
#endif
real (kind=kind_phys), pointer :: q2m (:) => null() !< 2 meter humidity
-! -- In/Out for Noah MP
- real (kind=kind_phys), pointer :: snowxy (:) => null() !
+! -- In/Out for Noah MP
+ real (kind=kind_phys), pointer :: snowxy (:) => null() !<
real (kind=kind_phys), pointer :: tvxy (:) => null() !< veg temp
real (kind=kind_phys), pointer :: tgxy (:) => null() !< ground temp
real (kind=kind_phys), pointer :: canicexy(:) => null() !<
@@ -312,7 +312,7 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: xlaixy (:) => null() !<
real (kind=kind_phys), pointer :: taussxy (:) => null() !<
real (kind=kind_phys), pointer :: smcwtdxy(:) => null() !<
- real (kind=kind_phys), pointer :: deeprechxy(:) => null() !<
+ real (kind=kind_phys), pointer :: deeprechxy(:)=> null() !<
real (kind=kind_phys), pointer :: rechxy (:) => null() !<
real (kind=kind_phys), pointer :: snicexy (:,:) => null() !<
@@ -1853,11 +1853,6 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: tsurf_land(:) => null() !<
real (kind=kind_phys), pointer :: tsurf_ocean(:) => null() !<
real (kind=kind_phys), pointer :: ud_mf(:,:) => null() !<
- real (kind=kind_phys), pointer :: ulwsfc_cice(:) => null() !<
- real (kind=kind_phys), pointer :: dusfc_cice(:) => null() !<
- real (kind=kind_phys), pointer :: dvsfc_cice(:) => null() !<
- real (kind=kind_phys), pointer :: dqsfc_cice(:) => null() !<
- real (kind=kind_phys), pointer :: dtsfc_cice(:) => null() !<
real (kind=kind_phys), pointer :: uustar_ice(:) => null() !<
real (kind=kind_phys), pointer :: uustar_land(:) => null() !<
real (kind=kind_phys), pointer :: uustar_ocean(:) => null() !<
@@ -2582,7 +2577,7 @@ subroutine coupling_create (Coupling, IM, Model)
Coupling%ca_turb = clear_val
Coupling%ca_shal = clear_val
Coupling%ca_rad = clear_val
- Coupling%ca_micro = clear_val
+ Coupling%ca_micro = clear_val
Coupling%cape = clear_val
Coupling%tconvtend = clear_val
Coupling%qconvtend = clear_val
@@ -4833,6 +4828,8 @@ subroutine tbd_create (Tbd, IM, Model)
if ( Model%isubc_lw == 2 .or. Model%isubc_sw == 2 ) then
allocate (Tbd%icsdsw (IM))
allocate (Tbd%icsdlw (IM))
+ Tbd%icsdsw = zero
+ Tbd%icsdlw = zero
endif
!--- ozone and stratosphere h2o needs
@@ -4877,18 +4874,20 @@ subroutine tbd_create (Tbd, IM, Model)
Tbd%acvb = clear_val
Tbd%acvt = clear_val
+ if (Model%cplflx .or. Model%cplchm) then
+ allocate (Tbd%drain_cpl (IM))
+ allocate (Tbd%dsnow_cpl (IM))
+ Tbd%drain_cpl = clear_val
+ Tbd%dsnow_cpl = clear_val
+ endif
+
if (Model%do_sppt) then
allocate (Tbd%dtdtr (IM,Model%levs))
allocate (Tbd%dtotprcp (IM))
allocate (Tbd%dcnvprcp (IM))
- allocate (Tbd%drain_cpl (IM))
- allocate (Tbd%dsnow_cpl (IM))
-
Tbd%dtdtr = clear_val
Tbd%dtotprcp = clear_val
Tbd%dcnvprcp = clear_val
- Tbd%drain_cpl = clear_val
- Tbd%dsnow_cpl = clear_val
endif
allocate (Tbd%phy_f2d (IM,Model%ntot2d))
@@ -5427,8 +5426,8 @@ subroutine diag_phys_zero (Diag, Model, linit, iauwindow_center)
Diag%u10max = zero
Diag%v10max = zero
Diag%spd10max = zero
-! Diag%rain = zero
-! Diag%rainc = zero
+ Diag%rain = zero
+ Diag%rainc = zero
Diag%ice = zero
Diag%snow = zero
Diag%graupel = zero
@@ -5911,11 +5910,6 @@ subroutine interstitial_create (Interstitial, IM, Model)
allocate (Interstitial%tsurf_land (IM))
allocate (Interstitial%tsurf_ocean (IM))
allocate (Interstitial%ud_mf (IM,Model%levs))
- allocate (Interstitial%ulwsfc_cice (IM))
- allocate (Interstitial%dusfc_cice (IM))
- allocate (Interstitial%dvsfc_cice (IM))
- allocate (Interstitial%dtsfc_cice (IM))
- allocate (Interstitial%dqsfc_cice (IM))
allocate (Interstitial%uustar_ice (IM))
allocate (Interstitial%uustar_land (IM))
allocate (Interstitial%uustar_ocean (IM))
@@ -6438,11 +6432,6 @@ subroutine interstitial_phys_reset (Interstitial, Model)
Interstitial%tsurf_land = huge
Interstitial%tsurf_ocean = huge
Interstitial%ud_mf = clear_val
- Interstitial%ulwsfc_cice = clear_val
- Interstitial%dusfc_cice = clear_val
- Interstitial%dvsfc_cice = clear_val
- Interstitial%dtsfc_cice = clear_val
- Interstitial%dqsfc_cice = clear_val
Interstitial%uustar_ice = huge
Interstitial%uustar_land = huge
Interstitial%uustar_ocean = huge
@@ -6783,11 +6772,6 @@ subroutine interstitial_print(Interstitial, Model, mpirank, omprank, blkno)
write (0,*) 'sum(Interstitial%tsurf_land ) = ', sum(Interstitial%tsurf_land )
write (0,*) 'sum(Interstitial%tsurf_ocean ) = ', sum(Interstitial%tsurf_ocean )
write (0,*) 'sum(Interstitial%ud_mf ) = ', sum(Interstitial%ud_mf )
- write (0,*) 'sum(Interstitial%ulwsfc_cice ) = ', sum(Interstitial%ulwsfc_cice )
- write (0,*) 'sum(Interstitial%dusfc_cice ) = ', sum(Interstitial%dusfc_cice )
- write (0,*) 'sum(Interstitial%dvsfc_cice ) = ', sum(Interstitial%dvsfc_cice )
- write (0,*) 'sum(Interstitial%dtsfc_cice ) = ', sum(Interstitial%dtsfc_cice )
- write (0,*) 'sum(Interstitial%dqsfc_cice ) = ', sum(Interstitial%dqsfc_cice )
write (0,*) 'sum(Interstitial%uustar_ice ) = ', sum(Interstitial%uustar_ice )
write (0,*) 'sum(Interstitial%uustar_land ) = ', sum(Interstitial%uustar_land )
write (0,*) 'sum(Interstitial%uustar_ocean ) = ', sum(Interstitial%uustar_ocean )
diff --git a/gfsphysics/GFS_layer/GFS_typedefs.meta b/gfsphysics/GFS_layer/GFS_typedefs.meta
index adb24a3fc..bc2344250 100644
--- a/gfsphysics/GFS_layer/GFS_typedefs.meta
+++ b/gfsphysics/GFS_layer/GFS_typedefs.meta
@@ -6579,34 +6579,6 @@
dimensions = (horizontal_dimension,adjusted_vertical_layer_dimension_for_radiation)
type = real
kind = kind_phys
-[dusfc_cice]
- standard_name = surface_x_momentum_flux_for_coupling_interstitial
- long_name = sfc x momentum flux for coupling interstitial
- units = Pa
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dvsfc_cice]
- standard_name = surface_y_momentum_flux_for_coupling_interstitial
- long_name = sfc y momentum flux for coupling interstitial
- units = Pa
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dtsfc_cice]
- standard_name = surface_upward_sensible_heat_flux_for_coupling_interstitial
- long_name = sfc sensible heat flux for coupling interstitial
- units = W m-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
-[dqsfc_cice]
- standard_name = surface_upward_latent_heat_flux_for_coupling_interstitial
- long_name= surface latent heat flux for coupling interstitial
- units = W m-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
[elvmax]
standard_name = maximum_subgrid_orography
long_name = maximum of subgrid orography
@@ -8038,13 +8010,6 @@
dimensions = (horizontal_dimension,vertical_dimension)
type = real
kind = kind_phys
-[ulwsfc_cice]
- standard_name = surface_upwelling_longwave_flux_for_coupling_interstitial
- long_name = surface upwelling longwave flux for coupling_interstitial
- units = W m-2
- dimensions = (horizontal_dimension)
- type = real
- kind = kind_phys
[uustar_ocean]
standard_name = surface_friction_velocity_over_ocean
long_name = surface friction velocity over ocean
diff --git a/gfsphysics/physics/GFS_debug.F90 b/gfsphysics/physics/GFS_debug.F90
index 75fa97603..c0b24ca97 100644
--- a/gfsphysics/physics/GFS_debug.F90
+++ b/gfsphysics/physics/GFS_debug.F90
@@ -394,7 +394,12 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling,
call print_var(mpirank,omprank, blkno, 'Coupling%rain_cpl', Coupling%rain_cpl)
call print_var(mpirank,omprank, blkno, 'Coupling%snow_cpl', Coupling%snow_cpl)
end if
+ if (Model%cplwav2atm) then
+ call print_var(mpirank,omprank, blkno, 'Coupling%zorlwav_cpl' , Coupling%zorlwav_cpl )
+ end if
if (Model%cplflx) then
+ call print_var(mpirank,omprank, blkno, 'Coupling%oro_cpl' , Coupling%oro_cpl )
+ call print_var(mpirank,omprank, blkno, 'Coupling%slmsk_cpl' , Coupling%slmsk_cpl )
call print_var(mpirank,omprank, blkno, 'Coupling%slimskin_cpl', Coupling%slimskin_cpl )
call print_var(mpirank,omprank, blkno, 'Coupling%dusfcin_cpl ', Coupling%dusfcin_cpl )
call print_var(mpirank,omprank, blkno, 'Coupling%dvsfcin_cpl ', Coupling%dvsfcin_cpl )
@@ -458,11 +463,24 @@ subroutine GFS_diagtoscreen_run (Model, Statein, Stateout, Sfcprop, Coupling,
call print_var(mpirank,omprank, blkno, 'Coupling%shum_wts', Coupling%shum_wts)
end if
if (Model%do_skeb) then
- call print_var(mpirank,omprank, blkno, 'Coupling%skebu_wts', Coupling%skebu_wts)
- call print_var(mpirank,omprank, blkno, 'Coupling%skebv_wts', Coupling%skebv_wts)
+ call print_var(mpirank,omprank, blkno, 'Coupling%skebu_wts', Coupling%skebu_wts )
+ call print_var(mpirank,omprank, blkno, 'Coupling%skebv_wts', Coupling%skebv_wts )
end if
if (Model%do_sfcperts) then
- call print_var(mpirank,omprank, blkno, 'Coupling%sfc_wts', Coupling%sfc_wts)
+ call print_var(mpirank,omprank, blkno, 'Coupling%sfc_wts' , Coupling%sfc_wts )
+ end if
+ if (Model%do_ca) then
+ call print_var(mpirank,omprank, blkno, 'Coupling%tconvtend', Coupling%tconvtend )
+ call print_var(mpirank,omprank, blkno, 'Coupling%qconvtend', Coupling%qconvtend )
+ call print_var(mpirank,omprank, blkno, 'Coupling%uconvtend', Coupling%uconvtend )
+ call print_var(mpirank,omprank, blkno, 'Coupling%vconvtend', Coupling%vconvtend )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca_out ', Coupling%ca_out )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca_deep ', Coupling%ca_deep )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca_turb ', Coupling%ca_turb )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca_shal ', Coupling%ca_shal )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca_rad ', Coupling%ca_rad )
+ call print_var(mpirank,omprank, blkno, 'Coupling%ca_micro ', Coupling%ca_micro )
+ call print_var(mpirank,omprank, blkno, 'Coupling%cape ', Coupling%cape )
end if
if(Model%imp_physics == Model%imp_physics_thompson .and. Model%ltaerosol) then
call print_var(mpirank,omprank, blkno, 'Coupling%nwfa2d', Coupling%nwfa2d)
diff --git a/gfsphysics/physics/gcycle.F90 b/gfsphysics/physics/gcycle.F90
index e3666c26a..b410aaa9f 100644
--- a/gfsphysics/physics/gcycle.F90
+++ b/gfsphysics/physics/gcycle.F90
@@ -8,7 +8,7 @@ SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop)
GFS_sfcprop_type, GFS_cldprop_type
implicit none
- integer :: nblks
+ integer, intent(in) :: nblks
type(GFS_control_type), intent(in) :: Model
type(GFS_grid_type), intent(in) :: Grid(nblks)
type(GFS_sfcprop_type), intent(inout) :: Sfcprop(nblks)
@@ -34,7 +34,7 @@ SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop)
TG3FCS (Model%nx*Model%ny), &
CNPFCS (Model%nx*Model%ny), &
AISFCS (Model%nx*Model%ny), &
- F10MFCS(Model%nx*Model%ny), &
+! F10MFCS(Model%nx*Model%ny), &
VEGFCS (Model%nx*Model%ny), &
VETFCS (Model%nx*Model%ny), &
SOTFCS (Model%nx*Model%ny), &
@@ -103,7 +103,7 @@ SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop)
ZORFCS (len) = Sfcprop(nb)%zorl (ix)
TG3FCS (len) = Sfcprop(nb)%tg3 (ix)
CNPFCS (len) = Sfcprop(nb)%canopy (ix)
- F10MFCS (len) = Sfcprop(nb)%f10m (ix)
+! F10MFCS (len) = Sfcprop(nb)%f10m (ix)
VEGFCS (len) = Sfcprop(nb)%vfrac (ix)
VETFCS (len) = Sfcprop(nb)%vtype (ix)
SOTFCS (len) = Sfcprop(nb)%stype (ix)
@@ -190,8 +190,8 @@ SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop)
len = len + 1
Sfcprop(nb)%slmsk (ix) = SLIFCS (len)
if ( Model%nstf_name(1) > 0 ) then
- Sfcprop(nb)%tref(ix) = TSFFCS (len)
-! if (Model%nstf_name(2) == 0) then
+ Sfcprop(nb)%tref(ix) = TSFFCS (len)
+! if ( Model%nstf_name(2) == 0 ) then
! dt_warm = (Sfcprop(nb)%xt(ix) + Sfcprop(nb)%xt(ix) ) &
! / Sfcprop(nb)%xz(ix)
! Sfcprop(nb)%tsfco(ix) = Sfcprop(nb)%tref(ix) &
@@ -205,7 +205,7 @@ SUBROUTINE GCYCLE (nblks, Model, Grid, Sfcprop, Cldprop)
Sfcprop(nb)%zorl (ix) = ZORFCS (len)
Sfcprop(nb)%tg3 (ix) = TG3FCS (len)
Sfcprop(nb)%canopy (ix) = CNPFCS (len)
- Sfcprop(nb)%f10m (ix) = F10MFCS (len)
+! Sfcprop(nb)%f10m (ix) = F10MFCS (len)
Sfcprop(nb)%vfrac (ix) = VEGFCS (len)
Sfcprop(nb)%vtype (ix) = VETFCS (len)
Sfcprop(nb)%stype (ix) = SOTFCS (len)