O_27_LI Moving Ice Sheet and Sea Ice Boundaries in Coupler Design Document

The Design Document page provides a description of the algorithms, implementation and planned testing including unit, verification, validation and performance testing. Please read  Step 1.3 Performance Expectations that explains feature documentation requirements from the performance group point of view. 

Design Document

 Click here for instructions to fill up the table below ......

The first table in Design Document gives overview of this document, from this info the Design Documents Overview page is automatically created.

In the overview table below 4.Equ means Equations and Algorithms, 5.Ver means Verification, 6.Perf - Performance, 7. Val - Validation

  • Equations: Document the equations that are being solved and describe algorithms
  • Verification Plans: Define tests that will be run to show that implementation is correct and robust. Involve unit tests to cover range of inputs as well as benchmarks.
  • Performance expectations: Explain the expected performance impact from this development
  • Validation Plans: Document what process-based, stand-alone component, and coupled model runs will be performed, and with what metrics will be used to assess validity

Use the symbols below (copy and paste) to indicate if the section is in progress or done or not started.

In the table below 4.Equ means Equations and Algorithms, 5.Ver means Verification, 6.Perf - Performance, 7. Val - Validation,   (tick) - competed, (warning) - in progress, (error) - not done


Overview table for the owner and an approver of this feature

1.Description

Moving Ice Sheet and Sea Ice Boundaries
2.OwnerJeremy Fyke (Unlicensed)
3.Created

 

4.EquN/A (coupling infrastructure)
5.Ver (warning)
6.Perf(error)
7.Val(error)
8.Approver
9.Approved Date
V1.0Declined
 Click here for Table of Contents ...

Table of Contents




Title: O_27_LI Moving Ice Sheet and Sea Ice Boundaries in Coupler

Requirements and Design

ACME Ocean and Ice Group

Date: 2015-9-23

Summary

As ice shelves in the land ice model advance and retreat over ocean grid cells, the sea ice in those grid cells must adjust to the changing effective surface ocean area in the grid cell.  Specifically, the advance of land ice-shelves will require sea-ice to "move out of the way", while the retreat of land-ice shelves "frees up" ocean that the sea ice can occupy.  It was decided to address the advancing ice shelf case by ridging sea ice, to the extent possible (A full discussion of other possibilities is included elsewhere).  The code must conserve area (sea ice and ice shelves can not occupy the same ocean grid space) while allowing the sea ice to adjust to the location of the ice shelves in a physically defensible way.


Requirements

Requirement: Retreat of the ice shelf

Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

Retreat of the ice shelf frees up space that sea ice can then occupy.

Requirement: Advance of the ice shelf

Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

An advancing ice shelf displaces sea ice from a portion of the ocean surface.  In this case, the ice shelf may advance over a small fraction of a grid cell, or, if the coupling time step is particularly long, it may advance over a whole grid cell or more.   

The sea ice that was in the area A of ocean surface that is now covered by the ice shelf must be moved.  During that process, it could also be compressed (i.e. ridged).  Considerations include:

i.  conservation of thermal energy and the total mass of water and salt by the coupled model

ii.  invoking physically realistic processes

iii.  minimizing the complexity of the code changes, especially with regard to the mechanics of the coupler

iv.  minimizing errors due to lags associated with the coupling time step

v.  as the coupling time step becomes infinitely small, effects of the simulated processes should approach reality.



Algorithmic Formulations


Design solution: Retreat of the ice shelf

Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

The area of retreated land ice becomes open water. During the next time step, sea ice can occupy this open water using its normal dynamics (freezing and/or advection).

Jeremy Fyke (Unlicensed) - can you comment on what, if any, changes need to be made in terms of the coupler to allow this?

Design solution: Advance of the ice shelf

Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

The most fundamental change needed for the sea ice model is the addition of a gridded variable, the land-ice area fraction.  This field is already defined and used for the iceberg model (bice in CICE); it essentially reduces the ocean grid cell area available for sea ice coverage.  It can be similarly defined and used for ice shelves, and it will make future incorporation of the iceberg model simpler.  All of the options below require this field to be passed through the coupler from the land ice model to the sea ice model;  grid remapping will be necessary.

CICE with icebergs currently uses sea ice ridging to make room for bergs when they are added (initialization and calving) and to allow for iceberg motion within the sea ice pack.  For ice shelf motion into sea-ice-covered areas, we only need to utilize the former capability.  This is handled as part of subroutine calve_bergs in the current iceberg code within CICE.

Coupling

