diff --git a/.gitmodules b/.gitmodules index 6e979209b..dc0798c32 100644 --- a/.gitmodules +++ b/.gitmodules @@ -4,7 +4,7 @@ branch = main [submodule "ccpp-physics"] path = ccpp/physics - url = https://github.com/NCAR/ccpp-physics + url = https://github.com/NCAR/ccpp-physics branch = main [submodule "CMakeModules"] path = CMakeModules diff --git a/ccpp/physics b/ccpp/physics index d46098d71..6b0599ef6 160000 --- a/ccpp/physics +++ b/ccpp/physics @@ -1 +1 @@ -Subproject commit d46098d717c6fb4b3e926b8c3794d83e3a1627d9 +Subproject commit 6b0599ef6c7ea076336b1f073899c5b97e37d584 diff --git a/scm/src/GFS_typedefs.F90 b/scm/src/GFS_typedefs.F90 index 3922c31ef..2e822487a 100644 --- a/scm/src/GFS_typedefs.F90 +++ b/scm/src/GFS_typedefs.F90 @@ -227,6 +227,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 @@ -1309,6 +1311,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 @@ -2310,6 +2316,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)) @@ -2367,6 +2375,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 @@ -3807,6 +3817,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 @@ -4079,7 +4092,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 @@ -5055,6 +5068,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 @@ -6880,6 +6894,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/scm/src/GFS_typedefs.meta b/scm/src/GFS_typedefs.meta index caf348a5e..02f58b37a 100644 --- a/scm/src/GFS_typedefs.meta +++ b/scm/src/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 @@ -5869,6 +5883,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