tsurface.rst - pism - [fork] customized build of PISM, the parallel ice sheet model (tillflux branch)
(HTM) git clone git://src.adamsgaard.dk/pism
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
tsurface.rst (21173B)
---
1 .. include:: shortcuts.txt
2
3 Surface mass and energy process model components
4 ------------------------------------------------
5
6 .. contents::
7
8 .. _sec-surface-simple:
9
10 The "invisible" model
11 +++++++++++++++++++++
12
13 :|options|: ``-surface simple``
14 :|variables|: none
15 :|implementation|: ``pism::surface::Simple``
16
17 This is the simplest "surface model" available in PISM, enabled using ``-surface simple``.
18 Its job is to re-interpret precipitation as climatic mass balance, and to re-interpret
19 mean annual near-surface (2m) air temperature as the temperature of the ice at the depth
20 at which firn processes cease to change the temperature of the ice. (I.e. the temperature
21 *below* the firn.) This implies that there is no melt. Though primitive, this model
22 component may be desired in cold environments (e.g. East Antarctic ice sheet) in which
23 melt is negligible and heat from firn processes is ignored.
24
25 .. _sec-surface-given:
26
27 Reading top-surface boundary conditions from a file
28 +++++++++++++++++++++++++++++++++++++++++++++++++++
29
30 :|options|: ``-surface given``
31 :|variables|: :var:`ice_surface_temp`, :var:`climatic_mass_balance` |flux|
32 :|implementation|: ``pism::surface::Given``
33
34 .. note::
35
36 This is the default choice.
37
38 This model component was created to force PISM with sampled (possibly periodic) climate
39 data by reading ice upper surface boundary conditions from a file. These fields are
40 provided directly to the ice dynamics code (see :ref:`sec-climate-inputs` for details).
41
42 PISM will stop if variables :var:`ice_surface_temp` (ice temperature at the ice surface
43 but below firn) and :var:`climatic_mass_balance` (top surface mass flux into the ice) are
44 not present in the input file.
45
46 Command-line options:
47
48 - :opt:`-surface_given_file` prescribes an input file
49 - :opt:`-surface_given_period` (*years*) makes PISM interpret data in
50 ``-surface_given_file`` as periodic. See :ref:`sec-periodic-forcing`.
51 - :opt:`-surface_given_reference_year` sets the reference model year; see
52 :ref:`sec-periodic-forcing`.
53
54 A file ``foo.nc`` used with ``-surface given -surface_given_file foo.nc`` should contain
55 several records. If this file contains one record (i.e. fields corresponding to one time
56 value only), provided forcing data is interpreted as time-independent. The :var:`time`
57 variable should describe what model time these records correspond to; see
58 :ref:`sec-model-time` for details.
59
60 For example, to use monthly records and period of 1 year, create a file (say,
61 "``foo.nc``") with 12 records. The :var:`time` variable may contain `0, 1, 2, 3,
62 \dots, 11` and have the units of "month" [#]_. Then, run
63
64 .. code-block:: none
65
66 pismr -surface given -surface_given_file foo.nc -surface_given_period 1
67
68 .. note::
69
70 - This surface model *ignores* the atmosphere model selection made using the option
71 :opt:`-atmosphere`.
72 - PISM can handle files with virtually any number of records: it will read and store in
73 memory at most :config:`input.forcing.buffer_size` records at any given time
74 (default: 60, or 5 years' worth of monthly fields).
75 - when preparing a file for use with this model, it is best to use the ``t,y,x``
76 variable storage order: files using this order can be read in faster than ones using
77 the ``t,x,y`` order, for reasons :ref:`explained in the User's Manual
78 <sec-pism-io-performance>`.
79
80 To change the storage order in a NetCDF file, use ``ncpdq``:
81
82 .. code-block:: none
83
84 ncpdq -a t,y,x input.nc output.nc
85
86 will copy data from ``input.nc`` into ``output.nc``, changing the storage order to
87 ``t,y,x`` at the same time.
88
89 .. _sec-surface-elevation:
90
91 Elevation-dependent temperature and mass balance
92 ++++++++++++++++++++++++++++++++++++++++++++++++
93
94 :|options|: ``-surface elevation``
95 :|variables|: none
96 :|implementation|: ``pism::surface::Elevation``
97
98 .. include:: ../math-definitions.txt
99
100 This surface model component parameterizes the ice surface temperature `T_{h}` =
101 :var:`ice_surface_temp` and the mass balance `m` = :var:`climatic_mass_balance` as
102 *piecewise-linear* functions of surface elevation `h`.
103
104 The option :opt:`-ice_surface_temp` (*list of 4 numbers*) determines the surface
105 temperature using the 4 parameters `\T{min}`, `\T{max}`, `\h{min}`,
106 `\h{max}`. Let
107
108 .. math::
109
110 \diff{T}{h} = (\T{max} - \T{min}) / (\h{max} - \h{min})
111
112 be the temperature gradient. Then
113
114 .. math::
115
116 T(x,y) =
117 \begin{cases}
118 \T{min}, & h(x,y) \le \h{min}, \\
119 \T{min} + \diff{T}{h} \, (h(x,y) - \h{min}), & \h{min} < h(x,y) < \h{max}, \\
120 \T{max}, & \h{max} \le h(x,y).
121 \end{cases}
122
123 The option :opt:`-climatic_mass_balance` (*list of 5 numbers*) determines the surface mass
124 balance using the 5 parameters `\m{min}`, `\m{max}`, `\h{min}`,
125 `\h{ELA}`, `\h{max}`. Let
126
127 .. math::
128
129 \diff{\m{abl}}{h} = -\m{min} / (\h{max} - \h{min})
130
131 and
132
133 .. math::
134
135 \diff{\m{acl}}{h} = \m{max} / (\h{max} - \h{min})
136
137 be the mass balance gradient in the ablation and in the accumulation area, respectively.
138 Then
139
140 .. math::
141
142 m(x,y) =
143 \begin{cases}
144 \m{min}, & h(x,y) \le \h{min}, \\
145 \diff{\m{abl}}{h} \, (h(x,y) - h_{\text{ELA}}), & \h{min} < h(x,y) < \h{max}, \\
146 \diff{\m{acl}}{h} \, (h(x,y) - h_{\text{ELA}}), & \h{min} < h(x,y) < \h{max}, \\
147 \m{max}, & \h{max} \le h(x,y).
148 \end{cases}
149
150 The option :opt:`-climatic_mass_balance_limits` (*list of 2 numbers*) limits the mass
151 balance below `\h{min}` to `\ms{min}` and above `\h{max}` to
152 `\ms{max}`, thus
153
154 .. math::
155
156 m(x,y) =
157 \begin{cases}
158 m^{*}_{\text{min}}, & h(x,y) \le \h{min}, \\
159 \diff{\m{abl}}{h} \, (h(x,y) - h_{\text{ELA}}), & \h{min} < h(x,y) < \h{max}, \\
160 \diff{\m{acl}}{h} \, (h(x,y) - h_{\text{ELA}}), & \h{min} < h(x,y) < \h{max}, \\
161 m^{*}_{\text{max}}, & \h{max} \le h(x,y).
162 \end{cases}
163
164 Note: this surface model *ignores* the atmosphere model selection made using the
165 :opt:`-atmosphere` option.
166
167 .. _sec-surface-pdd:
168
169 Temperature-index scheme
170 ++++++++++++++++++++++++
171
172 :|options|: ``-surface pdd``
173 :|variables|: :var:`air_temp_sd`, :var:`snow_depth`
174 :|implementation|: ``pism::surface::TemperatureIndex``
175
176 The default PDD model used by PISM, turned on by option :opt:`-surface pdd`, is based on
177 :cite:`CalovGreve05` and EISMINT-Greenland intercomparison (see :cite:`RitzEISMINT`).
178
179 Our model computes the solid (snow) precipitation rate using the air temperature threshold
180 with a linear transition. All precipitation during periods with air temperatures above
181 :config:`surface.pdd.air_temp_all_precip_as_rain` (default of `2^\circ C`) is interpreted as
182 rain; all precipitation during periods with air temperatures below
183 :config:`surface.pdd.air_temp_all_precip_as_snow` (default of `0^\circ C`) is interpreted as
184 snow.
185
186 For long-term simulations, a PDD model generally uses an idealized seasonal temperature
187 cycle. "White noise" is added to this cycle to simulate additional daily variability
188 associated to the vagaries of weather. This additional random variation is quite
189 significant, as the seasonal cycle may never reach the melting point but that point may be
190 reached with some probability, in the presence of the daily variability, and thus melt may
191 occur. Concretely, a normally-distributed, mean zero random temperature increment is added
192 to the seasonal cycle. There is no assumed spatial correlation of daily variability. The
193 standard deviation of the daily variability is controlled by command-line options:
194
195 - :opt:`-pdd_sd_file`, which prescribes an input file containing :var:`air_temp_sd`
196 - :opt:`-pdd_sd_period` (*years*), which interprets its data as periodic; see
197 :ref:`sec-periodic-forcing`.
198 - :opt:`-pdd_sd_reference_year`, which sets the reference model year; see
199 :ref:`sec-periodic-forcing`.
200
201 A file ``foo.nc`` used with ``-surface pdd -pdd_sd_file foo.nc`` should contain standard
202 deviation of near-surface air temperature in variable :var:`air_temp_sd`, and the
203 corresponding time coordinate in variable :var:`time`. If ``-pdd_sd_file`` is not set,
204 PISM uses a constant value for standard deviation, which is set by the
205 configuration parameter :config:`surface.pdd.std_dev`. The default value is `5.0` degrees
206 :cite:`RitzEISMINT`. However, this approach is not recommended as it induces significant
207 errors in modeled surface mass balance in both ice-covered and ice-free regions
208 :cite:`RogozhinaRau2014`, :cite:`Seguinot2013`.
209
210 Over ice-covered grid cells, daily variability can also be parameterized as a linear
211 function of near-surface air temperature `\sigma = a \cdot T + b` using the
212 :config:`surface.pdd.std_dev_use_param` configuration flag, and the corresponding
213 parameters :config:`surface.pdd.std_dev_param_a` and
214 :config:`surface.pdd.std_dev_param_b`. This parametrization replaces prescribed standard
215 deviation values over glacierized grid cells as defined by the :var:`mask` variable (see
216 :config:`geometry.ice_free_thickness_standard`). Default values for the slope `a` and
217 intercept `b` were derived from the ERA-40 reanalysis over the Greenland ice sheet
218 :cite:`SeguinotRogozhina2014`.
219
220 The number of positive degree days is computed as the magnitude of the temperature
221 excursion above `0\!\phantom{|}^\circ \text{C}` multiplied by the duration (in days)
222 when it is above zero.
223
224 In PISM there are two methods for computing the number of positive degree days. The first
225 computes only the expected value, by the method described in :cite:`CalovGreve05`. This is
226 the default when a PDD is chosen (i.e. option :opt:`-surface pdd`). The second is a Monte
227 Carlo simulation of the white noise itself, chosen by adding the option :opt:`-pdd_method
228 random_process`. This Monte Carlo simulation adds the same daily variation at every point,
229 though the seasonal cycle is (generally) location dependent. If repeatable randomness is
230 desired use :opt:`-pdd_method repeatable_random_process` instead.
231
232 .. figure:: figures/pdd-model-flowchart.png
233 :name: fig-pdd-model
234
235 PISM's positive degree day model. `F_s` and `F_i` are PDD factors for snow
236 and ice, respectively; `\theta_{\text{refreeze}}` is the refreeze fraction.
237
238 By default, the computation summarized in :numref:`fig-pdd-model` is performed every week.
239 (This frequency is controlled by the parameter :config:`surface.pdd.max_evals_per_year`.)
240 To compute mass balance during each week-long time-step, PISM keeps track of the current
241 snow depth (using units of ice-equivalent thickness). This is necessary to determine if
242 melt should be computed using the degree day factor for snow
243 (:config:`surface.pdd.factor_snow`) or the corresponding factor for ice
244 (:config:`surface.pdd.factor_ice`).
245
246 A fraction of the melt controlled by the configuration parameter :config:`surface.pdd.refreeze`
247 (`\theta_{\text{refreeze}}` in :numref:`fig-pdd-model`, default: `0.6`)
248 refreezes. The user can select whether melted ice should be allowed to refreeze using the
249 configuration flag :config:`surface.pdd.refreeze_ice_melt`.
250
251 Since PISM does not have a principled firn model, the snow depth is set to zero at the
252 beginning of the balance year. See :config:`surface.pdd.balance_year_start_day`. Default is
253 `274`, corresponding to October 1\ :superscript:`st`.
254
255 Our PDD implementation is meant to be used with an atmosphere model implementing a cosine
256 yearly cycle such as ``searise_greenland`` (section
257 :ref:`sec-atmosphere-searise-greenland`), but it is not restricted to parameterizations
258 like these.
259
260 This code also implements latitude- and mean July temperature dependent ice and snow
261 factors using formulas (6) and (7) in :cite:`Faustoetal2009`; set :opt:`-pdd_fausto` to enable.
262 The default standard deviation of the daily variability (option :opt:`-pdd_std_dev`) is
263 2.53 degrees when :opt:`-pdd_fausto` is set :cite:`Faustoetal2009`. See also configuration
264 parameters with the ``surface.pdd.fausto`` prefix.
265
266 Note that when used with periodic climate data (air temperature and precipitation) that is
267 read from a file (see section :ref:`sec-atmosphere-given`), use of
268 :opt:`-timestep_hit_multiplies X` is recommended. (Here `X` is the length of the climate
269 data period in years.)
270
271 This model provides the following scalar:
272
273 - :var:`surface_accumulation_rate`
274 - :var:`surface_melt_rate`
275 - :var:`surface_runoff_rate`
276
277 and these 2D diagnostic quantities (averaged over reporting intervals; positive flux
278 corresponds to ice gain):
279
280 - :var:`surface_accumulation_flux`
281 - :var:`surface_melt_flux`
282 - :var:`surface_runoff_flux`
283
284 This makes it easy to compare the surface mass balance computed by the model to its
285 individual components:
286
287 .. code::
288
289 SMB = surface_accumulation_flux - surface_runoff_flux
290
291 .. _sec-surface-pik:
292
293 PIK
294 +++
295
296 :|options|: ``-surface pik``
297 :|variables|: :var:`climatic_mass_balance` |flux|,
298 :var:`lat` (latitude), (degrees north)
299 :|implementation|: ``pism::surface::PIK``
300
301 This surface model component implements the setup used in :cite:`Martinetal2011`. The
302 :var:`climatic_mass_balance` is read from an input (``-i``) file; the ice surface
303 temperature is computed as a function of latitude (variable :var:`lat`) and surface
304 elevation (dynamically updated by PISM). See equation (1) in :cite:`Martinetal2011`.
305
306 .. _sec-surface-delta-t:
307
308 Scalar temperature offsets
309 ++++++++++++++++++++++++++
310
311 :|options|: ``-surface ...,delta_T``
312 :|variables|: :var:`delta_T`
313 :|implementation|: ``pism::surface::Delta_T``
314
315 Command-line options:
316
317 - :opt:`-surface_delta_T_file` sets the name of the file PISM will read :var:`delta_T`
318 from.
319 - :opt:`-surface_delta_T_period` (*years*) sets the period of the forcing data (section
320 :ref:`sec-periodic-forcing`)
321 - :opt:`-surface_delta_T_reference_year` sets the reference year (section
322 :ref:`sec-periodic-forcing`).
323
324 The time-dependent scalar offsets :var:`delta_T` are added to :var:`ice_surface_temp`
325 computed by a surface model.
326
327 Please make sure that :var:`delta_T` has the units of "``Kelvin``".
328
329 This modifier is identical to the corresponding atmosphere modifier, but applies offsets
330 at a different stage in the computation of top-surface boundary conditions needed by the
331 ice dynamics core.
332
333 .. _sec-surface-elevation-change:
334
335 Adjustments using modeled change in surface elevation
336 +++++++++++++++++++++++++++++++++++++++++++++++++++++
337
338 :|options|: ``-surface ...,elevation_change``
339 :|variables|: :var:`surface_altitude` (CF standard name),
340 :|implementation|: ``pism::surface::LapseRates``
341
342 The ``elevation_change`` modifier adjusts ice-surface temperature and surface mass balance
343 using modeled changes in surface elevation relative to a reference elevation read from a
344 file.
345
346 The surface temperature is modified using an elevation lapse rate
347 `\gamma_T =` :config:`surface.elevation_change.temperature_lapse_rate`. Here
348
349 .. math::
350 \gamma_T = -\frac{dT}{dz}.
351
352 Two methods of adjusting the SMB are available:
353
354 - Scaling using an exponential factor
355
356 .. math::
357
358 \mathrm{SMB} = \mathrm{SMB_{input}} \cdot \exp(C \cdot \Delta T),
359
360 where `C =` :config:`surface.elevation_change.smb.exp_factor` and `\Delta T` is the
361 temperature difference produced by applying
362 :config:`surface.elevation_change.temperature_lapse_rate`.
363
364 This mechanisms increases the SMB by `100(\exp(C) - 1)` percent for each degree of
365 temperature increase.
366
367 To use this method, set :opt:`-smb_adjustment scale`.
368
369 - Elevation lapse rate for the SMB
370
371 .. math::
372
373 \mathrm{SMB} = \mathrm{SMB_{input}} - \Delta h \cdot \gamma_M,
374
375 where `\gamma_M =` :config:`surface.elevation_change.smb.lapse_rate` and `\Delta h` is the
376 difference between modeled and reference surface elevations.
377
378 To use this method, set :opt:`-smb_adjustment shift`.
379
380 It uses the following options.
381
382 - :opt:`-temp_lapse_rate` gives the temperature lapse rate, in `K/km`. Note that we
383 use the following definition of the temperature lapse rate:
384 - :opt:`-smb_adjustment` chooses SMB lapse rate (``shift``) or SMB scaling (``scale``).
385 - :opt:`-smb_exp_factor` specifies the exponential factor used to scale the SMB
386 - :opt:`-smb_lapse_rate` gives the surface mass balance lapse rate, in `m/year/km`.
387 Here, `\gamma_M=-\frac{dM}{dz}`.
388 - :opt:`-surface_elevation_change_file` specifies the file containing the reference surface
389 elevation field (standard name: :var:`surface_altitude`). This file can contain several
390 surface elevation records to use lapse rate corrections relative to time-dependent
391 surface. If one record is provided, the reference surface elevation is assumed to be
392 time-independent.
393 - :opt:`-surface_elevation_change_period` gives the period, in model years, to use when
394 interpreting data in the file given with ``-surface_given_file``,
395 - :opt:`-surface_elevation_change_reference_year` takes the time `T` in model years. The
396 record for `t` years in ``-surface_given_file`` is interpreted as corresponding to
397 `t` years since `T`.
398
399 .. _sec-surface-forcing:
400
401 Mass flux adjustment
402 ++++++++++++++++++++
403
404 :|options|: ``-surface ...,forcing``
405 :|variables|: :var:`thk` (ice thickness), :var:`ftt_mask` (mask of zeros and ones; 1 where
406 surface mass flux is adjusted and 0 elsewhere)
407 :|implementation|: ``pism::surface::ForceThickness``
408
409 The ``forcing`` modifier implements a surface mass balance adjustment mechanism which
410 forces the thickness of grounded ice to a target thickness distribution at the end of the
411 run. The idea behind this mechanism is that spinup of ice sheet models frequently requires
412 the surface elevation to come close to measured values at the end of a run. A simpler
413 alternative to accomplish this, namely option ``-no_mass``, represents an unmodeled,
414 frequently large, violation of the mass continuity equation.
415
416 In more detail, let `H_{\text{tar}}` be the target thickness. Let `H` be the
417 time-dependent model thickness. The surface model component described here produces the
418 term `M` in the mass continuity equation:
419
420 .. math::
421
422 \frac{\partial H}{\partial t} = M - S - \nabla\cdot \mathbf{q}.
423
424 (Other details of this equation do not concern us here.) The ``forcing`` modifier causes
425 `M` to be adjusted by a multiple of the difference between the target thickness and
426 the current thickness,
427
428 .. math::
429
430 \Delta M = \alpha (H_{\text{tar}} - H)
431
432 where `\alpha>0`. We are adding mass (`\Delta M>0`) where
433 `H_{\text{tar}} > H` and ablating where `H_{\text{tar}} < H`.
434
435 Option :opt:`-force_to_thickness_file` identifies the file containing the target ice
436 thickness field ``thk`` and the mask ``ftt_mask``. A basic run modifying surface model
437 ``given`` would look like
438
439 .. code-block:: none
440
441 pismr -i foo.nc -surface given,forcing -force_to_thickness_file bar.nc
442
443 In this case ``foo.nc`` contains fields :var:`climatic_mass_balance` and
444 :var:`ice_surface_temp`, as normal for ``-surface given``, and ``bar.nc`` contains fields
445 :var:`thk` which will serve as the target thickness and :var:`ftt_mask` which defines the
446 map plane area where this adjustment is applied. Option :opt:`-force_to_thickness_alpha`
447 adjusts the value of `\alpha`, which has a default value specified in the
448 :ref:`sec-parameter-list`.
449
450 In addition to this one can specify a multiplicative factor `C` used in areas where
451 the target thickness field has less than
452 :opt:`-force_to_thickness_ice_free_thickness_threshold` meters of ice;
453 `\alpha_{\text{ice free}} = C \times \alpha`. Use the
454 :opt:`-force_to_thickness_ice_free_alpha_factor` option to set `C`.
455
456 .. _sec-surface-anomaly:
457
458 Using climate data anomalies
459 ++++++++++++++++++++++++++++
460
461 :|options|: :opt:`-surface ...,anomaly`
462 :|variables|: :var:`ice_surface_temp_anomaly`,
463 :var:`climatic_mass_balance_anomaly` |flux|
464 :|implementation|: ``pism::surface::Anomaly``
465
466 This modifier implements a spatially-variable version of ``-surface ...,delta_T`` which
467 also applies time-dependent climatic mass balance anomalies.
468
469 It takes the following options:
470
471 - :opt:`-surface_anomaly_file` specifies a file containing variables
472 :var:`ice_surface_temp_anomaly` and :var:`climatic_mass_balance_anomaly`.
473 - :opt:`-surface_anomaly_period` (years) specifies the period of the forcing data, in
474 model years; see :ref:`sec-periodic-forcing`
475 - :opt:`-surface_anomaly_reference_year` specifies the reference year; see
476 :ref:`sec-periodic-forcing`
477
478 See also to ``-atmosphere ...,anomaly`` (section :ref:`sec-atmosphere-anomaly`), which is
479 similar, but applies anomalies at the atmosphere level.
480
481 .. _sec-surface-cache:
482
483 The caching modifier
484 ++++++++++++++++++++
485
486 :|options|: ``-surface ...,cache``
487 :|implementation|: ``pism::surface::Cache``
488 :|seealso|: :ref:`sec-ocean-cache`
489
490 This modifier skips surface model updates, so that a surface model is called no more than
491 every :opt:`-surface.cache.update_interval` years. A time-step of `1` year is used every
492 time a surface model is updated.
493
494 This is useful in cases when inter-annual climate variability is important, but one year
495 differs little from the next. (Coarse-grid paleo-climate runs, for example.)
496
497 It takes the following options:
498
499 - :opt:`-surface.cache.update_interval` (*years*) Specifies the minimum interval between
500 updates. PISM may take longer time-steps if the adaptive scheme allows it, though.
501
502 .. rubric:: Footnotes
503
504 .. [#] You can use other time units supported by UDUNITS_.