Unit definitions for integrated-assessment research
- the IIASA Energy Program MESSAGEix-GLOBIOM integrated assessment model (IAM),
- the Python package pyam for analysis and visualization of integrated-assessment scenarios (see pyam.IamDataFrame.convert_unit() for details)
and may be used for research in integrated assessment, energy systems, transportation, or other, related fields.
- Add more units to definitions.txt.
- Add your usage of iam-units to this README.
- Request or contribute additional features.
iam_units.registry is a
pint.UnitRegistry object with the definitions from definitions.txt loaded:
>>> from iam_units import registry # Parse an energy unit defined by iam-units >>> qty = registry('1.2 tce') >>> qty 1.2 <Unit('tonne_of_coal_equivalent')> >>> qty.to('GJ') 29.308 <Unit('gigajoule')>
To make the registry from this package the default:
>>> import pint >>> pint.set_application_registry(registry) # Now used by default for pint top-level classes and methods >>> pint.Quantity('1.2 tce') 1.2 <Unit('tonne_of_coal_equivalent')>
iam_units overwrites Pint's default definitions in the following cases:
|'kt' = knot [velocity]||'kt' = 1000 metric tons||'kt' is commonly used for emissions in the IAM-context.|
Emissions and GWP
convert_gwp() converts from mass (or mass-related units) of one specific greenhouse gas (GHG) species to an equivalent quantity of second species, based on global warming potential (GWP) metrics.
The supported species are listed in species.txt and the variable
The metrics have names like
<IPCC report>GWP<years>, where
<years> is the time period over which heat absorption was assessed.
The supported metrics are listed in the variable
>>> qty = registry('3.5e3 t').to('Mt') >>> qty 3.5 <Unit('megametric_ton')> # Convert from mass of N2O to GWP-equivalent mass of CO2 >>> convert_gwp('AR4GWP100', qty, 'N2O', 'CO2') 0.9275 <Unit('megametric_ton')> # Using a different metric >>> convert_gwp('AR5GWP100', qty, 'N2O', 'CO2') 1.085 <Unit('megametric_ton')>
The function also accepts input with the commonly-used combination of mass (or related) units and the identity of a particular GHG species:
# Expression combining magnitude, units, *and* GHG species >>> qty = '3.5 Mt N2O / year' # Input species is determined from *qty* >>> convert_gwp('AR5GWP100', qty, 'CO2') 1.085 <Unit('megametric_ton / year')>
Strictly, the original species is not a unit but a nominal property; see the International Vocabulary of Metrology (VIM) used in the SI. To avoid ambiguity, code handling GHG quantities should also track and output these nominal properties, including:
- Original species.
- Species in which GWP-equivalents are expressed (e.g. CO₂ or C)
- GWP metric used to convert (1) to (2).
To aid with this, the function
format_mass() is provided to re-assemble strings that include the GHG species or other information:
# Perform a conversion >>> qty = convert_gwp('AR5GWP100', '3.5 Mt N2O / year', 'CO2e') >>> qty 927.5 <Unit('megametric_ton / year')> # Format a string with species and metric info after the mass units of *qty* >>> format_mass(qty, 'CO₂-e (AR5)', spec=':~') 'Mt CO₂-e (AR5) / a'
See Pint's formatting documentation for values of the spec argument.
The GWP unit definitions are generated from the package globalwarmingpotentials.
The version of that package used to generate the definitions is stated in the variable
See DEVELOPING.rst for details on updating the definitions.
Tests and development
pytest iam_units --verbose to run the test suite included in the submodule
See DEVELOPING.rst for further details.