Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Consider surface ocean current in air-sea flux calculation #755

Merged
merged 75 commits into from
Feb 1, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
75 commits
Select commit Hold shift + click to select a range
f126b8f
Update submodule atmos_cubed_sphere.
BinLiu-NOAA Apr 15, 2022
ab314b4
Performance optimization of moving nest.
wramstrom Apr 15, 2022
bf80a91
Moving nest performance optimization stage 2.
wramstrom May 2, 2022
b4e6b97
update gitmodules and hash for atmos_cubed_sphere
bensonr May 3, 2022
01c494a
update atmos_model and FV3GFS_io read performance when io_layout=1,1 …
bensonr May 3, 2022
bcbe661
Merge branch 'NOAA-EMC:develop' into emc_io_fixes
bensonr May 3, 2022
72265ba
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA May 16, 2022
18fffe3
Add the following HAFS ccpp physics suites (@ChunxiZhang-NOAA and @Bi…
BinLiu-NOAA May 17, 2022
d0b8ca8
Merge remote-tracking branch 'upstream/develop' into feature/hafsv0.3…
BinLiu-NOAA May 20, 2022
1dc7c3f
Merge remote-tracking branch 'remotes/RB/emc_io_fixes' into feature/h…
BinLiu-NOAA May 21, 2022
725fe8e
Update submodule UPP to point its latest develop branch as of 05/18/2…
BinLiu-NOAA May 21, 2022
637d972
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA May 26, 2022
63b3f23
Update submodule upp, which has the fix for regional latlon grid cros…
BinLiu-NOAA Jun 10, 2022
324924f
Only call atmosphere_fill_nest_cpl at the cap driver time steps (coup…
BinLiu-NOAA Jun 17, 2022
7f7e9f5
Removed reference to unused variable parent_x.
wramstrom Jul 29, 2022
003b0f9
Update to point submodule ccpp/physics to the feature/hafsv0.3_final …
BinLiu-NOAA Aug 19, 2022
9d6d138
FV3-related typedefs changes for the Hurricane PBL options
AndrewHazelton Aug 20, 2022
186342f
Merge branch 'feature/hafsv0.3_final' of https://github.com/hafs-comm…
AndrewHazelton Aug 20, 2022
4c42e4a
Update submodule ccpp/physics, which added the tc_pbl option in the G…
BinLiu-NOAA Aug 20, 2022
f7cd326
Update to point the support/HAFS branch for upp, ccpp-physics and atm…
BinLiu-NOAA Oct 2, 2022
1121f57
Update submodules of atmos_cubed_sphere, ccpp/physics, upp.
BinLiu-NOAA Oct 9, 2022
edc9ddd
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Oct 9, 2022
3c270f8
Adding upoff as a namelist parameter
BijuThomas-NOAA Oct 12, 2022
c29f113
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Oct 22, 2022
7ec516c
Update submodule atmos_cubed_sphere, which has updated the time string
BinLiu-NOAA Oct 28, 2022
a51f970
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Nov 13, 2022
1384c41
Update .gitmodules to point back to support/HAFS branches for FV3dyco…
BinLiu-NOAA Nov 28, 2022
6f69340
Merge remote-tracking branch 'upstream/develop' into support/HAFS
BinLiu-NOAA Dec 20, 2022
1b036b2
fix initialization issue for moving nest grid in debug mode (#622)
junwang-noaa Feb 14, 2023
3f5fcba
Update submodule atmos_cubed_sphere to point the production/hafs.v1 b…
BinLiu-NOAA Feb 23, 2023
c3954a5
Update submodule upp, which cherry-picked the wind GUST fix from the …
BinLiu-NOAA Feb 28, 2023
f6d76f9
Update submodule upp.
BinLiu-NOAA Mar 10, 2023
40387db
Update .gitmodules.
BinLiu-NOAA Mar 10, 2023
4c4c2c1
Create ESMF field attributes using the same kind as field data values…
DusanJovic-NOAA Jan 25, 2023
c246398
Update submodule UPP.
BinLiu-NOAA Mar 25, 2023
de7dd34
Update submodule ccpp/physics.
BinLiu-NOAA Apr 3, 2023
cd58f9f
Merge remote-tracking branch 'remotes/hcomm/production/hafs.v1' into …
BinLiu-NOAA Apr 30, 2023
9b33cab
Update submodules.
BinLiu-NOAA May 1, 2023
5729c1c
Update submodule upp.
BinLiu-NOAA May 12, 2023
f038546
Merge remote-tracking branch 'remotes/hcomm/production/hafs.v1' into …
BinLiu-NOAA May 13, 2023
bcb9f5c
Merge remote-tracking branch 'remotes/upstream/develop' into support/…
BinLiu-NOAA Jul 22, 2023
e27560e
Update submodule upp.
BinLiu-NOAA Jul 22, 2023
7563823
Update submodule upp.
BinLiu-NOAA Jul 22, 2023
133e6b3
Merge remote-tracking branch 'remotes/upstream/develop' into support/…
BinLiu-NOAA Jul 24, 2023
6f66432
Merge remote-tracking branch 'upstream/develop' into feature/hafsv2_b…
BinLiu-NOAA Oct 26, 2023
90f79fa
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Nov 8, 2023
7011a53
Update ccpp/suites_not_used/suite_FV3_HAFS_v1* files, needed for the …
BinLiu-NOAA Nov 8, 2023
ebc2b02
Update submodule UPP to point to the feature/hafsv2_baseline branch.
BinLiu-NOAA Nov 9, 2023
85b653c
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Nov 20, 2023
5e011ae
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Dec 3, 2023
13c1ff6
Add a namelist to include ocean current in the computation of air-sea…
binli2337 Dec 8, 2023
8677388
Update ccpp/physics
binli2337 Dec 8, 2023
6d097a2
Update ccpp/physics
binli2337 Dec 19, 2023
880402e
Updated ccpp/physics and ccpp/data/GFS_typedefs.F90.
binli2337 Dec 26, 2023
668bd6c
Update atmos_cubed_sphere.
binli2337 Dec 27, 2023
c595637
update ccpp/physics
binli2337 Dec 27, 2023
9ccdd01
Fix moving-nest issues related to the sea surface ocean current field.
binli2337 Dec 30, 2023
ebc610c
Update ccpp/physics.
binli2337 Jan 3, 2024
855a86a
Change the variable name for zonal ocean current from ssu to usfco.
binli2337 Jan 6, 2024
c1ee9a4
Update ccpp/physics
binli2337 Jan 14, 2024
6a89f6a
Merge branch 'develop' into feature/hafsv2_baseline_with_ssc
binli2337 Jan 14, 2024
fc2bd01
Update atmos_cubed_sphere and ccpp-physics
binli2337 Jan 18, 2024
a2c6a3f
Update UPP.
binli2337 Jan 18, 2024
6fd94d6
Merge branch 'develop' into feature/hafsv2_baseline_with_ssc
binli2337 Jan 18, 2024
a508a35
Update atmos_cubed_sphere and ccpp/physics
binli2337 Jan 26, 2024
7e9eefa
Merge branch 'develop' into feature/hafsv2_baseline_with_ssc
binli2337 Jan 26, 2024
9663c74
Merge remote-tracking branch 'remotes/upstream/develop' into feature/…
BinLiu-NOAA Jan 27, 2024
65529a8
Update HAFS thompson ccpp suites and move suite_FV3_HAFS_v1_thompson.xml
BinLiu-NOAA Jan 27, 2024
bbfb56c
Update usfco and vsfco standard and long names in GFS_typedefs.meta.
BinLiu-NOAA Jan 27, 2024
f092c93
Update standard name for icplocn2atm in ccpp/data/GFS_typedefs.meta.
BinLiu-NOAA Jan 27, 2024
4715ed1
Update ccpp/physics.
binli2337 Jan 30, 2024
fcb0bdb
Merge branch 'develop' into feature/hafsv2_baseline_with_ssc
binli2337 Jan 30, 2024
263ade5
Update ccpp/physics.
binli2337 Jan 31, 2024
b7587df
Merge branch 'develop' into feature/hafsv2_baseline_with_ssc
binli2337 Jan 31, 2024
1091d03
Update atmos_cubed_sphere,ccpp and .gitmodules.
binli2337 Feb 1, 2024
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
52 changes: 52 additions & 0 deletions atmos_model.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
DeniseWorthen marked this conversation as resolved.
Show resolved Hide resolved
!$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'
Expand Down
17 changes: 16 additions & 1 deletion ccpp/data/GFS_typedefs.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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))
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
20 changes: 20 additions & 0 deletions ccpp/data/GFS_typedefs.meta
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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
Expand Down
22 changes: 22 additions & 0 deletions ccpp/driver/GFS_diagnostics.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
<scheme>rad_sw_pre</scheme>
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
Expand Down Expand Up @@ -61,7 +60,6 @@
<scheme>unified_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
Expand All @@ -79,7 +77,7 @@
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
<scheme>phys_tend</scheme>
<scheme>GFS_physics_post</scheme>
</subcycle>
</group>
<group name="stochastics">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
<scheme>rad_sw_pre</scheme>
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
Expand Down Expand Up @@ -59,7 +58,6 @@
<scheme>unified_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
Expand All @@ -77,7 +75,7 @@
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
<scheme>phys_tend</scheme>
<scheme>GFS_physics_post</scheme>
</subcycle>
</group>
<group name="stochastics">
Expand Down
4 changes: 1 addition & 3 deletions ccpp/suites_not_used/suite_FV3_HAFS_v1_thompson_noahmp.xml
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
<scheme>rad_sw_pre</scheme>
BinLiu-NOAA marked this conversation as resolved.
Show resolved Hide resolved
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
Expand Down Expand Up @@ -61,7 +60,6 @@
<scheme>unified_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
Expand All @@ -79,7 +77,7 @@
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
<scheme>phys_tend</scheme>
<scheme>GFS_physics_post</scheme>
</subcycle>
</group>
<group name="stochastics">
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,6 @@
<scheme>rad_sw_pre</scheme>
junwang-noaa marked this conversation as resolved.
Show resolved Hide resolved
<scheme>rrtmg_sw</scheme>
<scheme>rrtmg_sw_post</scheme>
<scheme>rrtmg_lw_pre</scheme>
<scheme>rrtmg_lw</scheme>
<scheme>rrtmg_lw_post</scheme>
<scheme>GFS_rrtmg_post</scheme>
Expand Down Expand Up @@ -59,7 +58,6 @@
<scheme>unified_ugwp_post</scheme>
<scheme>GFS_GWD_generic_post</scheme>
<scheme>GFS_suite_stateout_update</scheme>
<scheme>ozphys_2015</scheme>
<scheme>h2ophys</scheme>
<scheme>get_phi_fv3</scheme>
<scheme>GFS_suite_interstitial_3</scheme>
Expand All @@ -77,7 +75,7 @@
<scheme>mp_thompson_post</scheme>
<scheme>GFS_MP_generic_post</scheme>
<scheme>maximum_hourly_diagnostics</scheme>
<scheme>phys_tend</scheme>
<scheme>GFS_physics_post</scheme>
</subcycle>
</group>
<group name="stochastics">
Expand Down
4 changes: 3 additions & 1 deletion cpl/module_cplfields.F90
Original file line number Diff line number Diff line change
Expand Up @@ -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)

Expand All @@ -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"), &
Expand Down
Loading
Loading