-
Michaja Pehl authoredMichaja Pehl authored
equations.gms 5.02 KiB
*** | (C) 2006-2019 Potsdam Institute for Climate Impact Research (PIK)
*** | authors, and contributors see CITATION.cff file. This file is part
*** | of REMIND and licensed under AGPL-3.0-or-later. Under Section 7 of
*** | AGPL-3.0, you are granted additional permissions described in the
*** | REMIND License Exception, version 1.0 (see LICENSE file).
*** | Contact: remind@pik-potsdam.de
*** SOF ./modules/37_industry/fixed_shares/equations.gms
*' Baseline (emitted and captured) emissions by final energy carrier and
*' industry subsector are calculated from final energy use in industry, the
*' subsectors' shares in that final energy carriers use, and the emission
*' factor the final energy carrier.
q37_macBaseInd(ttot,regi,entyFE,secInd37)$( ttot.val ge cm_startyear ) ..
vm_macBaseInd(ttot,regi,entyFE,secInd37)
=e=
sum((fe2ppfEn(entyFE,in),ces_industry_dyn37("enhi",in)),
vm_cesIO(ttot,regi,in)
* p37_shIndFE(regi,in,secInd37)
)
* p37_fctEmi(entyFE)
;
*' The maximum abatable emissions of a given type (industry subsector, fuel or
*' process) are calculated from the baseline emissions and the possible
*' abatement level (depending on the carbon price of the previous iteration).
q37_emiIndCCSmax(ttot,regi,emiInd37)$( ttot.val ge cm_startyear ) ..
v37_emiIndCCSmax(ttot,regi,emiInd37)
=e=
sum(emiMac2mac(emiInd37,macInd37),
( sum((secInd37_2_emiInd37(secInd37,emiInd37),entyFE),
vm_macBaseInd(ttot,regi,entyFE,secInd37)
)$( NOT sameas(emiInd37,"co2cement_process") )
+ (
vm_macBaseInd(ttot,regi,"co2cement_process","cement")
)$( sameas(emiInd37,"co2cement_process") )
)
* pm_macSwitch(macInd37)
* pm_macAbatLev(ttot,regi,macInd37)
)
;
*' Industry CCS is limited to below the maximum abatable emissions.
q37_IndCCS(ttot,regi,emiInd37)$( ttot.val ge cm_startyear ) ..
vm_emiIndCCS(ttot,regi,emiInd37)
=l=
v37_emiIndCCSmax(ttot,regi,emiInd37)
;
*' The CCS capture rates of cement fuel and process emissions are identical,
*' as they are captured in the same installation.
q37_cementCCS(ttot,regi)$( ttot.val ge cm_startyear
AND pm_macSwitch("co2cement")
AND pm_macAbatLev(ttot,regi,"co2cement") ) ..
vm_emiIndCCS(ttot,regi,"co2cement")
* v37_emiIndCCSmax(ttot,regi,"co2cement_process")
=e=
vm_emiIndCCS(ttot,regi,"co2cement_process")
* v37_emiIndCCSmax(ttot,regi,"co2cement")
;
*' Industry CCS costs (by subsector) are equal to the integral below the MAC
*' cost curve.
*' For the calculation, consider this figure:
*' 
*' To make the calculations involving MAC curves leaner, they are discretised
*' into 5 $/tC steps (parameter `sm_dmac`) and transformed into step-wise
*' curves. The parameter `pm_macStep` holds the current step on the MAC curve
*' the model is on (given the CO~2~ price of the last iteration), and
*' `pm_macAbat` holds the abatement level (as a fraction) on that step. The
*' emission abatement equals the area under the MAC curve (turqoise area in the
*' figure). To calculate it, `pm_macStep` is multiplied by `pm_macAbat` (the
*' horizontal and vertical lines enclosing the coloured rectangle in the
*' figure). The `sum(steps$( ord(steps) eq pm_macStep ... )` part simply
*' selects the right step within the MAC curve. From this product (rectangle),
*' the area above the MAC curve (pink) is subtractad. To calculate it, the
*' abatement level at each MAC step up to and including the current step is
*' summed up. The area is subdivided into `pm_macStep` rectangles of height
*' `1 sm_dmac` and width `pm_macAbat(steps)` (which is zero for the first $n$
*' steps at which price level no abatement is available).
*' Multiplying the area under the curve with the step width `sm_dmac` and the
*' baseline emissions (before mitigation) converts the units to $/tC and GtC.
*'
*' Example: The carbon price is 43.6 $/tCO~2~, which translates to step 32 on
*' the discrete MAC curve (43.6 $/tCO~2~ * (44/12 tCO~2~/tC) / (5 $/step)).
*' The calculation then is:
*' ```
*' vm_emiIndCCS =
*' 0.001
*' * vm_macBaseInd
*' * sm_dmac
*' * ( 32 * 0.3
*' - ( 15 * 0
*' + 14 * 0.2
*' + 3 * 0.3
*' )
*' )
*'
q37_IndCCSCost(ttot,regi,emiInd37)$( ttot.val ge cm_startyear ) ..
vm_IndCCSCost(ttot,regi,emiInd37)
=e=
1e-3
* pm_macSwitch(emiInd37)
* ( sum((enty,secInd37_2_emiInd37(secInd37,emiInd37)),
vm_macBaseInd(ttot,regi,enty,secInd37)
)$( NOT sameas(emiInd37,"co2cement_process") )
+ (
vm_macBaseInd(ttot,regi,"co2cement_process","cement")
)$( sameas(emiInd37,"co2cement_process") )
)
* sm_dmac
* sum(emiMac2mac(emiInd37,enty),
( pm_macStep(ttot,regi,emiInd37)
* sum(steps$( ord(steps) eq pm_macStep(ttot,regi,emiInd37) ),
pm_macAbat(ttot,regi,enty,steps)
)
)
- sum(steps$( ord(steps) le pm_macStep(ttot,regi,emiInd37) ),
pm_macAbat(ttot,regi,enty,steps)
)
)
;
*** EOF ./modules/37_industry/fixed_shares/equations.gms