Overview
Ice sheet coupling with the rest of the model depends on which ice sheet is being modeled, Antarctica or Greenland.
Ice-shelf coupling: (ocn_c2_glcshelf, glcshelf_c2_ocn) Fluxes between the bottom of the ice shelf and the ocean underneath it. The ice-shelf coupling will be used for Antarctica (left side of figure). Greenland has some small ice shelves, but they are too small to be resolved sufficiently in MPAS-Ocean, so we do not intend to use the ice-shelf coupling for Greenland cases.
Thermal-forcing coupling: (ocn_c2_glctf) Passes thermal forcing at a prescribed ocean depth (300 m) from MPAS-Ocean to MALI, where MALI uses it to calculate grounded marine melting through an existing 'facemelting' parameterization. The thermal-forcing coupling is primarily intended for Greenland where there are primarily vertical cliffs and little floating ice (right side of figure). In that geometry, MPAS-Ocean is not equipped to calculate melt rates, and even if it could, most of the narrow fjords around Greenland would be unresolved so the ocean domain rarely intercepts the Greenland marine termini. Instead, we make use of marine melting parameterizations that are a function of the thermal forcing (ocean temperature minus in situ freezing temperature). We also make use of a capability we added to MALI to horizontally extrapolate ocean thermal forcing from wherever on the MALI mesh it’s available to the current terminus positions. While the thermal-forcing coupling is primarily developed for Greenland, Antarctica also has vertical marine cliffs without ice shelves in some places (and will likely have more in the future), so we do anticipate eventually using the TF coupling in Antarctica at the same time as the ice-shelf coupling. Implemented in https://github.com/E3SM-Project/E3SM/pull/6632
land coupling: (glc_c2_lnd and lnd_c2_glc) the surface mass balance (SMB) between the ice sheet and the atmosphere is calculated in the land model. The “glc_2_lnd” coupling passes the necessary data to and from that calculation. The land ice passes elevation of the ice sheet in a flexible number of topography classes (10 in the example below) to the SMB routine in the land model.
sea-ice coupling: (glc_c2_ice): icebergs. Icebergs form from the ice sheets but are then advected by the sea-ice model.
ocean coupling: (glc_c2_ocn): Sg_icemask, Sg_blit, Sg_blis, Sg_lithop, Sg_icemask_grounded
compset | glc_2_lnd | lnd_2_glc | ocn_2_glcshelf | glcshelf_c2_ocn | ocn_c2_glctf | glc_c2_ocn | glc_c2_ice | glcshelf_c2_ice |
---|---|---|---|---|---|---|---|---|
MPAS_LISIO_JRA1p | T | |||||||
IGELM_MLI | T | T | ||||||
BGWCYCL1850 | T | T | T |
Attribute strings
land to glc adds the following coupling fields
l2x states: Sl_tsrf00 through Sl_tsrf10 and Sl_topo00 through Sl_topo10
l2x states to glc: Sl_tsrf00 to Sl_tsrf10 AND Sl_topo00 to Sl_topo10
Sl_tsrf: Surface temperature of glacier (one for each elevation class)
Sl_topo: surface height of glacier (one for each elevation class)
l2x fluxes: Flgl_qice00 through Flgl_qice10
l2x_fluxes_to_glc: Flgl_qice00 to Flgl_qice10
Flgl_qice: New glacier ice flux
glc to lnd adds the following coupling fields:
x2l states: Sg_ice_covered00 through Sg_ice_covered10 AND Sg_topo00 through Sg_topo10
x2l states from glc: Sg_ice_covered00 through Sg_ice_covered10 AND Sg_topo00 through Sg_topo10
Sg_ice_covered: Fraction of glacier area
Sg_topo: surface height of glacier
g2x states to lnd: Sg_icemask:Sg_icemask_coupled_fluxes:Sg_ice_covered:Sg_topo
Sg_icemask: Ice sheet grid coverage on global grid
Sg_icemask_coupled_fluxes: Ice sheet mask where we are potentially sending non-zero fluxes
Sg_ice_covered: Fraction of glacier area
Sg_topo
x2l fluxes: Flgg_hflx00 to Flgg_hflx10
x2l fluxes from glc: Flgg_hflx00 to Flgg_hflx10
Flgg_hflx: Downward heat flux from glacier interior.
Resulting land ice states and fluxes
g2x_states: Sg_icemask, Sg_icemask_coupled_fluxes, Sg_ice_covered, Sg_topo, Sg_blit, Sg_blis, Sg_lithop, Sg_icemask_grounded, Sg_icemask_floating, Sg_tbot, Sg_dztbot
Sg_blit: Boundary layer interface temperature for ocean
Sg_blis: Boundary layer interface salinity for ocean
Sg_lithop: Ice sheet lithostatic pressur
Sg_icemask_grounded: Grounded ice mask
Sg_icemask_floating: Floating ice mask
Sg_tbot: Bottom layer ice temperature
Sg_dztbot: Bottom layer ice layer half thickness
g2x_fluxes: Fogg_rofl, Fogg_rofi, Figg_rofi, Flgg_hflx, Fogx_qicelo, Fogx_qiceho
Fogg_rofl glc liquid runoff flux to ocean
Fogg_rofi glc frozen runoff flux to ocean
Figg_rofi: glc frozen runoff_iceberg flux to sea ice
Flgg_hflx: Downward heat flux from glacier interior
Flgg_qicelo: Subshelf liquid flux for ocean
Fogx_qiceho: Subshelf heat flux for the ocean
g2o_liq_fluxes: Fogg_rofl
g2o_iceq_fluxes: Fogg_rofi
x2g_states: Sl_tsrf, So_blt, So_bls, So_htv, So_stv, So_rhoeff
Sl_tsrf:
So_blt: Ice shelf boundary layer ocean temperature
So_bls: Ice shelf boundary layer ocean salinity
So_htv: Ice shelf ocean heat transfer velocity
So_stv: Ice shelf ocean salinity transfer velocity
So_rhoeff: Ocean effective pressure
x2g_states_from_lnd: Sl_tsrf
x2g_fluxes: Flgl_qice, Fogx_qiceli, Fogx_qicehi
Flgl_qice: New glacier ice flux
Fogx_qiceli: Subshelf mass flux for ice sheet
Fogx_qicehi: Subshelf heat flux for ice sheet
x2g_fluxes_from_lnd: Flgl_qice
Modifications to coupler
init
if (glc_c2_ocn) init mapper_Rg2o_liq and mapper_Rg2o_ice
in run loop:
at top of loop in atmocn prep
if (glc_c2_ocn) Do Rg2o mapping for g2o_liq_fluxes and g2o_ice_fluxes
after land receive
if (glc_present) call cime_run_glc_setup_send
At bottom after running atm and ocn
(if glc_present) run glc (pass in glc_prognostic
(if glc_present) call cime_run_glc_recv_post
if (glc_c2_ocn) prep_rof_accum_ocn(timer='CPL:ocnpost_acco2r')
call cime_run_ocnglc_coupling
if(glc_present) and (glcshelf_to_ocn and ocn_to_glcshelf)
call prep_glc_calc_o2x_gc: call mapper_So2g for ocean to glc
call prep_glc_calculate_subshelf_boundary_fluxes; compute_melt_fluxes
call prep_ocn_shelf_calc_g2x_ox: map_Sg2o, map_Fg2o
prep_glc_accum_ocn (accumulate x2g_g fields)
if (glc_present and glcshelf_c2_ice) call prep_ice_shelf_calc_g2x_ix; map_Sg2i