Skip to content

Commit

Permalink
Merge pull request remindmodel#1666 from Renato-Rodrigues/h2_and_efue…
Browse files Browse the repository at this point in the history
…l_trade

EU27 exogenously defined H2 and e-liquids trade flows
  • Loading branch information
Renato-Rodrigues authored Apr 30, 2024
2 parents 3566f1f + 02a01c2 commit 73a1cc2
Show file tree
Hide file tree
Showing 13 changed files with 125 additions and 20 deletions.
3 changes: 3 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,9 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/).
- **core** another change of preference parameters and associated computation of interest rates/mark ups [[#1663]](https://github.com/remindmodel/remind/pull/1663)
- ***scripts*** adjust function calls after moving functionality from `remind2` [[#578]]](https://github.com/pik-piam/remind2/pull/578) to `piamPlotComparison` and `piamutils` [[#1661](https://github.com/remindmodel/remind/pull/1661)

### added
- **24_trade** add optinal trade scenario for EUR hydrogen and e-liquids imports [[#1666](https://github.com/remindmodel/remind/pull/1666)]

## [3.3.0] - 2024-03-28

### changed
Expand Down
4 changes: 2 additions & 2 deletions core/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1585,15 +1585,15 @@ sm_globalBudget_dev = 1;
*' load production values from reference gdx to allow penalizing changes vs reference run in the first time step via q_changeProdStartyearCost/q21_taxrevChProdStartYear
if (cm_startyear gt 2005,
execute_load "input_ref.gdx", p_prodSeReference = vm_prodSe.l;
execute_load "input_ref.gdx", p_prodFEReference = vm_prodFe.l;
execute_load "input_ref.gdx", pm_prodFEReference = vm_prodFe.l;
execute_load "input_ref.gdx", p_prodUeReference = v_prodUe.l;
execute_load "input_ref.gdx", p_co2CCSReference = vm_co2CCS.l;
);

p_prodAllReference(t,regi,te) =
sum(pe2se(enty,enty2,te), p_prodSeReference(t,regi,enty,enty2,te) )
+ sum(se2se(enty,enty2,te), p_prodSeReference(t,regi,enty,enty2,te) )
+ sum(se2fe(enty,enty2,te), p_prodFEReference(t,regi,enty,enty2,te) )
+ sum(se2fe(enty,enty2,te), pm_prodFEReference(t,regi,enty,enty2,te) )
+ sum(fe2ue(enty,enty2,te), p_prodUeReference(t,regi,enty,enty2,te) )
+ sum(ccs2te(enty,enty2,te), sum(teCCS2rlf(te,rlf), p_co2CCSReference(t,regi,enty,enty2,te,rlf) ) )
;
Expand Down
3 changes: 2 additions & 1 deletion core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -227,7 +227,7 @@ pm_share_CCS_CCO2(ttot,all_regi) "share of stored CO2 from
pm_delta_histCap(tall,all_regi,all_te) "parameter to store data of historic capacity additions [TW/yr]"

p_prodSeReference(ttot,all_regi,all_enty,all_enty,all_te) "Secondary Energy output of a te in the reference run [TWa]"
p_prodFEReference(ttot,all_regi,all_enty,all_enty,all_te) "Final Energy output of a te in the reference run [TWa]"
pm_prodFEReference(ttot,all_regi,all_enty,all_enty,all_te) "Final Energy output of a te in the reference run [TWa]"
p_prodUeReference(ttot,all_regi,all_enty,all_enty,all_te) "Useful Energy output of a te in the reference run [TWa]"
p_co2CCSReference(ttot,all_regi,all_enty,all_enty,all_te,rlf) "Captured CO2 put through the CCS chain in ccs2te (pipelines/injection) in the reference run [GtC]"
p_prodAllReference(ttot,all_regi,all_te) "Sum of the above in the reference run. As each te has only one type of output, the differing units should not be a problem"
Expand Down Expand Up @@ -572,6 +572,7 @@ sm_trillion_2_non "trillion to non"
s_zj_2_twa "zeta joule to tw year" /31.7098/,
sm_EJ_2_TWa "multiplicative factor to convert from EJ to TWa" /31.71e-03/,
sm_GJ_2_TWa "multiplicative factor to convert from GJ to TWa" /31.71e-12/,
sm_TWa_2_TWh "tera Watt year to Tera Watt hour" /8.76e+3/,
sm_TWa_2_MWh "tera Watt year to Mega Watt hour" /8.76e+9/,
sm_TWa_2_kWh "tera Watt year to kilo Watt hour" /8.76e+12/,
*RP* all these new conversion factors with the form "s_xxx_2_yyy" are multplicative factors. Thus, if you have a number in Unit xxx, you have to
Expand Down
2 changes: 1 addition & 1 deletion core/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -893,7 +893,7 @@ q_changeProdStartyear(t,regi,te)$( (t.val gt 2005) AND (t.val eq cm_startyear )
=e=
sum(pe2se(enty,enty2,te), vm_prodSe(t,regi,enty,enty2,te) - p_prodSeReference(t,regi,enty,enty2,te) )
+ sum(se2se(enty,enty2,te), vm_prodSe(t,regi,enty,enty2,te) - p_prodSeReference(t,regi,enty,enty2,te) )
+ sum(se2fe(enty,enty2,te), vm_prodFe(t,regi,enty,enty2,te) - p_prodFEReference(t,regi,enty,enty2,te) )
+ sum(se2fe(enty,enty2,te), vm_prodFe(t,regi,enty,enty2,te) - pm_prodFEReference(t,regi,enty,enty2,te) )
+ sum(fe2ue(enty,enty2,te), v_prodUe (t,regi,enty,enty2,te) - p_prodUeReference(t,regi,enty,enty2,te) )
+ sum(ccs2te(enty,enty2,te), sum(teCCS2rlf(te,rlf), vm_co2CCS(t,regi,enty,enty2,te,rlf) - p_co2CCSReference(t,regi,enty,enty2,te,rlf) ) )
;
Expand Down
2 changes: 1 addition & 1 deletion main.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1388,7 +1388,7 @@ $setGlobal cm_import_tax off !! def = off !! regexp = .*(worldPricemarkup|CO2ta
*** cm_import_EU "EU switch for different scenarios of EU SE import assumptions"
*** EU-specific SE import assumptions (used for ariadne)
*** different exogenous hydrogen import scenarios for EU regions (developed in ARIADNE project)
*** "bal", "low_elec", "high_elec", "low_h2", "high_h2", "low_synf", "high_synf"
*** "bal", "low_elec", "high_elec", "low_h2", "high_h2", "low_synf", "high_synf", "nzero"
*** see 24_trade/se_trade/datainput for H2 import assumptions, this switch only works if the trade realization "se_trade" is selected
$setGlobal cm_import_EU off !! def off
*** cm_import_ariadne "Germany-specific H2 imports assumptions for Ariadne project (needs cm_import_EU to be on)"
Expand Down
2 changes: 2 additions & 0 deletions modules/24_trade/capacity/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -7,3 +7,5 @@
name,type,reason
pm_gdp,input,questionnaire
pm_SEPrice, parameter, not yet used in capacity realization
pm_prodFEReference, parameter, not needed
sm_TWa_2_TWh, parameter, not needed
60 changes: 60 additions & 0 deletions modules/24_trade/se_trade/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -180,5 +180,65 @@ $ifthen.import_h2_EU "%cm_Ger_Pol%" == "ensec"
p24_seTradeCapacity(t,regi,regi2,entySe)$(t.val eq 2030) = p24_seTrade_Quantity(regi,regi2,entySe)*0.2;
$endif.import_h2_EU

$ifthen.import_nzero_EU "%cm_import_EU%" == "nzero"

*** H2 trade:
*** Importing regions: Germany, 100 TWh/yr, and EWN, proportional to German values and FE|Gases demand by 2050 in the reference NPi run.
*** Exporting regions: UK, Norway and Spain (one-third each)
*** exponential curve starting at 12 TWh by 2030 for Germany

*** calculating the share of FE demand per carrier for each region in each region group
p24_seAggReference(ttot,regi,seAgg) = sum(enty$seAgg2se(seAgg,enty), sum(se2fe(enty,enty2,te), pm_prodFEReference(ttot,regi,enty,enty2,te)));
p24_FEShareInRegion(ttot,ext_regi,regi,seAgg)$(regi_group(ext_regi,regi) and p24_seAggReference(ttot,regi,seAgg)) = p24_seAggReference(ttot,regi,seAgg) / sum(regi2$regi_group(ext_regi,regi2), p24_seAggReference(ttot,regi2,seAgg));

*** defining Germany H2 trade import flows
*** 2050 and onward
p24_seTradeCapacity(t,regi,"DEU","seh2")$((t.val ge 2050) and (sameas(regi,"UKI") or sameas(regi,"NEN") or sameas(regi,"ESW"))) = (100 / sm_TWa_2_TWh) * 1/3; !! each supplier region provides one-third of the imports
*** 2030
p24_seTradeCapacity("2030",regi,"DEU","seh2")$((sameas(regi,"UKI") or sameas(regi,"NEN") or sameas(regi,"ESW"))) = (12 / sm_TWa_2_TWh) * 1/3; !! each supplier region provides one-third of the imports

*** defining EWN H2 trade import flows
*** 2050 and onward
p24_seTradeCapacity(t,regi,"EWN","seh2")$((t.val ge 2050) and (sameas(regi,"UKI") or sameas(regi,"NEN") or sameas(regi,"ESW"))) = (100 / sm_TWa_2_TWh) * (p24_FEShareInRegion("2050","EUR_regi","EWN","all_sega")/p24_FEShareInRegion("2050","EUR_regi","DEU","all_sega")) * 1/3;
*** 2030
p24_seTradeCapacity("2030",regi,"EWN","seh2")$((sameas(regi,"UKI") or sameas(regi,"NEN") or sameas(regi,"ESW"))) = (12 / sm_TWa_2_TWh) * (p24_FEShareInRegion("2050","EUR_regi","EWN","all_sega")/p24_FEShareInRegion("2050","EUR_regi","DEU","all_sega")) * 1/3;

*** exponential curve for years in between
p24_seTradeCapacity(t,regi,regi2,"seh2")$(p24_seTradeCapacity("2050",regi,regi2,"seh2") and (t.val gt 2030 and t.val lt 2050)) =
p24_seTradeCapacity("2030",regi,regi2,"seh2") * ((sqrt(sqrt(p24_seTradeCapacity("2050",regi,regi2,"seh2") / p24_seTradeCapacity("2030",regi,regi2,"seh2")))) ** ((t.val - 2030)/5)) ;

*** E-fuels (e-liquids) trade:
*** All regions (EU-27 and UKI) import proportionally to their 2050 FE|Transport|Pass|Aviation + FE|Industry|Chemicals|Liquids in the reference NPi run.
*** Exporting regions: SSA, LAM and MEA (one-third each)
*** Import quantities: exponential increase from 1.2 TWh/yr by 2030 to 100 TWh/yr by 2050 for Germany

execute_load "input_ref.gdx", p24_demFeForEsReference = vm_demFeForEs.l;
execute_load "input_ref.gdx", p24_demFeIndSubReference = o37_demFeIndSub;

*** calculating share of FE aviation and chemicals demand at each region group
p24_aviationAndChemicalsFE(ttot,regi) = p24_demFeForEsReference(ttot,regi,"fedie","esdie_pass_lo","te_esdie_pass_lo") + !! aviation FE demand
sum((entySe,entyFe,emiMkt)$(sefe(entySe,entyFe) AND entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt) AND (sameas("fehos",entyFe))), p24_demFeIndSubReference(ttot,regi,entySe,entyFe,"chemicals",emiMkt)); !! chemicals FE demand
p24_aviationAndChemicalsFEShareInRegion(ttot,ext_regi,regi)$(regi_group(ext_regi,regi) and p24_aviationAndChemicalsFE(ttot,regi)) =
p24_aviationAndChemicalsFE(ttot,regi) / sum(regi2$regi_group(ext_regi,regi2), p24_aviationAndChemicalsFE(ttot,regi2));

* display p24_aviationAndChemicalsFEShareInRegion;

*** defining Germany seliqsyn trade import flows
loop(regi$(sameas(regi,"SSA") or sameas(regi,"LAM") or sameas(regi,"MEA")), !! each supplier region provide one-third of total imports
*** 2050 and onward
p24_seTradeCapacity(t,regi,regi2,"seliqsyn")$(t.val ge 2050) =
( (100 / sm_TWa_2_TWh) / p24_aviationAndChemicalsFEShareInRegion("2050","EUR_regi","DEU") ) !! total EUR imports based on Germany values
* p24_aviationAndChemicalsFEShareInRegion("2050","EUR_regi",regi2) * 1/3;
*** 2030
p24_seTradeCapacity("2030",regi,regi2,"seliqsyn") = (((1.2 / sm_TWa_2_TWh) / p24_aviationAndChemicalsFEShareInRegion("2050","EUR_regi","DEU") ) * p24_aviationAndChemicalsFEShareInRegion("2050","EUR_regi",regi2)) * 1/3;
);

*** exponential curve for years in between
p24_seTradeCapacity(t,regi,regi2,"seliqsyn")$(p24_seTradeCapacity("2050",regi,regi2,"seliqsyn") and (t.val gt 2030 and t.val lt 2050)) =
p24_seTradeCapacity("2030",regi,regi2,"seliqsyn") * ((sqrt(sqrt(p24_seTradeCapacity("2050",regi,regi2,"seliqsyn") / p24_seTradeCapacity("2030",regi,regi2,"seliqsyn")))) ** ((t.val - 2030)/5)) ;

display p24_seTradeCapacity;

$endif.import_nzero_EU

*** EOF ./modules/24_trade/se_trade/datainput.gms
18 changes: 13 additions & 5 deletions modules/24_trade/se_trade/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -17,15 +17,23 @@ p24_Mport2005correct(all_regi,all_enty) "Correction factor to match fossil s
p24_seTradeCapacity(tall,all_regi,all_regi,all_enty) "Secondary energy international yearly trade capacity potential from regi to regi2 [TWa]"
p24_seTrade_Quantity(all_regi,all_regi,all_enty) "Maximum import quantity in import scenarios with fixed quantities [TWa]"

$ifthen.import_nzero_EU "%cm_import_EU%" == "nzero"
p24_seAggReference(ttot,all_regi,seAgg) "Secondary energy per carrier (seAgg) in the reference run [TWa]"
p24_FEShareInRegion(ttot,ext_regi,all_regi,seAgg) "Region share of total final energy demand per carrier (seAgg) within the region group (ext_regi) [%]"
p24_demFeForEsReference(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer in the reference run [TWa]"
p24_demFeIndSubReference(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "Final energy demand per industry subsector, FE carrier, SE carrier, emissions market in the reference run [TWa]"
p24_aviationAndChemicalsFE(ttot,all_regi) "Final energy of aviation and chemicals liquids demand [TWa]"
p24_aviationAndChemicalsFEShareInRegion(ttot,ext_regi,all_regi) "Region share of total final energy aviation and chemicals liquids demand within the region group (ext_regi) [%]"
$endif.import_nzero_EU

$IFTHEN.trade_SE_exog not "%cm_trade_SE_exog%" == "off"
p24_trade_exog(ttot,ttot,ext_regi,ext_regi,all_enty) "parameter to define exogenous SE trade trajectories [EJ/yr]" / %cm_trade_SE_exog% /
p24_trade_exog(ttot,ttot,ext_regi,ext_regi,all_enty) "parameter to define exogenous SE trade trajectories [EJ/yr]" / %cm_trade_SE_exog% /
$ENDIF.trade_SE_exog

p24_MportsRegi(tall,all_regi,all_regi,tradeSe) "Mports to regi from regi2, assuming that trade is distributed uniformetly according existent capacities defined at p24_seTradeCapacity [TWa]"
p24_XportsRegi(tall,all_regi,all_regi,tradeSe) "Exports from regi to regi2. Defined in the postsolve as a result of p24_MportsRegi calculation [TWa]"
pm_MPortsPrice(tall,all_regi,tradeSe) "Secondary energy import price for region. Calculated in the postsolve and assuming that trade is distributed uniformetly according existent capacities defined at p24_seTradeCapacity [T$/TWa]"
pm_XPortsPrice(tall,all_regi,tradeSe) "Secondary energy export price for region. Calculated in the postsolve and corresponding to the region secondary energy price [T$/TWa]"
p24_MportsRegi(tall,all_regi,all_regi,all_enty) "Mports to regi from regi2, assuming that trade is distributed uniformetly according existent capacities defined at p24_seTradeCapacity [TWa]"
p24_XportsRegi(tall,all_regi,all_regi,all_enty) "Exports from regi to regi2. Defined in the postsolve as a result of p24_MportsRegi calculation [TWa]"
pm_MPortsPrice(tall,all_regi,all_enty) "Secondary energy import price for region. Calculated in the postsolve and assuming that trade is distributed uniformetly according existent capacities defined at p24_seTradeCapacity [T$/TWa]"
pm_XPortsPrice(tall,all_regi,all_enty) "Secondary energy export price for region. Calculated in the postsolve and corresponding to the region secondary energy price [T$/TWa]"
;

***-------------------------------------------------------------------------------
Expand Down
26 changes: 23 additions & 3 deletions modules/24_trade/se_trade/presolve.gms
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,9 @@ pm_XPortsPrice(t,regi,tradeSe) = pm_SEPrice(t,regi,tradeSe);
*** Setting Xport price bound to avoid unrealists trading prices.
*** Lower bound: avoiding epsilon values (caused by using equation marginals for setting prices) or unrealistic small value for H2 exporting prices -> minimun price = 1$/kg (1$/kg = 0.030769231 $/Kwh = 0.030769231 / (10^12/10^9*8760) T$/TWa = 0.26953846356 T$/TWa)
pm_XPortsPrice(t,regi,"seh2") = min(0.26953846356,pm_XPortsPrice(t,regi,"seh2"));
pm_XPortsPrice(t,regi,"seliqsyn") = min(0.26953846356,pm_XPortsPrice(t,regi,"seliqsyn"));

$ontext
*** Mports from where? Mports from regi to regi2, assuming that trade is distributed uniformetly according existent trade capacities
p24_MportsRegi(t,regi,regi2,tradeSe)$(p24_seTradeCapacity(t,regi2,regi,tradeSe)) =
vm_Mport.l(t,regi,tradeSe)*
Expand All @@ -33,6 +35,9 @@ p24_MportsRegi(t,regi,regi2,tradeSe)$(p24_seTradeCapacity(t,regi2,regi,tradeSe))
*** Xports quantitites as a result of Mports
p24_XportsRegi(t,regi,regi2,tradeSe) = p24_MportsRegi(t,regi2,regi,tradeSe);

*** Fixing exports for current iteration based on previous iteration trade results
vm_Xport.fx(t,regi,tradeSe) = sum(regi2, p24_XportsRegi(t,regi,regi2,tradeSe));

*** Mport price. Calculates the secondary energy price seen by the importing country as a weighted average of prices observed in countries with capacity to export (regi2) to the country (regi) and their existent capacity connections with the importing country
pm_MPortsPrice(t,regi,tradeSe)$(sum(regi2,p24_XportsRegi(t,regi2,regi,tradeSe)) gt 0) =
sum(regi2$p24_seTradeCapacity(t,regi2,regi,tradeSe),
Expand All @@ -44,10 +49,25 @@ pm_MPortsPrice(t,regi,tradeSe)$(sum(regi2,p24_XportsRegi(t,regi2,regi,tradeSe))
)
)
;
display p24_MportsRegi, p24_XportsRegi,
$offtext

*** Fixing exports for current iteration based on previous iteration trade results
vm_Xport.fx(t,regi,tradeSe) = sum(regi2, p24_XportsRegi(t,regi,regi2,tradeSe));
*** Temporarily forcing Xports (until all bugs are fixed with automatic trading)
vm_Xport.fx(t,regi,tradeSe)$(sum(regi2,p24_seTradeCapacity(t,regi,regi2,tradeSe)) gt 0) = sum(regi2,p24_seTradeCapacity(t,regi,regi2,tradeSe));
vm_Xport.l(t,regi,tradeSe)$(sum(regi2,p24_seTradeCapacity(t,regi,regi2,tradeSe)) gt 0) = sum(regi2,p24_seTradeCapacity(t,regi,regi2,tradeSe));

*** Mport price. Calculates the secondary energy price seen by the importing country as a weighted average of prices observed in countries with capacity to export (regi2) to the country (regi) and their existent capacity connections with the importing country
pm_MPortsPrice(t,regi,tradeSe)$(sum(regi2,p24_seTradeCapacity(t,regi2,regi,tradeSe)) gt 0) =
sum(regi2$p24_seTradeCapacity(t,regi2,regi,tradeSe),
pm_XPortsPrice(t,regi2,tradeSe)
*(
p24_seTradeCapacity(t,regi,regi2,tradeSe)
/
sum(regi3$p24_seTradeCapacity(t,regi3,regi,tradeSe), p24_seTradeCapacity(t,regi3,regi,tradeSe))
)
)
;

display p24_seTradeCapacity, p24_MportsRegi, p24_XportsRegi, pm_MPortsPrice, pm_XPortsPrice, pm_SEPrice;
display p24_seTradeCapacity, pm_MPortsPrice, pm_XPortsPrice, pm_SEPrice;

*** EOF ./modules/24_trade/se_trade/presolve.gms
12 changes: 10 additions & 2 deletions modules/24_trade/se_trade/sets.gms
Original file line number Diff line number Diff line change
Expand Up @@ -28,8 +28,7 @@ tradePe(all_enty) "Traded primary energy commodities"

tradeSe(all_enty) "Traded secondary energy commodities"
/
*** seel,
seh2
null
/

tradeCap(all_enty) "Commodities traded via capacity mode."
Expand All @@ -38,4 +37,13 @@ tradeCap(all_enty) "Commodities traded via capacity mode."
/
;

tradeSe("seh2") = YES;

$ifthen.import_nzero_EU "%cm_import_EU%" == "nzero"
*** Defining secondary energy commoditites that are tradeable in this scenario
tradeSe(all_enty) = NO;
tradeSe("seh2") = YES;
tradeSe("seliqsyn") = YES;
$endif.import_nzero_EU

*** EOF ./modules/24_trade/se_trade/sets.gms
4 changes: 2 additions & 2 deletions modules/24_trade/standard/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -14,8 +14,8 @@ pm_Xport0(tall,all_regi,all_enty) "Reference level value of export."
pm_IO_trade(tall,all_regi,all_enty,char) "Energy trade bounds based on IEA data."
p24_Mport2005correct(all_regi,all_enty) "Correction factor to match fossil supply and internal region energy demand in the initial year"

pm_MPortsPrice(tall,all_regi,tradeSe) "Secondary energy import price for region. Calculated in the postsolve and assuming that trade is distributed uniformetly according existent capacities defined at p24_seTradeCapacity [T$/TWa]"
pm_XPortsPrice(tall,all_regi,tradeSe) "Secondary energy export price for region. Calculated in the postsolve and corresponding to the region secondary energy price [T$/TWa]"
pm_MPortsPrice(tall,all_regi,all_enty) "Secondary energy import price for region. Calculated in the postsolve and assuming that trade is distributed uniformetly according existent capacities defined at p24_seTradeCapacity [T$/TWa]"
pm_XPortsPrice(tall,all_regi,all_enty) "Secondary energy export price for region. Calculated in the postsolve and corresponding to the region secondary energy price [T$/TWa]"
;
***-------------------------------------------------------------------------------
*** VARIABLES
Expand Down
2 changes: 2 additions & 0 deletions modules/24_trade/standard/not_used.txt
Original file line number Diff line number Diff line change
Expand Up @@ -13,3 +13,5 @@ pm_data,parameter,only used in capacity realization
pm_tsu2opTimeYr,parameter,only used in capacity realization
pm_ttot_val,parameter,only used in capacity realization
pm_ts,parameter,only used in capacity realization
pm_prodFEReference, parameter, not needed
sm_TWa_2_TWh, parameter, not needed
7 changes: 4 additions & 3 deletions modules/39_CCU/on/bounds.gms
Original file line number Diff line number Diff line change
Expand Up @@ -17,9 +17,10 @@ vm_co2capture.up(t,regi,"cco2","ico2","ccsinje","1") = 50;
vm_cap.lo(t,regi,te_ccu39,"1")=0;
vm_cap.lo(t,regi,te_ccu39,"1")$(t.val gt 2031)=1e-7;

*** CCU technologies will not be used at scale before 2035
vm_cap.up(t,regi,te_ccu39,"1")$(t.val le 2030)=1e-6;

*** CCU technologies will not be used at scale before 2030
vm_cap.up(t,regi,te_ccu39,"1")$(t.val le 2025)=1e-6;
*** CCU technologies will not be used at scale in 2030 (for non potential exporting regions)
vm_cap.up(t,regi,te_ccu39,"1")$((t.val eq 2030) and (not(sameas(regi,"SSA") or sameas(regi,"LAM") or sameas(regi,"MEA"))))=1e-6;

*** FS: switch off CCU in baseline runs (as CO2 capture technologies teCCS are also switched off)
if(cm_emiscen = 1,
Expand Down

0 comments on commit 73a1cc2

Please sign in to comment.