|
PISM, A Parallel Ice Sheet Model stable 0.4.1779
|
A PDD implementation which computes the local mass balance based on an expectation integral. More...
#include <localMassBalance.hh>

Public Member Functions | |
| PDDMassBalance (const NCConfigVariable &myconfig) | |
| virtual | ~PDDMassBalance () |
| virtual PetscErrorCode | getNForTemperatureSeries (PetscScalar t, PetscScalar dt, PetscInt &N) |
| virtual PetscScalar | getPDDSumFromTemperatureTimeSeries (PetscScalar pddStdDev, PetscScalar pddThresholdTemp, PetscScalar t, PetscScalar dt_series, PetscScalar *T, PetscInt N) |
| Compute the expected number of positive degree days from the input temperature time-series. | |
| virtual PetscScalar | getSnowFromPrecipAndTemperatureTimeSeries (PetscScalar precip_rate, PetscScalar t, PetscScalar dt_series, PetscScalar *T, PetscInt N) |
| virtual PetscErrorCode | getMassFluxesFromPDDs (const DegreeDayFactors &ddf, PetscScalar dt, PetscScalar pddsum, PetscScalar snow, PetscScalar &accumulation_rate, PetscScalar &melt_rate, PetscScalar &runoff_rate, PetscScalar &smb_rate) |
| Compute the surface mass balance at a location from the number of positive degree days and the accumulation amount in a time interval. | |
Protected Member Functions | |
| PetscScalar | CalovGreveIntegrand (PetscScalar sigma, PetscScalar TacC) |
| Compute the integrand in integral (6) in [CalovGreve05]. | |
Protected Attributes | |
| bool | precip_as_snow |
| interpret all the precipitation as snow (no rain) | |
| PetscScalar | Tmin |
| the temperature below which all precipitation is snow | |
| PetscScalar | Tmax |
| the temperature above which all precipitation is rain | |
A PDD implementation which computes the local mass balance based on an expectation integral.
The expected number of positive degree days is computed by an integral in CalovGreve05.
Uses degree day factors which are location-independent.
Definition at line 116 of file localMassBalance.hh.
| PDDMassBalance | ( | const NCConfigVariable & | myconfig | ) |
Definition at line 28 of file localMassBalance.cc.
References LocalMassBalance::config, precip_as_snow, Tmax, and Tmin.
| virtual ~PDDMassBalance | ( | ) | [inline, virtual] |
Definition at line 120 of file localMassBalance.hh.
| PetscScalar CalovGreveIntegrand | ( | PetscScalar | sigma, |
| PetscScalar | TacC | ||
| ) | [protected] |
Compute the integrand in integral (6) in [CalovGreve05].
The integral is
This procedure computes the quantity in square brackets. The value
in the above integral is in degrees C. Here we think of the argument TacC as temperature in Celsius, but really it is the temperature above a threshold at which it is "positive".
This integral is used for the expected number of positive degree days, unless the user selects a random PDD implementation with -pdd_rand or -pdd_rand_repeatable. The user can choose
by option -pdd_std_dev. Note that the integral is over a time interval of length dt instead of a whole year as stated in CalovGreve05 .
Definition at line 69 of file localMassBalance.cc.
References pi.
Referenced by getPDDSumFromTemperatureTimeSeries().
| PetscErrorCode getMassFluxesFromPDDs | ( | const DegreeDayFactors & | ddf, |
| PetscScalar | dt, | ||
| PetscScalar | pddsum, | ||
| PetscScalar | accumulation, | ||
| PetscScalar & | accumulation_rate, | ||
| PetscScalar & | melt_rate, | ||
| PetscScalar & | runoff_rate, | ||
| PetscScalar & | smb_rate | ||
| ) | [virtual] |
Compute the surface mass balance at a location from the number of positive degree days and the accumulation amount in a time interval.
Several mass fluxes, including the final surface mass balance, are computed as ice-equivalent meters per second from the number of positive degree days and an accumulation amount in the time interval.
This is a PDD scheme. The input parameter ddf.snow is a rate of melting per positive degree day for snow. If the number of PDDs, which describes an energy available for melt, exceeds those needed to melt all of the accumulation (snow, using ddf.snow) then:
ddf.refreezeFrac, and In either case, ice melts at a constant rate per positive degree day, controlled by parameter ddf.ice.
In the weird case where the accumulation amount is negative, it is interpreted as an (ice-equivalent) direct ablation rate. Accumulation amounts are generally positive everywhere on ice sheets, however.
The scheme here came from EISMINT-Greenland [RitzEISMINT], but is influenced by R. Hock (personal communication).
The input argument dt is in seconds. The input argument pddsum is in K day. These strange units work because the degree day factors in ddf have their usual glaciological units, namely m K-1 day-1, and we only multiply degree day factors times amounts of snow, not rates.
There are four outputs
accumulation_rate, melt_rate, runoff_rate, smb_rate.All are rates and all are in ice-equivalent m s-1. Note "accumulation" is the part of precipitation which is not rain, so, if needed, the modeled rain rate is rain_rate = precip_rate - accum_rate. Again, "runoff" is meltwater runoff and does not include rain.
In normal areas where accumulation > 0, the output quantities satisfy
smb_rate = accumulation_rate - runoff_ratein all cases.
Implements LocalMassBalance.
Definition at line 185 of file localMassBalance.cc.
References DegreeDayFactors::ice, DegreeDayFactors::refreezeFrac, and DegreeDayFactors::snow.
| PetscErrorCode getNForTemperatureSeries | ( | PetscScalar | t, |
| PetscScalar | dt, | ||
| PetscInt & | N | ||
| ) | [virtual] |
Because Calov-Greve method uses Simpson's rule to do integral, we choose the returned number of times N to be odd.
Implements LocalMassBalance.
Reimplemented in PDDrandMassBalance.
Definition at line 39 of file localMassBalance.cc.
References LocalMassBalance::config, and secpera.
| PetscScalar getPDDSumFromTemperatureTimeSeries | ( | PetscScalar | pddStdDev, |
| PetscScalar | pddThresholdTemp, | ||
| PetscScalar | t, | ||
| PetscScalar | dt_series, | ||
| PetscScalar * | T, | ||
| PetscInt | N | ||
| ) | [virtual] |
Compute the expected number of positive degree days from the input temperature time-series.
Implements LocalMassBalance.
Reimplemented in PDDrandMassBalance.
Definition at line 77 of file localMassBalance.cc.
References CalovGreveIntegrand().
| PetscScalar getSnowFromPrecipAndTemperatureTimeSeries | ( | PetscScalar | precip_rate, |
| PetscScalar | t, | ||
| PetscScalar | dt_series, | ||
| PetscScalar * | T, | ||
| PetscInt | N | ||
| ) | [virtual] |
/brief Report the amount of snow fallen in the given time period, according to the temperature time-series; remove the rain.
Use the temperature time-series to determine whether the precipitation is snow or rain. Rain is removed entirely from the surface mass balance, and will not be included in the computed runoff, which is meltwater runoff. There is an allowed linear transition for Tmin below which all precipitation is interpreted as snow, and Tmax above which all precipitation is rain (see, e.g. Hock2005b).
Implements LocalMassBalance.
Definition at line 110 of file localMassBalance.cc.
References precip_as_snow, Tmax, and Tmin.
bool precip_as_snow [protected] |
interpret all the precipitation as snow (no rain)
Definition at line 144 of file localMassBalance.hh.
Referenced by getSnowFromPrecipAndTemperatureTimeSeries(), and PDDMassBalance().
PetscScalar Tmax [protected] |
the temperature above which all precipitation is rain
Definition at line 145 of file localMassBalance.hh.
Referenced by getSnowFromPrecipAndTemperatureTimeSeries(), and PDDMassBalance().
PetscScalar Tmin [protected] |
the temperature below which all precipitation is snow
Definition at line 145 of file localMassBalance.hh.
Referenced by getSnowFromPrecipAndTemperatureTimeSeries(), and PDDMassBalance().
1.7.3