fair.forcing package

Submodules

fair.forcing.aerosols module

fair.forcing.aerosols.Stevens(emissions, stevens_params=array([1.875e-03, 6.340e-01, 6.000e+01]), ref_isSO2=True)

Calculates aerosol forcing based on Stevens (2015) that relates sulphate aerosol forcing to SOx emissions in a logarithmic fashion.

Input:
emissions: anthropogenic emissions database
Keywords:
stevens_params: 3 element array
  1. natural emissions of SOx in Mt/yr
  2. scaling parameter for ERFari (alpha)
  3. scaling parameter for ERFaci (beta)

ref_isSO2: True if E_SOx_nat is in units of SO2 rather than S.

Output:
F: aerosol effective radiative forcing
fair.forcing.aerosols.aerocom_direct(emissions, beta=array([-0.0062227, 0., -0.00038392, -0.00116551, 0.01601537, -0.00145339, -0.00155605]))

Calculates direct aerosol forcing based on linear relationships between emissions and forcing in Aerocom models.

Reference: Myhre et al., 2013: https://www.atmos-chem-phys.net/13/1853/2013

If inputs from an RCPs SCEN file are used, the units will be correct.

Inputs:
emissions: (nt x 40) emissions array
Keywords:
beta: 7-element array of forcing efficiencies in W m-2 (Mt yr-1)-1 for
SOx, CO, NMVOC, NOx, BC, OC, NH3 (in that order)
Outputs:
Forcing time series
fair.forcing.aerosols.ghan_indirect(emissions, fix_pre1850_RCP=True, scale_AR5=False, ghan_params=array([-1.95011431, 0.01107147, 0.01387492]))

Estimates the aerosol indirect effect based on the simple model in Ghan et al., (2013), doi:10.1002/jgrd.50567.

This function is just an emulator - a full implementation in Python of the Ghan routine (originally coded in Fortran) exists, but will require optimisation before it can be used in FAIR. I hope to make the full version available in a future version.

A 500-member Latin Hypercube sample of emissions of SOx, NMVOC, BC and OC was prepared offline and run through the Ghan simple model and a functional relationship fit to the output. SOA aerosol (based on NMVOC emissions) is sometimes unreliable and does not exert a strong dependence on the ERF, and OC+BC is parameterised as primary organic matter, so the resulting output is a function of SOx and (BC+OC) emissions.

Inputs:
emissions: (nt x 40) numpy emissions array
Keywords:
fix_pre1850_RCP: Use different relationship for 1750/65 to 1850 based
on anthropogenic emissions from Skeie et al (2011) for 1750 (atmos-chem-phys.net/11/11827/2011)
scale_AR5: If True, scale the forcing output so that the best
estimate forcing in 2011 is -0.45 W/m2 based on 2011 emissions from the RCPs. The Ghan emulator is built on results from the CAM5 GCM. As reported in AR5 WG1 Ch7, GCMs tend to overestimate forcing from aerosol-cloud interactions.
ghan_params: 3-element numpy array
0: scale factor 1: sensitivity to SOx emissions 2: sensitivity to BC+OC emissions
Outputs:
Forcing timeseries

fair.forcing.bc_snow module

fair.forcing.bc_snow.linear(emissions, E_ref=8.09, F_ref=0.04)

fair.forcing.contrails module

fair.forcing.contrails.from_aviNOx(emissions, frac, E_ref=2.946, F_ref=0.0448, ref_isNO2=True)

Calculates contrail radiative forcing from emissions of aviation NOx.

Inputs:
emissions: Raw emissions data. frac: fraction of total NOx emissions due to aviation.
Keywords:
E_ref: reference-year emissions of aviation NOx, Mt/yr. 2.946
is 2005 emissions of aviation NOx in RCP4.5 measured in Mt NO2/yr.
F_ref: Forcing from linear persistent contrails + contrail
induced cirrus. The default of 0.0448 W/m2 for 2005 is from Lee et al, 2009 (Atmos. Environ., doi:10.1016/j.atmosenv.2009.04.024).

ref_isNO2: True if E_ref is in units of NO2 rather than N.

fair.forcing.contrails.from_fuel(keroseneGt, S_ref=236.063, F_ref=0.0448)

Calculates contrail radiative forcing from fuel supply of jet kerosene.

