3.1. Implementation

Icepack is written in FORTRAN90 and runs on platforms using UNIX, LINUX, and other operating systems. The code is not parallelized. (CHANGE IF OPENMP IS IMPLEMENTED)

Icepack consists of the sea ice column physics code, contained in the columnphysics/ directory, and a configuration/ directory that includes a driver for testing the column physics and a set of scripts for configuring the tests. Icepack is designed such that the column physics code may be used by a host sea ice model without direct reference to the driver or scripts, although these may be consulted for guidance when coupling the column physics code to the host sea ice model (CICE may also be useful for this.) Information about the interface between the column physics and the driver or host sea ice model is located in the Initialization and Forcing section.

3.1.1. Directory structure

The present code distribution includes source code for the column physics, source code for the driver, and the scripts. Forcing data is available from the ftp site. The directory structure of Icepack is as follows. All columnphysics filename have a prefix of icepack_ and all driver files are prefixed with icedrv_*.

LICENSE.pdf
license for using and sharing the code
DistributionPolicy.pdf
policy for using and sharing the code
README.md
basic information and pointers
columnphysics/
columnphysics source code, see Icepack Column Physics
configuration/scripts/
support scripts, see Scripts Implementation
configuration/driver/
icepack driver code, see Driver Implementation
doc/
documentation
icepack.setup
main icepack script for creating cases

A case (compile) directory is created upon initial execution of the script icepack.setup at the user-specified location provided after the -c flag. Executing the command ./icepack.setup -h provides helpful information for this tool.

3.1.2. Grid and boundary conditions

The driver configures a collection of grid cells on which the column physics code will be run. This “horizontal” grid is a vector of length nx, with a minimum length of 4. The grid vector is initialized with different sea ice conditions, such as open water, a uniform slab of ice, a multi-year ice thickness distribution with snow, and land. For simplicity, the same forcing values are applied to all grid cells.

Icepack includes two vertical grids. The basic vertical grid contains nilyr equally spaced grid cells. History variables available for column output are ice and snow temperature, Tinz and Tsnz. These variables also include thickness category as a fourth dimension.

In addition, there is a bio-grid that can be more finely resolved and includes additional nodes for boundary conditions. It is used for solving the brine height variable \(h_b\) and for discretizing the vertical transport equations of biogeochemical tracers. The bio-grid is a non-dimensional vertical grid which takes the value zero at \(h_b\) and one at the ice–ocean interface. The number of grid levels is specified during compilation by setting the variable NBGCLYR equal to an integer (\(n_b\)) .

Ice tracers and microstructural properties defined on the bio-grid are referenced in two ways: as bgrid \(=n_b+2\) points and as igrid\(=n_b+1\) points. For both bgrid and igrid, the first and last points reference \(h_b\) and the ice–ocean interface, respectively, and so take the values \(0\) and \(1\), respectively. For bgrid, the interior points \([2, n_b+1]\) are spaced at \(1/n_b\) intervals beginning with bgrid(2) = \(1/(2n_b)\). The igrid interior points \([2, n_b]\) are also equidistant with the same spacing, but physically coincide with points midway between those of bgrid.

3.1.3. Initialization and Forcing

Icepack’s parameters and variables are initialized in several steps. Many constants and physical parameters are set in icepack_parameters.F90. In the current driver implementation, a namelist file is read to setup the model. Namelist values are given default values in the code, which may then be changed when the input file icepack_in is read. Other physical constants, numerical parameters, and variables are first set in initialization routines for each ice model component or module. Then, if the ice model is being restarted from a previous run, core variables are read and reinitialized in restartfile, while tracer variables needed for specific configurations are read in separate restart routines associated with each tracer or specialized parameterization. Finally, albedo and other quantities dependent on the initial ice state are set. Some of these parameters will be described in more detail in the Table of Namelist Inputs.

Two namelist variables control model initialization, ice_ic and restart. Setting ice_ic = ‘default’ causes the model to run using initial values set in the code. To start from a file filename, set restart = .true. and ice_ic = filename. When restarting using the Icepack driver, for simplicity the tracers are assumed to be set the same way (on/off) as in the run that created the restart file; i.e. that the restart file contains exactly the information needed for the new run. CICE is more flexible in this regard.

For stand-alone runs, routines in icedrv_forcing.F90 read and interpolate data from files, and are intended merely for testing, although they can also provide guidance for the user to write his or her own routines.

3.1.4. Choosing an appropriate time step

Transport in thickness space imposes a restraint on the time step, given by the ice growth/melt rate and the smallest range of thickness among the categories, \(\Delta t<\min(\Delta H)/2\max(f)\), where \(\Delta H\) is the distance between category boundaries and \(f\) is the thermodynamic growth rate. For the 5-category ice thickness distribution used as the default in this distribution, this is not a stringent limitation: \(\Delta t < 19.4\) hr, assuming \(\max(f) = 40\) cm/day.

3.1.5. Model output

History output from Icepack is not currently supported in the Icepack driver, except in restart files. The sea ice model CICE provides extensive options for model output, including many derived output variables.

3.1.5.1. Diagnostic files

Icepack writes diagnostic information for each grid cell as a separate file, ice_diag.*, identified by the initial ice state of the grid cell (no ice, slab, land, etc).

3.1.5.2. Restart files

Icepack provides restart data in binary unformatted format. The restart files created by the Icepack driver contain all of the variables needed for a full, exact restart. The filename begins with the character string ‘iced.’ and is placed in the directory specified by the namelist variable restart_dir. The restart dump frequency is given by the namelist variable dumpfreq. The namelist variable ice_ic contains the pointer to the filename from which the restart data is to be read and the namelist option restart must be set to .true. to use the file. dump_last namelist can also be set to true to trigger restarts automatically at then end of runs.

