OPEN PROM

0.1

created with goxygen 1.4.5

Emissions module (07_Emissions)

Description

This is the Emissions module.

Interfaces

Interfaces to other modules

Input

module inputs (A: legacy)
  Description Unit A
VmConsFiEneSec
(allCy, SSBS, EFS, YTIME)
Final consumption in energy sector \(Mtoe\) x
VmConsFuel
(allCy, DSBS, EF, YTIME)
Consumption of fuels in each demand subsector, excluding heat from heatpumps \(Mtoe\) x
VmConsFuelCDRProd
(allCy, EF, YTIME)
Annual fuel demand in DAC regionally \(Mtoe\) x
VmDemFinEneTranspPerFuel
(allCy, TRANSE, EF, YTIME)
Final energy demand in transport subsectors per fuel \(Mtoe\) x
VmProdElec
(allCy, PGALL, YTIME)
Electricity production \(TWh\) x
VmProdH2
(allCy, H2TECH, YTIME)
Hydrogen Production by technology in Mtoe x

Realizations

(A) legacy

This is the legacy realization of the Emissions module.

sets
SSBSEMIT(SSBS)     Supply Subsectors emitting inputs     /PG,H2P,CHP,STEAMP/
E07MAC "Cost categories for Marginal abatement costs curves (MACC) -2010$/tC for CH4,N20 and 2005$/tC for F-gases" / 
    0, 20, 40, 60, 80, 100, 120, 140, 160, 180, 200, 220, 240, 260, 280, 300, 
    320, 340, 360, 380, 400, 420, 460, 480, 500, 520, 540, 560, 580, 600, 660, 
    680, 720, 740, 760, 780, 820, 840, 1000, 1080, 1100, 1120, 1520, 1660, 
    1700, 1740, 2580, 2600, 3440, 3460, 3500, 3540, 3600, 3840, 4000 
/
Set sFGases(E07SrcMacAbate) "F-gases (Input data in kt)" 
/
    HFC_125, HFC_134a, HFC_143a, HFC_152a, HFC_227ea
    HFC_23,  HFC_236fa, HFC_32,   HFC_43_10, HFC_245ca
    CF4,     C2F6,      C6F14,    SF6
/
Parameters
p07MarginalRed(allCy, E07SrcMacAbate, E07MAC, YTIME)   "Marginal reduction potential per step"
p07MacCost(E07MAC)                                     "Numeric value of the MAC cost steps"
p07UnitConvFactor(E07SrcMacAbate)                      "Multiplier to convert carbon price units to MAC units"
p07GWP(E07SrcMacAbate)                                 "Global Warming Potentials, AR4 100yr (CO2=1, CH4=25, N2O=298, etc), Data from Hamsen et al 2019"
p07CostCorrection(E07SrcMacAbate)                      "Factor to convert (Qty * Cost) to Million 2015$"
;
Equations

*** Emissions Constraints Equations

Q07GrossEmissCO2Supply(allCy,SSBS,YTIME)                  "Compute total CO2eq GHG emissions per supply sector"
Q07RedAbsBySrcRegTim(E07SrcMacAbate, allCy, YTIME)        "Calculate reduction fraction based on carbon price"
Q07CostAbateBySrcRegTim(E07SrcMacAbate, allCy, YTIME)     "Calculate total abatement cost"
Q07EmiActBySrcRegTim(E07SrcMacAbate, allCy, YTIME)        "Calculate remaining actual emissions"
Q07GrossEmissCO2Demand(allCy,DSBS,YTIME)                  "Calculate gross emissions of demand subsectors"
;
Variables

*** Emissions Constraints Variables

V07GrossEmissCO2Supply(allCy,SSBS,YTIME)                 "Total CO2eq GHG emissions per supply sector (Mt CO2/yr)"
V07RedAbsBySrcRegTim(E07SrcMacAbate,allCy,YTIME)      "Selected cumulative abatement fraction"
V07EmiActBySrcRegTim(E07SrcMacAbate,allCy,YTIME)       "Actual emissions"
V07CostAbateBySrcRegTim(E07SrcMacAbate,allCy,YTIME)    "Total abatement cost"
V07GrossEmissCO2Demand(allCy,DSBS,YTIME)                "Gross emissions of demand subsectors"

