Warning, /doc/phys_pkgs/thsice.rst is written in an unsupported language. File is not indexed.
view on githubraw file Latest commit 0bad585a on 2022-02-16 18:55:09 UTC
8679f9097b Jeff*0001 .. _sub_phys_pkg_thsice:
0002
0003 THSICE: The Thermodynamic Sea Ice Package
0004 -----------------------------------------
0005
0006
0007 **Important note:** This document has been written by Stephanie
0008 Dutkiewicz and describes an earlier implementation of the sea-ice
0009 package. This needs to be updated to reflect the recent changes (JMC).
0010
0011 This thermodynamic ice model is based on the 3-layer model by Winton
0012 (2000). and the energy-conserving LANL CICE model (Bitz and Lipscomb,
0013 1999). The model considers two equally thick ice layers; the upper layer
0014 has a variable specific heat resulting from brine pockets, the lower
0015 layer has a fixed heat capacity. A zero heat capacity snow layer lies
0016 above the ice. Heat fluxes at the top and bottom surfaces are used to
0017 calculate the change in ice and snow layer thickness. Grid cells of the
0018 ocean model are either fully covered in ice or are open water. There is
0019 a provision to parametrize ice fraction (and leads) in this package.
0020 Modifications are discussed in small font following the subroutine
0021 descriptions.
0022
0023 Key parameters and Routines
0024 +++++++++++++++++++++++++++
0025
0026 The ice model is called from *thermodynamics.F*, subroutine
0027 *ice\_forcing.F* is called in place of *external\_forcing\_surf.F*.
0028
0029 In *ice\_forcing.F*, we calculate the freezing potential of the ocean
0030 model surface layer of water:
0031
0bad585a21 Navi*0032 .. math:: {\bf frzmlt} = (T_f - SST) \frac{c_{\rm sw} \rho_{\rm sw} \Delta z}{\Delta t}
8679f9097b Jeff*0033
0bad585a21 Navi*0034 where :math:`c_{\rm sw}` is seawater heat capacity, :math:`\rho_{\rm sw}` is the
8679f9097b Jeff*0035 seawater density, :math:`\Delta z` is the ocean model upper layer
0036 thickness and :math:`\Delta t` is the model (tracer) timestep. The
0037 freezing temperature, :math:`T_f=\mu S` is a function of the salinity.
0038
0039 #. Provided there is no ice present and **frzmlt** is less than 0, the surface tendencies of wind, heat and freshwater are calculated as usual (ie. as in *external\_forcing\_surf.F*).
0040
0041 #. If there is ice present in the grid cell we call the main ice model routine *ice\_therm.F* (see below). Output from this routine gives net heat and freshwater flux affecting the top of the ocean.
0042
0043 Subroutine *ice\_forcing.F* uses these values to find the sea surface
0044 tendencies in grid cells. When there is ice present, the surface stress
0045 tendencies are set to zero; the ice model is purely thermodynamic and
0046 the effect of ice motion on the sea-surface is not examined.
0047
0048 Relaxation of surface :math:`T` and :math:`S` is only allowed
0049 equatorward of **relaxlat** (see **DATA.ICE below**), and no relaxation
0050 is allowed under the ice at any latitude.
0051
0052 (Note that there is provision for allowing grid cells to have both
0053 open water and seaice; if **compact** is between 0 and 1)
0054
0055
0056 subroutine ICE_FREEZE
0057 #####################
0058
0059 This routine is called from *thermodynamics.F* after the new temperature
0060 calculation, *calc\_gt.F*, but before *calc\_gs.F*. In *ice\_freeze.F*,
0061 any ocean upper layer grid cell with no ice cover, but with temperature
0062 below freezing, :math:`T_f=\mu S` has ice initialized. We calculate
0063 **frzmlt** from all the grid cells in the water column that have a
0064 temperature less than freezing. In this routine, any water below the
0065 surface that is below freezing is set to :math:`T_f`. A call to
0066 *ice\_start.F* is made if **frzmlt** :math:`>0`, and salinity tendancy
0067 is updated for brine release.
0068
0069
0070 (There is a provision for fractional ice: In the case where the grid cell has less ice coverage than **icemaskmax** we allow *ice_start.F* to be called)
0071
0072
0073 subroutine ICE_START
0074 ####################
0075
0076 The energy available from freezing the sea surface is brought into this
0077 routine as **esurp**. The enthalpy of the 2 layers of any new ice is
0078 calculated as:
0079
0080 .. math::
0081
0082 \begin{aligned}
0bad585a21 Navi*0083 q_1 & = -c_{i}*T_f + L_i \nonumber \\
0084 q_2 & = -c_{f}T_{\rm mlt}+ c_{i}(T_{\rm mlt}-T{f}) + L_i(1-\frac{T_{\rm mlt}}{T_f})
8679f9097b Jeff*0085 \nonumber\end{aligned}
0086
0087 where :math:`c_f` is specific heat of liquid fresh water, :math:`c_i` is
0088 the specific heat of fresh ice, :math:`L_i` is latent heat of freezing,
0bad585a21 Navi*0089 :math:`\rho_i` is density of ice and :math:`T_{\rm mlt}` is melting
8679f9097b Jeff*0090 temperature of ice with salinity of 1. The height of a new layer of ice
0091 is
0092
0bad585a21 Navi*0093 .. math:: h_{i \rm new} = \frac{{\bf esurp} \Delta t}{qi_{0av}}
8679f9097b Jeff*0094
0095 where :math:`qi_{0av}=-\frac{\rho_i}{2} (q_1+q_2)`.
0096
0097 The surface skin temperature :math:`T_s` and ice temperatures
0098 :math:`T_1`, :math:`T_2` and the sea surface temperature are set at
0099 :math:`T_f`.
0100
0101 (There is provision for fractional ice: new ice is formed over open
0102 water; the first freezing in the cell must have a height of **himin0**;
0103 this determines the ice fraction **compact**. If there is already ice in
0104 the grid cell, the new ice must have the same height and the new ice
0105 fraction is
0106
0bad585a21 Navi*0107 .. math:: i_f=(1-\hat{i_f}) \frac{h_{i \rm new}}{h_i}
8679f9097b Jeff*0108
0109 where :math:`\hat{i_f}` is ice fraction from previous timestep and
0110 :math:`h_i` is current ice height. Snow is redistributed over the new
0111 ice fraction. The ice fraction is not allowed to become larger than
0112 **iceMaskmax** and if the ice height is above **hihig** then freezing
0113 energy comes from the full grid cell, ice growth does not occur under
0114 orginal ice due to freezing water.)
0115
0116
0117 subroutine ICE_THERM
0118 ####################
0119
0120 The main subroutine of this package is *ice\_therm.F* where the ice
0121 temperatures are calculated and the changes in ice and snow thicknesses
0122 are determined. Output provides the net heat and fresh water fluxes that
0123 force the top layer of the ocean model.
0124
0125 If the current ice height is less than **himin** then the ice layer is
0126 set to zero and the ocean model upper layer temperature is allowed to
0127 drop lower than its freezing temperature; and atmospheric fluxes are
0128 allowed to effect the grid cell. If the ice height is greater than
0129 **himin** we proceed with the ice model calculation.
0130
0131 We follow the procedure of Winton (1999) – see equations 3 to 21 – to
0132 calculate the surface and internal ice temperatures. The surface
0133 temperature is found from the balance of the flux at the surface
0134 :math:`F_s`, the shortwave heat flux absorbed by the ice, **fswint**,
0135 and the upward conduction of heat through the snow and/or ice,
0136 :math:`F_u`. We linearize :math:`F_s` about the surface temperature,
0137 :math:`\hat{T_s}`, at the previous timestep (where :math:`\hat{ }`
0138 indicates the value at the previous timestep):
0139
0140 .. math::
0141
0142 F_s (T_s) = F_s(\hat{T_s}) + \frac{\partial F_s(\hat{T_s)}}{\partial T_s}
0143 (T_s-\hat{T_s})
0144
0145 where,
0146
0147 .. math::
0148
0bad585a21 Navi*0149 F_s = F_{\rm SH}+F_{\rm LH}+F_{LW \downarrow}+F_{LW \uparrow} + (1-
0150 \alpha) F_{\rm SW}
8679f9097b Jeff*0151
0152 and
0153
0154 .. math::
0155
0bad585a21 Navi*0156 \frac{d F_s}{dT} = \frac{d F_{\rm SH}}{dT} + \frac{d F_{\rm LH}}{dT}
0157 +\frac{d F_{\rm LW \uparrow}}{dT}.
8679f9097b Jeff*0158
0159 :math:`F_s` and :math:`\frac{d F_s}{dT}` are currently calculated from
0160 the **BULKF** package described separately, but could also be provided
0161 by an atmospheric model. The surface albedo is calculated from the ice
0162 height and/or surface temperature (see below, *srf\_albedo.F*) and the
0163 shortwave flux absorbed in the ice is
0164
0bad585a21 Navi*0165 .. math:: {\bf fswint} = (1-e^{\kappa_i h_i})(1-\alpha) F_{SW}
8679f9097b Jeff*0166
0167 where :math:`\kappa_i` is bulk extinction coefficient.
0168
0169 The conductive flux to the surface is
0170
0171 .. math:: F_u=K_{1/2}(T_1-T_s)
0172
0173 where :math:`K_{1/2}` is the effective conductive coupling of the
0174 snow-ice layer between the surface and the mid-point of the upper layer
0bad585a21 Navi*0175 of ice :math:`K_{1/2}=\frac{4 K_i K_s}{K_s h_i + 4 K_i h_s}`,
0176 :math:`K_i` and :math:`K_s` are constant thermal conductivities of
8679f9097b Jeff*0177 seaice and snow.
0178
0179 From the above equations we can develop a system of equations to find
0180 the skin surface temperature, :math:`T_s` and the two ice layer
0181 temperatures (see Winton, 1999, for details). We solve these equations
0182 iteratively until the change in :math:`T_s` is small. When the surface
0183 temperature is greater then the melting temperature of the surface, the
0184 temperatures are recalculated setting :math:`T_s` to 0. The enthalpy of
0185 the ice layers are calculated in order to keep track of the energy in
0186 the ice model. Enthalpy is defined, here, as the energy required to melt
0187 a unit mass of seaice with temperature :math:`T`. For the upper layer
0188 (1) with brine pockets and the lower fresh layer (2):
0189
0190 .. math::
0191
0192 \begin{aligned}
0bad585a21 Navi*0193 q_1 & = - c_f T_f + c_i (T_f-T)+ L_{i}(1-\frac{T_f}{T})
8679f9097b Jeff*0194 \nonumber \\
0bad585a21 Navi*0195 q_2 & = -c_i T+L_i \nonumber\end{aligned}
8679f9097b Jeff*0196
0197 where :math:`c_f` is specific heat of liquid fresh water, :math:`c_i` is
0198 the specific heat of fresh ice, and :math:`L_i` is latent heat of
0199 melting fresh ice.
0200
0201 From the new ice temperatures, we can calculate the energy flux at the
0202 surface available for melting (if :math:`T_s`\ =0) and the energy at the
0203 ocean-ice interface for either melting or freezing.
0204
0205 .. math::
0206
0207 \begin{aligned}
0bad585a21 Navi*0208 E_{\rm top} & = & (F_s- K_{1/2}(T_s-T_1) ) \Delta t
8679f9097b Jeff*0209 \nonumber \\
0bad585a21 Navi*0210 E_{\rm bot} &= & (\frac{4K_i(T_2-T_f)}{h_i}-F_b) \Delta t
8679f9097b Jeff*0211 \nonumber\end{aligned}
0212
0213 where :math:`F_b` is the heat flux at the ice bottom due to the sea
0bad585a21 Navi*0214 surface temperature variations from freezing. If :math:`T_{\rm SST}` is
0215 above freezing, :math:`F_b=c_{\rm sw} \rho_{\rm sw}
0216 \gamma (T_{\rm SST}-T_f)u^{*}`, :math:`\gamma` is the heat transfer
8679f9097b Jeff*0217 coefficient and :math:`u^{*}=QQ` is frictional velocity between ice and
0bad585a21 Navi*0218 water. If :math:`T_{\rm SST}` is below freezing,
0219 :math:`F_b=(T_f - T_{\rm SST})c_f \rho_f \Delta z /\Delta t` and set
0220 :math:`T_{\rm SST}` to :math:`T_f`. We also include the energy from lower
8679f9097b Jeff*0221 layers that drop below freezing, and set those layers to :math:`T_f`.
0222
0bad585a21 Navi*0223 If :math:`E_{\rm top}>0` we melt snow from the surface, if all the snow is
8679f9097b Jeff*0224 melted and there is energy left, we melt the ice. If the ice is all gone
0225 and there is still energy left, we apply the left over energy to heating
0226 the ocean model upper layer (See Winton, 1999, equations 27-29).
0bad585a21 Navi*0227 Similarly if :math:`E_{\rm bot}>0` we melt ice from the bottom. If all the
8679f9097b Jeff*0228 ice is melted, the snow is melted (with energy from the ocean model
0bad585a21 Navi*0229 upper layer if necessary). If :math:`E_{\rm bot}<0` we grow ice at the
8679f9097b Jeff*0230 bottom
0231
0bad585a21 Navi*0232 .. math:: \Delta h_i = \frac{-E_{\rm bot}}{(q_{\rm bot} \rho_i)}
8679f9097b Jeff*0233
0bad585a21 Navi*0234 where :math:`q_{\rm bot}=-c_{i} T_f + L_i` is the enthalpy of the new ice,
8679f9097b Jeff*0235 The enthalpy of the second ice layer, :math:`q_2` needs to be modified:
0236
0237 .. math::
0238
0bad585a21 Navi*0239 q_2 = \frac{ \hat{h_i}/2 \hat{q_2} + \Delta h_i q_{\rm bot} }
8679f9097b Jeff*0240 {\hat{h_i}/{2}+\Delta h_i}
0241
0242 If there is a ice layer and the overlying air temperature is below
0243 0\ :math:`^o`\ C then any precipitation, :math:`P` joins the snow layer:
0244
0245 .. math:: \Delta h_s = -P \frac{\rho_f}{\rho_s} \Delta t,
0246
0247 :math:`\rho_f` and :math:`\rho_s` are the fresh water and snow
0248 densities. Any evaporation, similarly, removes snow or ice from the
0249 surface. We also calculate the snow age here, in case it is needed for
0250 the surface albedo calculation (see *srf\_albedo.F* below).
0251
0252 For practical reasons we limit the ice growth to **hilim** and snow is
0253 limited to **hslim**. We converts any ice and/or snow above these limits
0254 back to water, maintaining the salt balance. Note however, that heat is
0255 not conserved in this conversion; sea surface temperatures below the ice
0256 are not recalculated.
0257
0258 If the snow/ice interface is below the waterline, snow is converted to
0259 ice (see Winton, 1999, equations 35 and 36). The subroutine
0260 *new\_layers\_winton.F*, described below, repartitions the ice into
0261 equal thickness layers while conserving energy.
0262
0263 The subroutine *ice\_therm.F* now calculates the heat and fresh water
0264 fluxes affecting the ocean model surface layer. The heat flux:
0265
0bad585a21 Navi*0266 .. math:: q_{\rm net}= {\bf fswocn} - F_{b} - \frac{{\bf esurp}}{\Delta t}
8679f9097b Jeff*0267
0268 is composed of the shortwave flux that has passed through the ice layer
0269 and is absorbed by the water, **fswocn**\ :math:`=QQ`, the ocean flux to
0270 the ice :math:`F_b`, and the surplus energy left over from the melting,
0271 **esurp**. The fresh water flux is determined from the amount of fresh
0272 water and salt in the ice/snow system before and after the timestep.
0273
0274
0275 (There is a provision for fractional ice: If ice height is above
0276 **hihig** then all energy from freezing at sea surface is used only in
0277 the open water aparts of the cell (ie. :math:`F_b` will only have the
0278 conduction term). The melt energy is partitioned by **frac\_energy**
0279 between melting ice height and ice extent. However, once ice height
0280 drops below **himon0** then all energy melts ice extent.)
0281
0282
0283 subroutine SFC_ALBEDO
0284 #####################
0285
0286 The routine *ice_therm.F* calls this routine to determine the surface
0287 albedo. There are two calculations provided here:
0288
0289 #. from LANL CICE model
0290
0291 .. math::
0292
0bad585a21 Navi*0293 \alpha = f_s \alpha_s + (1-f_s) (\alpha_{i_{\min}}
0294 + (\alpha_{i_{\max}}- \alpha_{i_{\min}}) (1-e^{-h_i/h_{\alpha}}))
8679f9097b Jeff*0295
0296 where :math:`f_s` is 1 if there is snow, 0 if not; the snow albedo,
0297 :math:`\alpha_s` has two values depending on whether :math:`T_s<0` or
0bad585a21 Navi*0298 not; :math:`\alpha_{i_{\min}}` and :math:`\alpha_{i_{\max}}` are ice
8679f9097b Jeff*0299 albedos for thin melting ice, and thick bare ice respectively, and
0300 :math:`h_{\alpha}` is a scale height.
0301
0302
0303 #. From GISS model (Hansen et al 1983)
0304
0305 .. math:: \alpha = \alpha_i e^{-h_s/h_a} + \alpha_s (1-e^{-h_s/h_a})
0306
0307 where :math:`\alpha_i` is a constant albedo for bare ice, :math:`h_a` is
0308 a scale height and :math:`\alpha_s` is a variable snow albedo.
0309
0310 .. math:: \alpha_s = \alpha_1 + \alpha_2 e^{-\lambda_a a_s}
0311
0312 where :math:`\alpha_1` is a constant, :math:`\alpha_2` depends on
0313 :math:`T_s`, :math:`a_s` is the snow age, and :math:`\lambda_a` is a
0314 scale frequency. The snow age is calculated in *ice\_therm.F* and is
0315 given in equation 41 in Hansen et al (1983).
0316
0317
0318 subroutine NEW_LAYERS_WINTON
0319 ############################
0320
0321 The subroutine *new\_layers\_winton.F* repartitions the ice into equal
0322 thickness layers while conserving energy. We pass to this subroutine,
0323 the ice layer enthalpies after melting/growth and the new height of the
0324 ice layers. The ending layer height should be half the sum of the new
0325 ice heights from *ice\_therm.F*. The enthalpies of the ice layers are
0326 adjusted accordingly to maintain total energy in the ice model. If layer
0327 2 height is greater than layer 1 height then layer 2 gives ice to layer
0328 1 and:
0329
0330 .. math:: q_1=f_1 \hat{q_1} + (1-f1) \hat{q_2}
0331
0332 where :math:`f_1` is the fraction of the new to old upper layer heights.
0333 :math:`T_1` will therefore also have changed. Similarly for when ice
0334 layer height 2 is less than layer 1 height, except here we need to to be
0335 careful that the new :math:`T_2` does not fall below the melting
0336 temperature.
0337
0338
0339 Initializing subroutines
0340 ########################
0341
0342 *ice_init.F*: Set ice variables to zero, or reads in pickup information from
0343 **pickup.ic** (which was written out in *checkpoint.F*)
0344
0345 *ice_readparms.F*: Reads **data.ice**
0346
0347
0348 Diagnostic subroutines
0349 ######################
0350
0351 *ice_ave.F*: Keeps track of means of the ice variables
0352
0353 *ice_diags.F*: Finds averages and writes out diagnostics
0354
0355
0356 Common Blocks
0357 #############
0358
0359 *ICE.h*: Ice Varibles, also **relaxlat** and **startIceModel**
0360
0361 *ICE_DIAGS.h*: matrices for diagnostics: averages of fields from *ice\_diags.F*
0362
0363 *BULKF_ICE_CONSTANTS.h* (in **BULKF** package): all the parameters need by the ice model
0364
0365
0366 Input file DATA.ICE
0367 ###################
0368
0369 Here we need to set **StartIceModel**: which is 1 if the model starts
0370 from no ice; and 0 if there is a pickup file with the ice matrices
0371 (**pickup.ic**) which is read in *ice\_init.F* and written out in
0372 *checkpoint.F*. The parameter **relaxlat** defines the latitude poleward
0373 of which there is no relaxing of surface :math:`T` or :math:`S` to
0374 observations. This avoids the relaxation forcing the ice model at these
0375 high latitudes.
0376
0377 (Note: **hicemin** is set to 0 here. If the provision for allowing grid
0378 cells to have both open water and seaice is ever implemented, this would
0379 be greater than 0)
0380
0381 Important Notes
0382 +++++++++++++++
0383
0384 #. heat fluxes have different signs in the ocean and ice models.
0385
0386 #. **StartIceModel** must be changed in **data.ice**: 1 (if starting from no ice), 0 (if using pickup.ic file).
0387
0388
9ce7d74115 Jeff*0389 .. _thsice_diagnostics:
0390
8679f9097b Jeff*0391 THSICE Diagnostics
0392 ++++++++++++++++++
0393
0394 ::
0395
0396
0397 ------------------------------------------------------------------------
0398 <-Name->|Levs|<-parsing code->|<-- Units -->|<- Tile (max=80c)
0399 ------------------------------------------------------------------------
0400 SI_Fract| 1 |SM P M1 |0-1 |Sea-Ice fraction [0-1]
0401 SI_Thick| 1 |SM PC197M1 |m |Sea-Ice thickness (area weighted average)
0402 SI_SnowH| 1 |SM PC197M1 |m |Snow thickness over Sea-Ice (area weighted)
0403 SI_Tsrf | 1 |SM C197M1 |degC |Surface Temperature over Sea-Ice (area weighted)
0404 SI_Tice1| 1 |SM C197M1 |degC |Sea-Ice Temperature, 1srt layer (area weighted)
0405 SI_Tice2| 1 |SM C197M1 |degC |Sea-Ice Temperature, 2nd layer (area weighted)
0406 SI_Qice1| 1 |SM C198M1 |J/kg |Sea-Ice enthalpy, 1srt layer (mass weighted)
0407 SI_Qice2| 1 |SM C198M1 |J/kg |Sea-Ice enthalpy, 2nd layer (mass weighted)
0408 SIalbedo| 1 |SM PC197M1 |0-1 |Sea-Ice Albedo [0-1] (area weighted average)
0409 SIsnwAge| 1 |SM P M1 |s |snow age over Sea-Ice
0410 SIsnwPrc| 1 |SM C197M1 |kg/m^2/s |snow precip. (+=dw) over Sea-Ice (area weighted)
0411 SIflxAtm| 1 |SM M1 |W/m^2 |net heat flux from the Atmosphere (+=dw)
0412 SIfrwAtm| 1 |SM M1 |kg/m^2/s |fresh-water flux to the Atmosphere (+=up)
0413 SIflx2oc| 1 |SM M1 |W/m^2 |heat flux out of the ocean (+=up)
0414 SIfrw2oc| 1 |SM M1 |m/s |fresh-water flux out of the ocean (+=up)
ba0b047096 Mart*0415 SIsaltFx| 1 |SM M1 |(g/kg).kg/m^2 |salt flux out of the ocean (+=up)
8679f9097b Jeff*0416 SItOcMxL| 1 |SM M1 |degC |ocean mixed layer temperature
ba0b047096 Mart*0417 SIsOcMxL| 1 |SM P M1 |g/kg |ocean mixed layer salinity
8679f9097b Jeff*0418
0419
0420 References
0421 ++++++++++
0422
0423 Bitz, C.M. and W.H. Lipscombe, 1999: An Energy-Conserving Thermodynamic Model of Sea Ice. *Journal of Geophysical Research*, 104, 15,669 – 15,677.
0424
0425 Hansen, J., G. Russell, D. Rind, P. Stone, A. Lacis, S. Lebedeff, R. Ruedy and L.Travis, 1983: Efficient Three-Dimensional Global Models for Climate Studies: Models I and II. *Monthly Weather Review*, 111, 609 – 662.
0426
0427 Hunke, E.C and W.H. Lipscomb, circa 2001: CICE: the Los Alamos Sea Ice Model Documentation and Software User’s Manual. LACC-98-16v.2. (note: this documentation is no longer available as CICE has progressed to a very different version 3)
0428
0429 Winton, M, 2000: A reformulated Three-layer Sea Ice Model. *Journal of Atmospheric and Ocean Technology*, 17, 525 – 531.
0430
0431
0432 Experiments and tutorials that use thsice
0433 +++++++++++++++++++++++++++++++++++++++++
0434
0435 - Global atmosphere experiment in aim.5l\_cs verification directory,
0436 input from input.thsice directory.
0437
0438 - Global ocean experiment in global\_ocean.cs32x15 verification
0439 directory, input from input.thsice directory.
0440
0441