namespace mom_ice_shelf

Overview

Implements the thermodynamic aspects of ocean / ice-shelf interactions, along with a crude placeholder for a later implementation of full ice shelf dynamics, all using the MOM framework and coding style. More…

namespace mom_ice_shelf {

// global variables

integer id_clock_shelf;

// global functions

subroutine, public shelf_calc_flux(
    state state,
    fluxes fluxes,
    Time Time,
    time_step time_step,
    CS CS,
    forces forces
    );

subroutine, public add_shelf_forces(
    G G,
    US US,
    CS CS,
    forces forces,
    do_shelf_area do_shelf_area
    );

subroutine, public add_shelf_flux(G G, US US, CS CS, state state, fluxes fluxes);

subroutine, public initialize_ice_shelf(
    param_file param_file,
    ocn_grid ocn_grid,
    Time Time,
    CS CS,
    diag diag,
    forces forces,
    fluxes fluxes,
    Time_in Time_in,
    solo_ice_sheet_in solo_ice_sheet_in
    );

subroutine, public ice_shelf_save_restart(
    CS CS,
    Time Time,
    directory directory,
    time_stamped time_stamped,
    filename_suffix filename_suffix
    );

subroutine, public ice_shelf_end(CS CS);

subroutine, public solo_time_step(
    CS CS,
    time_step time_step,
    nsteps nsteps,
    Time Time,
    min_time_step_in min_time_step_in
    );

} // namespace mom_ice_shelf

Detailed Documentation

Implements the thermodynamic aspects of ocean / ice-shelf interactions, along with a crude placeholder for a later implementation of full ice shelf dynamics, all using the MOM framework and coding style.

section_ICE_SHELF

This module implements the thermodynamic aspects of ocean/ice-shelf inter-actions using the MOM framework and coding style.

Derived from code by Chris Little, early 2010.

The ice-sheet dynamics subroutines do the following: initialize_shelf_mass - Initializes the ice shelf mass distribution.

  • Initializes h_shelf, h_mask, area_shelf_h

  • CURRENTLY: initializes mass_shelf as well, but this is unnecessary, as mass_shelf is initialized based on h_shelf and density_ice immediately afterwards. Possibly subroutine should be renamed update_shelf_mass - updates ice shelf mass via netCDF file USER_update_shelf_mass (TODO). solo_time_step - called only in ice-only mode. shelf_calc_flux - after melt rate & fluxes are calculated, ice dynamics are done. currently mass_shelf is updated immediately after ice_shelf_advect in fully dynamic mode.

NOTES: be aware that hmask(:,:) has a number of functions; it is used for front advancement, for subroutines in the velocity solve, and for thickness boundary conditions (this last one may be removed). in other words, interfering with its updates will have implications you might not expect.

Overall issues: Many variables need better documentation and units and the subgrid on which they are discretized.

ICE_SHELF equations

The three fundamental equations are: Heat flux

\[\qquad \rho_w C_{pw} \gamma_T (T_w - T_b) = \rho_i \dot{m} L_f\]

Salt flux

\[\qquad \rho_w \gamma_s (S_w - S_b) = \rho_i \dot{m} S_b\]

Freezing temperature

\[\qquad T_b = a S_b + b + c P\]

where ….

References

Asay-Davis, Xylar S., Stephen L. Cornford, Benjamin K. Galton-Fenzi, Rupert M. Gladstone, G. Hilmar Gudmundsson, David M. Holland, Paul R. Holland, and Daniel F. Martin. Experimental design for three interrelated marine ice sheet and ocean model intercomparison projects: MISMIP v. 3 (MISMIP+), ISOMIP v. 2 (ISOMIP+) and MISOMIP v. 1 (MISOMIP1). Geoscientific Model Development 9, no. 7 (2016): 2471.

Goldberg, D. N., et al. Investigation of land ice-ocean interaction with a fully coupled ice-ocean model: 1. Model description and behavior. Journal of Geophysical Research: Earth Surface 117.F2 (2012).

