# -*- coding: utf-8 -*-
"""
Created on Tue Oct 31 15:13:53 2023
@author: mathi
"""
""""
This script calculates the emissions from cement production (calcination only, not fuel
combustion!), based on the 2019 Refinement to the 2006 IPCC Guidelines for National
Greenhouse Gas Inventories, volume 3, chapter 2.
The equations in this script are coming only from the IPCC guidelines.
"""
[docs]
def caco3_supply(f_cao_on_clinker, f_molec_weight_ocao_on_caco3):
"""
This function calculates the CaCO3 (Calcium carbonate) needed to produce 1 tonne of
clinker. This value is dependent on the mass fraction of CaO (calcium oxide or lime)
on clinker: f_CaO_on_clinker (can vary but a default value is 0.65) and on the
relative molecular weight of CaO on CaCO3.
IPCC guidelines (Volume 3, Chapter 2) do not provide a particular equation, they
describe the calculations with default value just before Equation 2.4 (Equation
2.1.1 in the Technical documentation for cement).
Parameters
----------
f_CaO_on_clinker : float
Mass fraction of CaO on clinker (that can be defined by design).
The default value from IPCC is 0.65.
f_molec_weight_CaO_on_CaCO3 : float
Molecular weight fraction of CaO on CaCO3.
Returns
-------
CaCO3_supply : float
Mass of CaCO3 needed to produce 1 tonne of clinker with the particular fraction
of CaO, in tonne.
"""
caco3_supply = f_cao_on_clinker / f_molec_weight_ocao_on_caco3
return caco3_supply
[docs]
def calcination_factor_co2(caco3_supply, f_molec_weight_co2_on_caco3):
"""
This function calculates the CO2 emissions stemming from the calcination of CaCO3
needed to produce 1 tonne of clinker.
IPCC guidelines (Volume 3, Chapter 2) do not provide a particular equation, they
describe the calculations with default value just before Equation 2.4 (Equation
2.1.2 in the Technical documentation for cement).
Parameters
----------
CaCO3_supply : float
Mass value of CaCO3 that is calcinated to produce 1 tonne of clinker, in
tonnes CaCO3/tonne clinker.
f_molec_weight_CO2_on_CaCO3 : float
Molecular weight fraction of CO2 on CaCO3.
Returns
-------
CO2_release_calcination_CaCO3 : float
Mass of CO2 released from the CaCO3 calcination, in tonnes CO2/tonne of clinker.
"""
co2_release_calcination_caco3 = caco3_supply * f_molec_weight_co2_on_caco3
return co2_release_calcination_caco3
[docs]
def ef_clc(cao_in_clinker, ckd_correc_fact):
"""
Equation 2.4 (tier 1)
This function calculates the corrected emission factor for clinker production, in
tonnes CO2/tonne of clinker.
Parameters
----------
cao_on_clinker (t/t): float
Mass of CO2 released from the CaCO3 calcination, in tonnes CO2/tonne of clinker.
ckd_correc_fact : float
Correction factor due to Cement Kiln Dust (limiting the efficiency of
calcination). A default assumption from IPCC would be an additional 2% (1.02)
but can be adjusted.
The default value from IPCC is 1.02.
Returns
-------
ef_clc (t/t): float
Corrected emission factor for clinker producion (in tonnes CO2/tonne of clinker).
"""
X = cao_in_clinker / 0.5603
ef_clc = X * 0.43971 * ckd_correc_fact
return ef_clc
[docs]
def ef_cl(cao_in_clinker, cao_non_carbo_frac):
"""
Equation 2.4 (tier 2)
This function calculates the corrected emission factor for clinker production, in
tonnes CO2/tonne of clinker.
Parameters
----------
cao_on_clinker (t/t): float
Mass of CO2 released from the CaCO3 calcination, in tonnes CO2/tonne of clinker.
cao_non_carbo_frac (kg/kg): float
fraction of CaO that is from non-carbonate sources (e.g. steel, slag of fly ash).
Returns
-------
ef_cl (t/t): float
Corrected emission factor for clinker producion (in tonnes CO2/tonne of clinker).
"""
X = (cao_in_clinker - cao_non_carbo_frac) / 0.5603
ef_cl = X * 0.43971
return ef_cl
[docs]
def co2_emissions_tier1_(m_c, c_cl, im_cl, ex_cl, ef_clc):
"""
Equation 2.1 (tier 1).
CO2 emissions stemming from the calcination for a certain amount of cement produced.
Adoptions of parameters are done to make cement type explicit.
Argument
--------
m_c (t): float
Total mass of cement type produced.
c_cl (dimensionless): float
Fraction of clinker on cement type.
im_cl (t): float
import of clinker per cement type.
ex_cl (t): float
Export of clinker per cement type.
ef_clc (t/t): float
Emission factor of clinker in particular cement.
Returns
-------
co2_emissions: float
Total CO2 emissions generated from cement production per type of cement (in tonnes CO2).
"""
co2_emissions = (m_c * c_cl - im_cl + ex_cl) * ef_clc
return co2_emissions
[docs]
def co2_emissions_tier2_(m_cl, ef_cl, cf_ckd):
"""
Equation 2.2 (tier 2).
This function calculates the CO2 emissions based on clinker production data.
Argument
--------
m_cl (t/year): float
Total mass of clinker produced.
ef_cl (t/t): float
Emission factor for clinker.
cf_ckd (dimensionless): float
Emissions correction factor for CKD.
Returns
-------
co2_emissions (t/year): float
Total CO2 emissions generated from cement production (in tonnes CO2).
"""
co2_emissions = m_cl * ef_cl * cf_ckd
return co2_emissions
[docs]
def co2_per_cement_type_tier2(co2_emissions, cement_frac_region):
"""
Equation 2.x (tier 2)
Not in the guidelines. Is added to provide CO2 emissions per cement type.
Argument
--------
co2_emissions (t/year): float
total co2 emissions
cement_frac_region (kg/kg): float
fraction of cement type in the region (sum over cement types must equal 1)
Returns
-------
co2_per_cement_type (t/year): float
co2 emissions per cement type
"""
co2_per_cement_type = co2_emissions * cement_frac_region
return co2_per_cement_type
[docs]
def cf_ckd(m_d, m_cl, c_d, f_d, ef_c, ef_cl):
"""
Equation 2.5 (tier 2)
CORRECTION FACTOR FOR CKD NOT RECYCLED TO THE KILN.
Argument
--------
Returns
-------
"""
cf_ckd = 1 + (m_d / m_cl) * c_d * f_d * ef_c / ef_cl
return cf_ckd
[docs]
def co2_emissions_tier3_carb(ef_i, m_i, f_i):
"""
Equation 2.3 (tier 3). Split up into four equations.
This function calculates the CO2 emissions from carbonates.
Argument
--------
ef_i : float
emission factor for the particular carbonate i, tonnes CO 2/tonne carbonate
m_i : float
weight or mass of carbonate i consumed in the kiln, tonnes
f_i : float
fraction calcination achieved for carbonate i, fraction
Returns
-------
co2_emissions_tier3_carb (t): float
CO2 emissions from carbonates generated from cement production (in t CO2).
"""
co2_emissions_tier3_carb = ef_i * m_i * f_i
return co2_emissions_tier3_carb
[docs]
def co2_emissions_tier3_kiln(m_d, c_d, f_d, ef_d):
"""
Equation 2.3 (tier 3). Split up into four equations.
This function calculates from uncalcinated CKD not recycled to the kiln.
Argument
--------
m_d : float
weight or mass of CKD not recycled to the kiln (= ‘lost’ CKD), tonnes
c_d : float
weight fraction of original carbonate in the CKD not recycled to the kiln, fraction
f_d : float
fraction calcination achieved for CKD not recycled to kiln, fraction
ef_d : float
emission factor for the uncalcined carbonate in CKD not recycled to the kiln, tonnes CO2/tonne carbonate
Returns
-------
co2_emissions_tier3_kiln (t): float
CO2 emissions generated from uncalcinated CKD (in tonnes CO2).
"""
co2_emissions_tier3_kiln = m_d * c_d * (1 - f_d) * ef_d
return co2_emissions_tier3_kiln
[docs]
def co2_emissions_tier3_other(m_k, x_k, ef_k):
"""
Equation 2.3 (tier 3). Split up into four equations.
This function calculates the CO2 emissions from carbon-bearing non-fuel materials.
Argument
--------
m_k : float
weight or mass of organic or other carbon-bearing nonfuel raw material k, tonnes
x_k : float
fraction of total organic or other carbon in specific nonfuel raw material k, fraction
ef_k : float
emission factor for kerogen (or other carbon)-bearing nonfuel raw material k, tonnes CO 2/tonne carbonate
Returns
-------
co2_emissions_tier3_other (t): float
CO2 emissions generated from carbon-bearing non-fuel materials (in tonnes CO2).
"""
co2_emissions_tier3_other = m_k * x_k * ef_k
return co2_emissions_tier3_other
[docs]
def co2_emissions_tier3_(carb, kiln, other):
"""
Equation 2.3 (tier 3). Split up into four equations.
EMISSIONS BASED ON CARBONATE RAW MATERIAL INPUTS TO THE KILN.
Argument
--------
carb : float
emissions from carbonates, t/yr
kiln : float
emissions from uncalcined CKD not recycled to the kiln, t/yr
other : float
emissions from carbon-bearing non-fuel materials, t/yr
Returns
-------
co2_emissions_tier3_ (t): float
Total CO2 emissions from cement production (in tonnes CO2 per year).
"""
co2_emissions_tier3_ = carb - kiln + other
return co2_emissions_tier3_