diff --git a/atmos_cubed_sphere b/atmos_cubed_sphere
index 65301dd7c..78f92b8e6 160000
--- a/atmos_cubed_sphere
+++ b/atmos_cubed_sphere
@@ -1 +1 @@
-Subproject commit 65301dd7c6b29c755a1f31b1a8e94562d3bd920c
+Subproject commit 78f92b8e628ef20416980d42ea802b5e97980b65
diff --git a/atmos_model.F90 b/atmos_model.F90
index 7e19fee3d..3f5de6b2c 100644
--- a/atmos_model.F90
+++ b/atmos_model.F90
@@ -1977,6 +1977,58 @@ subroutine assign_importdata(jdat, rc)
endif
endif
+! get zonal ocean current:
+!--------------------------------------------------------------------------
+ fldname = 'ocn_current_zonal'
+ if (trim(impfield_name) == trim(fldname)) then
+ findex = queryImportFields(fldname)
+ if (importFieldsValid(findex) .and. GFS_control%cplocn2atm) then
+!$omp parallel do default(shared) private(i,j,nb,ix)
+ do j=jsc,jec
+ do i=isc,iec
+ nb = Atm_block%blkno(i,j)
+ ix = Atm_block%ixp(i,j)
+ GFS_Data(nb)%Sfcprop%usfco(ix) = zero
+ if (GFS_Data(nb)%Sfcprop%oceanfrac(ix) > zero) then ! ocean points
+ if(mergeflg(i,j)) then
+ GFS_Data(nb)%Sfcprop%usfco(ix) = zero
+ datar8(i,j) = zero
+ else
+ GFS_Data(nb)%Sfcprop%usfco(ix) = datar8(i,j)
+ endif
+ endif
+ enddo
+ enddo
+ if (mpp_pe() == mpp_root_pe() .and. debug) print *,'get usfco from mediator'
+ endif
+ endif
+
+! get meridional ocean current:
+!--------------------------------------------------------------------------
+ fldname = 'ocn_current_merid'
+ if (trim(impfield_name) == trim(fldname)) then
+ findex = queryImportFields(fldname)
+ if (importFieldsValid(findex) .and. GFS_control%cplocn2atm) then
+!$omp parallel do default(shared) private(i,j,nb,ix)
+ do j=jsc,jec
+ do i=isc,iec
+ nb = Atm_block%blkno(i,j)
+ ix = Atm_block%ixp(i,j)
+ GFS_Data(nb)%Sfcprop%vsfco(ix) = zero
+ if (GFS_Data(nb)%Sfcprop%oceanfrac(ix) > zero) then ! ocean points
+ if(mergeflg(i,j)) then
+ GFS_Data(nb)%Sfcprop%vsfco(ix) = zero
+ datar8(i,j) = zero
+ else
+ GFS_Data(nb)%Sfcprop%vsfco(ix) = datar8(i,j)
+ endif
+ endif
+ enddo
+ enddo
+ if (mpp_pe() == mpp_root_pe() .and. debug) print *,'get vsfco from mediator'
+ endif
+ endif
+
! get sea ice fraction: fice or sea ice concentration from the mediator
!-----------------------------------------------------------------------
fldname = 'ice_fraction'
diff --git a/ccpp/data/GFS_typedefs.F90 b/ccpp/data/GFS_typedefs.F90
index b0e816baf..7cd1d4a35 100644
--- a/ccpp/data/GFS_typedefs.F90
+++ b/ccpp/data/GFS_typedefs.F90
@@ -236,6 +236,8 @@ module GFS_typedefs
real (kind=kind_phys), pointer :: soiltype_frac(:,:) => null() !< fractions [0:1] of soil categories
!< [tsea in gbphys.f]
real (kind=kind_phys), pointer :: tsfco (:) => null() !< sst in K
+ real (kind=kind_phys), pointer :: usfco (:) => null() !< surface zonal current in m s-1
+ real (kind=kind_phys), pointer :: vsfco (:) => null() !< surface meridional current in m s-1
real (kind=kind_phys), pointer :: tsfcl (:) => null() !< surface land temperature in K
real (kind=kind_phys), pointer :: tisfc (:) => null() !< surface temperature over ice fraction
real (kind=kind_phys), pointer :: tiice(:,:) => null() !< internal ice temperature
@@ -1315,6 +1317,10 @@ module GFS_typedefs
!< 0=no change
!< 6=areodynamical roughness over water with input 10-m wind
!< 7=slightly decrease Cd for higher wind speed compare to 6
+!--- air_sea_flux scheme
+ integer :: icplocn2atm !< air_sea flux options over ocean:
+ !< 0=no change
+ !< l=including ocean current in the computation of air_sea fluxes
!--- potential temperature definition in surface layer physics
logical :: thsfc_loc !< flag for local vs. standard potential temperature
@@ -2321,6 +2327,8 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
endif
allocate (Sfcprop%tsfc (IM))
+ allocate (Sfcprop%usfco (IM))
+ allocate (Sfcprop%vsfco (IM))
allocate (Sfcprop%tsfco (IM))
allocate (Sfcprop%tsfcl (IM))
allocate (Sfcprop%tisfc (IM))
@@ -2378,6 +2386,8 @@ subroutine sfcprop_create (Sfcprop, IM, Model)
endif
Sfcprop%tsfc = clear_val
+ Sfcprop%usfco = clear_val
+ Sfcprop%vsfco = clear_val
Sfcprop%tsfco = clear_val
Sfcprop%tsfcl = clear_val
Sfcprop%tisfc = clear_val
@@ -3815,6 +3825,9 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!< 6=areodynamical roughness over water with input 10-m wind
!< 7=slightly decrease Cd for higher wind speed compare to 6
!< negative when cplwav2atm=.true. - i.e. two way wave coupling
+ integer :: icplocn2atm = 0 !< air_sea_flux options over ocean
+ !< 0=ocean current is not used in the computation of air_sea fluxes
+ !< 1=including ocean current in the computation of air_sea fluxes
!--- potential temperature definition in surface layer physics
logical :: thsfc_loc = .true. !< flag for local vs. standard potential temperature
@@ -4074,7 +4087,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
frac_grid, min_lakeice, min_seaice, min_lake_height, &
ignore_lake, frac_ice, &
!--- surface layer
- sfc_z0_type, &
+ sfc_z0_type, icplocn2atm, &
!--- switch beteeen local and standard potential temperature
thsfc_loc, &
!--- switches in 2-m diagnostics
@@ -5000,6 +5013,7 @@ subroutine control_initialize (Model, nlunit, fn_nml, me, master, &
!--- surface layer
Model%sfc_z0_type = sfc_z0_type
if (Model%cplwav2atm) Model%sfc_z0_type = -1
+ Model%icplocn2atm = icplocn2atm
!--- potential temperature reference in sfc layer
Model%thsfc_loc = thsfc_loc
@@ -6824,6 +6838,7 @@ subroutine control_print(Model)
print *, ' '
print *, 'surface layer options'
print *, ' sfc_z0_type : ', Model%sfc_z0_type
+ print *, ' icplocn2atm : ', Model%icplocn2atm
print *, ' '
print *, 'vertical diffusion coefficients'
print *, ' xkzm_m : ', Model%xkzm_m
diff --git a/ccpp/data/GFS_typedefs.meta b/ccpp/data/GFS_typedefs.meta
index d408f5f42..497c3c786 100644
--- a/ccpp/data/GFS_typedefs.meta
+++ b/ccpp/data/GFS_typedefs.meta
@@ -805,6 +805,20 @@
dimensions = (horizontal_loop_extent)
type = real
kind = kind_phys
+[usfco]
+ standard_name = x_ocean_current
+ long_name = zonal current at ocean surface
+ units = m s-1
+ dimensions = (horizontal_loop_extent)
+ type = real
+ kind = kind_phys
+[vsfco]
+ standard_name = y_ocean_current
+ long_name = meridional current at ocean surface
+ units = m s-1
+ dimensions = (horizontal_loop_extent)
+ type = real
+ kind = kind_phys
[tsfcl]
standard_name = surface_skin_temperature_over_land
long_name = surface skin temperature over land
@@ -5855,6 +5869,12 @@
units = flag
dimensions = ()
type = integer
+[icplocn2atm]
+ standard_name = control_for_air_sea_flux_computation_over_water
+ long_name = air-sea flux option
+ units = 1
+ dimensions = ()
+ type = integer
[xkzminv]
standard_name = max_atmosphere_heat_diffusivity_due_to_background
long_name = maximum background value of heat diffusivity
diff --git a/ccpp/driver/GFS_diagnostics.F90 b/ccpp/driver/GFS_diagnostics.F90
index def71566d..4c0e7cdf7 100644
--- a/ccpp/driver/GFS_diagnostics.F90
+++ b/ccpp/driver/GFS_diagnostics.F90
@@ -3932,6 +3932,28 @@ subroutine GFS_externaldiag_populate (ExtDiag, Model, Statein, Stateout, Sfcprop
ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%tsfc(:)
enddo
+ idx = idx + 1
+ ExtDiag(idx)%axes = 2
+ ExtDiag(idx)%name = 'usfco'
+ ExtDiag(idx)%desc = 'surface zonal current'
+ ExtDiag(idx)%unit = 'm/s'
+ ExtDiag(idx)%mod_name = 'gfs_sfc'
+ allocate (ExtDiag(idx)%data(nblks))
+ do nb = 1,nblks
+ ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%usfco(:)
+ enddo
+
+ idx = idx + 1
+ ExtDiag(idx)%axes = 2
+ ExtDiag(idx)%name = 'vsfco'
+ ExtDiag(idx)%desc = 'surface meridional current'
+ ExtDiag(idx)%unit = 'm/s'
+ ExtDiag(idx)%mod_name = 'gfs_sfc'
+ allocate (ExtDiag(idx)%data(nblks))
+ do nb = 1,nblks
+ ExtDiag(idx)%data(nb)%var2 => Sfcprop(nb)%vsfco(:)
+ enddo
+
if (Model%frac_grid) then
do num = 1,Model%kice
write (xtra,'(i1)') num
diff --git a/ccpp/physics b/ccpp/physics
index e1f97ad2a..6b0599ef6 160000
--- a/ccpp/physics
+++ b/ccpp/physics
@@ -1 +1 @@
-Subproject commit e1f97ad2aca9541505cfeb1d5c8e72365053fc02
+Subproject commit 6b0599ef6c7ea076336b1f073899c5b97e37d584
diff --git a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson.xml b/ccpp/suites/suite_FV3_HAFS_v1_thompson.xml
similarity index 96%
rename from ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson.xml
rename to ccpp/suites/suite_FV3_HAFS_v1_thompson.xml
index 746c8ceb7..0e9dc6e5f 100644
--- a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson.xml
+++ b/ccpp/suites/suite_FV3_HAFS_v1_thompson.xml
@@ -18,7 +18,6 @@
rad_sw_pre
rrtmg_sw
rrtmg_sw_post
- rrtmg_lw_pre
rrtmg_lw
rrtmg_lw_post
GFS_rrtmg_post
@@ -61,7 +60,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +77,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_nonsst.xml b/ccpp/suites/suite_FV3_HAFS_v1_thompson_nonsst.xml
similarity index 96%
rename from ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_nonsst.xml
rename to ccpp/suites/suite_FV3_HAFS_v1_thompson_nonsst.xml
index 665a0b7e2..fe83ee91d 100644
--- a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_nonsst.xml
+++ b/ccpp/suites/suite_FV3_HAFS_v1_thompson_nonsst.xml
@@ -18,7 +18,6 @@
rad_sw_pre
rrtmg_sw
rrtmg_sw_post
- rrtmg_lw_pre
rrtmg_lw
rrtmg_lw_post
GFS_rrtmg_post
@@ -59,7 +58,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -77,7 +75,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp.xml b/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp.xml
index 2022ef4d6..c8d7f7f6f 100644
--- a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp.xml
+++ b/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp.xml
@@ -18,7 +18,6 @@
rad_sw_pre
rrtmg_sw
rrtmg_sw_post
- rrtmg_lw_pre
rrtmg_lw
rrtmg_lw_post
GFS_rrtmg_post
@@ -61,7 +60,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -79,7 +77,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp_nonsst.xml b/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp_nonsst.xml
index f66543c80..2a1462136 100644
--- a/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp_nonsst.xml
+++ b/ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp_nonsst.xml
@@ -18,7 +18,6 @@
rad_sw_pre
rrtmg_sw
rrtmg_sw_post
- rrtmg_lw_pre
rrtmg_lw
rrtmg_lw_post
GFS_rrtmg_post
@@ -59,7 +58,6 @@
unified_ugwp_post
GFS_GWD_generic_post
GFS_suite_stateout_update
- ozphys_2015
h2ophys
get_phi_fv3
GFS_suite_interstitial_3
@@ -77,7 +75,7 @@
mp_thompson_post
GFS_MP_generic_post
maximum_hourly_diagnostics
- phys_tend
+ GFS_physics_post
diff --git a/cpl/module_cplfields.F90 b/cpl/module_cplfields.F90
index 58f31236f..bce01c979 100644
--- a/cpl/module_cplfields.F90
+++ b/cpl/module_cplfields.F90
@@ -156,7 +156,7 @@ module module_cplfields
FieldInfo("t2m ", "s") ]
! Import Fields ----------------------------------------
- integer, public, parameter :: NimportFields = 62
+ integer, public, parameter :: NimportFields = 64
logical, public :: importFieldsValid(NimportFields)
type(ESMF_Field), target, public :: importFields(NimportFields)
@@ -179,6 +179,8 @@ module module_cplfields
FieldInfo("inst_ice_vis_dir_albedo ", "s"), &
FieldInfo("wave_z0_roughness_length ", "s"), &
FieldInfo("inst_tracer_diag_aod ", "s"), &
+ FieldInfo("ocn_current_zonal ", "s"), &
+ FieldInfo("ocn_current_merid ", "s"), &
! For receiving fluxes from mediator
FieldInfo("stress_on_air_ocn_zonal ", "s"), &
diff --git a/moving_nest/fv_moving_nest_physics.F90 b/moving_nest/fv_moving_nest_physics.F90
index 1219617a6..bb0e09927 100644
--- a/moving_nest/fv_moving_nest_physics.F90
+++ b/moving_nest/fv_moving_nest_physics.F90
@@ -386,6 +386,8 @@ subroutine mn_phys_fill_temp_variables(Atm, Atm_block, IPD_Control, IPD_Data, n,
mn_phys%zorll(i,j) = IPD_Data(nb)%Sfcprop%zorll(ix)
mn_phys%zorlwav(i,j)= IPD_Data(nb)%Sfcprop%zorlwav(ix)
mn_phys%zorlw(i,j) = IPD_Data(nb)%Sfcprop%zorlw(ix)
+ mn_phys%usfco(i,j) = IPD_Data(nb)%Sfcprop%usfco(ix)
+ mn_phys%vsfco(i,j) = IPD_Data(nb)%Sfcprop%vsfco(ix)
mn_phys%tsfco(i,j) = IPD_Data(nb)%Sfcprop%tsfco(ix)
mn_phys%tsfcl(i,j) = IPD_Data(nb)%Sfcprop%tsfcl(ix)
mn_phys%tsfc(i,j) = IPD_Data(nb)%Sfcprop%tsfc(ix)
@@ -546,6 +548,17 @@ subroutine mn_phys_apply_temp_variables(Atm, Atm_block, IPD_Control, IPD_Data, n
IPD_Data(nb)%Sfcprop%zorl(ix) = mn_phys%zorl(i,j)
endif
+ if (nint(IPD_data(nb)%Sfcprop%slmsk(ix)) .eq. 0 .and. mn_phys%usfco(i,j) .gt. 1e6) then
+ IPD_Data(nb)%Sfcprop%usfco(ix) = 0.0
+ else
+ IPD_Data(nb)%Sfcprop%usfco(ix) = mn_phys%usfco(i,j)
+ endif
+ if (nint(IPD_data(nb)%Sfcprop%slmsk(ix)) .eq. 0 .and. mn_phys%vsfco(i,j) .gt. 1e6) then
+ IPD_Data(nb)%Sfcprop%vsfco(ix) = 0.0
+ else
+ IPD_Data(nb)%Sfcprop%vsfco(ix) = mn_phys%vsfco(i,j)
+ endif
+
IPD_Data(nb)%Sfcprop%tsfco(ix) = mn_phys%tsfco(i,j)
IPD_Data(nb)%Sfcprop%tsfcl(ix) = mn_phys%tsfcl(i,j)
IPD_Data(nb)%Sfcprop%tsfc(ix) = mn_phys%tsfc(i,j)
@@ -808,6 +821,15 @@ subroutine mn_phys_fill_nest_halos_from_parent(Atm, IPD_Control, IPD_Data, mn_st
x_refine, y_refine, &
is_fine_pe, nest_domain, position, mn_phys%slmsk, 0, 78.0D0)
+ call fill_nest_halos_from_parent_masked("usfco", mn_phys%usfco, interp_type_lmask, Atm(child_grid_num)%neststruct%wt_h, &
+ Atm(child_grid_num)%neststruct%ind_h, &
+ x_refine, y_refine, &
+ is_fine_pe, nest_domain, position, mn_phys%slmsk, 0, 0.0D0)
+ call fill_nest_halos_from_parent_masked("vsfco", mn_phys%vsfco, interp_type_lmask, Atm(child_grid_num)%neststruct%wt_h, &
+ Atm(child_grid_num)%neststruct%ind_h, &
+ x_refine, y_refine, &
+ is_fine_pe, nest_domain, position, mn_phys%slmsk, 0, 0.0D0)
+
call fill_nest_halos_from_parent("tsfco", mn_phys%tsfco, interp_type, Atm(child_grid_num)%neststruct%wt_h, &
Atm(child_grid_num)%neststruct%ind_h, &
x_refine, y_refine, &
@@ -979,6 +1001,8 @@ subroutine mn_phys_fill_intern_nest_halos(moving_nest, IPD_Control, IPD_Data, do
call mn_var_fill_intern_nest_halos(mn_phys%zorll, domain_fine, is_fine_pe)
call mn_var_fill_intern_nest_halos(mn_phys%zorlwav, domain_fine, is_fine_pe)
call mn_var_fill_intern_nest_halos(mn_phys%zorlw, domain_fine, is_fine_pe)
+ call mn_var_fill_intern_nest_halos(mn_phys%usfco, domain_fine, is_fine_pe)
+ call mn_var_fill_intern_nest_halos(mn_phys%vsfco, domain_fine, is_fine_pe)
call mn_var_fill_intern_nest_halos(mn_phys%tsfco, domain_fine, is_fine_pe)
call mn_var_fill_intern_nest_halos(mn_phys%tsfcl, domain_fine, is_fine_pe)
call mn_var_fill_intern_nest_halos(mn_phys%tsfc, domain_fine, is_fine_pe)
@@ -1112,6 +1136,10 @@ subroutine mn_phys_shift_data(Atm, IPD_Control, IPD_Data, n, child_grid_num, wt_
delta_i_c, delta_j_c, x_refine, y_refine, is_fine_pe, nest_domain, position)
call mn_var_shift_data(mn_phys%zorlw, interp_type, wt_h, Atm(child_grid_num)%neststruct%ind_h, &
delta_i_c, delta_j_c, x_refine, y_refine, is_fine_pe, nest_domain, position)
+ call mn_var_shift_data(mn_phys%usfco, interp_type, wt_h, Atm(child_grid_num)%neststruct%ind_h, &
+ delta_i_c, delta_j_c, x_refine, y_refine, is_fine_pe, nest_domain, position)
+ call mn_var_shift_data(mn_phys%vsfco, interp_type, wt_h, Atm(child_grid_num)%neststruct%ind_h, &
+ delta_i_c, delta_j_c, x_refine, y_refine, is_fine_pe, nest_domain, position)
call mn_var_shift_data(mn_phys%tsfco, interp_type, wt_h, Atm(child_grid_num)%neststruct%ind_h, &
delta_i_c, delta_j_c, x_refine, y_refine, is_fine_pe, nest_domain, position)
call mn_var_shift_data(mn_phys%tsfcl, interp_type, wt_h, Atm(child_grid_num)%neststruct%ind_h, &
@@ -1206,6 +1234,7 @@ subroutine mn_phys_dump_to_netcdf(Atm, Atm_block, IPD_Control, IPD_Data, time_va
real, allocatable, dimension(:,:) :: facsf_pr_local, facwf_pr_local
real, allocatable, dimension(:,:) :: alvsf_pr_local, alvwf_pr_local, alnsf_pr_local, alnwf_pr_local
real, allocatable, dimension(:,:) :: zorl_pr_local, zorll_pr_local, zorlw_pr_local, zorli_pr_local
+ real, allocatable, dimension(:,:) :: usfco_pr_local, vsfco_pr_local
real, allocatable :: phy_f2d_pr_local (:,:,:)
real, allocatable :: phy_f3d_pr_local (:,:,:,:)
real, allocatable :: lakefrac_pr_local (:,:) !< lake fraction
@@ -1264,6 +1293,8 @@ subroutine mn_phys_dump_to_netcdf(Atm, Atm_block, IPD_Control, IPD_Data, time_va
allocate ( zorll_pr_local(is:ie, js:je) )
allocate ( zorlw_pr_local(is:ie, js:je) )
allocate ( zorli_pr_local(is:ie, js:je) )
+ allocate ( usfco_pr_local(is:ie, js:je) )
+ allocate ( vsfco_pr_local(is:ie, js:je) )
endif
if (move_nsst) then
@@ -1332,6 +1363,8 @@ subroutine mn_phys_dump_to_netcdf(Atm, Atm_block, IPD_Control, IPD_Data, time_va
zorlw_pr_local(i, j) = IPD_data(nb)%Sfcprop%zorlw(ix)
zorll_pr_local(i, j) = IPD_data(nb)%Sfcprop%zorll(ix)
zorli_pr_local(i, j) = IPD_data(nb)%Sfcprop%zorli(ix)
+ usfco_pr_local(i, j) = IPD_data(nb)%Sfcprop%usfco(ix)
+ vsfco_pr_local(i, j) = IPD_data(nb)%Sfcprop%vsfco(ix)
max_snow_alb_pr_local(i, j) = IPD_data(nb)%Sfcprop%snoalb(ix)
tsfco_pr_local(i, j) = IPD_data(nb)%Sfcprop%tsfco(ix)
tsfcl_pr_local(i, j) = IPD_data(nb)%Sfcprop%tsfcl(ix)
@@ -1394,6 +1427,8 @@ subroutine mn_phys_dump_to_netcdf(Atm, Atm_block, IPD_Control, IPD_Data, time_va
call mn_var_dump_to_netcdf(zorlw_pr_local, is_fine_pe, domain_coarse, domain_fine, position, time_val, Atm%global_tile, file_prefix, "ZORLW")
call mn_var_dump_to_netcdf(zorll_pr_local, is_fine_pe, domain_coarse, domain_fine, position, time_val, Atm%global_tile, file_prefix, "ZORLL")
call mn_var_dump_to_netcdf(zorli_pr_local, is_fine_pe, domain_coarse, domain_fine, position, time_val, Atm%global_tile, file_prefix, "ZORLI")
+ call mn_var_dump_to_netcdf(usfco_pr_local, is_fine_pe, domain_coarse, domain_fine, position, time_val, Atm%global_tile, file_prefix, "SSU")
+ call mn_var_dump_to_netcdf(vsfco_pr_local, is_fine_pe, domain_coarse, domain_fine, position, time_val, Atm%global_tile, file_prefix, "SSV")
do nv = 1, IPD_Control%ntot2d
write (phys_var_name, "(A4,I0.3)") 'PH2D', nv
@@ -1429,6 +1464,7 @@ subroutine mn_phys_dump_to_netcdf(Atm, Atm_block, IPD_Control, IPD_Data, time_va
deallocate(alvsf_pr_local, alvwf_pr_local, alnsf_pr_local, alnwf_pr_local)
deallocate(facsf_pr_local, facwf_pr_local)
deallocate(zorl_pr_local, zorlw_pr_local, zorll_pr_local, zorli_pr_local)
+ deallocate(usfco_pr_local, vsfco_pr_local)
deallocate(phy_f2d_pr_local)
deallocate(phy_f3d_pr_local)
endif
diff --git a/moving_nest/fv_moving_nest_types.F90 b/moving_nest/fv_moving_nest_types.F90
index 45bd12504..299bf9c51 100644
--- a/moving_nest/fv_moving_nest_types.F90
+++ b/moving_nest/fv_moving_nest_types.F90
@@ -140,6 +140,9 @@ module fv_moving_nest_types_mod
real (kind=kind_phys), _ALLOCATABLE :: zorlw (:,:) _NULL !< wave surface roughness length
real (kind=kind_phys), _ALLOCATABLE :: zorlwav (:,:) _NULL !< wave surface roughness in cm derived from wave model
+ real (kind=kind_phys), _ALLOCATABLE :: usfco (:,:) _NULL !< sea surface current (zonal)
+ real (kind=kind_phys), _ALLOCATABLE :: vsfco (:,:) _NULL !< sea surface current (meridional)
+
real (kind=kind_phys), _ALLOCATABLE :: sfalb_lnd(:,:) _NULL !< surface albedo over land for LSM
real (kind=kind_phys), _ALLOCATABLE :: emis_lnd(:,:) _NULL !< surface emissivity over land for LSM
real (kind=kind_phys), _ALLOCATABLE :: emis_ice(:,:) _NULL !< surface emissivity over ice for LSM
@@ -384,6 +387,9 @@ subroutine allocate_fv_moving_nest_physics_type(isd, ied, jsd, jed, npz, move_p
allocate ( mn_phys%zorlwav(isd:ied, jsd:jed) )
allocate ( mn_phys%zorlw(isd:ied, jsd:jed) )
+ allocate ( mn_phys%usfco(isd:ied, jsd:jed) )
+ allocate ( mn_phys%vsfco(isd:ied, jsd:jed) )
+
allocate ( mn_phys%alvsf(isd:ied, jsd:jed) )
allocate ( mn_phys%alvwf(isd:ied, jsd:jed) )
allocate ( mn_phys%alnsf(isd:ied, jsd:jed) )
@@ -405,7 +411,6 @@ subroutine allocate_fv_moving_nest_physics_type(isd, ied, jsd, jed, npz, move_p
allocate ( mn_phys%tsfc(isd:ied, jsd:jed) )
!allocate ( mn_phys%tsfc_radtime(isd:ied, jsd:jed) )
-
allocate ( mn_phys%albdirvis_lnd (isd:ied, jsd:jed) )
allocate ( mn_phys%albdirnir_lnd (isd:ied, jsd:jed) )
allocate ( mn_phys%albdifvis_lnd (isd:ied, jsd:jed) )
@@ -469,6 +474,9 @@ subroutine allocate_fv_moving_nest_physics_type(isd, ied, jsd, jed, npz, move_p
mn_phys%zorlwav = +99999.9
mn_phys%zorlw = +99999.9
+ mn_phys%usfco = +99999.9
+ mn_phys%vsfco = +99999.9
+
mn_phys%alvsf = +99999.9
mn_phys%alvwf = +99999.9
mn_phys%alnsf = +99999.9
@@ -565,6 +573,9 @@ subroutine deallocate_fv_moving_nest_physics_type(mn_phys)
deallocate( mn_phys%zorlwav )
deallocate( mn_phys%zorlw )
+ deallocate( mn_phys%usfco )
+ deallocate( mn_phys%vsfco )
+
deallocate( mn_phys%alvsf )
deallocate( mn_phys%alvwf )
deallocate( mn_phys%alnsf )