Skip to content
Snippets Groups Projects
equations.gms 3.52 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.
*' $$C_j = E_{\text{base},j} p \sum_{i = 1}^{n} \left(q_{n,j} - q_{i,j}\right)$$
*' with $E_\text{base}$ the baseline emissions, $p$ the price step, and $q_i$ 
*' the abatement fraction at step $i$ on the MAC.
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