Skip to content
Snippets Groups Projects
Commit 9f159a4d authored by David Klein's avatar David Klein
Browse files

Merge branch 'develop' of https://github.com/remindmodel/remind into develop

parents 2fa45878 498b0b63
No related branches found
No related tags found
1 merge request!80Minor changes to scenario_config_coupled
......@@ -26,7 +26,8 @@ authors:
affiliation: "Potsdam Institute for Climate Impact Research"
- family-names: Dirnaichner
given-names: Alois
given-names: Alois
orcid: https://orcid.org/0000-0002-3240-2608
affiliation: "Potsdam Institute for Climate Impact Research"
- family-names: Giannousakis
......
......@@ -172,10 +172,11 @@ $endif
***---------------------------------------------------------------------------
*' Transformation from secondary to final energy:
***---------------------------------------------------------------------------
q_transSe2fe(t,regi,se2fe(enty,enty2,te))..
pm_eta_conv(t,regi,te) * vm_demSe(t,regi,enty,enty2,te)
=e=
vm_prodFe(t,regi,enty,enty2,te)
q_transSe2fe(t,regi,se2fe(entySE,entyFE,te)) ..
pm_eta_conv(t,regi,te)
* vm_demSE(t,regi,entySE,entyFE,te)
=e=
vm_prodFE(t,regi,entySE,entyFE,te)
;
......@@ -506,34 +507,35 @@ q_emiTeDetail(t,regi,enty,enty2,te,enty3)$( emi2te(enty,enty2,te,enty3)
*' Total energy-emissions:
***--------------------------------------------------
*mh calculate total energy system emissions for each region and timestep:
q_emiTe(t,regi,emiTe(enty))..
q_emiTe(t,regi,emiTe(enty)) ..
vm_emiTe(t,regi,enty)
=e=
*** emissions from fuel combustion
!! emissions from fuel combustion
sum(emi2te(enty2,enty3,te,enty),
vm_emiTeDetail(t,regi,enty2,enty3,te,enty)
)
*** emissions from non-conventional fuel extraction
!! emissions from non-conventional fuel extraction
+ sum(emi2fuelMine(enty,enty2,rlf),
p_cint(regi,enty,enty2,rlf)
* vm_fuExtr(t,regi,enty2,rlf)
)$( c_cint_scen eq 1 )
*** emissions from conventional fuel extraction
+ sum(pe2rlf(enty3,rlf2),sum(enty2,
(p_cintraw(enty2)
* pm_fuExtrOwnCons(regi, enty2, enty3)
* vm_fuExtr(t,regi,enty3,rlf2)
)$(pm_fuExtrOwnCons(regi, enty, enty2) gt 0)
))
*** Industry CCS emissions
!! emissions from conventional fuel extraction
+ sum((pe2rlf(enty3,rlf2),enty2)$( pm_fuExtrOwnCons(regi,enty,enty2) gt 0 ),
p_cintraw(enty2)
* pm_fuExtrOwnCons(regi,enty2,enty3)
* vm_fuExtr(t,regi,enty3,rlf2)
)
!! Industry CCS emissions
- sum(emiMac2mac(emiInd37_fuel,enty2),
vm_emiIndCCS(t,regi,emiInd37_fuel)
)$( sameas(enty,"co2") )
*** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime
!! Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS
!! capacity don't have the same lifetime
+ v_co2capturevalve(t,regi)$( sameas(enty,"co2") )
*** JS CO2 from short-term CCU
+ sum(teCCU2rlf(te2,rlf), vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf) )
!! CO2 from short-term CCU
+ sum(teCCU2rlf(te2,rlf),
vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)
)
;
***------------------------------------------------------
......
......@@ -62,7 +62,7 @@ mix0 0.00 0.03
eta 1.00 0.95 0.35 0.72 0.39 0.28 0.55 0.61 0.55 0.36 0.55 0.93 0.40 0.41
omf 0.03 0.04 0.04 0.04 0.04 0.04 0.10 0.10 0.07 0.11 0.05 0.04 0.04
omv 30.11 25.00 31.50 50.50 10.90 10.60 10.60 97.27 38.99 5.05 10.60
lifetime 20 35 40 40 40 40 40 35 35 35 20 20 35 35
lifetime 35 35 40 40 40 40 40 35 35 35 20 20 35 35
+ geohdr geohe hydro wind spv solhe csp
tech_stat 1
......
......@@ -1939,23 +1939,16 @@ steps "iterator for MAC steps"
*** Helpful constructs: alias
***-----------------------------------------------------------------------------
***-----------------------------------------------------------------------------
alias(t,t2);
alias(t,t3);
alias(tall,tall2);
alias(tall,tall3);
alias(t,t2,t3);
alias(tall,tall2,tall3);
alias(ttot,ttot2);
alias(opTimeYr,opTimeYr2);
alias(teVRE,teVRE2);
alias(teLoc,teLoc2);
alias(all_te,all_te2);
alias(te,te2);
alias(te,te2,te3);
alias(all_enty,all_enty2);
alias(enty,enty2);
alias(enty,enty3);
alias(enty,enty4);
alias(enty,enty5);
alias(enty,enty6);
alias(enty,enty7);
alias(enty,enty2,enty3,enty4,enty5,enty6,enty7);
alias(entyPE,entyPE2);
alias(entySe,entySe2);
alias(entyFe,entyFe2);
......@@ -2522,5 +2515,6 @@ es2ppfen(all_esty,all_in) "matching ES in ESM to ppfEn in MACRO"
alias(ccs2te,ccs2te2);
alias(pe2se,pe2se2);
alias(se2fe,se2fe2);
*** EOF ./core/sets.gms
doc/images/MAC_costs.png

33.9 KiB

......@@ -60,9 +60,25 @@ q37_cementCCS(ttot,regi)$( ttot.val ge cm_startyear
*' 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.
*' For the calculation, consider this figure:
*' ![MAC curve example](MAC_costs.png)
*' 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 colourd 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.
q37_IndCCSCost(ttot,regi,emiInd37)$( ttot.val ge cm_startyear ) ..
vm_IndCCSCost(ttot,regi,emiInd37)
=e=
......
......@@ -17,6 +17,12 @@ loop (enty$( sameas(enty,"co2") OR sameas(enty,"cco2") ),
* p37_shIndFE(regi,in,secInd37)
)
* p37_fctEmi(entyFE)
!! share of SE in FE production
* ( vm_prodFE.l(ttot,regi,entySE,entyFE,te2)
/ sum(se2fe2(entySE2,entyFE,te3),
vm_prodFE.l(ttot,regi,entySE2,entyFE,te3)
)
)
)
!! share of PE in SE production
* ( vm_prodSE.l(ttot,regi,entyPE,entySE,te)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment