physics.py

This module contains all of the firn-densification models.

physics.py

The Community Firn Model physics module.

equations for each of the densification models.

class physics.FirnPhysics(PhysParams)

class for the various firn densification schemes

The standard parameters that get passed are: iii, steps, gridLen, bdotSec, bdot_mean, bdot_type, Tz, T10m, rho, sigma, dt, Ts, r2, physGrain

if you want to add physics that require more parameters, you need to change the ‘PhysParams’ dictionary in both the spin and nospin classes.

Parameters
  • steps – # of steps per year

  • gridLen

  • bdotSec

  • Tz

  • rho

  • sigma

Return drho_dt

Return viscosity

Arthern_2010S()

This is the steady-state solution described in the main text of Arthern et al. (2010) Accumulation units are kg/m^2/year

Arthern_2010T()

This is the transient solution described in the appendix of Arthern et al. (2010)

Uses stress rather than accumulation rate.

Barnola_1991()

uses m W.E. (zone 1) and stress (zone 2)

Breant2017()

Bréant, C., Martinerie, P., Orsi, A., Arnaud, L., and Landais, A.: Modelling firn thickness evolution during the last deglaciation: constraints on sensitivity to temperature and impurities, Clim. Past, 13, 833–853, https://doi.org/10.5194/cp-13-833-2017, 2017.

Crocus()

Uses stress

GSFC2020()

Taken from Medley et al. (2020) Accumulation units are kg/m^2/year Subscript here are changed to 1 and 2 (correspond to densification stage) (in Medley et al. 2020 they are 0 and 1)

Goujon_2003()

Uses stress

HL_Sigfus()

Accumulation units are m W.E. per year (zone 1); uses stress for zone 2

HL_dynamic()

Accumulation units are m W.E. per year viscosity doesn’t work

Helsen_2008()

Accumulation units are m W.E. per year (?) Equation is from Arthern et al. 2010 (2) (Arthern implies units are m I.E.; not doing that here)

KuipersMunneke_2015()

Units are mm W.E. per year b_dot is meant to be accumulation over a reference period (20 years for spin up, 1 year for regular?) (not mean over the lifetime of a parcel)

Li_2004()

Accumulation units are m W.E. per year (?) Equation from Arthern, 2010 (eq. 2): not sure where Rob got that? (Arthern implies accumulation is m I.E./year for bdot; not doing that here.) Paper would lead me to believe that it is m W.E.

Needs to have the vapor flux coded in if we want to use these physics properly.

Li_2011()

Accumulation units are m W.E. per year (email correspondence with J. Li, 12/3/13) Temperature in the equation for beta is in C. Temperature in the 8.36(273.15-T)**-2.061 is in K. (implied in Arthern)

beta should be calculated with the long-term mean accumulation rate

Li_2015()

Accumulation units are m W.E. per year (email correspondence with J. Li, 12/3/13) Temperature in the equation for beta is in C. Temperature in the 8.36(273.15-T)**-2.061 is in K. (implied in Arthern)

beta should be calculated with the long-term mean accumulation rate

Ligtenberg_2011()

Units are mm W.E. per year b_dot is meant to be accumulation over a reference period (20 years for spin up, 1 year for regular?) (not mean over the lifetime of a parcel)

Max2018()

Experimental: based on firn compaction data from FirnCover campaigns

Max2018b()

Experimental: based on firn compaction data from FirnCover campaigns

Morris_HL_2014()

Uses stress instead of accumulation.

Need to choose physics for zone 2. Herron and Langway here.

Simonsen_2013()

Accumulation units are kg/m^2/year

graincalc(iii)

Evolve the grain size

This is the same as graingrowth except that we do not calculate for the surface grain, which is done by surfacegrain() function

surfacegrain()

function to calculate the surface grain size at each time step