Next:
Contents
 
Contents
CSIM Code Reference Manual
Version 4
by Bruce P. Briegleb
1
Contents
1 Introduction
2 Overview of CSIM4 Code
2.1 Calling Tree
3 Data Structures
3.1 Horizontal
3.2 Category
3.3 Vertical
4 Module Descriptions
4.1 Fortran: Module Interface icemodel - main ice model program (Source File: ice.F)
4.2 Fortran: Module Interface ice_albedo - snow and ice albedo parameterization (Source File: ice_albedo.F)
4.2.1 albedos - compute snow/ice albedos and aggregate
4.3 Fortran: Module Interface ice_atmo - atm-ice interface: stability based flux calculations (Source File: ice_atmo.F)
4.3.1 stability - compute coefficients for atm-ice fluxes, stress and Tref
4.3.2 ice_src_flux - compute ice-atm surface fluxes
4.4 Fortran: Module Interface ice_calendar - calendar routines for managing time (Source File: ice_calendar.F)
4.4.1 init_calendar - initialize calendar variables
4.4.2 calendar - computes date at the end of the time step
4.5 Fortran: Module Interface ice_constants - sets physical constants (Source File: ice_constants.F)
4.5.1 init_constants - initialize constants defined at run time
4.6 Fortran: Module Interface ice_coupling - message passing to and from the coupler (Source File: ice_coupling.F)
4.6.1 init_cpl - initializes message passing between ice and coupler
4.6.2 from_coupler - input from coupler to sea ice model
4.6.3 to_coupler - send data from sea ice model to coupler
4.6.4 exit_coupler - exit from coupled/mpi environment
4.6.5 mpi_coupled - sets mpi communicators and component task ids
4.7 Fortran: Module Interface ice_dh (Source File: ice_dh.F)
4.7.1 dh - computes top and bottom thickness changes
4.7.2 freeboard - freeboard flooding adjustment: snow-ice formation
4.7.3 srfsub - computes sea ice and snow thickness changes
4.7.4 srfmelt - melt snow and ice from the top
4.7.5 botmelt - melt from bottom
4.7.6 adjust - adjusts temperature profile to changing layer spacing
4.7.7 real function energ - compute energy of melting per unit volume
4.8 Fortran: Module Interface ice_diagnostics - diagnostic information output during run (Source File: ice_diagnostics.F)
4.8.1 runtime_diags - writes max,min,global sums to standard out
4.8.2 init_mass_diags - computes global combined ice and snow mass sum
4.8.3 init_diags - initialize diagnostic output
4.8.4 print_state - print ice state for specified grid point
4.9 Fortran: Module Interface ice_domain - sets array sizes for local subdomain and parallel info (Source File: ice_domain.F)
4.10 Fortran: Module Interface ice_dyn_evp - elastic-viscous-plastic sea ice dynamics model (Source File: ice_dyn_evp.F)
4.10.1 evp - elastic-viscous-plastic dynamics driver
4.10.2 init_evp - initialize parameters needed for evp dynamics
4.10.3 evp_prep - compute quantities needed for stress tensor and mom eqns
4.10.4 stress - computes strain rates and internal stress components
4.10.5 stepu - surface stresses and integrates mom eqn for u,v
4.10.6 evp_finish - calculates ice-ocean stress
4.10.7 principal_stress - computes principal stress for yield curve
4.11 Fortran: Module Interface ice_flux - flux variable declarations: from, to coupler and internal (Source File: ice_flux.F)
4.11.1 init_flux_atm - initialize all atmospheric fluxes sent to coupler
4.11.2 init_flux_ocn - initialize ocean fluxes sent to coupler
4.11.3 merge_fluxes - aggregate flux information over ITD
4.12 Fortran: Module Interface ice_grid - spatial grids, masks and boundary conditions (Source File: ice_grid.F)
4.12.1 init_grid - horizontal grid initialization
4.12.2 popgrid - reads and sets pop displaced pole grid and land mask
4.12.3 columngrid - column grid and mask
4.12.4 rectgrid - regular rectangular grid and mask
4.12.5 makemask - makes logical land masks (T,U) and hemispheric masks
4.12.6 Tlatlon - initializes latitude and longitudes on T grid
4.12.7 t2ugrid - transfer from T-cell centers to U-cell centers
4.12.8 to_ugrid - shift from T-cell to U-cell midpoints
4.12.9 u2tgrid - transfer from U-cell centers to T-cell centers
4.12.10 to_tgrid - shifts array from U-cell to T-cell midpoints
4.12.11 bound - fills ghost cells with boundary information
4.12.12 bound_sw - fills south and west ghost cells
4.12.13 bound_narr_ne - fills north and east ghost cells
4.12.14 bound_narr - fills north and east ghost cells with boundary info
4.12.15 bound_ijn - Periodic/Neumann boundary conditions
4.12.16 bound_nij - Periodic/Neumann boundary conditions
4.13 Fortran: Module Interface ice_history - ice model history and restart files (Source File: ice_history.F)
4.13.1 init_hist - initialize history files
4.13.2 ice_write_hist - write average ice quantities or snapshots
4.13.3 icecdf - write netCDF history file
4.13.4 nf_stat_check - check error code returned from netCDF call
4.13.5 integer function lenstr(label) - compute length string
4.13.6 dumpfile - dumps all fields required for restart
4.13.7 restartfile - restarts from a dumpfile
4.14 Fortran: Module Interface ice_init - parameter and variable initializations (Source File: ice_init.F)
4.14.1 input_data - namelist variables
4.14.2 init_state - initialize state for itd
4.14.3 init_flux - initialize fluxes exchanged with coupler
4.14.4 setup_mpi - initialize mpi
4.15 Fortran: Module Interface ice_itd - initialize and redistribute ice in the ITD (Source File: ice_itd.F)
4.15.1 init_itd - initalize area fraction and thickness boundaries for ITD
4.15.2 aggregate - aggregate ice state over the grid
4.15.3 aggregate_pt - aggregate a point over ITD state
4.15.4 to_column - define column state variables for given point
4.15.5 from_column - reload state variables from given point
4.15.6 check_state - require certain fields to be monotone
4.15.7 distr_check - enforce ice area minimum and ice thickness boundaries
4.15.8 normalize_state - normalize ice state after small areas removed
4.15.9 rebin_ice - rebins thicknesses into defined categories
4.15.10 movedn - moves ice from cat 2 to cat 1
4.15.11 moveup - moves ice from cat 1 to cat 2
4.15.12 zerocat - reset category variables to zero when no ice
4.16 Fortran: Module Interface ice_itd_linear - linear remapping scheme for ITD (Source File: ice_itd_linear.F)
4.16.1 linear_itd - ITD scheme that shifts ice among categories
4.16.2 fit_line - fit g(h) with a line using area, volume constraints
4.16.3 shift_ice - shift ice across category boundaries
4.17 Fortran: Module Interface ice_kinds_mod - defines variable precision (Source File: ice_kinds_mod.F)
4.18 Fortran: Module Interface ice_mechred - computes mech redistribution and strength for ITD (Source File: ice_mechred.F)
4.18.1 init_mechred - initialize constants for ridging
4.18.2 mechanical_redistr - driver for ridging
4.18.3 ridge - ridge ice due to convergence or shear deformation
4.18.4 ridging_mode - compute W and Wa factors
4.18.5 ridge_matrices - compute Gamma factors
4.18.6 comp_matrices - compute Gamm functions
4.18.7 real function roth_strength - Rothrock ice strength
4.19 Fortran: Module Interface ice_model_size - defines global domain size, category and layer number (Source File: ice_model_size.F)
4.20 Fortran: Module Interface ice_mpi_internal - parameters and common blocks for MPI internal to ice model (Source File: ice_mpi_internal.F)
4.20.1 ice_global_real_minmax - computes global min/max and prints
4.20.2 real function ice_global_real_minval - computes global min
4.20.3 real function ice_global_real_maxval - computes global max
4.20.4 real function ice_global_real_sum - sums input array over global grid
4.20.5 ice_bcast_logical - broadcasts scalar logical to all processors
4.20.6 ice_bcast_char - broadcasts scalar character to all processors
4.20.7 ice_bcast_rscalar - broadcasts real scalar all processors
4.20.8 ice_bcast_iscalar - broadcasts integer scalar all processors
4.20.9 global_scatter - scatters global to distributed array, adding ghost cells
4.20.10 global_gather - gathers distributed array into global array
4.20.11 get_sum - computes weighted sum over global grid
4.20.12 end_run - ends run
4.21 Fortran: Module Interface ice_ocean - ocean mixed layer internal to sea ice model (Source File: ice_ocean.F)
4.21.1 init_oceanmixed_ice - initialize mixed layer forcing data
4.21.2 time_intrplt_ocean_forcing - time interpolates ocean forcing
4.21.3 set_oceanmixed_ice - set sst and frzmlt
4.21.4 compute_oceanmixed_ice - update ocean state fields
4.21.5 mixed_layer(i,j) - computes open ocean fluxes
4.21.6 ocnheat(i,j, delt, delq) - update ocean fields
4.22 Fortran: Module Interface ice_prescribed - Prescribed Ice (Source File: ice_prescribed.F)
4.22.1 init_prescribed_ice - initialize prescribed ice data
4.22.2 read_prescribed_ice - read in two ice concentration fields
4.22.3 read_prescribed_ice_climate - read two climate ice concentrations
4.22.4 set_prescribed_ice_state - set prescribed ice state
4.22.5 set_prescribed_ice_flux - Set non-computed fluxes to zero
4.22.6 exit_prescribed_ice - close netCDF file for prescribed ice
4.23 Fortran: Module Interface ice_prnpnt - diagnostic grid point info during execution (Source File: ice_prnpnt.F)
4.23.1 intpnt - initializes printout of grid point data
4.23.2 diags_cpl_in - grid point printout of input info from coupler
4.23.3 diags_cpl_out - grid point printout of info sent to coupler
4.24 Fortran: Module Interface ice_read_write - routines for opening, reading and writing external files (Source File: ice_read_write.F)
4.24.1 ice_open - opens an unformatted file for reading
4.24.2 ice_read - reads an unformatted file
4.24.3 ice_write - writes an unformatted file
4.25 Fortran: Module Interface ice_scaling - scale ice (Source File: ice_scaling.F)
4.25.1 scale_fluxes - scale fluxes
4.25.2 scale_hist_fluxes - scale history fluxes
4.26 Fortran: Module Interface ice_state - primary state variables (Source File: ice_state.F)
4.27 Fortran: Module Interface ice_therm_driver - driver for thermodynamics and itd (Source File: ice_therm_driver.F)
4.27.1 thermo_rates - compute thermo growth rates and atm fluxes
4.27.2 thermo_itd - changes in itd due to thermodynamic growth
4.27.3 init_column_diags - initialize column diagnostics
4.27.4 init_vertical_profile - initialize vertical ice profile
4.27.5 init_frzmlt - initialize ocean-ice heat fluxes, bottom and lateral
4.27.6 lateral_growth_melt - frazil ice growth and lateral melt
4.27.7 reduce_area - reduce area when ice melts for special case ncat=1
4.27.8 conservation_check - enforce ice property conservation
4.28 Fortran: Module Interface ice_timers (Source File: ice_timers.F)
4.28.1 ice_timer_clear(n) - initialize timer n to 0
4.28.2 ice_timer_start(n) - begin timing with timer n
4.28.3 ice_timer_stop(n) - end (or pause) timing with timer n
4.28.4 ice_timer_print(n) - print timing results of timer n
4.28.5 timers(t1) - do the work
4.29 Fortran: Module Interface ice_transport - horizontal advection (via mpdata) (Source File: ice_transport.F)
4.29.1 transport - computes transport equations for one timestep
4.29.2 mpdata(narrays,phi) - advection according to mpdata
4.30 Fortran: Module Interface ice_tstm - energy conserving sea ice model thermodynamics (Source File: ice_tstm.F)
4.30.1 tstm - calculates surface and internal snow/ice temp
4.30.2 getabc - computes elements of tridiagonal matrix
4.30.3 tridag - solves tridiagonal equations
4.30.4 conductiv - calculates T,S dependent conductivity
4.31 Fortran: Module Interface ice_vthermo - main routines for energy-conserving vertical thermodynamics (Source File: ice_vthermo.F)
4.31.1 init_thermo - setup salinity profile and tmelt for each layer
4.31.2 thermo_vertical - heat budget over open water and ice
5 Making Modifications to Code
5.1 Adding Fields to the History File
5.2 Changing Algorithms
5.3 Adding Prognostic Fields
5.4 Modifying Restart Files
6 Miscellaneous Features
6.1 Diagnostic Printouts
6.2 Water and Energy Budgets
7 Summary
Bibliography
About this document ...
csm@ucar.edu