The coupler will send to the sea ice model the fraction of an ocean grid cell covered by ice shelf, bice.  The fractions of sea ice area (aice), ice shelf area and open water area within a grid cell effectively satisfy aice + bice + open water area = 1 following ridging, and for bice=0, results should be BFB with the code prior to adding ice shelves.  Note that for compatibility in other code functions, the sea ice model maintains aice0=1-aice elsewhere in the code, i.e. aice0+aice covers 100% of the grid that is available to sea ice.  Instead of using aice0, a locally computed open water fraction is computed where needed for ice shelves.  The sea ice area fraction, aice, will be returned to the coupler as it is now.

Ice shelf area fraction

The ice shelf area fraction, bice, will be used for new ice formation, sea ice transport and ridging.  For new ice formation and sea ice transport, bice effectively decreases the total grid cell area available for sea ice to freeze or for transport.  Ridging serves to remove ice area from the fraction of the grid cell newly covered by the ice shelf, and it should be computed prior to other sea ice calculations.

New ice formation and sea ice ridging due to the imposition of land ice are both column functions that are (or can be) be part of the column package.  Changes for horizontal transport are minimal.

Ridging sea ice

Given the fraction of an ocean grid cell covered by ice shelf, bice, compute the change in that fraction since the last coupling step, dice = bice - bice_old.

If dice <= 0, do nothing.  Sea ice will be able to fill in the remaining area 1-bice through advection or new ice growth, if physical conditions are conducive.

If dice > 0, then call ridge_ice_by_shelves.  This subroutine is very similar to ridge_ice in ice_mechred.F90, but does not include the initial calculation of sea ice plus open water area (asum_ridging), and instead of calling ridge_prep it calculates the area opening and closing based on the change in land ice area in each grid cell. Then the thickness distribution of ridging ice (ridge_itd), redistribution (ridge_shift), area check (asum_ridging) and iteration test (ridge_check) are calculated using standard column package routines.  Conservation checks can also be done using standard routines (column_sum, column_conservation_check).  Once the ridging iteration is complete, coupling fluxes (fresh water, heat associated with snow thrown off during ridging) and diagnostics are computed.  

In CICE, bergs are blocked from entering cells that have no space available for them (so that a cell can not be 100% berg-filled), and a final check initiates an abort procedure if the resulting total area fraction is larger than 1.   In this case, an ice shelf may fill 100% of a grid cell, and when that happens, the excess sea ice area will be melted and added to the ocean through the fresh water, heat and salt fluxes.  If conditions are suitable that may then refreeze onto the bottom of the ice shelf elsewhere in the coupled model (i.e., not in the sea ice code).

After ridging, cleanup_itd must be called to rebin thickness categories as necessary and remove categories with very small areas.

New ice formation

When freezing new ice in the open water area, exclude the fraction of the grid cell occupied by ice shelf.

Horizontal transport

When transporting sea ice to or from a grid cell partially covered by ice shelf, the grid cell area is reduced by the ice shelf fraction.  

When transport arrays are filled (state_to_tracers in CICE), the open water area fraction is set to 0 if bice>0.99.  After making masks (used to prevent tracers in cells without ice from being used to computer tracer gradients), create a temporary land mask that also masks out ice shelves, to use in the transport routines.

Restarts

bice will need to be kept.


Design and Implementation

Given the fraction of an ocean grid cell covered by ice shelf, bergAreaCell, sent from the coupler, compute the change in that fraction since the last coupling step,

bergAreaCellChange = bergAreaCell - bergAreaCellInitial.  

(I’ve chosen to name the variable bice as bergAreaCell because in the future iceberg model implementation, that is what it will be in a larger part of the code than this design document affects.  For now, we can think of the ice sheet area as not-yet-calved bergs.  But I’m open to other suggestions.  -ech)

Maintain

aice + bice + aice0tmp = 1 (column package)

iceAreaCell + bergAreaCell  + openWaterArea = 1 (MPAS-CICE)

where the sea ice area is needed or used in the following.

Implementation: Retreat of the ice shelf

Date last modified: 2015/09/23


Contributors: Elizabeth Hunke

If bergAreaCellChange <= 0, do nothing.  Sea ice will be able to fill in the remaining area 1-bergAreaCell through advection or new ice growth, if physical conditions are conducive.

Implementation: Advance of the ice shelf

Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

Ridging sea ice (column package)

