CICE¶
Overview¶
The Community Ice CodE (CICE) is a sea ice model that was first developed by Elizabeth Hunke as the Los Alamos Sea Ice Model. Its code base and capabilities have grown as a result of continued development by the broader geosciences community, an effort organized by the CICE Consortium.
The DART model interface was developed to work with CICE’s dynamical core on an Arakawa B-grid. 1 When CICE is coupled to POP in CESM, the ocean and sea ice grids are identical.
According to the CICE manual:
The spatial discretization is specialized for a generalized orthogonal B-grid as in Murray (1996) 2 or Smith et al. (1995). 3 The ice and snow area, volume and energy are given at the center of the cell, velocity is defined at the corners, and the internal ice stress tensor takes four different values within a grid cell; bilinear approximations are used for the stress tensor and the ice velocity across the cell, as described in Hunke and Dukowicz (2002). 4 This tends to avoid the grid decoupling problems associated with the B-grid.
Hence, in the DART interface:
U, V are at grid cell corners
T, h, hs, and the various scalar quantities are at grid cell centers
Development Notes¶
CICE is under active development to work with other grids, such as the unstructured grid in MPAS and the C-grid in MOM. Due to this activity, this README contains development notes chronicling the development of the model interface. We ask that developers continue to document the development both in this README and with descriptive comments in the source code.
Possible bug found in
model_mod.f90
for POP where set_date is sent sec this day. The routine wants sec this min.
Notes from Cecilia M. Bitz on 14 May 2016¶
Created
../../obs_def/obs_def_cice_mod.f90
to make new obs_kinds used inmodel_mod.f90
andinput.nml
.Not sure about
QTY_TRACERARRAY_CATS
Model mod assumes that the grid is identical to POP
Leaving this part but it may be unneeded in CICE
INTERFACE vector_to_prog_var MODULE PROCEDURE vector_to_2d_prog_var MODULE PROCEDURE vector_to_3d_prog_var END INTERFACE
Not used in pop so of course not used now in CICE either, why?
subroutine vector_to_3d_prog_var(x, varindex, data_3d_array) subroutine get_gridsize(num_x, num_y, num_z)
Come back here, some changes made below but need to look line-by-line still
subroutine get_state_meta_data(state_handle, index_in, location, var_type)
Fortran Files¶
dart_to_cice.f90
Think it is donecice_to_dart.f90
Is trivial so hope it’s done toomodel_mod_check.f90
dart_cice_mod.f90
Should it have a get_cat_dim?model_mod.f90
I do not understand this part, but appears in clm too:INTERFACE vector_to_prog_var MODULE PROCEDURE vector_to_1d_prog_var ! this is in clm MODULE PROCEDURE vector_to_2d_prog_var ! this is in pop MODULE PROCEDURE vector_to_3d_prog_var ! this is in pop END INTERFACE
test_dipole_interp.f90
Also trivial, nothing to change?rma-cice/location/
Has a bunch of subdirs each with a location_mod.f90
-rw-r--r-- 1 bitz staff 142664 May 26 17:12 model_mod.f90
-rw-r--r-- 1 bitz staff 4439 May 21 07:55 cice_to_dart.f90
-rw-r--r-- 1 bitz staff 5676 May 21 07:49 dart_to_cice.f90
-rw-r--r-- 1 bitz staff 24008 May 18 21:55 dart_cice_mod.f90
-rw-r--r-- 1 bitz staff 24294 May 14 16:30 model_mod_check.f90
-rw-r--r-- 1 bitz staff 2270 May 14 16:30 test_dipole_interp.f90
Code Snippet from model_mod.f90¶
! these routines must be public and you cannot change
! the arguments - they will be called *from* the DART code.
public :: get_model_size, &
adv_1step, &
get_state_meta_data, &
model_interpolate, &
get_model_time_step, &
static_init_model, &
end_model, &
init_time, &
init_conditions, &
nc_write_model_atts, &
nc_write_model_vars, &
pert_model_copies, &
get_close_maxdist_init, &
get_close_obs_init, &
get_close_obs, &
query_vert_localization_coord, &
vert_convert, &
construct_file_name_in, &
read_model_time, &
write_model_time
Namelist¶
&model_nml
assimilation_period_days = 1
assimilation_period_seconds = 0
model_perturbation_amplitude = 0.00002
binary_grid_file_format = 'big_endian'
debug = 1
model_state_variables = 'aicen', 'QTY_SEAICE_CONCENTR', 'UPDATE',
'vicen', 'QTY_SEAICE_VOLUME', 'UPDATE',
...
'vsnon', 'QTY_SEAICE_SNOWVOLUME', 'UPDATE',
/
Description of each namelist entry¶
Item |
Type |
Description |
---|---|---|
time_step_days |
integer |
Number of days for dimensional timestep, mapped to deltat. |
time_step_seconds |
integer |
Number of seconds for dimensional timestep, mapped to deltat. |
model_perturbation_amplitude |
real(r8) |
Perturbation amplitude |
binary_grid_file_format |
character(64) |
Byte sequence for the binary grid. Valid values are native, big_endian & little_endian. |
debug |
integer |
When set to 0, debug statements are not printed. Higher numbers mean more debug reporting. |
model_state_variables |
character(*) |
List of model state variables |
References¶
- 1
Arakawa, Akio and Vivian R. Lamb, 1977: Computational Design of the Basic Dynamical Processes of the UCLA General Circulation Model. Methods in Computational Physics: Advances in Research and Applications, 17, 173–265, doi:10.1016/B978-0-12-460817-7.50009-4
- 2
Murray, Ross J., 1996: Explicit Generation of Orthogonal Grids for Ocean Models. Journal of Computational Physics, 126, 251–273, doi:10.1006/jcph.1996.0136
- 3
Smith, Richard D., Samuel Kortas and Bertrand Meltz, 1995: Curvilinear Coordinates for Global Ocean Models. Technical Report LA-UR95-1146, Los Alamos National Laboratory.
- 4
Hunke, Elizabeth C., and John K. Dukowicz, 2002: The Elastic–Viscous–Plastic Sea Ice Dynamics Model in General Orthogonal Curvilinear Coordinates on a Sphere—Incorporation of Metric Terms. Monthly Weather Review, 130, 1848–1865, doi:10.1175/1520-0493(2002)130%3C1848:TEVPSI%3E2.0.CO;2