This method assumes a linear scaling of ERF with kerosene jet fuel supplied, which is a proxy for aircraft activity. The relationship may not be linear as suggested in IPCC (1999) and depends on many uncertain factors. IPCC (1999): Aviation and the Global Atmosphere. J.E.Penner, D.H.Lister, D.J.Griggs, D.J.Dokken, M.McFarland (Eds.). Cambridge University Press, UK. pp 373

Inputs:
keroseneGt: Jet fuel supplied in Gt/yr
Keywords:
S_ref: Jet fuel supplied for a reference year (2005), Gt. Source
for default: International Energy Agency, http://www.iea.org/statistics/statisticssearch/report/ ?country=WORLD&product=oil&year=2005
F_ref: Forcing from linear persistent contrails + contrail
induced cirrus. The default of 0.0448 W/m2 for 2005 is from Lee et al, 2009 (Atmos. Environ., doi:10.1016/j.atmosenv.2009.04.024).

fair.forcing.ghg module

fair.forcing.ghg.MN(M, N)
fair.forcing.ghg.etminan(C, Cpi, F2x=3.71)

Calculate the radiative forcing from CO2, CH4 and N2O.

This function uses the updated formulas of Etminan et al. (2016), including the overlaps between CO2, methane and nitrous oxide.

Reference: Etminan et al, 2016, JGR, doi: 10.1002/2016GL071930

Inputs:
C: [CO2, CH4, N2O] concentrations, [ppm, ppb, ppb] Cpi: pre-industrial [CO2, CH4, N2O] concentrations
Keywords:
F2x: radiative forcing from a doubling of CO2.
Returns:
3-element array of radiative forcing: [F_CO2, F_CH4, F_N2O]
fair.forcing.ghg.myhre(C, Cpi, F2x=3.71)

Calculate the radiative forcing from CO2, CH4 and N2O.

This uses the Myhre et al. (1998) relationships including the band overlaps between CH4 and N2O. It is also used in AR5.

Reference: Myhre et al, 1998, JGR, doi: 10.1029/98GL01908

Inputs:
C: [CO2, CH4, N2O] concentrations, [ppm, ppb, ppb] Cpi: pre-industrial [CO2, CH4, N2O] concentrations
Keywords:
F2x: radiative forcing from a doubling of CO2.
Returns:
3-element array of radiative forcing: [F_CO2, F_CH4, F_N2O]

fair.forcing.h2o_st module

fair.forcing.h2o_st.linear(F_CH4, ratio=0.15)

Calculates radiative forcing from oxidation of methane to H2O.

Stratospheric water vapour forcing follows a practically linear relationship with the CH4 radiative forcing in MAGICC and AR5.

fair.forcing.landuse module

fair.forcing.landuse.cumulative(emissions, aCO2land=-0.00113789)

fair.forcing.ozone_st module

fair.forcing.ozone_st.magicc(C_ODS, C0, eta1=-1.46030698e-05, eta2=0.0020540127, eta3=1.03143308)

fair.forcing.ozone_tr module

fair.forcing.ozone_tr.regress(emissions, beta=array([ 0.00028249, 0.00010695, -0.00093604, 0.00997831]))

Calculates tropospheric ozone forcing from precursor emissions.

Inputs: (nt x 40) emissions array

Keywords:
beta: 4-element array of regression coefficients of precursor
radiative efficiency, W m-2 (Mt yr-1)-1. order is [CH4, CO, NMVOC, NOx]
Outputs:
tropospheric ozone ERF time series.
fair.forcing.ozone_tr.stevenson(emissions, C_CH4, T=0, feedback=False, fix_pre1850_RCP=False)

Calculates tropospheric ozone forcing from precursor emissions based on Stevenson et al, 2013 10.5194/acp-13-3063-2013

Inputs:
emissions: (nt x 40) numpy array C_CH4 : (nt) numpy array of methane concentrations, ppb
Keywords:

T : change in surface temperature since pre-industrial feedback : True or False - include temperature feedback on ozone

forcing?
fix_pre1850_RCP: Use different relationship for 1750/65 to 1850 based
on anthropogenic emissions from Skeie et al (2011) for 1750 (atmos-chem-phys.net/11/11827/2011)
Outputs:
tropospheric ozone ERF time series.

Module contents