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_.