5.2. Icepack Column Physics

5.2.1. File List

The column physics source code contains the following files

columnphysics/ the column physics code
icepack_aerosol.F90 handles most work associated with the aerosol tracers
icepack_age.F90 handles most work associated with the age tracer
icepack_algae.F90 biogeochemistry
icepack_atmo.F90 stability-based parameterization for calculation of turbulent ice–atmosphere fluxes
icepack_brine.F90 evolves the brine height tracer
icepack_firstyear.F90 handles most work associated with the first-year ice area tracer
icepack_flux.F90 fluxes needed/produced by the model
icepack_fsd.F90 supports floe size distribution
icepack_intfc.F90 interface routines for linking Icepack with a host sea ice model
icepack_itd.F90 utilities for managing ice thickness distribution
icepack_kinds.F90 basic definitions of reals, integers, etc.
icepack_mechred.F90 mechanical redistribution (ridging)
icepack_meltpond_cesm.F90 CESM melt pond parameterization
icepack_meltpond_lvl.F90 level-ice melt pond parameterization
icepack_meltpond_topo.F90 topo melt pond parameterization
icepack_mushy_physics.F90 physics routines for mushy thermodynamics
icepack_ocean.F90 mixed layer ocean model
icepack_orbital.F90 orbital parameters for Delta-Eddington shortwave parameterization
icepack_parameters.F90 basic model parameters including physical and numerical constants requried for column package
icepack_shortwave.F90 shortwave and albedo parameterizations
icepack_therm_0layer.F90 zero-layer thermodynamics of [53]
icepack_therm_bl99.F90 multilayer thermodynamics of [6]
icepack_therm_itd.F90 thermodynamic changes mostly related to ice thickness distribution
icepack_therm_mushy.F90 mushy-theory thermodynamics of [61]
icepack_therm_shared.F90 code shared by all thermodynamics parameterizations
icepack_therm_vertical.F90 vertical growth rates and fluxes
icepack_tracers.F90 tracer information
icepack_warnings.F90 utilities for writing warning and error messages
icepack_wavefracspec.F90 wave impact on sea ice
icepack_zbgc.F90 driver for ice biogeochemistry and brine tracer motion
icepack_zbgc_shared.F90 parameters and shared code for biogeochemistry and brine height
icepack_zsalinity.F90 vertical salinity parameterization of [27]

5.2.2. Coding Standard

The column physics is a library that solves the sea ice column physics on a timestep by timestep and gridpoint by gridpoint basis. It consists of Fortran routines with input and output arguments. The model state is saved in the host model. There is no communication between gridcells so the underlying implementation supports no parallelization. It however can be called in parallel by a driver that is running on multiple pes with a decomposed grid.

The column physics does not have a time manager. Calendaring is expected to be dealt with by the host model. The column physics does not read any forcing data, that is passed into the column physics though interfaces. In fact, there are no direct IO capabilities in the column physics. That is to say, the column physics does not open files to read or write. The column physics is able to write data via several different routines that specifically have a fortran unit number as an input argument. In addition, there is a warning and abort package (see section Error Messages and Aborts) that provides the column package with the ability to store log output. That output can be queried by the host model or it can be written directly via a specific routine. The warning package also provides access to an abort flag that the host model can query after each call to check for successful completion of the column physics package.

All column physics public interfaces and public data are defined in the icepack_intfc.F90 file (see section Access). Internal column physics settings should all be accessible through interfaces. The internal constants, parameters, and tracer settings have init (set), query (get), and write interfaces that provides access to internal column physics settings. The host model should not have to use “use” statements to access any of the column physics data outside of what is provided through the icepack_intfc module. The public column physics interfaces use optional arguments where it makes sense and there is an ongoing effort to make more of the interfaces support keyword=value arguments for clarity and backwards compatibility.