PISM, A Parallel Ice Sheet Model stable 0.4.1779
Public Member Functions | Protected Attributes

LocalMassBalance Class Reference

Base class for a model which computes surface mass flux rate (ice thickness per time) from precipitation and temperature. More...

#include <localMassBalance.hh>

Inheritance diagram for LocalMassBalance:
Inheritance graph
[legend]

List of all members.

Public Member Functions

 LocalMassBalance (const NCConfigVariable &myconfig)
virtual ~LocalMassBalance ()
virtual PetscErrorCode init ()
virtual PetscErrorCode getNForTemperatureSeries (PetscScalar t, PetscScalar dt, PetscInt &N)=0
virtual PetscScalar getPDDSumFromTemperatureTimeSeries (PetscScalar pddStdDev, PetscScalar pddThresholdTemp, PetscScalar t, PetscScalar dt_series, PetscScalar *T, PetscInt N)=0
 Count positive degree days (PDDs). Returned value in units of K day.
virtual PetscScalar getSnowFromPrecipAndTemperatureTimeSeries (PetscScalar precip_rate, PetscScalar t, PetscScalar dt_series, PetscScalar *T, PetscInt N)=0
virtual PetscErrorCode getMassFluxesFromPDDs (const DegreeDayFactors &ddf, PetscScalar dt, PetscScalar pddsum, PetscScalar snow, PetscScalar &accumulation_rate, PetscScalar &melt_rate, PetscScalar &runoff_rate, PetscScalar &smb_rate)=0

Protected Attributes

const NCConfigVariable & config

Detailed Description

Base class for a model which computes surface mass flux rate (ice thickness per time) from precipitation and temperature.

This is a process model. At each spatial location, it uses a 1D array, with a time dimension, for the temperature used in melting snow or ice. At each spatial location it assumes the precipitation is time-independent.

This process model does not know its location on the ice sheet, but simply computes the surface mass balance from three quantities:

This model also uses degree day factors passed-in in DegreeDayFactors ddf, and the standard deviation pddStdDev. The latter is the standard deviation of the modeled temperature away from the input temperature time series which contains the part of location-dependent temperature cycle on the time interval.

Note:
  • Please avoid using config.get("...") and config.get_flag("...") calls inside those methods of this class which are called inside loops over spatial grids. Doing otherwise increases computational costs.
  • This base class should be more general. For instance, it could allow as input a time series for precipation rate.

Definition at line 65 of file localMassBalance.hh.


Constructor & Destructor Documentation

LocalMassBalance ( const NCConfigVariable &  myconfig) [inline]

Definition at line 67 of file localMassBalance.hh.

virtual ~LocalMassBalance ( ) [inline, virtual]

Definition at line 69 of file localMassBalance.hh.


Member Function Documentation

virtual PetscErrorCode getMassFluxesFromPDDs ( const DegreeDayFactors ddf,
PetscScalar  dt,
PetscScalar  pddsum,
PetscScalar  snow,
PetscScalar &  accumulation_rate,
PetscScalar &  melt_rate,
PetscScalar &  runoff_rate,
PetscScalar &  smb_rate 
) [pure virtual]

Input dt is in seconds. Input pddsum is in K day. Input snow is in ice-equivalent m. Returned mass fluxes, including accumulation_rate, melt_rate, runoff_rate, and smb (= surface mass balance), are in ice-equivalent thickness per time (m s-1).

Implemented in PDDMassBalance.

Referenced by PSTemperatureIndex::update_internal().

virtual PetscErrorCode getNForTemperatureSeries ( PetscScalar  t,
PetscScalar  dt,
PetscInt &  N 
) [pure virtual]

Call before getMassFluxFromTemperatureTimeSeries() so that mass balance method can decide how to cut up the time interval. Most implementations will ignore t and just use dt. Input t,dt in seconds.

Implemented in PDDMassBalance, and PDDrandMassBalance.

Referenced by PSTemperatureIndex::update_internal().

virtual PetscScalar getPDDSumFromTemperatureTimeSeries ( PetscScalar  pddStdDev,
PetscScalar  pddThresholdTemp,
PetscScalar  t,
PetscScalar  dt_series,
PetscScalar *  T,
PetscInt  N 
) [pure virtual]

Count positive degree days (PDDs). Returned value in units of K day.

Inputs T[0],...,T[N-1] are temperatures (K) at times t, t+dt_series, ..., t+(N-1)dt_series. Inputs t, dt_series are in seconds.

Implemented in PDDMassBalance, and PDDrandMassBalance.

Referenced by PSTemperatureIndex::update_internal().

virtual PetscScalar getSnowFromPrecipAndTemperatureTimeSeries ( PetscScalar  precip_rate,
PetscScalar  t,
PetscScalar  dt_series,
PetscScalar *  T,
PetscInt  N 
) [pure virtual]

Remove rain from precip. Returned value is amount of snow in ice-equivalent m.

Inputs precip_rate is in ice-equivalent m s-1. Note dt = N * dt_series is the full time-step.

Implemented in PDDMassBalance.

Referenced by PSTemperatureIndex::update_internal().

virtual PetscErrorCode init ( ) [inline, virtual]

Definition at line 70 of file localMassBalance.hh.


Member Data Documentation

const NCConfigVariable& config [protected]

The documentation for this class was generated from the following file:
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines