igwp - Improved Global Warming Potential (IGWP)
A Global Warming Potential model with improved support for short-lived climate pollutions (SLCPs).
Why an improved version
The Global Warming Potential (GWP) is a commonly used, simple model to "normalize" the warming impact of different climate pollutants to $CO_2$ equivalents. This approach works well for long-lived climate pollutants (LLCPs) but fails for short-lived climate pollutants (SLCPs). The improved version IGWP accounts much better for impacts of SLCPs.
Scientific background
This project:
-
is based on the findings in this paper: Cain, M., Lynch, J., Allen, M.R., Fuglestedt, D.J. & Macey, A.H. (2019). Improved calculation of warming- equivalent emissions for short-lived climate pollutants. npj Climate and Atmospheric Science. 2(29). Retrieved from https://www.nature.com/articles/s41612-019-0086-4
-
inspired by: https://gitlab.ouce.ox.ac.uk/OMP_climate_pollutants/co2-warming-equivalence/
-
and uses the simple emissions-based impulse response and carbon cycle model FaIR: https://github.com/OMS-NetZero/FAIR
The maths
{% raw %} $$IGWP = GWP_H * (r * \frac{\Delta E_{SLCP}}{\Delta t} * H + s * E_{SLCP})$$ {% endraw %}
with:
- $IGWP$ - Improved Global Warming Potential
- $GWP_H$ - Global Warming Potential for period $H$ (e.g. $GWP_{100}$ for 100 years)
- $H$ time-horizon (commonly 100 years)
- $r$ - flow term faction, found to be 0.75 with linear regression
- $s$ - stock term fraction, found to be 0.25 with linear regression, condition: $r + s = 1$
- $\Delta E_{SLCP}$ - change of rate of short-lived climate pollutant
- ${\Delta t}$ - time difference for $\Delta E_{SLCP}$, typical value: 20 years
- $E_{SLCP}$ emission short-lived climate pollutant for investigated year
Install
With pip:
pip install igwp
With conda:
conda instal -c hydrocomputing igwp
Plot all results
This plots shows the differences between GWP, GWP*, and IGWP.
from igwp.core import get_emission_data_paths, make_gwps_improved
from igwp.plotting import plot_all
rcp_scenarios = get_emission_data_paths()
plot_all(rcp_scenarios, make_df=make_gwps_improved)
This plot reproduces the Fig.1 in the paper descriobung IGWP (although with this name, https://www.nature.com/articles/s41612-019-0086-4).
Show some values
The results for the emissions based on GWP, GWP*, and IGWP for scenario RCP 2.6 for the years 2000 through 2020:
from igwp.core import make_gwps_improved
paths = get_emission_data_paths()
df26 = make_gwps_improved(file_name=paths['RCP 2.6'])
df26.loc[2000:2020]
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
| $CH_4$ GWP | $CH_4$ GWP* | $CH_4$ IGWP | |
|---|---|---|---|
| Years | |||
| 2000 | 8.405793 | -0.896435 | 1.429122 |
| 2001 | 8.495458 | -0.924463 | 1.430517 |
| 2002 | 8.584206 | -0.957068 | 1.428251 |
| 2003 | 8.672059 | -0.994154 | 1.422399 |
| 2004 | 8.759072 | -1.035440 | 1.413188 |
| 2005 | 8.845276 | -1.080772 | 1.400740 |
| 2006 | 8.961719 | -0.974904 | 1.509252 |
| 2007 | 9.077956 | -0.870071 | 1.616936 |
| 2008 | 9.193784 | -0.767278 | 1.722987 |
| 2009 | 9.309613 | -0.664485 | 1.829040 |
| 2010 | 9.425441 | -0.561693 | 1.935091 |
| 2011 | 9.201847 | -1.113669 | 1.465210 |
| 2012 | 8.978253 | -1.665646 | 0.995329 |
| 2013 | 8.754659 | -2.217622 | 0.525448 |
| 2014 | 8.531065 | -2.769599 | 0.055567 |
| 2015 | 8.307471 | -3.321576 | -0.414314 |
| 2016 | 8.083877 | -3.873554 | -0.884196 |
| 2017 | 7.860283 | -4.425530 | -1.354077 |
| 2018 | 7.636689 | -4.977507 | -1.823958 |
| 2019 | 7.413095 | -5.529483 | -2.293839 |
| 2020 | 7.189501 | -6.081460 | -2.763720 |
Add emissions for some years and see effects
Let's assume very strong increases of $CH_4$ emissions for the years 2005 through 2007 and see what impact ths has on the three different models. (Units of additional emssions are Gt $CH_4$ / yr).
import pandas as pd
additional_emssions = pd.Series([0.1, 0.5, 0.2], index=[2005, 2006, 2007])
additional_emssions.name = 'CH_4 [Gt/yr]'
additional_emssions.index.name = 'Year'
additional_emssions
Year
2005 0.1
2006 0.5
2007 0.2
Name: CH_4 [Gt/yr], dtype: float64
df26 = make_gwps_improved(file_name=paths['RCP 2.6'], additional_emssions=additional_emssions)
df26.loc[2000:2010]
.dataframe tbody tr th {
vertical-align: top;
}
.dataframe thead th {
text-align: right;
}
</style>
| $CH_4$ GWP | $CH_4$ GWP* | $CH_4$ IGWP | |
|---|---|---|---|
| Years | |||
| 2000 | 8.405793 | -0.896435 | 1.429122 |
| 2001 | 8.495458 | -0.924463 | 1.430517 |
| 2002 | 8.584206 | -0.957068 | 1.428251 |
| 2003 | 8.672059 | -0.994154 | 1.422399 |
| 2004 | 8.759072 | -1.035440 | 1.413188 |
| 2005 | 11.645276 | 12.919228 | 12.600740 |
| 2006 | 22.961719 | 69.025096 | 57.509252 |
| 2007 | 14.677956 | 27.129929 | 24.016936 |
| 2008 | 9.193784 | -0.767278 | 1.722987 |
| 2009 | 9.309613 | -0.664485 | 1.829040 |
| 2010 | 9.425441 | -0.561693 | 1.935091 |
Notice the different impacts of this $CH_4$ "flush" on these GWP models.
Metadata
Release files for igwp 0.0.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| igwp-0.0.1.tar.gz | 215.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| igwp-0.0.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 426.2 kB
Release files / igwp-0.0.1.tar.gz
| Download URL | igwp-0.0.1.tar.gz |
|---|---|
| Size | 215.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
8d1dc66db598011f91595e96fca968e5c9adaffbb91e5bdf2bfbe11b94876f8e
|
|
BLAKE2b-256 checksum How to use checksums |
e3b72283802c1bf2cbf6d560a571f93aa10804743a3f0ff347707ba654571269
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20210108 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
|
Release files / igwp-0.0.1-py3-none-any.whl
| Download URL | igwp-0.0.1-py3-none-any.whl |
|---|---|
| Size | 210.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
28e8d2fd7a04e0afc422c2c33026d3c3dc6bd07f2e86fe5291c41ee8a7e9c912
|
|
BLAKE2b-256 checksum How to use checksums |
659f7ce12911bd71a90e8fcd766e5a97f6918cd5de5dc186b1352d990f81dd11
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/3.3.0 pkginfo/1.7.0 requests/2.25.1 setuptools/49.6.0.post20210108 requests-toolbelt/0.9.1 tqdm/4.56.0 CPython/3.9.1
|