Goldberg, D. N., et al. Investigation of land ice-ocean interaction with a fully coupled ice-ocean model: 2. Sensitivity to external forcings. Journal of Geophysical Research: Earth Surface 117.F2 (2012).

Holland, David M., and Adrian Jenkins. Modeling thermodynamic ice-ocean interactions at the base of an ice shelf. Journal of Physical Oceanography 29.8 (1999): 1787-1800.

Global Variables

integer id_clock_shelf

CPU Clock for the ice shelf code.

Global Functions

subroutine, public shelf_calc_flux(
    state state,
    fluxes fluxes,
    Time Time,
    time_step time_step,
    CS CS,
    forces forces
    )

Calculates fluxes between the ocean and ice-shelf using the three-equations formulation (optional to use just two equations). See ICE_SHELF equations.

Parameters:

state

structure containing fields that describe the surface state of the ocean

fluxes

structure containing pointers to any possible thermodynamic or mass-flux forcing fields.

time

Start time of the fluxes.

time_step

Length of time over which these fluxes will be applied [s].

cs

A pointer to the control structure returned by a previous call to initialize_ice_shelf.

forces

A structure with the driving mechanical forces

subroutine, public add_shelf_forces(
    G G,
    US US,
    CS CS,
    forces forces,
    do_shelf_area do_shelf_area
    )

This subroutine adds the mechanical forcing fields and perhaps shelf areas, based on the ice state in ice_shelf_CS.

Parameters:

g

The ocean’s grid structure.

us

A dimensional unit scaling type

cs

This module’s control structure.

forces

A structure with the driving mechanical forces

do_shelf_area

If true find the shelf-covered areas.

subroutine, public add_shelf_flux(G G, US US, CS CS, state state, fluxes fluxes)

Updates surface fluxes that are influenced by sub-ice-shelf melting.

Parameters:

g

The ocean’s grid structure.

us

A dimensional unit scaling type

cs

This module’s control structure.

state

Surface ocean state

fluxes

A structure of surface fluxes that may be used/updated.

subroutine, public initialize_ice_shelf(
    param_file param_file,
    ocn_grid ocn_grid,
    Time Time,
    CS CS,
    diag diag,
    forces forces,
    fluxes fluxes,
    Time_in Time_in,
    solo_ice_sheet_in solo_ice_sheet_in
    )

Initializes shelf model data, parameters and diagnostics.

Parameters:

param_file

A structure to parse for run-time parameters

ocn_grid

The calling ocean model’s horizontal grid structure

time

The clock that that will indicate the model time

cs

A pointer to the ice shelf control structure

diag

A structure that is used to regulate the diagnostic output.

fluxes

A structure containing pointers to any possible thermodynamic or mass-flux forcing fields.

forces

A structure with the driving mechanical forces

time_in

The time at initialization.

solo_ice_sheet_in

If present, this indicates whether a solo ice-sheet driver.

subroutine, public ice_shelf_save_restart(
    CS CS,
    Time Time,
    directory directory,
    time_stamped time_stamped,
    filename_suffix filename_suffix
    )

Save the ice shelf restart file.

Parameters:

cs

ice shelf control structure

time

model time at this call

directory

An optional directory into which to write these restart files.

time_stamped

f true, the restart file names include a unique time stamp. The default is false.

filename_suffix

An optional suffix (e.g., a time-stamp) to append to the restart file names.

subroutine, public ice_shelf_end(CS CS)

Deallocates all memory associated with this module.

Parameters:

cs

A pointer to the ice shelf control structure

subroutine, public solo_time_step(
    CS CS,
    time_step time_step,
    nsteps nsteps,
    Time Time,
    min_time_step_in min_time_step_in
    )

This routine is for stepping a stand-alone ice shelf model without an ocean.

Parameters:

cs

A pointer to the ice shelf control structure

time_step

The time interval for this update [s].

nsteps

The running number of ice shelf steps.

time

The current model time

min_time_step_in

The minimum permitted time step [s].