GENERAL INFORMATION Equation format: “typical useful energy demand equation” The main explanatory variables (drivers) are activity indicators (economic activity) and corresponding energy costs. The type of “demand” is computed based on its past value, the ratio of the current and past activity indicators (with the corresponding elasticity), and the ratio of lagged energy costs (with the corresponding elasticities). This type of equation captures both short term and long term reactions to energy costs. * EMISSIONS CONSTRAINTS The equation computes the total CO2 equivalent greenhouse gas emissions in all countries per National Allocation Plan (NAP) sector for a specific year. The result represents the sum of CO2 emissions for each NAP sector across all countries.The equation involves several components: The consumption of fuels in each demand subsector, excluding heat from heat pumps, is considered. The emissions are calculated based on the fuel consumption and the CO2 emission factor for each subsector. Transformation Input to Thermal Power Plants is considered, and the emissions are calculated based on the input and the CO2 emission factor. Transformation Input to District Heating Plants : The transformation input to district heating plants is considered, and emissions are calculated based on the input and the CO2 emission factor. Final Consumption in Energy Sector : The final consumption in the energy sector is considered, and emissions are calculated based on the consumption and the CO2 emission factor. Electricity Production: The emissions from electricity production are considered, including adjustments for plant efficiency, CO2 emission factors, and the CO2 capture rate for plants with carbon capture and storage. The equation provides a comprehensive approach to calculating CO2eq emissions for each NAP sector, considering various aspects of fuel consumption and transformation across different subsectors. The result represents the overall CO2 emissions for each NAP sector across all countries for the specified year.

$ontext
Q07GrnnHsEmisCO2Equiv(NAP,YTIME)$(TIME(YTIME))..
         V07GrnnHsEmisCO2Equiv(NAP,YTIME)
          =E=
        (
        sum(allCy,
                 sum((EFS,INDSE)$(SECTTECH(INDSE,EFS)  $NAPtoALLSBS(NAP,INDSE)),
                      VmConsFuel(allCy,INDSE,EFS,YTIME) * imCo2EmiFac(allCy,INDSE,EFS,YTIME)) !! final consumption
                +
                 sum(PGEF, VmInpTransfTherm(allCy,PGEF,YTIME)*imCo2EmiFac(allCy,"PG",PGEF,YTIME)$(not h2f1(pgef))) !! input to power generation sector
                 +
                 sum(EFS, VmTransfInputDHPlants(allCy,EFS,YTIME)*imCo2EmiFac(allCy,"PG",EFS,YTIME)) !! input to district heating plants
                 +
                 sum(EFS, VmConsFiEneSec(allCy,EFS,YTIME)*imCo2EmiFac(allCy,"PG",EFS,YTIME)) !! consumption of energy branch
                 -
                 sum(PGEF,sum(CCS$PGALLtoEF(CCS,PGEF),
                         VmProdElec(allCy,CCS,YTIME)*smTWhToMtoe/imPlantEffByType(allCy,CCS,YTIME)*
                         imCo2EmiFac(allCy,"PG",PGEF,YTIME)*imCO2CaptRate(allCy,CCS,YTIME)))));   !! CO2 captured by CCS plants in power generation
$offtext

The equation computes the total CO2 equivalent greenhouse gas emissions in all countries for a specific year. The result represents the sum of total CO2eq emissions across all countries. The summation is performed over the NAP (National Allocation Plan) sectors, considering the total CO2 GHG emissions per NAP sectorfor each country. This equation provides a concise and systematic approach to aggregating greenhouse gas emissions at a global level, considering contributions from different sectors and countries.

$ontext
q07GrnnHsEmisCO2EquivAllCntr(YTIME)$(TIME(YTIME))..
         v07GrnnHsEmisCO2EquivAllCntr(YTIME) 
         =E=
         sum(NAP, V07GrnnHsEmisCO2Equiv(NAP,YTIME));
$offtext

Compute households expenditures on energy by utilizing the sum of consumption of remaining substitutable equipment multiplied by the fuel prices per subsector and fuel minus the efficiency values divided by CO2 emission factors per subsector and multiplied by the sum of carbon prices for all countries and adding the Electricity price to Industrial and Residential Consumers multiplied by Consumption of non-substituable electricity in Industry and Tertiary divided by TWh to Mtoe conversion factor.

$ontext
q07ExpendHouseEne(allCy,YTIME)$(TIME(YTIME)$(runCy(allCy)))..
                 v07ExpendHouseEne(allCy,YTIME)
                 =E= 
                 SUM(DSBS$HOU(DSBS),SUM(EF$SECTTECH(dSBS,EF),VmConsRemSubEquipSubSec(allCy,DSBS,EF,YTIME)*(VmPriceFuelSubsecCarVal(allCy,DSBS,EF,YTIME)-imEffValueInDollars(allCy,DSBS,YTIME)/
                 1000-imCo2EmiFac(allCy,"PG",EF,YTIME)*sum(NAP$NAPtoALLSBS(NAP,"PG"),VmCarVal(allCy,NAP,YTIME))/1000)))
                                          +VmPriceElecIndResNoCliPol(allCy,"R",YTIME)*VmConsElecNonSubIndTert(allCy,"HOU",YTIME)/smTWhToMtoe;
