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
Salt flux
Freezing temperature
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 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]. |