If dice > 0, then call a new subroutine, ridge_ice_by_shelves.  This subroutine is very similar to ridge_ice in ice_mechred.F90, but does not include the initial calculation of sea ice plus open water area (asum_ridging), and instead of calling ridge_prep it calculates the area opening and closing as

         closing_net = dice/dt  ! net closing rate

         divu_adv = -closing_net

         opning = c0 .

Then the thickness distribution of ridging ice (ridge_itd), redistribution (ridge_shift), area check (asum_ridging) and iteration test (ridge_check) are calculated using standard column package routines.  Conservation checks can also be done using standard routines (column_sum, column_conservation_check).  Once the ridging iteration is complete, coupling fluxes (fresh water, heat associated with snow thrown off during ridging) and diagnostics are computed as in subroutine ridge_ice.   After ridging, cleanup_itd must be called to rebin thickness categories as necessary and remove categories with very small areas, as is currently done in subroutine colpkg_step_ridge.

If an ice shelf fills 100% of a grid cell, the excess sea ice area will be melted and added to the ocean through the fresh water, heat and salt fluxes.  (The code will closely follow that in ice_itd.F90/zap_small_areas.)  If conditions are suitable, that meltwater may then refreeze onto the bottom of the ice shelf elsewhere in the coupled model (i.e., not in the sea ice code).

New ice formation  (column package)

When freezing new ice in the open water area, the fraction of the grid cell occupied by ice shelf is excluded by computing the actual open water area as ai0 = 1 - aice - bice.  In particular, in ice_therm_itd.F90/add_new_ice, replace

         if (aice0 > puny) then

            hi0new = max(vi0new/aice0, hfrazilmin)

            if (hi0new > hi0max .and. aice0+puny < c1) then

               ! distribute excess volume over all categories (below)

               hi0new = hi0max

               ai0new = aice0

with

         ai0 = max(aice0-bice, c0)

         if (ai0 > puny) then

            hi0new = max(vi0new/ai0, hfrazilmin)

            if (hi0new > hi0max .and. ai0+puny < c1) then

               ! distribute excess volume over all categories (below)

               hi0new = hi0max

               ai0new = ai0

Horizontal transport

When transporting sea ice to or from a grid cell partially covered by ice shelf, the grid cell area is reduced by the ice shelf fraction.  

When transport arrays are filled (state_to_tracers in CICE), the open water area fraction is set to 0 if bice>0.99.  After making masks (used to prevent tracers in cells without ice from being used to computer tracer gradients), create a temporary land mask that also masks out ice shelves,

         hm_tmp = hm

         if (bice > cutoff) hm_tmp = c0

Currently, cutoff=0.9 in CICE but I think this should be made consistent with the cutoff for open water (0.99).   This mask is then used for constructing the ice and tracer fields instead of hm.

When ice area and tracers are updated at the end of the transport procedure, the grid cell area is again adjust to account for bice:

         tareabr = tarear

         if (hm_tmp > 0.5 and bice > puny) tareabr = tarear / (1-bice).

This array is then used for updating the fields instead of tarear.  For the conservation checks, a temporary variable is used in place of the grid cell area.  In CICE, tarea is replaced with tareab = tarea * (1-bice).

Restarts

Create a new set of read/write subroutines for iceberg restart variables, containing (for now) only bergAreaCellChange.

Planned Verification and Unit Testing 

Verification and Unit Testing: Retreat of the ice shelf


Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

Check that when bergAreaCell decreases, sea ice does indeed fill in where freezing or advection allow.  Otherwise, no special testing is required.


Verification and Unit Testing: Advance of the ice shelf

Date last modified: 2015/09/22


Contributors: Elizabeth Hunke

Setting bergAreaCell = 0 should produce results identical to the sea ice code without the ice sheet changes.


Planned Validation Testing 

Validation Testing:

Date last modified: 2015/09/25
Contributors: Stephen Price


How will XXX be tested? What observational or other dataset will be used?  i.e. how will be we know when we have met requirement XXX. Will these unit tests be included in the ongoing going forward?


Planned Performance Testing 

Performance Testing:

Date last modified: 2015/09/25
Contributors: Stephen Price


How will XXX be tested? i.e. how will be we know when we have met requirement XXX. Will these unit tests be included in the ongoing going forward?

Moving sea ice / ice sheet boundaries within the sea ice model is a new capability that has never been tested before. It's impact on performance will be tested by comparing test simulations with this new feature active against those when it is inactive (i.e., comparing runs with a static ice sheet / sea ice interface vs. runs runs where the ice sheet / sea ice interface is allowed to migrate freely).