3.1.5.3. Biogeochemistry History Fields

History output is not provided with Icepack. This documentation indicates what is available for output and is implemented in CICE.

Table Biogeochemical History variables lists the biogeochemical tracer history flags along with a short description and the variable or variables saved. Not listed are flags appended with _ai, i.e. f_fbio_ai. These fields are identical to their counterpart. i.e. f_fbio, except they are averaged by ice area.

Biogeochemical History variables
History Flag Definition Variable(s) Units
f_faero_atm atmospheric aerosol deposition flux faero_atm kg m\(^{-2}\) s\(^{-1}\)
f_faero_ocn aerosol flux from ice to ocean faero_ocn kg m\(^{-2}\) s\(^{-1}\)
f_aero aerosol mass (snow and ice ssl and int) aerosnossl, aerosnoint,aeroicessl, aeroiceint kg/kg
f_fbio biological ice to ocean flux fN, fDOC, fNit, fAm,fDON,fFep\(^a\), fFed\(^a\), fSil,fhum, fPON, fDMSPd,fDMS, fDMSPp, fzaero mmol m\(^{-2}\) s\(^{-1}\)
f_zaero bulk z-aerosol mass fraction zaero kg/kg
f_bgc_S bulk z-salinity bgc_S ppt
f_bgc_N bulk algal N concentration bgc_N mmol m\(^{-3}\)
f_bgc_C bulk algal C concentration bgc_C mmol m\(^{-3}\)
f_bgc_DOC bulk DOC concentration bgc_DOC mmol m\(^{-3}\)
f_bgc_DON bulk DON concentration bgc_DON mmol m\(^{-3}\)
f_bgc_DIC bulk DIC concentration bgc_DIC mmol m\(^{-3}\)
f_bgc_chl bulk algal chlorophyll concentration bgc_chl mg chl m\(^{-3}\)
f_bgc_Nit bulk nitrate concentration bgc_Nit mmol m\(^{-3}\)
f_bgc_Am bulk ammonium concentration bgc_Am mmol m\(^{-3}\)
f_bgc_Sil bulk silicate concentration bgc_Sil mmol m\(^{-3}\)
f_bgc_DMSPp bulk particulate DMSP concentration bgc_DMSPp mmol m\(^{-3}\)
f_bgc_DMSPd bulk dissolved DMSP concentration bgc_DMSPd mmol m\(^{-3}\)
f_bgc_DMS bulk DMS concentration bgc_DMS mmol m\(^{-3}\)
f_bgc_Fe bulk dissolved and particulate iron conc. bgc_Fed, bgc_Fep \(\mu\,\)mol m\(^{-3}\)
f_bgc_hum bulk humic matter concentration bgc_hum mmol m\(^{-3}\)
f_bgc_PON bulk passive mobile tracer conc. bgc_PON mmol m\(^{-3}\)
f_upNO Total algal \({\mbox{NO$_3$}}\) uptake rate upNO mmol m\(^{-2}\) d\(^{-1}\)
f_upNH Total algal \({\mbox{NH$_4$}}\) uptake rate upNH mmol m\(^{-2}\) d\(^{-1}\)
f_bgc_ml upper ocean tracer concentrations ml_N, ml_DOC, ml_Nit,ml_Am, ml_DON, ml_Fep\(^b\),ml_Fed\(^b\), ml_Sil, ml_hum, ml_PON,ml_DMS, ml_DMSPd, ml_DMSPp mmol m\(^{-3}\)
f_bTin ice temperature on the bio grid bTizn \(^o\)C
f_bphi ice porosity on the bio grid bphizn %
f_iDin brine eddy diffusivity on the interface bio grid iDin m\(^{2}\) d\(^{-1}\)
f_iki ice permeability on the interface bio grid ikin mm\(^{2}\)
f_fbri ratio of brine tracer height to ice thickness fbrine 1
f_hbri brine tracer height hbrine m
f_zfswin internal ice PAR on the interface bio grid zfswin W m\(^{-2}\)
f_bionet brine height integrated tracer concentration algalN_net, algalC_net, chl_net, pFe\(^c\)_net, dFe\(^c\)_net, Sil_net, Nit_net, Am_net, hum_net, PON_net, DMS_net, DMSPd_net, DMSPp_net, DOC_net, zaero_net, DON_net mmol m\(^{-2}\)
f_biosnow snow integrated tracer concentration” algalN_snow, algalC_snow,chl_snow, pFe\(^c\)_snow, dFe\(^c\)_snow,Sil_snow, Nit_snow, Am_snow, hum_snow, PON_snow, DMS_snow, DMSPd_snow, DMSPp_snow, DOC_snow, zaero_snow, DON_snow mmol m\(^{-2}\)
f_grownet Net specific algal growth rate grow_net m d\(^{-1}\)
f_PPnet Net primary production PP_net mgC m\(^{-2}\) d\(^{-1}\)
f_algalpeak interface bio grid level of peak chla peak_loc 1
f_zbgc_frac mobile fraction of tracer algalN_frac, chl_frac, pFe_frac,dFe_frac, Sil_frac, Nit_frac,Am_frac, hum_frac, PON_frac,DMS_frac, DMSPd_frac, DMSPp_frac,DOC_frac, zaero_frac, DON_frac 1

\(^a\) units are \(\mu\)mol m\(^{-2}\) s\(^{-1}\)

\(^b\) units are \(\mu\)mol m\(^{-3}\)

\(^c\) units are \(\mu\)mol m\(^{-2}\)