Skip to content

Commit

Permalink
Merge branch 'proteanplanet/ocean/pslv' (PR #5999)
Browse files Browse the repository at this point in the history
Fixes PMSL coupling between ocean and atmosphere

This fixes a major bug in E3SM by replacing an incorrect coupling of
PBOT (pressure in the mid-bottom atmospheric layer), with PSLV
(atmosphere model sea level pressure) in the ocean-atmosphere coupled
fields.

The consequences of this PR are widespread: It was diagnosed from
intermittent crashes that have been experienced in the Mediterranean
Sea, it changes widespread pressure fields experienced on all ocean
surfaces, and fixes sea ice biases.

This pull request only affects B-cases. In G-cases, PBOT and PSLV are
currently identically set to pressure at mean sea level, thus a reason
why this bug has previously gone undetected. Reference to PBOT has been
completely removed in the sea ice coupling code as part of this PR to
avoid future confusion, because it is was not being used.

[CC] for B-cases
  • Loading branch information
jonbob committed Oct 31, 2023
2 parents d18c6e9 + 932ce9a commit a27115e
Show file tree
Hide file tree
Showing 4 changed files with 4 additions and 7 deletions.
4 changes: 2 additions & 2 deletions components/mpas-ocean/driver/mpaso_cpl_indices.F
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ module mpaso_cpl_indices
integer :: index_x2o_Si_ifrac ! fractional ice wrt ocean
integer :: index_x2o_Si_bpress ! ice basal pressure
integer :: index_x2o_So_duu10n ! 10m wind speed squared (m^2/s^2)
integer :: index_x2o_Sa_pbot ! atm bottom pressure (Pa)
integer :: index_x2o_Sa_pslv ! atmospheric sea level pressure (Pa)
integer :: index_x2o_Sa_co2prog ! bottom atm level prognostic CO2
integer :: index_x2o_Sa_co2diag ! bottom atm level diagnostic CO2
integer :: index_x2o_Foxx_taux ! zonal wind stress (taux) (W/m2 )
Expand Down Expand Up @@ -221,7 +221,7 @@ subroutine mpaso_cpl_indices_set( )

index_x2o_Si_ifrac = mct_avect_indexra(x2o,'Si_ifrac')
index_x2o_Si_bpress = mct_avect_indexra(x2o,'Si_bpress')
index_x2o_Sa_pbot = mct_avect_indexra(x2o,'Sa_pbot')
index_x2o_Sa_pslv = mct_avect_indexra(x2o,'Sa_pslv')
index_x2o_So_duu10n = mct_avect_indexra(x2o,'So_duu10n')
index_x2o_Foxx_tauy = mct_avect_indexra(x2o,'Foxx_tauy')
index_x2o_Foxx_taux = mct_avect_indexra(x2o,'Foxx_taux')
Expand Down
4 changes: 2 additions & 2 deletions components/mpas-ocean/driver/ocn_comp_mct.F
Original file line number Diff line number Diff line change
Expand Up @@ -1564,7 +1564,7 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
! The following fields are sometimes received from the coupler,
! depending on model options:
!
! o pbot -- bottom atm pressure (Pa)
! o pslv -- atmospheric pressure at sea level (Pa)
! o duu10n -- 10m wind speed squared (m^2/s^2)
! o co2prog-- bottom atm level prognostic co2
! o co2diag-- bottom atm level diagnostic co2
Expand Down Expand Up @@ -2027,7 +2027,7 @@ subroutine ocn_import_mct(x2o_o, errorCode)!{{{
rainFlux(i) = x2o_o % rAttr(index_x2o_Faxa_rain, n)
end if
if ( atmosphericPressureField % isActive ) then
atmosphericPressure(i) = x2o_o % rAttr(index_x2o_Sa_pbot, n)
atmosphericPressure(i) = x2o_o % rAttr(index_x2o_Sa_pslv, n)
end if
if ( seaIcePressureField % isActive ) then
! Set seaIcePressure to be limited to 5m of pressure
Expand Down
1 change: 0 additions & 1 deletion components/mpas-seaice/driver/ice_comp_mct.F
Original file line number Diff line number Diff line change
Expand Up @@ -1710,7 +1710,6 @@ subroutine ice_import_mct(x2i_i, errorCode)!{{{
! o u -- bottom atm level zon wind
! o v -- bottom atm level mer wind
! o tbot -- bottom atm level temp
! o pbot -- bottom atm level pressure
! o ptem -- bottom atm level pot temp
! o shum -- bottom atm level spec hum
! o dens -- bottom atm level air den
Expand Down
2 changes: 0 additions & 2 deletions components/mpas-seaice/driver/mpassi_cpl_indices.F
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,6 @@ module mpassi_cpl_indices
integer :: index_x2i_Sa_u ! bottom atm level zon wind
integer :: index_x2i_Sa_v ! bottom atm level mer wind
integer :: index_x2i_Sa_tbot ! bottom atm level temp
integer :: index_x2i_Sa_pbot ! bottom atm level pressure
integer :: index_x2i_Sa_ptem ! bottom atm level pot temp
integer :: index_x2i_Sa_shum ! bottom atm level spec hum
integer :: index_x2i_Sa_dens ! bottom atm level air den
Expand Down Expand Up @@ -200,7 +199,6 @@ subroutine mpassi_cpl_indices_set( )
index_x2i_Sa_v = mct_avect_indexra(x2i,'Sa_v')
index_x2i_Sa_tbot = mct_avect_indexra(x2i,'Sa_tbot')
index_x2i_Sa_ptem = mct_avect_indexra(x2i,'Sa_ptem')
index_x2i_Sa_pbot = mct_avect_indexra(x2i,'Sa_pbot')
index_x2i_Sa_shum = mct_avect_indexra(x2i,'Sa_shum')
index_x2i_Sa_dens = mct_avect_indexra(x2i,'Sa_dens')
index_x2i_So_dhdx = mct_avect_indexra(x2i,'So_dhdx')
Expand Down

0 comments on commit a27115e

Please sign in to comment.