VmConsElecNonSubIndTert --> NO LONGER                                          
$offtext
Q07GrossEmissCO2Demand(allCy,DSBS,YTIME)$(TIME(YTIME)$runCy(allCy))..
    V07GrossEmissCO2Demand(allCy,DSBS,YTIME)
        =E=   
    SUM(EFS,
      (
        VmConsFuel(allCy,DSBS,EFS,YTIME) + 
        SUM(TRANSE$sameas(TRANSE,DSBS), VmDemFinEneTranspPerFuel(allCy,TRANSE,EFS,YTIME)) +
        VmConsFuelCDRProd(allCy,EFS,YTIME)
      ) *
      imCo2EmiFac(allCy,DSBS,EFS,YTIME)
    );
Q07GrossEmissCO2Supply(allCy,SSBS,YTIME)$(TIME(YTIME)$runCy(allCy))..
    V07GrossEmissCO2Supply(allCy,SSBS,YTIME)
        =E=   
    SUM(EFS,
      (
        V03InpTotTransf(allCy,SSBS,EFS,YTIME)$SSBSEMIT(SSBS) +
        VmConsFiEneSec(allCy,SSBS,EFS,YTIME) 
      ) * imCo2EmiFac(allCy,SSBS,EFS,YTIME)
    );
    

This equation calculates the total absolute abatement of non-CO2 emissions for a specific source, country, and time period. The determination is based on the Marginal Abatement Cost (MAC) curves, the exogenous carbon price, and specific unit conversion factors. The equation identifies the maximum abatement potential by scanning the MAC curve steps and selecting the highest reduction level where the implementation cost is less than or equal to the adjusted carbon price. This ensures that the model adopts all abatement measures that are economically viable given the current carbon price.

Q07RedAbsBySrcRegTim(E07SrcMacAbate, allCy, YTIME)$(TIME(YTIME)$(runCy(allCy)))..
    V07RedAbsBySrcRegTim(E07SrcMacAbate, allCy, YTIME)
    =E=
    smax(E07MAC$(p07MacCost(E07MAC) <= iCarbValYrExog(allCy, YTIME) * p07UnitConvFactor(E07SrcMacAbate)), 
         i07DataCh4N2OFMAC(allCy, E07SrcMacAbate, E07MAC, YTIME));

