Overview
Ice sheet coupling with the rest of the model depends on which ice sheet is being modeled, Antarctica or Greenland.
...
ocean coupling: (glc_c2_ocn): Sg_icemask, Sg_blit, Sg_blis, Sg_lithop, Sg_icemask_grounded
compset | glc_2c2_lnd | lnd_2c2_glc | ocn_2c2_glcshelf | glcshelf_c2_ocn | glcshelf_c2_ice | ocn_c2_glctf | glc_c2_ocn | glc_c2_ice | glcshelf_c2_ice |
---|---|---|---|---|---|---|---|---|---|
MPAS_LISIO_JRA1p | T | ||||||||
IGELM_MLI | T | T | |||||||
BGWCYCL1850 | T | T | T |
...
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 flow.
init
prep_lnd_init (glc_c2_lnd)
if(glc_c2_lnd) init mapper_Sg2l, mapper_Fg2l; derive field lists glc2lnd_non_ec_fields and glc2lnd_ec_extra_fields
prep_ocn_init (glc_c2_ocn, glcshelf_c2_ocn)
if (glc_c2_ocn) init mapper_Rg2o_liq and mapper_Rg2o_ice
if(glcshelf_c2_ocn) init mapper_Sg2o and mapper_Fg2o
prep_ice_init (glc_c2_ice, glcshelf_c2_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
)
if (glc_c2_ice) init mapper_Rg2i
if(glcshelf_c2_ice) init mapper_Sg2i,mapper_Fg2i
prep_glc_init( lnd_c2_glc, ocn_c2_glcshelf)
if ((glc_present .and. lnd_c2_glc) .or. do_hist_l2x1yrg) initialize l2gacc_lx with seq_flds_l2x_fields_to_glc
if (glc_present .and. lnd_c2_glc) initialize l2x_gx with seq_flds_x2g_fields
if (lnd_c2_glc) init mapper_Sl2g, mapper_Fl2g, mapper_Fg2l; form g2x_lx_fields
if (glc_present .and. ocn_c2_glcshelf) init o2x_gx with seq_flds_o2x_fields; init x2gacc_gx
also init mapper_So2g, mapper_Fo2g and arrays for compute_melt_fluxes
if (glc_c2_ocn) do mapping Rg2o_liq, Rg2o_ice; g2x_gx to g2x_ox; seq_flds_g2o_liq/ice_fluxes,
if (glcshelf_c2_ocn) do mapping Sg2o, Fg2o; g2x_gx to g2x_ox MIGHT OVERWRITE ABOVE
if(glc_c2_ice) do mapping Rg2i; g2x_gx to g2x_ix ‘Fixx_rofi’ only
if(glcshelf_c2_ice) do mapping_Sg2i; g2x_gx, g2x_ix, Sg_icemask_coupled_fluxes
if (glc_c2_lnd) do mapping Fg2l, g2x_gx, g2x_lx, glc2lnd_non_ec_fields; do special mapping of elevation class fields with mapper_Fg2l, glc2lnd_ec_extra_fields
in run loop
after land receive
if (glc_present) call cime_run_glc_setup_send
if (lnd_c2_glc OR ocn_c2_glcshelf)
if (glcrun_avg_alarm) accumulate for lnd and ocn
if (lnd_c2_glc) call prep_glc_calc_l2x_gc
from seq_flds_x2g_fluxes_from_lnd, special (bilinear with correction) mapping of Flgl_qice See Bilinear lnd to glc prep_glc_map_qice_conservative_lnd2glc, map_lnd2glc (mapper_Sl2g); also if (smb_renormalize) call prep_glc_renormalize_smb; map_glc2lnd_ec
from seq_flds_x2g_states_from_lnd also call special bilinear mapping one state at a time: prep_glc_map_one_state_field_lnd2glc, map_lnd2glc
else prep_glc_zero_flds
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
...
component_exch(glc
...
, flow='c2x')
call cime_run_ocn
...
_
...
recv_post
call cime_run_ocnglc_coupling()
if(glc_present) and
if (glcshelf_to_ocn and AND ocn_to_glcshelf)
call prep_glc_calc_o2x_gcgx: call mapper_So2g for ocean to glc; o2x_ox to o2x_gx seq_flds_x2g_states_from_ocn
call prep_glc_calculate_subshelf_boundary_fluxes; compute_melt_fluxes
call prep_ocn_shelf_calc_g2x_ox: map_Sg2o, map_Fg2o; g2x_gx, g2x_ox
prep_glc_accum_ocn (accumulate x2g_g fields)
if ( glc_present and glcshelf_c2_ice) call prep_ice_shelf_calc_mapper map_Sg2i; g2x_gx, g2x_ix; map_Sg2iSg_icemask_coupled_fluxes