This equation calculates the Total Cumulative Cost of all abatement actions combined for non-CO2 sources in a specific country and time period. The calculation is based on the marginal reduction steps derived from the MAC curves and their corresponding implementation costs. The equation computes the total investment required by summing the cost of each individual abatement step (marginal reduction * step cost * cost correction) for all steps that fall strictly below or equal to the adjusted carbon price. This represents the area under the MAC curve up to the implementation point. The ‘p07CostCorrection’ handles the GWP conversion for F-gases to ensure we are paying for ‘C-equivalents’, not ‘tons of gas’. Output units: [Mil \(2015] ``` Q07CostAbateBySrcRegTim(E07SrcMacAbate, allCy, YTIME)\)(TIME(YTIME)\((runCy(allCy))).. V07CostAbateBySrcRegTim(E07SrcMacAbate, allCy, YTIME) =E= sum(E07MAC\)(p07MacCost(E07MAC) <= iCarbValYrExog(allCy, YTIME) * p07UnitConvFactor(E07SrcMacAbate)), p07MarginalRed(allCy, E07SrcMacAbate, E07MAC, YTIME) * p07MacCost(E07MAC) * p07CostCorrection(E07SrcMacAbate));

This equation calculates the actual remaining non-CO2 emissions for a specific source, country, and time period after mitigation.
The calculation is based on the exogenous baseline emissions projection (what emissions would be without action) and the total absolute abatement calculated
in the previous step. The equation essentially subtracts the economically feasible abatement quantity from the baseline emissions to derive the final
volume of emissions released into the atmosphere. Output units,  CH4 and N20: Mt C-eq, F-gases: kt-gas

Q07EmiActBySrcRegTim(E07SrcMacAbate, allCy, YTIME)\((TIME(YTIME)\)(runCy(allCy))).. V07EmiActBySrcRegTim(E07SrcMacAbate, allCy, YTIME) =E= i07DataCh4N2OFEmis(allCy, E07SrcMacAbate, YTIME) - V07RedAbsBySrcRegTim(E07SrcMacAbate, allCy, YTIME);

table i07DataCh4N2OFMAC(allCy,E07SrcMacAbate,E07MAC,YTIME) “Marginal abatement cost curve (MACC) data for non-CO₂ emission sources” \(ondelim\)include”./iDataCh4N2OFgasesMAC.csv” \(offdelim ; table i07DataCh4N2OFEmis(allCy,E07SrcMacAbate,YTIME) "Baseline non-CO₂ emissions by source (Mt-CO2e for CH4, N2O, kt-CO2e for F-gases) - SSP2"\)ondelim \(include"./iDataCh4N2OFgasesEmissions.csv"\)offdelim ; Parameter p07MacCost(E07MAC) / 0 0, 20 20, 40 40, 60 60, 80 80 100 100, 120 120, 140 140, 160 160, 180 180 200 200, 220 220, 240 240, 260 260, 280 280 300 300, 320 320, 340 340, 360 360, 380 380 400 400, 420 420, 460 460, 480 480, 500 500 520 520, 540 540, 560 560, 580 580, 600 600 660 660, 680 680, 720 720, 740 740, 760 760 780 780, 820 820, 840 840, 1000 1000 1080 1080, 1100 1100, 1120 1120, 1520 1520 1660 1660, 1700 1700, 1740 1740, 2580 2580 2600 2600, 3440 3440, 3460 3460, 3500 3500 3540 3540, 3600 3600, 3840 3840, 4000 4000 /; p07MarginalRed(allCy, E07SrcMacAbate, E07MAC, YTIME) = i07DataCh4N2OFMAC(allCy, E07SrcMacAbate, E07MAC, YTIME) - i07DataCh4N2OFMAC(allCy, E07SrcMacAbate, E07MAC-1, YTIME); p07MarginalRed(allCy, E07SrcMacAbate, E07MAC, YTIME)\((ord(E07MAC)=1) = i07DataCh4N2OFMAC(allCy, E07SrcMacAbate, E07MAC, YTIME); p07UnitConvFactor(E07SrcMacAbate) = smCtoCO2; p07GWP(E07SrcMacAbate) = 1; p07CostCorrection(E07SrcMacAbate) = 1; p07GWP('HFC_23') = 14800; p07GWP('HFC_32') = 675; p07GWP('HFC_43_10') = 1640; p07GWP('HFC_125') = 3500; p07GWP('HFC_134a') = 1430; p07GWP('HFC_143a') = 4470; p07GWP('HFC_152a') = 124; p07GWP('HFC_227ea') = 3220; p07GWP('HFC_236fa') = 9810; p07GWP('HFC_245ca') = 693; p07GWP('CF4') = 7390; p07GWP('C2F6') = 12200; p07GWP('SF6') = 22800; p07GWP('C6F14') = 9300; p07UnitConvFactor(E07SrcMacAbate)\)(ord(E07SrcMacAbate) <= 14) = smCtoCO2 * smDefl_15_to_10; p07CostCorrection(E07SrcMacAbate)\((not sFGases(E07SrcMacAbate)) = 1/smDefl_15_to_10; p07UnitConvFactor(E07SrcMacAbate)\)(ord(E07SrcMacAbate) > 14) = smCtoCO2 * smDefl_15_to_05; p07CostCorrection(E07SrcMacAbate)$sFGases(E07SrcMacAbate) = 1e3 * p07GWP(E07SrcMacAbate) * (1 / smCtoCO2) * (1/smDefl_15_to_05) * 1e-6;


*VARIABLE INITIALISATION*

V07GrossEmissCO2Supply.FX(runCy,“H2INFR”,YTIME) = 0; V07GrossEmissCO2Supply.FX(runCy,SSBS,YTIME)\(DATAY(YTIME) = SUM(EFS, ( (-i03InpTotTransfProcess(runCy,SSBS,EFS,YTIME))\)SSBSEMIT(SSBS) + i03DataOwnConsEne(runCy,SSBS,EFS,YTIME) - SUM(CCS\(PGALLtoEF(CCS,EFS), VmProdElec.L(runCy,CCS,YTIME) * smTWhToMtoe / imPlantEffByType(runCy,CCS,YTIME) * V04CO2CaptRate.L(runCy,CCS,YTIME) )\)sameas(“PG”,SSBS) - SUM(H2CCS\(H2TECHEFtoEF(H2CCS,EFS), VmProdH2.L(runCy,H2CCS,YTIME) / i05EffH2Prod(runCy,H2CCS,YTIME) * V05CaptRateH2.L(runCy,H2CCS,YTIME) )\)sameas(“H2P”,SSBS) ) * imCo2EmiFac(runCy,“PG”,EFS,YTIME) ); V07GrossEmissCO2Demand.FX(runCy,DSBS,YTIME)\(DATAY(YTIME) = SUM(EF, imFuelConsPerFueSub(runCy,DSBS,EF,YTIME) * imCo2EmiFac(runCy,DSBS,EF,YTIME) ); V07EmiActBySrcRegTim.FX(E07SrcMacAbate, allCy, YTIME)\)DATAY(YTIME) = i07DataCh4N2OFEmis(allCy,E07SrcMacAbate,YTIME) ; ```

Limitations There are no known limitations.

Definitions

Objects

module-internal objects (A: legacy)
  Description Unit A
) * x
=E= x
i07DataCh4N2OFEmis
(allCy, E07SrcMacAbate, YTIME)
Baseline non-CO₂ emissions by source (Mt-CO2e for CH4, N2O, kt-CO2e for F-gases) - SSP2 x
i07DataCh4N2OFMAC
(allCy, E07SrcMacAbate, E07MAC, YTIME)
Marginal abatement cost curve (MACC) data for non-CO₂ emission sources x
imCo2EmiFac
(allCy, DSBS, EFS, YTIME)
x
p07CostCorrection
(E07SrcMacAbate)
Factor to convert (Qty * Cost) to Million 2015$ x
p07GWP
(E07SrcMacAbate)
Global Warming Potentials, AR4 100yr (CO2=1, CH4=25, N2O=298, etc), Data from Hamsen et al 2019 x
p07MacCost
(E07MAC)
Numeric value of the MAC cost steps x
p07MarginalRed
(allCy, E07SrcMacAbate, E07MAC, YTIME)
Marginal reduction potential per step x
p07UnitConvFactor
(E07SrcMacAbate)
Multiplier to convert carbon price units to MAC units x
Q07CostAbateBySrcRegTim
(E07SrcMacAbate, allCy, YTIME)
Calculate total abatement cost x
Q07EmiActBySrcRegTim
(E07SrcMacAbate, allCy, YTIME)
Calculate remaining actual emissions x
Q07GrossEmissCO2Demand
(allCy, DSBS, YTIME)
\((TIME(YTIME)\)runCy(allCy)).. x
Q07GrossEmissCO2Supply
(allCy, SSBS, YTIME)
Compute total CO2eq GHG emissions per supply sector x
Q07RedAbsBySrcRegTim
(E07SrcMacAbate, allCy, YTIME)
Calculate reduction fraction based on carbon price x
SUM (EFS x
V07CostAbateBySrcRegTim
(E07SrcMacAbate, allCy, YTIME)
Total abatement cost x
V07EmiActBySrcRegTim
(E07SrcMacAbate, allCy, YTIME)
Actual emissions x
V07GrossEmissCO2Demand
(allCy, DSBS, YTIME)
Gross emissions of demand subsectors x
V07GrossEmissCO2Supply
(allCy, SSBS, YTIME)
Total CO2eq GHG emissions per supply sector \(Mt CO2/yr\) x
V07RedAbsBySrcRegTim
(E07SrcMacAbate, allCy, YTIME)
Selected cumulative abatement fraction x

Sets

sets in use
  description
allCy All Countries Used in the Model
CCS(PGALL) Plants which can be equipped with CCS
DSBS(SBS) All Demand Subsectors
E07MAC Cost categories for Marginal abatement costs curves (MACC) -2010\(/tC for CH4,N20 and 2005\)/tC for F-gases
E07SrcMacAbate Non-CO₂ emission sources with MAC curves
EF Energy Forms
EFS(EF) Energy Forms used in Supply Side
H2CCS(H2TECH) Hydrogen production technologies equipped with CCS facility
H2TECH(STECH) Hydrogen production technologies
H2TECHEFtoEF(H2TECH, EF) Mapping between production technologies and fuels
PGALL(STECH) Power Generation Plant Types
PGALLtoEF(PGALL, EFS) Correspondence between plants and energy forms
runCy(allCy) Countries for which the model is running
runCyL(allCy) Countries for which the model is running (used in countries loop)
SBS(ALLSBS) Model Subsectors
sFGases(E07SrcMacAbate) F-gases (Input data in kt)
SSBS(SBS) All Supply Subsectors
SSBSEMIT(SSBS) Supply Subsectors emitting inputs
TRANSE(DSBS) All Transport Subsectors
ytime Model time horizon

See Also

01_Transport, 02_Industry, 03_RestOfEnergy, 04_PowerGeneration, 05_Hydrogen, 06_CO2

References