From 139ccacfcd8ec6c9058cb1f9cd42edf6a4e2ff3d Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Fri, 3 May 2024 08:48:13 +0200 Subject: [PATCH 01/25] set SSP2 as default --- main.gms | 8 ++++---- modules/50_damages/KWTCint/datainput.gms | 4 ++-- modules/50_damages/TC/datainput.gms | 8 ++++---- standalone/trade/trade.gms | 8 ++++---- 4 files changed, 14 insertions(+), 14 deletions(-) diff --git a/main.gms b/main.gms index 95e9c4b2a..e82a5ce0a 100755 --- a/main.gms +++ b/main.gms @@ -1217,7 +1217,7 @@ $setGLobal cm_bioprod_regi_lim off !! def off *' * pop_SSP3 "SSP3 population scenario" *' * pop_SSP4 "SSP4 population scenario" *' * pop_SSP5 "SSP5 population scenario" -$setglobal cm_POPscen pop_SSP2EU !! def = pop_SSP2EU +$setglobal cm_POPscen pop_SSP2 !! def = pop_SSP2 *' cm_GDPscen "assumptions about future GDP development, linked to population development (cm_POPscen)" *' *' * (gdp_SSP1): SSP1 fastGROWTH medCONV @@ -1226,7 +1226,7 @@ $setglobal cm_POPscen pop_SSP2EU !! def = pop_SSP2EU *' * (gdp_SSP3): SSP3 slowGROWTH slowCONV *' * (gdp_SSP4): SSP4 medGROWTH mixedCONV *' * (gdp_SSP5): SSP5 fastGROWTH fastCONV -$setglobal cm_GDPscen gdp_SSP2EU !! def = gdp_SSP2EU +$setglobal cm_GDPscen gdp_SSP2 !! def = gdp_SSP2 *** cm_oil_scen "assumption on oil availability" *** (lowOil): low *** (medOil): medium (this is the new case) @@ -1655,8 +1655,8 @@ $setGlobal cm_conoptv conopt3 !! def = conopt3 *' (on): no model operation, instead input.gdx is copied to fulldata.gdx $setGlobal c_empty_model off !! def = off !! regexp = off|on $setglobal cm_secondary_steel_bound scenario !! def = scenario -$setglobal c_GDPpcScen SSP2EU !! def = gdp_SSP2 (automatically adjusted by start_run() based on GDPscen) -$setglobal cm_demScen gdp_SSP2EU !! def = gdp_SSP2EU +$setglobal c_GDPpcScen SSP2 !! def = gdp_SSP2 (automatically adjusted by start_run() based on GDPscen) +$setglobal cm_demScen gdp_SSP2 !! def = gdp_SSP2 $setGlobal c_scaleEmiHistorical on !! def = on !! regexp = off|on $SetGlobal cm_quick_mode off !! def = off !! regexp = off|on $setGLobal cm_debug_preloop off !! def = off !! regexp = off|on diff --git a/modules/50_damages/KWTCint/datainput.gms b/modules/50_damages/KWTCint/datainput.gms index e8b0b8c44..3ef44b299 100755 --- a/modules/50_damages/KWTCint/datainput.gms +++ b/modules/50_damages/KWTCint/datainput.gms @@ -52,13 +52,13 @@ pm_damageMarginalT(tall,regi) = 0; pm_damageMarginalTm1(tall,regi) = 0; pm_damageMarginalTm2(tall,regi) = 0; -*read in GDP to calculate fraction of countries in a region +*** read in GDP to calculate fraction of countries in a region table f50_countryGDP(tall,iso,all_GDPscen) "ratio country to regional GDP" $ondelim $include "./modules/50_damages/KWTCint/input/f50_gdp.cs3r" $offdelim ; -pm_GDPfrac(ttot,iso)$(ttot.val ge 2005) = f50_countryGDP(ttot,iso,"gdp_SSP2EU")/1000000/sum(regi2iso(regi,iso),pm_gdp(ttot,regi)/pm_shPPPMER(regi)); +pm_GDPfrac(ttot,iso)$(ttot.val ge 2005) = f50_countryGDP(ttot,iso,"gdp_SSP2")/1000000/sum(regi2iso(regi,iso),pm_gdp(ttot,regi)/pm_shPPPMER(regi)); loop(ttot$(ttot.val ge 2005), loop(tall$(pm_tall_2_ttot(tall,ttot)), pm_GDPfrac(tall,iso) = diff --git a/modules/50_damages/TC/datainput.gms b/modules/50_damages/TC/datainput.gms index 2fe08ce87..19db4314c 100755 --- a/modules/50_damages/TC/datainput.gms +++ b/modules/50_damages/TC/datainput.gms @@ -33,18 +33,18 @@ p50_damageFuncCoefTC1(iso) = f50_TCtasK(iso,"%cm_TCpers%","%cm_TCspec%")/100; display p50_damageFuncCoefTC0; -*initialize +*** initialize pm_damage(tall,regi) = 1; -*read in GDP to calculate GDP fraction of countries in a region and convert to MER +*** read in GDP to calculate GDP fraction of countries in a region and convert to MER table f50_countryGDP(tall,iso,all_GDPscen) "ratio of country to regional GDP" $ondelim $include "./modules/50_damages/TC/input/f50_gdp.cs3r" $offdelim ; -*calculate and interpolate country GDP fraction of regional GDP for SSP2EU scenario, country GDP is in PPP, regional GDP in trl MER! -pm_GDPfrac(tall,iso)=f50_countryGDP(tall,iso,"gdp_SSP2EU")/1000000/sum(regi2iso(regi,iso),pm_gdp(tall,regi)/pm_shPPPMER(regi)); +*** calculate and interpolate country GDP fraction of regional GDP for SSP2EU scenario, country GDP is in PPP, regional GDP in trl MER! +pm_GDPfrac(tall,iso)=f50_countryGDP(tall,iso,"gdp_SSP2")/1000000/sum(regi2iso(regi,iso),pm_gdp(tall,regi)/pm_shPPPMER(regi)); loop(ttot$(ttot.val ge 2005), loop(tall$(pm_tall_2_ttot(tall,ttot)), pm_GDPfrac(tall,iso) = diff --git a/standalone/trade/trade.gms b/standalone/trade/trade.gms index 01cbd0b99..271c26a91 100644 --- a/standalone/trade/trade.gms +++ b/standalone/trade/trade.gms @@ -278,10 +278,10 @@ cm_1stgen_phaseout = 0; !! def = 0 $setglobal cm_tradbio_phaseout default !! def = default cm_phaseoutBiolc = 0; !! def = 0 -$setglobal cm_POPscen pop_SSP2EU !! def = pop_SSP2EU -$setglobal cm_GDPscen gdp_SSP2EU !! def = gdp_SSP2EU -$setglobal cm_demScen gdp_SSP2EU !! def = gdp_SSP2EU -$setglobal c_GDPpcScen SSP2EU !! def = gdp_SSP2 (automatically adjusted by start_run() based on GDPscen) +$setglobal cm_POPscen pop_SSP2 !! def = pop_SSP2 +$setglobal cm_GDPscen gdp_SSP2 !! def = gdp_SSP2 +$setglobal cm_demScen gdp_SSP2 !! def = gdp_SSP2 +$setglobal c_GDPpcScen SSP2 !! def = gdp_SSP2 (automatically adjusted by start_run() based on GDPscen) *AG* and *CB* for cm_startyear greater than 2005, you have to copy the fulldata.gdx (rename it to: input_ref.gdx) from the run you want to build your new run onto. cm_startyear = 2005; !! def = 2005 for a BAU, 2015 for policy runs From ce51324d1962816592c15a50ed7116a37c103f66 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Mon, 6 May 2024 17:30:00 +0200 Subject: [PATCH 02/25] delete translation of $2015 in $2005 fr generisdata_tech* parameters and p32_flex_maxdiscount --- core/datainput.gms | 6 ------ core/declarations.gms | 3 +-- modules/32_power/DTcoup/datainput.gms | 4 ++-- modules/32_power/IntC/datainput.gms | 4 ++-- 4 files changed, 5 insertions(+), 12 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 56a6e8b53..487e63d04 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -242,12 +242,6 @@ $if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi $if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; $if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te)=p_new_learnRate(te); -*RP* the new cost data in generisdata_tech is now in $2015. As long as the model runs in $2005, these values have first to be converted to D2005 by dividing by 1.2 downwards -fm_dataglob("inco0",te) = s_D2015_2_D2005 * fm_dataglob("inco0",te); -fm_dataglob("incolearn",te) = s_D2015_2_D2005 * fm_dataglob("incolearn",te); -fm_dataglob("omv",te) = s_D2015_2_D2005 * fm_dataglob("omv",te); -p_inco0(ttot,regi,te) = s_D2015_2_D2005 * p_inco0(ttot,regi,te); - *** inco0 (and incolearn) are given in $/kW (or $/(tC/a) for ccs-related tech or $/(t/a) for process-based industry) *** convert to REMIND units, i.e., T$/TW (or T$/(GtC/a) for ccs-related tech or T$/(Gt/a) for process-based industry) *** note that factor for $/kW -> T$/TW is the same as for $/(tC/a) -> T$/(GtC/a) diff --git a/core/declarations.gms b/core/declarations.gms index 3f9f81332..e226b27f2 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -233,7 +233,7 @@ p_co2CCSReference(ttot,all_regi,all_enty,all_enty,all_te,rlf) "Captured CO2 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" -* Energy carrier Prices +*** Energy carrier Prices pm_FEPrice(ttot,all_regi,all_enty,sector,emiMkt) "parameter to capture all FE prices across sectors and markets (tr$2005/TWa)" pm_FEPrice_iter(iteration,ttot,all_regi,all_enty,sector,emiMkt) "parameter to capture all FE prices across sectors and markets (tr$2005/TWa) across iterations" pm_SEPrice(ttot,all_regi,all_enty) "parameter to capture all SE prices (tr$2005/TWa)" @@ -590,7 +590,6 @@ sm_tgch4_2_pgc "conversion factor 100-yr s_MtCH4_2_TWa "Energy content of methane. MtCH4 --> TWa: 1 MtCH4 = 1.23 * 10^6 toe * 42 GJ/toe * 10^-9 EJ/GJ * 1 TWa/31.536 EJ = 0.001638 TWa (BP statistical review)" /0.001638/ -s_D2015_2_D2005 "Convert $2015 to $2005 by dividing by 1.2: 1/1.2 = 0.8333" /0.8333/ sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ s_co2pipe_leakage "Leakage rate of CO2 pipelines. [0..1]" diff --git a/modules/32_power/DTcoup/datainput.gms b/modules/32_power/DTcoup/datainput.gms index b0012b590..9a10e64fc 100644 --- a/modules/32_power/DTcoup/datainput.gms +++ b/modules/32_power/DTcoup/datainput.gms @@ -80,8 +80,8 @@ $include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" $offdelim / ; -*** convert from USD2015/MWh to trUSD2005/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2005 * 1e-12; +*** convert from USD2015/MWh to trUSD2015/TWa +p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * 1e-12; display p32_flex_maxdiscount; $offtext diff --git a/modules/32_power/IntC/datainput.gms b/modules/32_power/IntC/datainput.gms index 452771b86..6c15cd877 100644 --- a/modules/32_power/IntC/datainput.gms +++ b/modules/32_power/IntC/datainput.gms @@ -91,8 +91,8 @@ $include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" $offdelim / ; -*** convert from USD2015/MWh to trUSD2005/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2005 * 1e-12; +*** convert from USD2015/MWh to trUSD2015/TWa +p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * 1e-12; display p32_flex_maxdiscount; $offtext From 076b8263c810078aee5f6548681f70388ed70543 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Mon, 6 May 2024 17:40:03 +0200 Subject: [PATCH 03/25] delete comment in generisdata*.prn --- core/input/generisdata_tech.prn | 1 - core/input/generisdata_tech_SSP1.prn | 1 - core/input/generisdata_tech_SSP5.prn | 1 - core/input/generisdata_trade.prn | 1 - 4 files changed, 4 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index ea9a3aa22..32d49ba1b 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_tech.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms tech_stat technology status: how close a technology is to market readiness. Scale: 0-3, with 0 'I can go out and build a GW plant today' to 3 'Still some research necessary' inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac/prc cc: $[2015] / (tC[captured]/a); for other indutry prc: $[2015]/(t[output]/a) constrTme Construction time in years, needed to calculate turn-key cost premium compared to overnight costs diff --git a/core/input/generisdata_tech_SSP1.prn b/core/input/generisdata_tech_SSP1.prn index 38d7b9bf2..ed1056f50 100644 --- a/core/input/generisdata_tech_SSP1.prn +++ b/core/input/generisdata_tech_SSP1.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_tech_SSP1.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms tech_stat technology status: how close a technology is to market readiness. Scale: 0-3, with 0 'I can go out and build a GW plant today' to 3 'Still some research necessary' inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac: $[2015] / (tC[captured]/a) constrTme Construction time in years, needed to calculate turn-key cost premium compared to overnight costs diff --git a/core/input/generisdata_tech_SSP5.prn b/core/input/generisdata_tech_SSP5.prn index e604b0ba6..0687f5589 100644 --- a/core/input/generisdata_tech_SSP5.prn +++ b/core/input/generisdata_tech_SSP5.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_tech_SSP5.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms tech_stat technology status: how close a technology is to market readiness. Scale: 0-3, with 0 'I can go out and build a GW plant today' to 3 'Still some research necessary' inco0 Initial investment costs given in $[2015] / kW[output] capacity; for dac: $[2015] / (tC[captured]/a) constrTme Construction time in years, needed to calculate turn-key cost premium compared to overnight costs diff --git a/core/input/generisdata_trade.prn b/core/input/generisdata_trade.prn index 764f484ef..e171649b9 100644 --- a/core/input/generisdata_trade.prn +++ b/core/input/generisdata_trade.prn @@ -1,6 +1,5 @@ *** SOF ./core/input/generisdata_trade.prn $ontext -IMPORTANT: all costs are now given in $2015! As long as the model runs in $2005, the values need to be converted in datainput.gms tech_stat Technology status: how close a technology is to market readiness. Scale: 0-3, with 0 'I can go out and build a GW plant today' to 3 'Still some research necessary'. inco0 Initial investment costs given in $(2015)/kW(output) capacity. Independent of distance. inco0_d Initial investment costs given in $(2015)/kW(output) capacity. Per 1000km. From 6119541f6bd8b02003f733b01bd3cd0ead89c146 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Wed, 8 May 2024 10:52:04 +0200 Subject: [PATCH 04/25] add conversion factor for $2015 to $2017 and $2005 to $2017 --- core/datainput.gms | 7 +++++++ core/declarations.gms | 3 +++ modules/32_power/DTcoup/datainput.gms | 4 ++-- modules/32_power/IntC/datainput.gms | 4 ++-- 4 files changed, 14 insertions(+), 4 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 487e63d04..69baffa11 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -242,6 +242,13 @@ $if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi $if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; $if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te)=p_new_learnRate(te); + +*** generisdata_tech is in $2015. Needs to be converted to $2017 +fm_dataglob("inco0",te) = s_D2015_2_D2017 * fm_dataglob("inco0",te); +fm_dataglob("incolearn",te) = s_D2015_2_D2017 * fm_dataglob("incolearn",te); +fm_dataglob("omv",te) = s_D2015_2_D2017 * fm_dataglob("omv",te); +p_inco0(ttot,regi,te) = s_D2015_2_D2017 * p_inco0(ttot,regi,te); + *** inco0 (and incolearn) are given in $/kW (or $/(tC/a) for ccs-related tech or $/(t/a) for process-based industry) *** convert to REMIND units, i.e., T$/TW (or T$/(GtC/a) for ccs-related tech or T$/(Gt/a) for process-based industry) *** note that factor for $/kW -> T$/TW is the same as for $/(tC/a) -> T$/(GtC/a) diff --git a/core/declarations.gms b/core/declarations.gms index e226b27f2..a9d0b85d9 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -590,6 +590,9 @@ sm_tgch4_2_pgc "conversion factor 100-yr s_MtCH4_2_TWa "Energy content of methane. MtCH4 --> TWa: 1 MtCH4 = 1.23 * 10^6 toe * 42 GJ/toe * 10^-9 EJ/GJ * 1 TWa/31.536 EJ = 0.001638 TWa (BP statistical review)" /0.001638/ +s_D2015_2_D2017 "Convert $2015 to $2017" /1.0292/ +s_D2005_2_D2017 "Convert $2005 to $2017" /1.231/ + sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ s_co2pipe_leakage "Leakage rate of CO2 pipelines. [0..1]" diff --git a/modules/32_power/DTcoup/datainput.gms b/modules/32_power/DTcoup/datainput.gms index 9a10e64fc..9f27b92e4 100644 --- a/modules/32_power/DTcoup/datainput.gms +++ b/modules/32_power/DTcoup/datainput.gms @@ -80,8 +80,8 @@ $include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" $offdelim / ; -*** convert from USD2015/MWh to trUSD2015/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * 1e-12; +*** convert from USD2015/MWh to trUSD2017/TWa +p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2017 * 1e-12; display p32_flex_maxdiscount; $offtext diff --git a/modules/32_power/IntC/datainput.gms b/modules/32_power/IntC/datainput.gms index 6c15cd877..3d84134e9 100644 --- a/modules/32_power/IntC/datainput.gms +++ b/modules/32_power/IntC/datainput.gms @@ -91,8 +91,8 @@ $include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" $offdelim / ; -*** convert from USD2015/MWh to trUSD2015/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * 1e-12; +*** convert from USD2015/MWh to trUSD2017/TWa +p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2017 * 1e-12; display p32_flex_maxdiscount; $offtext From d59e494b473e9f68ce7c32047f43f2a8431bd705 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Wed, 15 May 2024 11:12:23 +0200 Subject: [PATCH 05/25] cleaning --- core/datainput.gms | 63 +++++++++---------- core/postsolve.gms | 14 ++--- .../37_industry/fixed_shares/datainput.gms | 2 +- 3 files changed, 39 insertions(+), 40 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 69baffa11..7f68b1b76 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -13,7 +13,7 @@ vm_emiCO2Sector.l(ttot,all_regi,emi_sectors) = 0; *AJS* initialize parameter (avoid compilation errors) -* do this at the start of datainput to prevent accidental overwriting +*** do this at the start of datainput to prevent accidental overwriting pm_SolNonInfes(regi) = 1; !! assume the starting point came from a feasible solution pm_capCum0(ttot,regi,teLearn)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = 0; @@ -158,7 +158,7 @@ $include "./core/input/generisdata_trade.prn" $ifthen.WindOff %cm_wind_offshore% == "1" *CG* set wind offshore, storage and grid to be the same as wind onshore (later should be integrated into input data) -* main difference between onshore and offshore is the difference in f32_factorStorage +*** main difference between onshore and offshore is the difference in f32_factorStorage fm_dataglob(char,"storwindoff") = fm_dataglob(char,"storwind"); fm_dataglob(char,"gridwindoff") = fm_dataglob(char,"gridwind"); f_dataglob_SSP1(char,"storwindoff") = f_dataglob_SSP1(char,"storwind"); @@ -200,8 +200,7 @@ if (cm_VRE_supply_assumptions eq 3, fm_dataglob("incolearn","spv") = 4960; ); - -*JH* New nuclear assumption for SSP5 +*** New nuclear assumption for SSP5 if (cm_nucscen eq 6, f_dataglob_SSP5("inco0","tnrs") = 6270; !! increased from 4000 to 6270 with the update of technology costs in REMIND 1.7 to keep the percentage increase between SSP2 and SSP5 constant ); @@ -223,11 +222,11 @@ $endif.WindOff display fm_dataglob; *TD* ccsinje cost scenarios -* low estimate: ccsinje cost prior to 03/2024; i.e. ~11 USD/tCO2 in 2025, decreasing to ~7.5USD/tCO2 as of 2035 +*** low estimate: ccsinje cost prior to 03/2024; i.e. ~11 USD/tCO2 in 2025, decreasing to ~7.5USD/tCO2 as of 2035 $if "%cm_ccsinjeCost%" == "low" fm_dataglob("tech_stat","ccsinje") = 2; $if "%cm_ccsinjeCost%" == "low" fm_dataglob("inco0","ccsinje") = 220; $if "%cm_ccsinjeCost%" == "low" fm_dataglob("constrTme","ccsinje") = 0; -* high estimate: ~20USD/tCO2 (constant), assuming upper end of storage cost and long transport distances +*** high estimate: ~20USD/tCO2 (constant), assuming upper end of storage cost and long transport distances $if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinje") = 550; ***--------------------------------------------------------------------------- *** Manipulating global or regional cost technology data - relative value @@ -254,8 +253,8 @@ p_inco0(ttot,regi,te) = s_D2015_2_D2017 * p_inco0(ttot,regi,te); *** note that factor for $/kW -> T$/TW is the same as for $/(tC/a) -> T$/(GtC/a) fm_dataglob("inco0",te) = s_DpKW_2_TDpTW * fm_dataglob("inco0",te); fm_dataglob("incolearn",te) = s_DpKW_2_TDpTW * fm_dataglob("incolearn",te); -fm_dataglob("omv",te) = s_DpKWa_2_TDpTWa * fm_dataglob("omv",te); -p_inco0(ttot,regi,te) = s_DpKW_2_TDpTW * p_inco0(ttot,regi,te); +fm_dataglob("omv",te) = s_DpKWa_2_TDpTWa * fm_dataglob("omv",te); +p_inco0(ttot,regi,te) = s_DpKW_2_TDpTW * p_inco0(ttot,regi,te); *RP* rescale the global CSP investment costs in REMIND: Originally we assume a SM3/12h setup, while the cost data from IEA for the short term seems rather based on a SM2/6h setup (with 40% average CF) *** Accordingly, also decrease long-term costs in REMIND to 0.7 of the current values @@ -335,8 +334,9 @@ $ifthen.REG_techcosts not "%cm_techcosts%" == "GLO" !! cm_techcosts is REG or pm_data(regi,"incolearn",teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi,"floorcost",te) ; $endif.REG_techcosts +*** ------------------------------------------------------------------------------- *** Calculate learning parameters: - +*** ------------------------------------------------------------------------------- *** global exponent *** parameter calculation for global level, that regional values can gradually converge to fm_dataglob("learnExp_wFC",teLearn(te)) = fm_dataglob("inco0",te)/fm_dataglob("incolearn",te) * log(1-fm_dataglob("learn", te))/log(2); @@ -370,8 +370,8 @@ $else pm_data(regi,"learnMult_wFC","spv") = pm_data(regi,"incolearn","spv") / (sum(regi2,p_capCum("2020",regi2,"spv")) ** pm_data(regi,"learnExp_wFC","spv")); $endif -*FS initialize learning curve for most advanced technologies as defined by tech_stat = 4 in generisdata_tech.prn (with very small real-world capacities in 2020) -* equally for all regions based on global cumulate capacity of ccap0 and incolearn (difference between initial investment cost and floor cost) +*FS* initialize learning curve for most advanced technologies as defined by tech_stat = 4 in generisdata_tech.prn (with very small real-world capacities in 2020) +*** equally for all regions based on global cumulate capacity of ccap0 and incolearn (difference between initial investment cost and floor cost) pm_data(regi,"learnMult_wFC",te)$( pm_data(regi,"tech_stat",te) eq 4 ) = pm_data(regi,"incolearn",te) / ( fm_dataglob("ccap0",te) @@ -380,8 +380,9 @@ pm_data(regi,"learnMult_wFC",te)$( pm_data(regi,"tech_stat",te) eq 4 ) display p_capCum; display pm_data; - +*** ------------------------------------------------------------------------------- *** end learning parameters +*** ------------------------------------------------------------------------------- *RP* 2012-03-07: Markup for advanced technologies table p_costMarkupAdvTech(s_statusTe,tall) "Multiplicative investment cost markup for early time periods (until 2030) on advanced technologies (CCS, Hydrogen) that are not modeled through endogenous learning" @@ -389,8 +390,8 @@ $include "./core/input/p_costMarkupAdvTech.prn" ; *** add mark-up cost for tech_stat 4 and 5 technologies as for tech_stat 3 technologies in first years -p_costMarkupAdvTech("4",ttot)=p_costMarkupAdvTech("3",ttot); -p_costMarkupAdvTech("5",ttot)=p_costMarkupAdvTech("3",ttot); +p_costMarkupAdvTech("4",ttot) = p_costMarkupAdvTech("3",ttot); +p_costMarkupAdvTech("5",ttot) = p_costMarkupAdvTech("3",ttot); loop (teNoLearn(te), pm_inco0_t(ttot,regi,te) = pm_data(regi,"inco0",te); @@ -450,16 +451,16 @@ $ifthen.REG_techcosts "%cm_techcosts%" == "REG" !! cm_techcosts REG $endif.REG_techcosts -*------------------------------------------------------------------------------------ -* END of Technology cost data input read-in and manipulation in core -*------------------------------------------------------------------------------------ +***------------------------------------------------------------------------------------ +*** END of Technology cost data input read-in and manipulation in core +***------------------------------------------------------------------------------------ *** Note: in modules/05_initialCap/on/preloop.gms, there are additional adjustment to investment *** cost in the near term due to calibration of historical energy conversion efficiencies based on *** initial capacities *------------------------------------------------------------------------------------ -*JH* Determine CCS injection rates -*LP* for c_ccsinjecratescen =0 the storing variable vm_co2CCS will be fixed to 0 in bounds.gms, the sm_ccsinjecrate=0 will cause a division by 0 error in the 21_tax module +*** Determine CCS injection rates +*** for c_ccsinjecratescen =0 the storing variable vm_co2CCS will be fixed to 0 in bounds.gms, the sm_ccsinjecrate=0 will cause a division by 0 error in the 21_tax module s_ccsinjecrate = 0.005 if (c_ccsinjecratescen eq 2, s_ccsinjecrate = s_ccsinjecrate * 0.50 ); !! Lower estimate if (c_ccsinjecratescen eq 3, s_ccsinjecrate = s_ccsinjecrate * 1.50 ); !! Upper estimate @@ -480,7 +481,7 @@ table fm_dataemiglob(all_enty,all_enty,all_te,all_enty) "read-in of emissions f $include "./core/input/generisdata_emi.prn" ; -parameter pm_share_ind_fesos(tall,all_regi) "Share of coal solids (coaltr) used in the industry (rest is residential)" +parameter pm_share_ind_fesos(tall,all_regi) "Share of coal solids (coaltr) used in the industry (rest is residential)" / $ondelim $include "./core/input/p_share_ind_fesos.cs4r" @@ -488,7 +489,7 @@ $offdelim / ; -parameter pm_share_ind_fesos_bio(tall,all_regi) "Share of biomass solids (biotr) used in the industry (rest is residential)" +parameter pm_share_ind_fesos_bio(tall,all_regi) "Share of biomass solids (biotr) used in the industry (rest is residential)" / $ondelim $include "./core/input/p_share_ind_fesos_bio.cs4r" @@ -496,7 +497,7 @@ $offdelim / ; -parameter pm_share_ind_fehos(tall,all_regi) "Share of heating oil used in the industry (rest is residential)" +parameter pm_share_ind_fehos(tall,all_regi) "Share of heating oil used in the industry (rest is residential)" / $ondelim $include "./core/input/p_share_ind_fehos.cs4r" @@ -525,7 +526,7 @@ pm_share_trans("2130",regi) = 0.865; pm_share_trans("2150",regi) = 0.872; -*JH* CO2 capture rate of CCS technologies (new SSP5 assumptions) +*** CO2 capture rate of CCS technologies (new SSP5 assumptions) if (c_ccscapratescen eq 2, fm_dataemiglob("pecoal","seel","igccc","co2") = 0.2; fm_dataemiglob("pecoal","seel","igccc","cco2") = 25.9; @@ -549,7 +550,7 @@ table f_dataetaglob(tall,all_te) "global eta data" $include "./core/input/generisdata_varying_eta.prn" ; -* Read in mac historical emissions to calibrate MAC reference emissions +*** Read in mac historical emissions to calibrate MAC reference emissions parameter p_histEmiMac(tall,all_regi,all_enty) "historical emissions per MAC" / $ondelim @@ -557,7 +558,7 @@ $include "./core/input/p_histEmiMac.cs4r" $offdelim / ; -* Read in historical emissions per sector to calibrate MAC reference emissions +*** Read in historical emissions per sector to calibrate MAC reference emissions parameter p_histEmiSector(tall,all_regi,all_enty,emi_sectors,sector_types) "historical emissions per sector" / $ondelim @@ -612,7 +613,7 @@ $offdelim ; pm_IO_trade(ttot,regi,enty,char) = f_IO_trade(ttot,regi,enty,char) * sm_EJ_2_TWa; -*LB* use scaled data for export to guarantee net trade = 0 for each traded good +*** use scaled data for export to guarantee net trade = 0 for each traded good loop(tradePe, loop(ttot, if(sum(regi2, pm_IO_trade(ttot,regi2,tradePe,"Xport")) ne 0, @@ -636,7 +637,7 @@ p_cint(regi,"co2","peoil","7")=0.2283105600; p_cint(regi,"co2","peoil","8")=0.4153983800; $ifthen.WindOff %cm_wind_offshore% == "0" -** historical installed capacity +*** historical installed capacity *** read-in of pm_histCap.cs3r $Offlisting table pm_histCap(tall,all_regi,all_te) "historical installed capacity" @@ -717,11 +718,11 @@ pm_cf(ttot,regi,"tdh2i") = pm_cf(ttot,regi,"tdh2s"); *SB* Region- and tech-specific early retirement rates -*Regional* +***Regional* loop(ext_regi$pm_extRegiEarlyRetiRate(ext_regi), pm_regiEarlyRetiRate(t,regi,te)$(regi_group(ext_regi,regi)) = pm_extRegiEarlyRetiRate(ext_regi); ); -*Tech-specific* +***Tech-specific* *RP*: reduce early retirement for technologies with additional characteristics that are difficult to represent in REMIND, eg. industries built around heating/CHP plants, or flexibility from ngt plants pm_regiEarlyRetiRate(t,regi,"ngt") = 0.3 * pm_regiEarlyRetiRate(t,regi,"ngt") ; !! ngt should only be phased out very slowly, as they provide flexibility - which REMIND is not too good at capturing endogeneously pm_regiEarlyRetiRate(t,regi,"gaschp") = 0.5 * pm_regiEarlyRetiRate(t,regi,"gaschp") ; !! chp should only be phased out slowly, as district heating networks/ industry uses are designed to a specific heat input @@ -778,7 +779,7 @@ loop(regi, ); ); -*LB* calculate mapping tsu2opTimeYr +*** calculate mapping tsu2opTimeYr alias(ttot, tttot); tsu2opTimeYr(ttot,opTimeYr) = no; tsu2opTimeYr(ttot,"1") = yes; @@ -1332,7 +1333,6 @@ if(c_macscen eq 2, if(c_macscen eq 1, pm_macSwitch(emiMacSector) = 1; ); -*pm_macCostSwitch(enty)=pm_macSwitch(enty); *** for NDC and NPi switch off landuse MACs $if %carbonprice% == "off" pm_macSwitch(emiMacMagpie) = 0; @@ -1350,7 +1350,6 @@ $offdelim ; pm_taxCO2eq(t,regi)$(t.val le 2020) = f_taxCO2eqHist(t,regi) * sm_DptCO2_2_TDpGtC; - *DK* LU emissions are abated in MAgPIE in coupling mode *** An alternative to the approach below could be to introduce a new value for c_macswitch that only deactivates the LU MACs $if %cm_MAgPIE_coupling% == "on" pm_macSwitch(enty)$emiMacMagpie(enty) = 0; diff --git a/core/postsolve.gms b/core/postsolve.gms index bef3e3399..c8481d794 100644 --- a/core/postsolve.gms +++ b/core/postsolve.gms @@ -828,13 +828,13 @@ p_FEPrice_by_SE_Sector_EmiMkt(t,regi,entySe,entyFe,sector,emiMkt)$(abs (qm_budge loop((t,regi,entySe,entyFe,sector,emiMkt)$(sefe(entySe,entyFe) AND sector2emiMkt(sector,emiMkt) AND entyFe2Sector(entyFe,sector)), *** initialize prices - p_FEPrice_by_Sector_EmiMkt(t,regi,entyFe,sector,emiMkt)=0; - pm_FEPrice_by_SE_Sector(t,regi,entySe,entyFe,sector)=0; - p_FEPrice_by_SE_EmiMkt(t,regi,entySe,entyFe,emiMkt)=0; - p_FEPrice_by_SE(t,regi,entySe,entyFe)=0; - p_FEPrice_by_Sector(t,regi,entyFe,sector)=0; - p_FEPrice_by_EmiMkt(t,regi,entyFe,emiMkt)=0; - p_FEPrice_by_FE(t,regi,entyFe)=0; + p_FEPrice_by_Sector_EmiMkt(t,regi,entyFe,sector,emiMkt) = 0; + pm_FEPrice_by_SE_Sector(t,regi,entySe,entyFe,sector) = 0; + p_FEPrice_by_SE_EmiMkt(t,regi,entySe,entyFe,emiMkt) = 0; + p_FEPrice_by_SE(t,regi,entySe,entyFe) = 0; + p_FEPrice_by_Sector(t,regi,entyFe,sector) = 0; + p_FEPrice_by_EmiMkt(t,regi,entyFe,emiMkt) = 0; + p_FEPrice_by_FE(t,regi,entyFe) = 0; *** lower level marginal price is equal to non-zero, non-eps minimal price at higher level loop(entySe2, diff --git a/modules/37_industry/fixed_shares/datainput.gms b/modules/37_industry/fixed_shares/datainput.gms index 0c916cf2d..cb8a7e6fb 100644 --- a/modules/37_industry/fixed_shares/datainput.gms +++ b/modules/37_industry/fixed_shares/datainput.gms @@ -61,7 +61,7 @@ $offdelim $include "./modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms"; $IFTHEN.Industry_CCS_markup not "%cm_Industry_CCS_markup%" == "off" - pm_abatparam_Ind(ttot,regi,all_enty,steps)$pm_abatparam_Ind(ttot,regi,all_enty,steps) = (1/%cm_Industry_CCS_markup%)*pm_abatparam_Ind(ttot,regi,all_enty,steps); + pm_abatparam_Ind(ttot,regi,all_enty,steps)$pm_abatparam_Ind(ttot,regi,all_enty,steps) = (1/%cm_Industry_CCS_markup%)*pm_abatparam_Ind(ttot,regi,all_enty,steps); $ENDIF.Industry_CCS_markup *** fill in share of other industry sector From f849bde4bf8b83e2931c6dcb667c33c65767091b Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Wed, 15 May 2024 15:45:28 +0200 Subject: [PATCH 06/25] cleaning --- modules/21_tax/on/datainput.gms | 4 ++-- modules/21_tax/on/equations.gms | 2 +- modules/21_tax/on/postsolve.gms | 2 +- modules/21_tax/on/presolve.gms | 2 +- modules/32_power/DTcoup/datainput.gms | 13 ------------- modules/32_power/IntC/datainput.gms | 13 ------------- 6 files changed, 5 insertions(+), 31 deletions(-) diff --git a/modules/21_tax/on/datainput.gms b/modules/21_tax/on/datainput.gms index 98e7dc60c..5b82b6bf1 100644 --- a/modules/21_tax/on/datainput.gms +++ b/modules/21_tax/on/datainput.gms @@ -94,10 +94,10 @@ p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.5; ***JaS* Introduces inconvenience costs as taxes for the transformation of primary to secondary energy types ***JaS* Taxes are given in USD(2005) per GJ *cb* to be exchanged for file with values if needed -p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005)=0.000000; +p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005) = 0.000000; *** description: Taxes/subsidies are given in USD(2005) per GJ *** unit: USD(2005) per GJ -p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005)=0.000000; +p21_tau_pe2se_inconv(ttot,regi,te)$(ttot.val ge 2005) = 0.000000; ***cb20110923 rescaling of PE2SE parameters from $/GJ to trillion $ / TWa diff --git a/modules/21_tax/on/equations.gms b/modules/21_tax/on/equations.gms index d6811b0a5..4feacbb48 100644 --- a/modules/21_tax/on/equations.gms +++ b/modules/21_tax/on/equations.gms @@ -287,7 +287,7 @@ q21_taxrevFlex(t,regi)$( t.val ge max(2010, cm_startyear) ) .. !! vm_flexAdj is electricity price reduction/increases for flexible/ !! inflexible technologies change sign such that flexible technologies !! get subsidy - -vm_flexAdj(t,regi,te) + - vm_flexAdj(t,regi,te) * vm_demSe(t,regi,enty,enty2,te) ) - p21_taxrevFlex0(t,regi) diff --git a/modules/21_tax/on/postsolve.gms b/modules/21_tax/on/postsolve.gms index 3a5015b37..da4f327a8 100644 --- a/modules/21_tax/on/postsolve.gms +++ b/modules/21_tax/on/postsolve.gms @@ -48,7 +48,7 @@ p21_taxrevBio0(ttot,regi) = v21_tau_bio.l(ttot) * vm_pebiolc_price.l(ttot,regi) p21_implicitDiscRate0(ttot,regi) = sum(ppfKap(in), p21_implicitDiscRateMarg(ttot,regi,in) * vm_cesIO.l(ttot,regi,in) ); p21_taxemiMkt0(ttot,regi,emiMkt) = pm_taxemiMkt(ttot,regi,emiMkt) * vm_co2eqMkt.l(ttot,regi,emiMkt); p21_taxrevFlex0(ttot,regi) = sum(en2en(enty,enty2,te)$(teFlexTax(te)), - -vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); + - vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); p21_taxrevImport0(ttot,regi,tradePe,tax_import_type_21) = p21_tau_Import(ttot,regi,tradePe,tax_import_type_21)$sameas(tax_import_type_21, "worldPricemarkup") * pm_pvp(ttot,tradePe) / pm_pvp(ttot,"good") * vm_Mport.l(ttot,regi,tradePe)+ p21_tau_Import(ttot, regi, tradePe, tax_import_type_21)$sameas(tax_import_type_21, "CO2taxmarkup") * pm_taxCO2eqSum(ttot,regi) * pm_cintraw(tradePe) * vm_Mport.l(ttot,regi,tradePe)+ diff --git a/modules/21_tax/on/presolve.gms b/modules/21_tax/on/presolve.gms index 37b204f93..96d209119 100644 --- a/modules/21_tax/on/presolve.gms +++ b/modules/21_tax/on/presolve.gms @@ -47,7 +47,7 @@ p21_taxrevBio0(ttot,regi) = v21_tau_bio.l(ttot) * vm_pebiolc_price.l(ttot,regi) p21_implicitDiscRate0(ttot,regi) = sum(ppfKap(in), p21_implicitDiscRateMarg(ttot,regi,in) * vm_cesIO.l(ttot,regi,in) ); p21_taxemiMkt0(ttot,regi,emiMkt) = pm_taxemiMkt(ttot,regi,emiMkt) * vm_co2eqMkt.l(ttot,regi,emiMkt); p21_taxrevFlex0(ttot,regi) = sum(en2en(enty,enty2,te)$(teFlexTax(te)), - -vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); + - vm_flexAdj.l(ttot,regi,te) * vm_demSe.l(ttot,regi,enty,enty2,te)); p21_taxrevImport0(ttot,regi,tradePe,tax_import_type_21) = p21_tau_Import(ttot,regi,tradePe,tax_import_type_21)$sameas(tax_import_type_21, "worldPricemarkup") * pm_pvp(ttot,tradePe) / pm_pvp(ttot,"good") * vm_Mport.l(ttot,regi,tradePe)+ p21_tau_Import(ttot, regi, tradePe, tax_import_type_21)$sameas(tax_import_type_21, "CO2taxmarkup") * pm_taxCO2eqSum(ttot,regi) * pm_cintraw(tradePe) * vm_Mport.l(ttot,regi,tradePe)+ p21_tau_Import(ttot, regi, tradePe, tax_import_type_21)$sameas(tax_import_type_21, "avCO2taxmarkup") * max(pm_taxCO2eqSum(ttot,regi), sum(regi2, pm_taxCO2eqSum(ttot,regi2))/(card(regi2))) * pm_cintraw(tradePe) * vm_Mport.l(ttot,regi,tradePe); diff --git a/modules/32_power/DTcoup/datainput.gms b/modules/32_power/DTcoup/datainput.gms index 9f27b92e4..19708b906 100644 --- a/modules/32_power/DTcoup/datainput.gms +++ b/modules/32_power/DTcoup/datainput.gms @@ -72,19 +72,6 @@ $ENDIF.WindOff p32_storageCap(te,char) = f32_storageCap(char,te); display p32_storageCap; -$ontext -parameter p32_flex_maxdiscount(all_regi,all_te) "maximum electricity price discount for flexible technologies reached at high VRE shares" -/ -$ondelim -$include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" -$offdelim -/ -; -*** convert from USD2015/MWh to trUSD2017/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2017 * 1e-12; -display p32_flex_maxdiscount; -$offtext - *** initialize p32_PriceDurSlope parameter p32_PriceDurSlope(regi,"elh2") = cm_PriceDurSlope_elh2; diff --git a/modules/32_power/IntC/datainput.gms b/modules/32_power/IntC/datainput.gms index 3d84134e9..b2b1e493e 100644 --- a/modules/32_power/IntC/datainput.gms +++ b/modules/32_power/IntC/datainput.gms @@ -83,19 +83,6 @@ p32_shThresholdTotVREAddIntCost(t)$(t.val > 2045) = 95; p32_FactorAddIntCostTotVRE = 1.5; -$ontext -parameter p32_flex_maxdiscount(all_regi,all_te) "maximum electricity price discount for flexible technologies reached at high VRE shares" -/ -$ondelim -$include "./modules/32_power/IntC/input/p32_flex_maxdiscount.cs4r" -$offdelim -/ -; -*** convert from USD2015/MWh to trUSD2017/TWa -p32_flex_maxdiscount(regi,te) = p32_flex_maxdiscount(regi,te) * sm_TWa_2_MWh * s_D2015_2_D2017 * 1e-12; -display p32_flex_maxdiscount; -$offtext - *** Flexibility Tax Parameter *** Both flexibility tax parameters are based on a regression analysis with hourly dispatch data from high-VRE scenarios of the Langfristszenarien From 5898f4c15a53047ae9f7f4ebe5a7e667d102150a Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Wed, 15 May 2024 17:14:44 +0200 Subject: [PATCH 07/25] convert p02_inconvpen_lap, p37_priceMat and p21_tau_pe2se_tax to $US2017 --- core/declarations.gms | 6 ++++-- modules/02_welfare/ineqLognormal/datainput.gms | 18 +++++++++--------- modules/02_welfare/utilitarian/datainput.gms | 16 ++++++++-------- modules/21_tax/on/datainput.gms | 18 +++++++++--------- modules/37_industry/subsectors/datainput.gms | 14 +++++++------- .../37_industry/subsectors/declarations.gms | 2 +- 6 files changed, 38 insertions(+), 36 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index a9d0b85d9..549741be3 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -590,8 +590,10 @@ sm_tgch4_2_pgc "conversion factor 100-yr s_MtCH4_2_TWa "Energy content of methane. MtCH4 --> TWa: 1 MtCH4 = 1.23 * 10^6 toe * 42 GJ/toe * 10^-9 EJ/GJ * 1 TWa/31.536 EJ = 0.001638 TWa (BP statistical review)" /0.001638/ -s_D2015_2_D2017 "Convert $2015 to $2017" /1.0292/ -s_D2005_2_D2017 "Convert $2005 to $2017" /1.231/ +s_D2015_2_D2017 "Convert $2015 to $2017" /1.0292/ +s_D2005_2_D2017 "Convert $2005 to $2017" /1.231/ +s_D2020_2_D2017 "Convert $2020 to $2017" /0.9469/ +s_EURO2023_2_D2017 "Convert EURO 2023 to $2017" /0.8915/ sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ diff --git a/modules/02_welfare/ineqLognormal/datainput.gms b/modules/02_welfare/ineqLognormal/datainput.gms index 6ec94cae5..77b270809 100644 --- a/modules/02_welfare/ineqLognormal/datainput.gms +++ b/modules/02_welfare/ineqLognormal/datainput.gms @@ -11,15 +11,15 @@ $if %cm_less_TS% == "on" pm_welf("2060") = 0.9; *RP* 2012-03-06: Inconvenience costs on seprod $IFTHEN.INCONV %cm_INCONV_PENALTY% == "on" -p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = 1.0; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects +p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects *' Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel -p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = 0.9; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = 0.9; !! +p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * 4.3 * 1E-4; !! this is now equivalent to 1$/GJ at 1000$/per Capita in the welfare logarithm p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * (1/sm_giga_2_non) / sm_GJ_2_TWa; !! conversion util/(GJ/cap) -> util/(TWa/Gcap) *RP* these values are all calculated on seprod level. @@ -27,7 +27,7 @@ display p02_inconvpen_lap; $ENDIF.INCONV *BS* 2020-03-12: additional inputs for inequality -* To Do: rename file, then also in "files" and moinput::fullREMIND.R +*** To Do: rename file, then also in "files" and moinput::fullREMIND.R parameter f02_ineqTheil(tall,all_regi,all_GDPscen) "Gini data" / $ondelim diff --git a/modules/02_welfare/utilitarian/datainput.gms b/modules/02_welfare/utilitarian/datainput.gms index d09cc1160..05ba0e18c 100644 --- a/modules/02_welfare/utilitarian/datainput.gms +++ b/modules/02_welfare/utilitarian/datainput.gms @@ -11,15 +11,15 @@ pm_welf("2060") = 0.9; *RP* 2012-03-06: Inconvenience costs on seprod $IFTHEN.INCONV %cm_INCONV_PENALTY% == "on" -p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = 1.0; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects +p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects *' Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel -p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = 0.9; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = 0.9; !! -p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = 0.9; !! +p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * 4.3 * 1E-4; !! this is now equivalent to 1$/GJ at 1000$/per Capita in the welfare logarithm p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * (1/sm_giga_2_non) / sm_GJ_2_TWa; !! conversion util/(GJ/cap) -> util/(TWa/Gcap) *RP* these values are all calculated on seprod level. diff --git a/modules/21_tax/on/datainput.gms b/modules/21_tax/on/datainput.gms index 5b82b6bf1..b8298895b 100644 --- a/modules/21_tax/on/datainput.gms +++ b/modules/21_tax/on/datainput.gms @@ -81,15 +81,15 @@ p21_tau_pe2se_inconv(tall,regi,te) = 0; p21_tau_pe2se_sub(tall,regi,te)= 0; *RP* FILE changed by hand after introduction of SO2 taxes and inconvenience penalties on 2012-03-08 -*GL* Values try to account for excessive water use, further pollution -*GL* Taxes are given in USD(2005) per GJ -p21_tau_pe2se_tax(ttot,regi,"igcc")$(ttot.val ge 2005) = 0.25; -p21_tau_pe2se_tax(ttot,regi,"igccc")$(ttot.val ge 2005) = 0.25; -p21_tau_pe2se_tax(ttot,regi,"coalftrec")$(ttot.val ge 2005) = 1.0; -p21_tau_pe2se_tax(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = 1.0; -p21_tau_pe2se_tax(ttot,regi,"coalh2")$(ttot.val ge 2005) = 0.5; -p21_tau_pe2se_tax(ttot,regi,"coalh2c")$(ttot.val ge 2005) = 0.5; -p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = 0.5; +*** Values try to account for excessive water use, further pollution +*** Taxes are given in USD(2005) and converted to USD(2017) per GJ +p21_tau_pe2se_tax(ttot,regi,"igcc")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; +p21_tau_pe2se_tax(ttot,regi,"igccc")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; +p21_tau_pe2se_tax(ttot,regi,"coalftrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; +p21_tau_pe2se_tax(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; +p21_tau_pe2se_tax(ttot,regi,"coalh2")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"coalh2c")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; ***JaS* Introduces inconvenience costs as taxes for the transformation of primary to secondary energy types ***JaS* Taxes are given in USD(2005) per GJ diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index fed832bfd..fb32981e3 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -657,13 +657,13 @@ $endif.cm_subsec_model_steel p37_priceMat(all_enty) = 0.; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! IEA STeel Roadmap Fig 1.3 Caption: Scrap price 200-300 $/t -!! => take 250 $/t, inflation 2005 --> 2020 / 1.33 -p37_priceMat("eafscrap") = 0.188; -p37_priceMat("bofscrap") = 0.188; -!! Agora KSV-Rechner: 114 €/tSteel / (1.4 2005$/2023€) / (tn$ /bn t) -p37_priceMat("ironore") = 0.081; -!! Agora KSV-Rechner: 154 €/tSteel / (1.4 2005$/2023€) / (tn$ /bn t) -p37_priceMat("dripell") = 0.110; +!! => take 250 $/t, unit 2020$US +p37_priceMat("eafscrap") = s_D2020_2_D2017 * 0.250 ; +p37_priceMat("bofscrap") = s_D2020_2_D2017 * 0.250; +!! Agora KSV-Rechner: 114 €2023/tSteel / (tn$ /bn t) +p37_priceMat("ironore") = s_EURO2023_2_D2017 * 0.114; +!! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) +p37_priceMat("dripell") = s_EURO2023_2_D2017 * 0.154; $endif.cm_subsec_model_steel *** -------------------------------- diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 03be8b55a..9897d3637 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -31,7 +31,7 @@ Parameters p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree [Gt/Gt]. Trivial if just one material per UE, as in steel" p37_captureRate(all_te) "Capture rate of CCS technology" p37_selfCaptureRate(all_te) "Share of emissions from fossil fuels used for a CCS process which are captured by the CCS process itself" - p37_priceMat(all_enty) "Prices of external material input [2005$/kg] = [trn2005$/Gt]" + p37_priceMat(all_enty) "Prices of external material input [US$/kg] = [trn$US/Gt]" p37_chemicals_feedstock_share(ttot,all_regi) "minimum share of feso/feli/fega in total chemicals FE input [0-1]" p37_FeedstockCarbonContent(ttot,all_regi,all_enty) "carbon content of feedstocks [GtC/TWa]" From ab814588b9dc04730dcf419ec28ca4894d91fee4 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Fri, 17 May 2024 08:56:23 +0200 Subject: [PATCH 08/25] convert p35_esCapCost, exogenousFEprices and exogenousPEprices from US$2005 to US$2017 --- core/presolve.gms | 8 ++++---- modules/35_transport/edge_esm/presolve.gms | 3 ++- modules/47_regipol/regiCarbonPrice/datainput.gms | 6 ++++-- 3 files changed, 10 insertions(+), 7 deletions(-) diff --git a/core/presolve.gms b/core/presolve.gms index 312c3f52a..2973ef3db 100644 --- a/core/presolve.gms +++ b/core/presolve.gms @@ -346,8 +346,8 @@ p_macLevFree(ttot,regi,enty)$( ttot.val gt 2005 ) $IFTHEN.scaleEmiHist %c_scaleEmiHistorical% == "on" -**p_macLevFree(ttot,regi,emiMacMagpie(enty))=0; -* Set minimum abatment levels based on historical emissions +*** p_macLevFree(ttot,regi,emiMacMagpie(enty))=0; +*** Set minimum abatment levels based on historical emissions p_macLevFree("2010",regi,enty)$(p_histEmiSector("2005",regi,"ch4","agriculture","process") AND (sameas(enty,"ch4rice") OR sameas(enty,"ch4animals") OR sameas(enty,"ch4anmlwst"))) = max( 0, 1 - (p_histEmiSector("2010",regi,"ch4","agriculture","process")+p_histEmiSector("2010",regi,"ch4","lulucf","process"))/(p_histEmiSector("2005",regi,"ch4","agriculture","process")+p_histEmiSector("2005",regi,"ch4","lulucf","process"))); p_macLevFree(ttot,regi,enty)$((ttot.val ge 2015) AND p_histEmiSector("2005",regi,"ch4","agriculture","process") AND (sameas(enty,"ch4rice") OR sameas(enty,"ch4animals") OR sameas(enty,"ch4anmlwst"))) = max( 0, 1 - (p_histEmiSector("2015",regi,"ch4","agriculture","process")+p_histEmiSector("2015",regi,"ch4","lulucf","process"))/(p_histEmiSector("2005",regi,"ch4","agriculture","process")+p_histEmiSector("2005",regi,"ch4","lulucf","process")) ); p_macLevFree("2010",regi,enty)$(p_histEmiSector("2005",regi,"ch4","agriculture","process") AND (sameas(enty,"n2ofertin") OR sameas(enty,"n2ofertcr") OR sameas(enty,"n2oanwstc") OR sameas(enty,"n2oanwstm") OR sameas(enty,"n2oanwstp"))) = max( 0, 1 - (p_histEmiSector("2010",regi,"n2o","agriculture","process")+p_histEmiSector("2010",regi,"n2o","lulucf","process"))/(p_histEmiSector("2005",regi,"n2o","agriculture","process")+p_histEmiSector("2005",regi,"n2o","lulucf","process")) ); @@ -373,7 +373,7 @@ pm_macAbatLev(ttot,regi,enty)$( ttot.val gt 2015 ) pm_macAbat(ttot,regi,enty,steps) ), p_macLevFree(ttot,regi,enty) - ); + ); pm_macAbatLev("2015",regi,"co2luc") = 0; pm_macAbatLev("2020",regi,"co2luc") = 0; @@ -391,7 +391,7 @@ loop (ttot$( ttot.val ge 2015 ), Display "computed abatement levels at carbon price", pm_macAbatLev; - + ***-------------------------------------- *** MAC costs ***-------------------------------------- diff --git a/modules/35_transport/edge_esm/presolve.gms b/modules/35_transport/edge_esm/presolve.gms index e5b7a1ae0..e084e5676 100644 --- a/modules/35_transport/edge_esm/presolve.gms +++ b/modules/35_transport/edge_esm/presolve.gms @@ -13,7 +13,8 @@ if( (ord(iteration) le 25 and ord(iteration) ge cm_startIter_EDGET and (mod(ord( Execute "Rscript -e 'edgeTransport::toolIterativeEDGETransport()'"; Execute_Loadpoint 'p35_esCapCost' p35_esCapCost; - pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val ge cm_startyear AND t.val le 2100) = p35_esCapCost(t,regi,"%cm_GDPscen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); + !! convert transport costs from US$2005 to US$2017 + pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val ge cm_startyear AND t.val le 2100) = s_D2005_2_D2017 * p35_esCapCost(t,regi,"%cm_GDPscen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); !! load FE-to-ES results from EDGE-Transport into auxilliary parameter Execute_Loadpoint "p35_fe2es", p35_fe2es_aux = p35_fe2es; diff --git a/modules/47_regipol/regiCarbonPrice/datainput.gms b/modules/47_regipol/regiCarbonPrice/datainput.gms index d07bec00c..77f195875 100644 --- a/modules/47_regipol/regiCarbonPrice/datainput.gms +++ b/modules/47_regipol/regiCarbonPrice/datainput.gms @@ -140,7 +140,8 @@ $offdelim loop((t,ext_regi,entyFe,entySe,sector)$f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t), loop(regi$regi_groupExt(ext_regi,regi), - pm_implicitPriceTarget(t,regi,entyFe,entySe,sector)=f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t)*sm_DpGJ_2_TDpTWa; + !! convert data from US$2005 to US$2017 + pm_implicitPriceTarget(t,regi,entyFe,entySe,sector) = s_D2005_2_D2017 * f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t)*sm_DpGJ_2_TDpTWa; ); ); @@ -174,7 +175,8 @@ $offdelim loop((t,ext_regi,entyPe)$f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t), loop(regi$regi_groupExt(ext_regi,regi), - pm_implicitPePriceTarget(t,regi,entyPe)=f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t)*sm_DpGJ_2_TDpTWa; + !! convert data from US$2005 to US$2017 + pm_implicitPePriceTarget(t,regi,entyPe) = s_D2005_2_D2017 * f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t)*sm_DpGJ_2_TDpTWa; ); ); From 55b63e1ebf5c3dfe3ae06477168458d3d056bddc Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Fri, 31 May 2024 09:34:10 +0200 Subject: [PATCH 09/25] delete p21_tau_xpres_tax, reorder core/datainput.gms to have teh right conversion factor for inco0 --- core/datainput.gms | 79 +++++++++++++----------------- modules/21_tax/on/datainput.gms | 15 +----- modules/21_tax/on/declarations.gms | 4 -- modules/21_tax/on/equations.gms | 9 ---- modules/21_tax/on/input/files | 2 +- modules/21_tax/on/postsolve.gms | 2 - modules/21_tax/on/presolve.gms | 1 - 7 files changed, 37 insertions(+), 75 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 7f68b1b76..249d0d7fc 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -6,13 +6,13 @@ *** | Contact: remind@pik-potsdam.de *** SOF ./core/datainput.gms -*AJS* technical. initialize parameters so that they are read from gdx +*** technical. initialize parameters so that they are read from gdx vm_co2eq.l(ttot,regi) = 0; vm_emiAll.l(ttot,regi,enty) = 0; vm_emiCO2Sector.l(ttot,all_regi,emi_sectors) = 0; -*AJS* initialize parameter (avoid compilation errors) +*** initialize parameter (avoid compilation errors) *** do this at the start of datainput to prevent accidental overwriting pm_SolNonInfes(regi) = 1; !! assume the starting point came from a feasible solution pm_capCum0(ttot,regi,teLearn)$( (ttot.val ge 2005) and (pm_SolNonInfes(regi) eq 1)) = 0; @@ -21,7 +21,7 @@ pm_globalMeanTemperature(tall) = 0; pm_globalMeanTemperatureZeroed1900(tall) = 0; pm_temperatureImpulseResponseCO2(tall,tall) = 0; -*AL* Initialise to avoid compilation errors in presolve if variable not in input.gdx +*** Initialise to avoid compilation errors in presolve if variable not in input.gdx vm_demFeForEs.L(t,regi,entyFe,esty,teEs) = 0; vm_demFeForEs.L(t,regi,fe2es(entyFe,esty,teEs)) = 0.1; @@ -41,14 +41,12 @@ pm_dt("1900") = 5; pm_dt(ttot)$(ttot.val > 1900) = ttot.val - pm_ttot_val(ttot-1); display pm_ts, pm_dt; - loop(ttot, loop(tall$((ttot.val le tall.val) AND (pm_ttot_val(ttot+1) ge tall.val)), pm_interpolWeight_ttot_tall(tall) = ( p_tall_val(tall) - pm_ttot_val(ttot) ) / ( pm_ttot_val(ttot+1) - pm_ttot_val(ttot) ); ); ); - pm_tall_2_ttot(tall, ttot)$((ttot.val lt tall.val) AND (pm_ttot_val(ttot+1) gt tall.val)) = Yes; pm_ttot_2_tall(ttot,tall)$((ttot.val = tall.val) ) = Yes; @@ -105,14 +103,12 @@ $offdelim ; p_developmentState(tall,all_regi) = f_developmentState(tall,all_regi,"%c_GDPpcScen%"); - *** Load information from BAU run Execute_Loadpoint 'input' vm_cesIO, vm_invMacro; pm_gdp_gdx(ttot,regi) = vm_cesIO.l(ttot,regi,"inco"); p_inv_gdx(ttot,regi) = vm_invMacro.l(ttot,regi,"kap"); - *------------------------------------------------------------------------------------ *------------------------------------------------------------------------------------ *** ESM @@ -132,10 +128,10 @@ pm_shGasLiq_fe_lo(ttot,regi,sector)=0; *------------------------------------------------------------------------------------ -*** Technology data input read-in and manipulation +*** Technology data input read-in and manipulation START *------------------------------------------------------------------------------------ -*** Note: future to be its own module perhaps -*** Note: in module 5 there are more cost manipulation after initial capacities are calculated, be aware those can overwrite your technology values for policy runs if you set them here in the core +*** In module 5 there are more cost manipulation after initial capacities are calculated, +*** be aware those can overwrite your technology values for policy runs if you set them here in the core ***--------------------------------------------------------------------------- *** Reading in and initializing global data ***--------------------------------------------------------------------------- @@ -145,8 +141,9 @@ $include "./core/input/generisdata_tech.prn" $include "./core/input/generisdata_trade.prn" ; -*** CG warning: some of the SSP1 and SSP5 costs are not consistent with the story line (e.g. under SSP1 blue H2 and some fossil fuel CCS technologies have lower costs than in SSP2). This is to be fixed in the future when new SSP storylines are implemented, unclear when (29-1-2024). In the future, SSP1 and SSP5 data should be implemented as switches to avoid errors -*JH* SSP energy technology scenario +*** CG warning: some of the SSP1 and SSP5 costs are not consistent with the story line (e.g. under SSP1 blue H2 and some fossil fuel CCS technologies have lower costs than in SSP2). +*** This is to be fixed in the future when new SSP storylines are implemented, unclear when (29-1-2024). +*** In the future, SSP1 and SSP5 data should be implemented as switches to avoid errors table f_dataglob_SSP1(char,all_te) "Techno-economic assumptions consistent with SSP1" $include "./core/input/generisdata_tech_SSP1.prn" $include "./core/input/generisdata_trade.prn" @@ -157,7 +154,7 @@ $include "./core/input/generisdata_trade.prn" ; $ifthen.WindOff %cm_wind_offshore% == "1" -*CG* set wind offshore, storage and grid to be the same as wind onshore (later should be integrated into input data) +*** set wind offshore, storage and grid to be the same as wind onshore (later should be integrated into input data) *** main difference between onshore and offshore is the difference in f32_factorStorage fm_dataglob(char,"storwindoff") = fm_dataglob(char,"storwind"); fm_dataglob(char,"gridwindoff") = fm_dataglob(char,"gridwind"); @@ -167,17 +164,6 @@ f_dataglob_SSP5(char,"storwindoff") = f_dataglob_SSP5(char,"storwind"); f_dataglob_SSP5(char,"gridwindoff") = f_dataglob_SSP5(char,"gridwind"); $endif.WindOff -***--------------------------------------------------------------------------- -*** Reading in and initializing regional cost data -***--------------------------------------------------------------------------- -parameter p_inco0(ttot,all_regi,all_te) "regionalized technology costs Unit: USD$/KW" -/ -$ondelim -$include "./core/input/p_inco0.cs4r" -$offdelim -/ -; - *** initializing energy service capital pm_esCapCost(tall,all_regi,all_teEs) = 0; @@ -221,7 +207,7 @@ $endif.WindOff display fm_dataglob; -*TD* ccsinje cost scenarios +*** ccsinje cost scenarios *** low estimate: ccsinje cost prior to 03/2024; i.e. ~11 USD/tCO2 in 2025, decreasing to ~7.5USD/tCO2 as of 2035 $if "%cm_ccsinjeCost%" == "low" fm_dataglob("tech_stat","ccsinje") = 2; $if "%cm_ccsinjeCost%" == "low" fm_dataglob("inco0","ccsinje") = 220; @@ -232,21 +218,31 @@ $if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinje") = 550; *** Manipulating global or regional cost technology data - relative value ***--------------------------------------------------------------------------- *** Overwrite default technology cost parameter values based on specific scenario configs -$if not "%cm_incolearn%" == "off" parameter p_new_incolearn(all_te) / %cm_incolearn% /; -$if not "%cm_incolearn%" == "off" fm_dataglob("incolearn",te)$p_new_incolearn(te)=p_new_incolearn(te); -$if not "%cm_inco0Factor%" == "off" parameter p_new_inco0Factor(all_te) / %cm_inco0Factor% /; -$if not "%cm_inco0Factor%" == "off" fm_dataglob("inco0",te)$p_new_inco0Factor(te)=p_new_inco0Factor(te)*fm_dataglob("inco0",te); -$if not "%cm_inco0RegiFactor%" == "off" parameter p_new_inco0RegiFactor(all_te) / %cm_inco0RegiFactor% /; -$if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi,te) and p_new_inco0RegiFactor(te)) = p_new_inco0RegiFactor(te)*p_inco0(ttot,regi,te); -$if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; -$if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te)=p_new_learnRate(te); - +$if not "%cm_incolearn%" == "off" parameter p_new_incolearn(all_te) / %cm_incolearn% /; +$if not "%cm_incolearn%" == "off" fm_dataglob("incolearn",te)$p_new_incolearn(te) = p_new_incolearn(te); +$if not "%cm_inco0Factor%" == "off" parameter p_new_inco0Factor(all_te) / %cm_inco0Factor% /; +$if not "%cm_inco0Factor%" == "off" fm_dataglob("inco0",te)$p_new_inco0Factor(te) = p_new_inco0Factor(te)*fm_dataglob("inco0",te); +$if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; +$if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te)=p_new_learnRate(te); *** generisdata_tech is in $2015. Needs to be converted to $2017 fm_dataglob("inco0",te) = s_D2015_2_D2017 * fm_dataglob("inco0",te); fm_dataglob("incolearn",te) = s_D2015_2_D2017 * fm_dataglob("incolearn",te); fm_dataglob("omv",te) = s_D2015_2_D2017 * fm_dataglob("omv",te); -p_inco0(ttot,regi,te) = s_D2015_2_D2017 * p_inco0(ttot,regi,te); + +***--------------------------------------------------------------------------- +*** Reading in and initializing regional cost data +***--------------------------------------------------------------------------- +parameter p_inco0(ttot,all_regi,all_te) "regionalized technology costs Unit: USD$/KW" +/ +$ondelim +$include "./core/input/p_inco0.cs4r" +$offdelim +/ +; + +$if not "%cm_inco0RegiFactor%" == "off" parameter p_new_inco0RegiFactor(all_te) / %cm_inco0RegiFactor% /; +$if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi,te) and p_new_inco0RegiFactor(te)) = p_new_inco0RegiFactor(te)*p_inco0(ttot,regi,te); *** inco0 (and incolearn) are given in $/kW (or $/(tC/a) for ccs-related tech or $/(t/a) for process-based industry) *** convert to REMIND units, i.e., T$/TW (or T$/(GtC/a) for ccs-related tech or T$/(Gt/a) for process-based industry) @@ -261,7 +257,6 @@ p_inco0(ttot,regi,te) = s_DpKW_2_TDpTW * p_inco0(ttot,regi, fm_dataglob("inco0","csp") = 0.7 * fm_dataglob("inco0","csp"); fm_dataglob("incolearn","csp") = 0.7 * fm_dataglob("incolearn","csp"); - *** -------------------------------------------------------------------------------- *** Regionalize technology investment cost data *** ------------------------------------------------------------------------------- @@ -298,7 +293,6 @@ $endif ) ); - *** nuclear sees 3% higher interest rates during construction time due to higher construction time risk, see "The economic future of nuclear power - A study conducted at The University of Chicago" (2004) loop(te$sameas(te,"tnrs"), p_tkpremused(regi,te) = 1/fm_dataglob("constrTme",te) @@ -313,7 +307,6 @@ $endif display p_tkpremused; *** modify regionalized cost data using cost premium during construction time - pm_data(regi,"inco0",te) = (1 + p_tkpremused(regi,te) ) * pm_data(regi,"inco0",te); pm_data(regi,"incolearn",te) = (1 + p_tkpremused(regi,te) ) * pm_data(regi,"incolearn",te); p_inco0(ttot,regi,teRegTechCosts) = (1 + p_tkpremused(regi,teRegTechCosts) ) * p_inco0(ttot,regi,teRegTechCosts); @@ -324,7 +317,6 @@ fm_dataglob("inco0",te) = (1 + sum(regi, p_tkpremused(regi,te))/sum(regi, *** calculate default floor costs for learning technologies pm_data(regi,"floorcost",teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi,"incolearn",te); - *** In case regionally differentiated investment costs should be used the corresponding entries are revised: $ifthen.REG_techcosts not "%cm_techcosts%" == "GLO" !! cm_techcosts is REG or REG2040 pm_data(regi,"inco0",teRegTechCosts) = p_inco0("2015",regi,teRegTechCosts); @@ -405,7 +397,7 @@ loop (teNoLearn(te), ); display pm_inco0_t; -*FL* regional differentiation and convergence of non-learning technologies costs +*** regional differentiation and convergence of non-learning technologies costs $ifthen.REG2040_techcosts "%cm_techcosts%" == "REG2040" !! cm_techcosts REG2040 *** for 2015-2040, use differentiated costs when available for a specific non-learning technology loop(te$( teNoLearn(te) AND teRegTechCosts(te) ), @@ -450,10 +442,9 @@ $ifthen.REG_techcosts "%cm_techcosts%" == "REG" !! cm_techcosts REG ); $endif.REG_techcosts - -***------------------------------------------------------------------------------------ -*** END of Technology cost data input read-in and manipulation in core -***------------------------------------------------------------------------------------ +*------------------------------------------------------------------------------------ +*** Technology data input read-in and manipulation END +*------------------------------------------------------------------------------------ *** Note: in modules/05_initialCap/on/preloop.gms, there are additional adjustment to investment *** cost in the near term due to calibration of historical energy conversion efficiencies based on *** initial capacities diff --git a/modules/21_tax/on/datainput.gms b/modules/21_tax/on/datainput.gms index 592a77667..ed4b375ee 100644 --- a/modules/21_tax/on/datainput.gms +++ b/modules/21_tax/on/datainput.gms @@ -104,20 +104,7 @@ $ifThen.SEtaxRampUpParam not "%cm_SEtaxRampUpParam%" == "off" ); $endif.SEtaxRampUpParam -***cb 20110923 load paths for ressource export taxes -***cb* file for resource export taxes, not used in default settings -Parameter p21_tau_xpres_tax(tall,all_regi,all_enty) "tax path for ressource export" - / -$ondelim -$include "./modules/21_tax/on/input/p21_tau_xpres_tax.cs4r" -$offdelim - / ; -*** converted to T$/TWyr -p21_tau_xpres_tax(ttot,regi,"peoil")$(ttot.val ge 2005) = p21_tau_xpres_tax(ttot,regi,"peoil") * sm_DpGJ_2_TDpTWa; -*LB* use 0 for all regions as default -p21_tau_xpres_tax(ttot,regi,all_enty) = 0; - -*JeS for SO2 tax case: tax path in 10^12$/TgS (= 10^6 $/t S) @ GDP/cap of 1000$/cap (value gets scaled by GDP/cap) +***JeS for SO2 tax case: tax path in 10^12$/TgS (= 10^6 $/t S) @ GDP/cap of 1000$/cap (value gets scaled by GDP/cap) if((cm_so2tax_scen eq 0), s21_so2_tax_2010=0.0; elseif(cm_so2tax_scen eq 1), diff --git a/modules/21_tax/on/declarations.gms b/modules/21_tax/on/declarations.gms index 60b55d066..5e0bbc789 100644 --- a/modules/21_tax/on/declarations.gms +++ b/modules/21_tax/on/declarations.gms @@ -31,7 +31,6 @@ p21_taxrevFE0(ttot,all_regi) "reference level va p21_taxrevCES0(ttot,all_regi,all_in) "reference level value of ces production tax" p21_taxrevResEx0(ttot,all_regi) "reference level value of resource extraction tax" p21_taxrevPE2SE0(ttot,all_regi) "reference level value of pe2se technologies tax" -p21_taxrevXport0(ttot,all_regi) "reference level value of exports tax" p21_taxrevSO20(ttot,all_regi) "reference level value of SO2 tax" p21_taxrevBio0(ttot,all_regi) "reference level value of bioenergy tax" p21_implicitDiscRate0(ttot,all_regi) "reference level value of implicit tax on energy efficient capital" @@ -49,7 +48,6 @@ p21_taxrevFE_iter(iteration,ttot,all_regi) "reference level valu p21_taxrevCES_iter(iteration,ttot,all_regi,all_in) "reference level value of ces production tax revenue" p21_taxrevResEx_iter(iteration,ttot,all_regi) "reference level value of resource extraction tax revenue" p21_taxrevPE2SE_iter(iteration,ttot,all_regi) "reference level value of pe2se technologies tax revenue" -p21_taxrevXport_iter(iteration,ttot,all_regi) "reference level value of exports tax revenue" p21_taxrevSO2_iter(iteration,ttot,all_regi) "reference level value of SO2 tax revenue" p21_taxrevBio_iter(iteration,ttot,all_regi) "reference level value of bioenergy tax revenue" p21_implicitDiscRate_iter(iteration,ttot,all_regi) "reference level value of implicit tax on energy efficient capital" @@ -116,7 +114,6 @@ v21_taxrevFE(ttot,all_regi) "tax on final energy (?)" v21_taxrevCES(ttot,all_regi,all_in) "tax on ces production function" v21_taxrevResEx(ttot,all_regi) "tax on resource extraction (?)" v21_taxrevPE2SE(ttot,all_regi) "tax on pe2se technologies (?)" -v21_taxrevXport(ttot,all_regi) "tax on exports (?)" v21_taxrevSO2(ttot,all_regi) "tax on SO2 (to reflect health impacts)" v21_taxrevBio(ttot,all_regi) "tax on bioenergy (to reflect sustainability constraints on bioenergy production)" v21_taxrevFlex(ttot,all_regi) "tax on technologies with flexible or inflexible electricity input" @@ -147,7 +144,6 @@ q21_taxrevFE(ttot,all_regi) "calculation of tax on final ene q21_taxrevCES(ttot,all_regi,all_in) "calculation of tax on ces production function" q21_taxrevResEx(ttot,all_regi) "calculation of tax on resource extraction" q21_taxrevPE2SE(ttot,all_regi) "calculation of tax on pe2se technologies" -q21_taxrevXport(ttot,all_regi) "calculation of tax on exports" q21_taxrevSO2(ttot,all_regi) "calculation of tax on SO2" q21_taxrevBio(ttot,all_regi) "calculation of tax on bioenergy" q21_taxrevFlex(ttot,all_regi) "tax on technologies with flexible or inflexible electricity input" diff --git a/modules/21_tax/on/equations.gms b/modules/21_tax/on/equations.gms index ed3d6ac74..60d1fc56b 100644 --- a/modules/21_tax/on/equations.gms +++ b/modules/21_tax/on/equations.gms @@ -43,7 +43,6 @@ q21_taxrev(t,regi)$(t.val ge max(2010,cm_startyear)).. + sum(in, v21_taxrevCES(t,regi,in)) + v21_taxrevResEx(t,regi) + v21_taxrevPE2SE(t,regi) - + v21_taxrevXport(t,regi) + v21_taxrevSO2(t,regi) + v21_taxrevBio(t,regi) - vm_costSubsidizeLearning(t,regi) @@ -191,14 +190,6 @@ v21_taxrevPE2SE(t,regi) ) - p21_taxrevPE2SE0(t,regi); -***--------------------------------------------------------------------------- -*' Calculation of export taxes: tax rate times export volume -*' Documentation of overall tax approach is above at q21_taxrev. -***--------------------------------------------------------------------------- -q21_taxrevXport(t,regi)$(t.val ge max(2010,cm_startyear)).. -v21_taxrevXport(t,regi) =e= SUM(tradePe(enty), p21_tau_xpres_tax(t,regi,enty) * vm_Xport(t,regi,enty)) - - p21_taxrevXport0(t,regi); - ***--------------------------------------------------------------------------- *' Calculation of so2 tax: tax rate times emissions *' Documentation of overall tax approach is above at q21_taxrev. diff --git a/modules/21_tax/on/input/files b/modules/21_tax/on/input/files index 14cf390f2..5bb4a6ad7 100644 --- a/modules/21_tax/on/input/files +++ b/modules/21_tax/on/input/files @@ -5,4 +5,4 @@ f21_prop_fe_sub.cs4r f21_tau_pe_sub.cs4r f21_max_pe_sub.cs4r f21_tax_convergence.cs4r -p21_tau_xpres_tax.cs4r + diff --git a/modules/21_tax/on/postsolve.gms b/modules/21_tax/on/postsolve.gms index 9b8fdd88d..7ef30a442 100644 --- a/modules/21_tax/on/postsolve.gms +++ b/modules/21_tax/on/postsolve.gms @@ -41,7 +41,6 @@ p21_taxrevCES0(ttot,regi,in) = pm_tau_ces_tax(ttot,regi,in) * vm_cesIO.l(ttot,re p21_taxrevPE2SE0(ttot,regi) = sum(pe2se(enty,enty2,te), (p21_tau_pe2se_tax(ttot,regi,te) + p21_tau_pe2se_sub(ttot,regi,te)) * vm_prodSe.l(ttot,regi,enty,enty2,te) ); -p21_taxrevXport0(ttot,regi) = sum(tradePe(enty), p21_tau_xpres_tax(ttot,regi,enty) * vm_Xport.l(ttot,regi,enty)); p21_taxrevSO20(ttot,regi) = p21_tau_so2_tax(ttot,regi) * vm_emiTe.l(ttot,regi,"so2"); p21_taxrevBio0(ttot,regi) = v21_tau_bio.l(ttot) * vm_pebiolc_price.l(ttot,regi) * vm_fuExtr.l(ttot,regi,"pebiolc","1") + p21_bio_EF(ttot,regi) * pm_taxCO2eq(ttot,regi) * (vm_fuExtr.l(ttot,regi,"pebiolc","1") - (vm_Xport.l(ttot,regi,"pebiolc")-vm_Mport.l(ttot,regi,"pebiolc"))); @@ -72,7 +71,6 @@ p21_taxrevResEx_iter(iteration+1,ttot,regi) = v21_taxrevResEx.l(ttot,regi); p21_taxrevPE_iter(iteration+1,ttot,regi,entyPe) = v21_taxrevPE.l(ttot,regi,entyPe); p21_taxrevCES_iter(iteration+1,ttot,regi,in) = v21_taxrevCES.l(ttot,regi,in); p21_taxrevPE2SE_iter(iteration+1,ttot,regi) = v21_taxrevPE2SE.l(ttot,regi); -p21_taxrevXport_iter(iteration+1,ttot,regi) = v21_taxrevXport.l(ttot,regi); p21_taxrevSO2_iter(iteration+1,ttot,regi) = v21_taxrevSO2.l(ttot,regi); p21_taxrevBio_iter(iteration+1,ttot,regi) = v21_taxrevBio.l(ttot,regi); p21_implicitDiscRate_iter(iteration+1,ttot,regi) = v21_implicitDiscRate.l(ttot,regi); diff --git a/modules/21_tax/on/presolve.gms b/modules/21_tax/on/presolve.gms index 885c9a3a2..ddb3cd2c5 100644 --- a/modules/21_tax/on/presolve.gms +++ b/modules/21_tax/on/presolve.gms @@ -40,7 +40,6 @@ p21_taxrevCES0(ttot,regi,in) = pm_tau_ces_tax(ttot,regi,in) * vm_cesIO.l(ttot,re p21_taxrevPE2SE0(ttot,regi) = sum(pe2se(enty,enty2,te), (p21_tau_pe2se_tax(ttot,regi,te) + p21_tau_pe2se_sub(ttot,regi,te)) * vm_prodSe.l(ttot,regi,enty,enty2,te) ); -p21_taxrevXport0(ttot,regi) = sum(tradePe(enty), p21_tau_xpres_tax(ttot,regi,enty) * vm_Xport.l(ttot,regi,enty)); p21_taxrevSO20(ttot,regi) = p21_tau_so2_tax(ttot,regi) * vm_emiTe.l(ttot,regi,"so2"); p21_taxrevBio0(ttot,regi) = v21_tau_bio.l(ttot) * vm_pebiolc_price.l(ttot,regi) * vm_fuExtr.l(ttot,regi,"pebiolc","1") + p21_bio_EF(ttot,regi) * pm_taxCO2eq(ttot,regi) * (vm_fuExtr.l(ttot,regi,"pebiolc","1") - (vm_Xport.l(ttot,regi,"pebiolc")-vm_Mport.l(ttot,regi,"pebiolc"))); From 38c7c7d6d8559daece7a6d82fd36dfd80f4952d9 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Thu, 29 Aug 2024 14:35:39 +0200 Subject: [PATCH 10/25] convert MAC step sm_dmac from $US2005 to US$2017 --- core/datainput.gms | 26 +++++++++---------- core/declarations.gms | 17 +++--------- .../fixed_shares/input/pm_abatparam_Ind.gms | 26 +++++++++---------- 3 files changed, 29 insertions(+), 40 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 6cca5d518..01b0faa80 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -222,9 +222,9 @@ $if "%cm_ccsinjeCost%" == "high" fm_dataglob("inco0","ccsinje") = 550; $if not "%cm_incolearn%" == "off" parameter p_new_incolearn(all_te) / %cm_incolearn% /; $if not "%cm_incolearn%" == "off" fm_dataglob("incolearn",te)$p_new_incolearn(te) = p_new_incolearn(te); $if not "%cm_inco0Factor%" == "off" parameter p_new_inco0Factor(all_te) / %cm_inco0Factor% /; -$if not "%cm_inco0Factor%" == "off" fm_dataglob("inco0",te)$p_new_inco0Factor(te) = p_new_inco0Factor(te)*fm_dataglob("inco0",te); +$if not "%cm_inco0Factor%" == "off" fm_dataglob("inco0",te)$p_new_inco0Factor(te) = p_new_inco0Factor(te) * fm_dataglob("inco0",te); $if not "%cm_learnRate%" == "off" parameter p_new_learnRate(all_te) / %cm_learnRate% /; -$if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te)=p_new_learnRate(te); +$if not "%cm_learnRate%" == "off" fm_dataglob("learn",te)$p_new_learnRate(te) = p_new_learnRate(te); *** generisdata_tech is in $2015. Needs to be converted to $2017 fm_dataglob("inco0",te) = s_D2015_2_D2017 * fm_dataglob("inco0",te); @@ -243,7 +243,7 @@ $offdelim ; $if not "%cm_inco0RegiFactor%" == "off" parameter p_new_inco0RegiFactor(all_te) / %cm_inco0RegiFactor% /; -$if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi,te) and p_new_inco0RegiFactor(te)) = p_new_inco0RegiFactor(te)*p_inco0(ttot,regi,te); +$if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0(ttot,regi,te) and p_new_inco0RegiFactor(te)) = p_new_inco0RegiFactor(te) * p_inco0(ttot,regi,te); *** inco0 (and incolearn) are given in $/kW (or $/(tC/a) for ccs-related tech or $/(t/a) for process-based industry) *** convert to REMIND units, i.e., T$/TW (or T$/(GtC/a) for ccs-related tech or T$/(Gt/a) for process-based industry) @@ -254,7 +254,7 @@ $if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0 fm_dataglob("inco0","csp") = 0.7 * fm_dataglob("inco0","csp"); fm_dataglob("incolearn","csp") = 0.7 * fm_dataglob("incolearn","csp"); -*KK* adjust costs for oae from USD/GtCaO to USD/GtC +*** adjust costs for oae from USD/GtCaO to USD/GtC fm_dataglob("inco0", "oae_ng") = fm_dataglob("inco0", "oae_ng") / (cm_33_OAE_eff / sm_c_2_co2); fm_dataglob("inco0", "oae_el") = fm_dataglob("inco0", "oae_el") / (cm_33_OAE_eff / sm_c_2_co2); *** -------------------------------------------------------------------------------- @@ -324,24 +324,24 @@ p_oldFloorCostdata(regi,teLearn(te)) = pm_data(regi,"inco0",te) - pm_data(regi," $endif.floorscen *** calculate floor costs for learning technologies if historical price structure prevails $ifthen.floorscen %cm_floorCostScen% == "pricestruc" -** compute maximum tech cost in 2015 for a given tech among regions +*** compute maximum tech cost in 2015 for a given tech among regions p_maxRegTechCost2015(teRegTechCosts) = SMax(regi, p_inco0("2015",regi,teRegTechCosts)); -*take the ratio of the tech cost in 2015 and the maximum cost, and multiply with the global floor to get new floorcost that preserves the price structure +*** take the ratio of the tech cost in 2015 and the maximum cost, and multiply with the global floor to get new floorcost that preserves the price structure pm_data(regi,"floorcost",teLearn(te))$(p_maxRegTechCost2015(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2015",regi,te) / p_maxRegTechCost2015(te); -* for newer data than 2015, use these +*** for newer data than 2015, use these p_maxRegTechCost2020(teRegTechCosts) = SMax(regi, p_inco0("2020",regi,teRegTechCosts)); pm_data(regi,"floorcost",teLearn(te))$(p_maxRegTechCost2020(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2020",regi,te) / p_maxRegTechCost2020(te); -* report the new floor cost data +*** report the new floor cost data p_newFloorCostdata(regi,teLearn(te))$(p_maxRegTechCost2015(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2015",regi,te) / p_maxRegTechCost2015(te); p_newFloorCostdata(regi,teLearn(te))$(p_maxRegTechCost2020(te) ne 0) = p_oldFloorCostdata(regi,te) * p_inco0("2020",regi,te) / p_maxRegTechCost2020(te); $endif.floorscen *** calculate floor costs for learning technologies if there is technology transfer $ifthen.floorscen %cm_floorCostScen% == "techtrans" -** compute maximum income GDP PPP per capita among regions in 2050 +*** compute maximum income GDP PPP per capita among regions in 2050 p_gdppcap2050_PPP(regi) = pm_gdp("2050",regi) / pm_shPPPMER(regi) / pm_pop("2050",regi); p_maxPPP2050 = SMax(regi, p_gdppcap2050_PPP(regi)); -*take the ratio of the PPP income and the maximum income, and multiply with the global floor to get new floorcost that simulates tech transfer where costs are solely dependent on local wages, not on IP rent +*** take the ratio of the PPP income and the maximum income, and multiply with the global floor to get new floorcost that simulates tech transfer where costs are solely dependent on local wages, not on IP rent pm_data(regi,"floorcost",teLearn(te))$(p_maxPPP2050 ne 0) = p_oldFloorCostdata(regi,te) * p_gdppcap2050_PPP(regi) / p_maxPPP2050; p_newFloorCostdata(regi,teLearn(te))$(p_maxPPP2050 ne 0) = p_oldFloorCostdata(regi,te) * p_gdppcap2050_PPP(regi) / p_maxPPP2050; $endif.floorscen @@ -406,7 +406,7 @@ display pm_data; *** end learning parameters *** ------------------------------------------------------------------------------- -*RP* 2012-03-07: Markup for advanced technologies +*** Markup for advanced technologies table p_costMarkupAdvTech(s_statusTe,tall) "Multiplicative investment cost markup for early time periods (until 2030) on advanced technologies (CCS, Hydrogen) that are not modeled through endogenous learning" $include "./core/input/p_costMarkupAdvTech.prn" ; @@ -711,12 +711,12 @@ $endif.WindOff pm_cf(ttot,regi,te) = f_cf(ttot,regi,te); ***pm_cf(ttot,regi,"h2turbVRE") = 0.15; pm_cf(ttot,regi,"elh2VRE") = 0.6; -*short-term fix for new synfuel td technologies +*** short-term fix for new synfuel td technologies pm_cf(ttot,regi,"tdsyngas") = 0.65; pm_cf(ttot,regi,"tdsynhos") = 0.6; pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; -*JD eternal short-term fix for process-based industry +*** eternal short-term fix for process-based industry pm_cf(ttot,regi,"bf") = 0.8; pm_cf(ttot,regi,"bfcc") = 0.8; pm_cf(ttot,regi,"bof") = 0.8; diff --git a/core/declarations.gms b/core/declarations.gms index 78908e79d..ecb1d7f28 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -505,7 +505,7 @@ qm_co2eqCum(all_regi) "cumulate regional emission q_budgetCO2eqGlob "global emission budget balance" q_emiTeDetailMkt(ttot,all_regi,all_enty,all_enty,all_te,all_enty,all_emiMkt) "detailed energy specific emissions per region and market" -q_emiTeMkt(ttot,all_regi,all_enty,all_emiMkt) "total energy-emissions per region and market" +q_emiTeMkt(ttot,all_regi,all_enty,all_emiMkt) "total energy-emissions per region and market" q_emiEnFuelEx(ttot,all_regi,all_enty) "energy emissions from fuel extraction" q_emiAllMkt(ttot,all_regi,all_enty,all_emiMkt) "total regional emissions for each emission market" @@ -561,9 +561,6 @@ $IFTHEN.sehe_upper not "%cm_sehe_upper%" == "off" q_heat_limit(ttot,all_regi) "equation to limit maximum level of secondary energy district heating and heat pumps use" $ENDIF.sehe_upper -***---------------------------------------------------------------------------------------- -***----------------------------------------------trade module------------------------------ - ; ***---------------------------------------------------------------------------------------- *** SCALARS @@ -571,11 +568,6 @@ $ENDIF.sehe_upper scalars o_modelstat "critical solver status for solution" -***---------------------------------------------------------------------------------------- -***------------------------------------------------MACRO module---------------------------- - -***---------------------------------------------------------------------------------------- -***-----------------------------------------------ESM module------------------------------- pm_conv_TWa_EJ "conversion from TWa to EJ" /31.536/, sm_c_2_co2 "conversion from c to co2" /3.666666666667/, *** conversion factors of time units @@ -632,16 +624,13 @@ sm_globalBudget_dev "actual level of global cu sm_eps "small number: 1e-9 " /1e-9/ sm_CES_calibration_iteration "current calibration iteration number, loaded from environment variable cm_CES_calibration_iteration" /0/ - -***---------------------------------------------------------------------------------------- -***----------------------------------------------trade module------------------------------ ; +sm_dmac = s_D2005_2_D2017 * sm_dmac sm_tgn_2_pgc = (44/28) * s_gwpN2O * (12/44) * 0.001; sm_tgch4_2_pgc = s_gwpCH4 * (12/44) * 0.001; -***---------------------------------------------------------------------------------------- -*----------------------------------------------carbon intensities of coal, oil, and gas +*** carbon intensities of coal, oil, and gas pm_cintraw("pecoal") = 26.1 / s_zj_2_twa; pm_cintraw("peoil") = 20.0 / s_zj_2_twa; pm_cintraw("pegas") = 15.0 / s_zj_2_twa; diff --git a/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms b/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms index df9d96b89..a0482f1c4 100644 --- a/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms +++ b/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms @@ -17,15 +17,15 @@ $endif !! short-term (until 2025) if (ttot.val le 2025, - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 95 ) = 0.63; - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 133 ) = 0.756; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 * 95 ) = 0.63; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 *133 ) = 0.756; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 78 ) = 0.121; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 80 ) = 0.572; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 *78 ) = 0.121; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 *80 ) = 0.572; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 59 ) = 0.117; - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 82 ) = 0.234; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *59 ) = 0.117; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *82 ) = 0.234; $endif.cm_subsec_model_steel !! long-term (from 2030 on) @@ -43,16 +43,16 @@ $endif.cm_subsec_model_steel = max(0, min(0.95, 0.2159 + 0.1365 * log(sm_tmp))); else - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 54 ) = 0.702; - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge 133 ) = 0.756; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 * 54 ) = 0.702; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 * 133 ) = 0.756; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 46 ) = 0.363; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 78 ) = 0.484; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge 80 ) = 0.572; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 * 46 ) = 0.363; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 * 78 ) = 0.484; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 *80 ) = 0.572; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 48 ) = 0.117; - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge 62 ) = 0.275; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *48 ) = 0.117; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *62 ) = 0.275; $endif.cm_subsec_model_steel ); ); From 2acba184bcf6d201c830bdc1335869acf5503226 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Thu, 29 Aug 2024 14:47:50 +0200 Subject: [PATCH 11/25] fix line break --- core/declarations.gms | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/declarations.gms b/core/declarations.gms index ecb1d7f28..1ebfeec24 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -602,7 +602,8 @@ s_D2005_2_D2017 "Convert $2005 to $2017" s_D2020_2_D2017 "Convert $2020 to $2017" /0.9469/ s_EURO2023_2_D2017 "Convert EURO 2023 to $2017" /0.8915/ -sm_h2kg_2_h2kWh "convert kilogramme of hydrogen to kwh energy value." /32.5/sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ +sm_h2kg_2_h2kWh "convert kilogramme of hydrogen to kwh energy value." /32.5/ +sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ s_co2pipe_leakage "Leakage rate of CO2 pipelines. [0..1]" s_tau_cement "range of per capita investments for switching from short-term to long-term behavior in CO2 cement emissions" / 12000 / From be5015392fd84b3fd66fa37477e019052b9cb00a Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Thu, 29 Aug 2024 14:55:00 +0200 Subject: [PATCH 12/25] add missing ; --- core/declarations.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/declarations.gms b/core/declarations.gms index 1ebfeec24..42c594088 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -627,7 +627,7 @@ sm_eps "small number: 1e-9 " /1e sm_CES_calibration_iteration "current calibration iteration number, loaded from environment variable cm_CES_calibration_iteration" /0/ ; -sm_dmac = s_D2005_2_D2017 * sm_dmac +sm_dmac = s_D2005_2_D2017 * sm_dmac; sm_tgn_2_pgc = (44/28) * s_gwpN2O * (12/44) * 0.001; sm_tgch4_2_pgc = s_gwpCH4 * (12/44) * 0.001; From 7401e01440287647e3b0568e3ce1df1d471a2584 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Thu, 29 Aug 2024 15:48:00 +0200 Subject: [PATCH 13/25] please codeCheck() --- core/declarations.gms | 8 +-- .../02_welfare/ineqLognormal/datainput.gms | 16 +++--- modules/02_welfare/utilitarian/datainput.gms | 16 +++--- modules/21_tax/off/not_used.txt | 2 +- modules/21_tax/on/datainput.gms | 14 ++--- modules/35_transport/edge_esm/presolve.gms | 2 +- modules/36_buildings/simple/datainput.gms | 4 +- .../fixed_shares/input/pm_abatparam_Ind.gms | 26 ++++----- modules/37_industry/fixed_shares/not_used.txt | 2 + modules/37_industry/subsectors/datainput.gms | 8 +-- modules/37_industry/subsectors/not_used.txt | 1 + modules/47_regipol/none/not_used.txt | 1 + .../47_regipol/regiCarbonPrice/datainput.gms | 56 +++++++++---------- 13 files changed, 80 insertions(+), 76 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index 42c594088..8c775da9c 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -598,9 +598,9 @@ s_MtCO2_2_GtC "conversion factor from Mt s_MtCH4_2_TWa "Energy content of methane. MtCH4 --> TWa: 1 MtCH4 = 1.23 * 10^6 toe * 42 GJ/toe * 10^-9 EJ/GJ * 1 TWa/31.536 EJ = 0.001638 TWa (BP statistical review)" /0.001638/ s_D2015_2_D2017 "Convert $2015 to $2017" /1.0292/ -s_D2005_2_D2017 "Convert $2005 to $2017" /1.231/ -s_D2020_2_D2017 "Convert $2020 to $2017" /0.9469/ -s_EURO2023_2_D2017 "Convert EURO 2023 to $2017" /0.8915/ +sm_D2005_2_D2017 "Convert $2005 to $2017" /1.231/ +sm_D2020_2_D2017 "Convert $2020 to $2017" /0.9469/ +sm_EURO2023_2_D2017 "Convert EURO 2023 to $2017" /0.8915/ sm_h2kg_2_h2kWh "convert kilogramme of hydrogen to kwh energy value." /32.5/ sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ @@ -627,7 +627,7 @@ sm_eps "small number: 1e-9 " /1e sm_CES_calibration_iteration "current calibration iteration number, loaded from environment variable cm_CES_calibration_iteration" /0/ ; -sm_dmac = s_D2005_2_D2017 * sm_dmac; +sm_dmac = sm_D2005_2_D2017 * sm_dmac; sm_tgn_2_pgc = (44/28) * s_gwpN2O * (12/44) * 0.001; sm_tgch4_2_pgc = s_gwpCH4 * (12/44) * 0.001; diff --git a/modules/02_welfare/ineqLognormal/datainput.gms b/modules/02_welfare/ineqLognormal/datainput.gms index 3560ea379..f97d19f36 100644 --- a/modules/02_welfare/ineqLognormal/datainput.gms +++ b/modules/02_welfare/ineqLognormal/datainput.gms @@ -11,15 +11,15 @@ $if %cm_less_TS% == "on" pm_welf("2060") = 0.9; *RP* 2012-03-06: Inconvenience costs on seprod $IFTHEN.INCONV %cm_INCONV_PENALTY% == "on" -p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects +p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects *' Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel -p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; -p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; -p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * 4.3 * 1E-4; !! this is now equivalent to 1$/GJ at 1000$/per Capita in the welfare logarithm p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * (1/sm_giga_2_non) / sm_GJ_2_TWa; !! conversion util/(GJ/cap) -> util/(TWa/Gcap) *RP* these values are all calculated on seprod level. diff --git a/modules/02_welfare/utilitarian/datainput.gms b/modules/02_welfare/utilitarian/datainput.gms index c234d4c8f..4579c365a 100644 --- a/modules/02_welfare/utilitarian/datainput.gms +++ b/modules/02_welfare/utilitarian/datainput.gms @@ -11,15 +11,15 @@ pm_welf("2060") = 0.9; *RP* 2012-03-06: Inconvenience costs on seprod $IFTHEN.INCONV %cm_INCONV_PENALTY% == "on" -p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects +p02_inconvpen_lap(ttot,regi,"coaltr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; !! In dollar per GJ seprod at 1.000$/cap GDP, or 10$/GJ at 10.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"biotr")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"biotrmod")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; !! In dollar per GJ seprod. Biotrmod is a mix of wood stoves and automated wood pellets for heating, which has lower air pollution and other discomfort effects *' Transformation of coal to liquids/gases/H2 brings local pollution, which is less accepted at higher incomes -> use the inconvenience cost channel -p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod -p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap -p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; -p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; -p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalftrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! In dollar per GJ seprod +p02_inconvpen_lap(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; !! equivalent to 4$/GJ at 40.000$_GDP/cap, or 10$/GJ at 100.000$_GDP/cap +p02_inconvpen_lap(ttot,regi,"coalgas")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; +p02_inconvpen_lap(ttot,regi,"coalh2c")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.9; p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * 4.3 * 1E-4; !! this is now equivalent to 1$/GJ at 1000$/per Capita in the welfare logarithm p02_inconvpen_lap(ttot,regi,te)$(ttot.val ge 2005) = p02_inconvpen_lap(ttot,regi,te) * (1/sm_giga_2_non) / sm_GJ_2_TWa; !! conversion util/(GJ/cap) -> util/(TWa/Gcap) *RP* these values are all calculated on seprod level. diff --git a/modules/21_tax/off/not_used.txt b/modules/21_tax/off/not_used.txt index 12e8c638e..d50474410 100644 --- a/modules/21_tax/off/not_used.txt +++ b/modules/21_tax/off/not_used.txt @@ -24,7 +24,6 @@ cm_fetaxscen, switch, ??? cm_gdximport_target, switch, ??? pm_pop,parameter,??? cm_so2tax_scen,switch,??? -sm_DpGJ_2_TDpTWa,switch,??? vm_cesIO,variable,??? vm_co2eq,variable,??? cm_emiscen,input,questionnaire @@ -72,3 +71,4 @@ pm_gdp,input,only needed if tax is on pm_cf,input,only needed if tax is on vm_shDemSeel,input,only needed if tax is on pm_teAnnuity,input,only needed if tax is on +sm_D2005_2_D2017,input,no conversion needed diff --git a/modules/21_tax/on/datainput.gms b/modules/21_tax/on/datainput.gms index 689ee5dc8..781b768fc 100644 --- a/modules/21_tax/on/datainput.gms +++ b/modules/21_tax/on/datainput.gms @@ -82,13 +82,13 @@ p21_tau_pe2se_sub(tall,regi,te)= 0; *RP* FILE changed by hand after introduction of SO2 taxes and inconvenience penalties on 2012-03-08 *** Values try to account for excessive water use, further pollution *** Taxes are given in USD(2005) and converted to USD(2017) per GJ -p21_tau_pe2se_tax(ttot,regi,"igcc")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; -p21_tau_pe2se_tax(ttot,regi,"igccc")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.25; -p21_tau_pe2se_tax(ttot,regi,"coalftrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; -p21_tau_pe2se_tax(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = s_D2005_2_D2017 * 1.0; -p21_tau_pe2se_tax(ttot,regi,"coalh2")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; -p21_tau_pe2se_tax(ttot,regi,"coalh2c")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; -p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = s_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"igcc")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; +p21_tau_pe2se_tax(ttot,regi,"igccc")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.25; +p21_tau_pe2se_tax(ttot,regi,"coalftrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; +p21_tau_pe2se_tax(ttot,regi,"coalftcrec")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 1.0; +p21_tau_pe2se_tax(ttot,regi,"coalh2")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"coalh2c")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; +p21_tau_pe2se_tax(ttot,regi,"coalgas")$(ttot.val ge 2005) = sm_D2005_2_D2017 * 0.5; ***cb20110923 rescaling of PE2SE parameters from $/GJ to trillion $ / TWa p21_tau_pe2se_tax(ttot,regi,te)$(ttot.val ge 2005) = p21_tau_pe2se_tax(ttot,regi,te) * 0.001 / sm_EJ_2_TWa; diff --git a/modules/35_transport/edge_esm/presolve.gms b/modules/35_transport/edge_esm/presolve.gms index cc5eb474c..34156978e 100644 --- a/modules/35_transport/edge_esm/presolve.gms +++ b/modules/35_transport/edge_esm/presolve.gms @@ -14,7 +14,7 @@ if( (ord(iteration) le 25 and ord(iteration) ge cm_startIter_EDGET and (mod(ord( Execute_Loadpoint 'p35_esCapCost' p35_esCapCost; !! convert transport costs from US$2005 to US$2017 - pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val ge cm_startyear AND t.val le 2100) = s_D2005_2_D2017 * p35_esCapCost(t,regi,"%cm_GDPscen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); + pm_esCapCost(t,regi,teEs_dyn35)$(t.val gt 2010 AND t.val ge cm_startyear AND t.val le 2100) = sm_D2005_2_D2017 * p35_esCapCost(t,regi,"%cm_GDPscen%","%cm_demScen%","%cm_EDGEtr_scen%",teEs_dyn35); !! load FE-to-ES results from EDGE-Transport into auxilliary parameter Execute_Loadpoint "p35_fe2es", p35_fe2es_aux = p35_fe2es; diff --git a/modules/36_buildings/simple/datainput.gms b/modules/36_buildings/simple/datainput.gms index 7d3e0c0da..95b38a4e6 100644 --- a/modules/36_buildings/simple/datainput.gms +++ b/modules/36_buildings/simple/datainput.gms @@ -120,10 +120,10 @@ p36_CESMkup(ttot,regi,in) = 0; *' mark-up cost on heat pumps and district heating are incurred as actual cost to the budget (see option (a) above) *' place markup cost on heat pumps electricity of 200 USD/MWh(el) to represent demand-side cost of electrification *' and reach higher efficiency during calibration to model higher energy efficiency of heat pumps -p36_CESMkup(ttot,regi,"feelhpb") = 200 * s_D2005_2_D2017 * sm_TWa_2_MWh * 1e-12; +p36_CESMkup(ttot,regi,"feelhpb") = 200 * sm_D2005_2_D2017 * sm_TWa_2_MWh * 1e-12; *' place markup cost on district heating of 25 USD/MWh(heat) to represent additional t&d cost of expanding district heating networks for buildings *' which makes district heating in buildings more expensive than in industry -p36_CESMkup(ttot,regi,"feheb") = 25 * s_D2005_2_D2017 * sm_TWa_2_MWh * 1e-12; +p36_CESMkup(ttot,regi,"feheb") = 25 * sm_D2005_2_D2017 * sm_TWa_2_MWh * 1e-12; *' overwrite or extent CES markup cost if specified by switch $ifThen.CESMkup not "%cm_CESMkup_build%" == "standard" diff --git a/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms b/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms index a0482f1c4..5d2110b44 100644 --- a/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms +++ b/modules/37_industry/fixed_shares/input/pm_abatparam_Ind.gms @@ -17,15 +17,15 @@ $endif !! short-term (until 2025) if (ttot.val le 2025, - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 * 95 ) = 0.63; - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 *133 ) = 0.756; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 * 95 ) = 0.63; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 *133 ) = 0.756; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 *78 ) = 0.121; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 *80 ) = 0.572; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 *78 ) = 0.121; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 *80 ) = 0.572; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *59 ) = 0.117; - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *82 ) = 0.234; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *59 ) = 0.117; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *82 ) = 0.234; $endif.cm_subsec_model_steel !! long-term (from 2030 on) @@ -43,16 +43,16 @@ $endif.cm_subsec_model_steel = max(0, min(0.95, 0.2159 + 0.1365 * log(sm_tmp))); else - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 * 54 ) = 0.702; - pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge s_D2005_2_D2017 * 133 ) = 0.756; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 * 54 ) = 0.702; + pm_abatparam_Ind(ttot,regi,"co2cement",steps)$( sm_tmp ge sm_D2005_2_D2017 * 133 ) = 0.756; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 * 46 ) = 0.363; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 * 78 ) = 0.484; - pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge s_D2005_2_D2017 *80 ) = 0.572; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 * 46 ) = 0.363; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 * 78 ) = 0.484; + pm_abatparam_Ind(ttot,regi,"co2chemicals",steps)$( sm_tmp ge sm_D2005_2_D2017 *80 ) = 0.572; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *48 ) = 0.117; - pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge s_D2005_2_D2017 *62 ) = 0.275; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *48 ) = 0.117; + pm_abatparam_Ind(ttot,regi,"co2steel",steps)$( sm_tmp ge sm_D2005_2_D2017 *62 ) = 0.275; $endif.cm_subsec_model_steel ); ); diff --git a/modules/37_industry/fixed_shares/not_used.txt b/modules/37_industry/fixed_shares/not_used.txt index e97b7962b..423307975 100644 --- a/modules/37_industry/fixed_shares/not_used.txt +++ b/modules/37_industry/fixed_shares/not_used.txt @@ -34,3 +34,5 @@ vm_incinerationCCS, variable, does not want to play vm_incinerationEmi, variable, not needed vm_nonIncineratedPlastics, variable, not needed vm_outflowPrc, variable, not needed +sm_D2020_2_D2017,input,no conversion needed +sm_EURO2023_2_D2017,input,no conversion needed diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index e7bad82db..b251a963d 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -662,12 +662,12 @@ p37_priceMat(all_enty) = 0.; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! IEA STeel Roadmap Fig 1.3 Caption: Scrap price 200-300 $/t !! => take 250 $/t, unit 2020$US -p37_priceMat("eafscrap") = s_D2020_2_D2017 * 0.250 ; -p37_priceMat("bofscrap") = s_D2020_2_D2017 * 0.250; +p37_priceMat("eafscrap") = sm_D2020_2_D2017 * 0.250 ; +p37_priceMat("bofscrap") = sm_D2020_2_D2017 * 0.250; !! Agora KSV-Rechner: 114 €2023/tSteel / (tn$ /bn t) -p37_priceMat("ironore") = s_EURO2023_2_D2017 * 0.114; +p37_priceMat("ironore") = sm_EURO2023_2_D2017 * 0.114; !! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) -p37_priceMat("dripell") = s_EURO2023_2_D2017 * 0.154; +p37_priceMat("dripell") = sm_EURO2023_2_D2017 * 0.154; $endif.cm_subsec_model_steel *** -------------------------------- diff --git a/modules/37_industry/subsectors/not_used.txt b/modules/37_industry/subsectors/not_used.txt index 2b2763d7f..eb33d72e1 100644 --- a/modules/37_industry/subsectors/not_used.txt +++ b/modules/37_industry/subsectors/not_used.txt @@ -24,3 +24,4 @@ pm_shfe_up,parameter,not needed sm_trillion_2_non,input,questionnaire sm_TWa_2_kWh,input,questionnaire vm_macBase,input,questionnaire +sm_D2005_2_D2017,input,no conversion needed diff --git a/modules/47_regipol/none/not_used.txt b/modules/47_regipol/none/not_used.txt index b352534d9..254d6d59e 100644 --- a/modules/47_regipol/none/not_used.txt +++ b/modules/47_regipol/none/not_used.txt @@ -80,3 +80,4 @@ vm_prodSe,input,not needed pm_cesdata,input,not needed pm_prodCouple,input,not needed vm_emiIndCCS,input,not needed +sm_D2005_2_D2017,input,no conversion needed diff --git a/modules/47_regipol/regiCarbonPrice/datainput.gms b/modules/47_regipol/regiCarbonPrice/datainput.gms index 54c61798f..c985d567f 100644 --- a/modules/47_regipol/regiCarbonPrice/datainput.gms +++ b/modules/47_regipol/regiCarbonPrice/datainput.gms @@ -177,7 +177,7 @@ $offdelim loop((t,ext_regi,entyFe,entySe,sector)$f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t), loop(regi$regi_groupExt(ext_regi,regi), !! convert data from US$2005 to US$2017 - pm_implicitPriceTarget(t,regi,entyFe,entySe,sector) = s_D2005_2_D2017 * f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t)*sm_DpGJ_2_TDpTWa; + pm_implicitPriceTarget(t,regi,entyFe,entySe,sector) = sm_D2005_2_D2017 * f47_implicitPriceTarget("%cm_implicitPriceTarget%",ext_regi,entyFe,entySe,sector,t)*sm_DpGJ_2_TDpTWa; ); ); @@ -212,7 +212,7 @@ $offdelim loop((t,ext_regi,entyPe)$f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t), loop(regi$regi_groupExt(ext_regi,regi), !! convert data from US$2005 to US$2017 - pm_implicitPePriceTarget(t,regi,entyPe) = s_D2005_2_D2017 * f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t)*sm_DpGJ_2_TDpTWa; + pm_implicitPePriceTarget(t,regi,entyPe) = sm_D2005_2_D2017 * f47_implicitPePriceTarget("%cm_implicitPePriceTarget%",ext_regi,entyPe,t)*sm_DpGJ_2_TDpTWa; ); ); @@ -304,32 +304,32 @@ p47_LULUCFEmi_GrassiShift(t,regi)$(p47_EmiLULUCFCountryAcc("2020",regi)) = *PW* charge tax on PE gas,oil,coal in energy security scenario for Germany (in trUSD/TWa) to hit Ariadne energy security price trajectories $ifThen.cm_EnSecScen_price "%cm_EnSecScen_price%" == "on" - pm_tau_pe_tax("2025",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.32; - pm_tau_pe_tax("2030",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.24; - pm_tau_pe_tax("2035",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.2; - pm_tau_pe_tax("2040",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.16; - pm_tau_pe_tax("2045",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.16; - pm_tau_pe_tax("2050",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.16; - pm_tau_pe_tax("2055",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.12; - pm_tau_pe_tax("2060",regi,"pegas")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.08; - - pm_tau_pe_tax("2025",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.08; - pm_tau_pe_tax("2030",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.08; - pm_tau_pe_tax("2035",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.12; - pm_tau_pe_tax("2040",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.16; - pm_tau_pe_tax("2045",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.16; - pm_tau_pe_tax("2050",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.16; - pm_tau_pe_tax("2055",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.12; - pm_tau_pe_tax("2060",regi,"peoil")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.08; - - pm_tau_pe_tax("2025",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.024; - pm_tau_pe_tax("2030",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.016; - pm_tau_pe_tax("2035",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.016; - pm_tau_pe_tax("2040",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.016; - pm_tau_pe_tax("2045",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.016; - pm_tau_pe_tax("2050",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.016; - pm_tau_pe_tax("2055",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.008; - pm_tau_pe_tax("2060",regi,"pecoal")$(sameAs(regi,"DEU")) = s_D2005_2_D2017 * 0.008; + pm_tau_pe_tax("2025",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.32; + pm_tau_pe_tax("2030",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.24; + pm_tau_pe_tax("2035",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.2; + pm_tau_pe_tax("2040",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2045",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2050",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2055",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.12; + pm_tau_pe_tax("2060",regi,"pegas")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + + pm_tau_pe_tax("2025",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + pm_tau_pe_tax("2030",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + pm_tau_pe_tax("2035",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.12; + pm_tau_pe_tax("2040",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2045",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2050",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.16; + pm_tau_pe_tax("2055",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.12; + pm_tau_pe_tax("2060",regi,"peoil")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.08; + + pm_tau_pe_tax("2025",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.024; + pm_tau_pe_tax("2030",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2035",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2040",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2045",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2050",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.016; + pm_tau_pe_tax("2055",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.008; + pm_tau_pe_tax("2060",regi,"pecoal")$(sameAs(regi,"DEU")) = sm_D2005_2_D2017 * 0.008; $endIf.cm_EnSecScen_price *** adapt parameters that determine the ratio of wind onshore and wind offshore installation for Germany From 49f573a8be58ef3e128357762de3afbf46421629 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Tue, 10 Sep 2024 08:55:40 +0200 Subject: [PATCH 14/25] use input data including unit shift --- config/default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/default.cfg b/config/default.cfg index 52aef3921..e0faadda6 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -27,7 +27,7 @@ cfg$regionmapping <- "config/regionmappingH12.csv" ### Additional (optional) region mapping, so that those validation data can be loaded that contain the corresponding additional regions. cfg$extramappings_historic <- "" #### Current input data revision (.) #### -cfg$inputRevision <- "6.86" +cfg$inputRevision <- "6.84gdp-shift" #### Current CES parameter and GDX revision (commit hash) #### cfg$CESandGDXversion <- "d4c62a8f11e8a6827310519df09c98eb425a4070" From f49f145fb83072a7cb9ca7e80179eea1a591cf92 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Wed, 11 Sep 2024 10:29:49 +0200 Subject: [PATCH 15/25] update NDC version cm_NDC_version to 2024_cond --- main.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.gms b/main.gms index a1331486a..bed38f1a7 100755 --- a/main.gms +++ b/main.gms @@ -1212,7 +1212,7 @@ $setglobal cm_rcp_scen none !! def = "none" !! regexp = none|rcp20|rcp *' * (2023_cond): all NDCs conditional to international financial support published until December 31, 2023 *' * (2023_uncond): all NDCs independent of international financial support published until December 31, 2023 *' * Other supported years are 2022, 2021 and 2018, always containing NDCs published until December 31 of that year -$setglobal cm_NDC_version 2023_cond !! def = "2023_cond" !! regexp = 20(18|2[1-4])_(un)?cond +$setglobal cm_NDC_version 2024_cond !! def = "2024_cond" !! regexp = 20(18|2[1-4])_(un)?cond *' cm_netZeroScen "choose scenario of net zero targets of netZero realization of module 46_carbonpriceRegi" *' *' (NGFS_v4): settings used for NGFS v4, 2023 From d7bb4dfe9011480e1a13a1f07c15ee13286c121f Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Tue, 17 Sep 2024 16:39:43 +0200 Subject: [PATCH 16/25] set input data version --- config/default.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/config/default.cfg b/config/default.cfg index 472bfcd0b..1c9176163 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -28,6 +28,7 @@ cfg$regionmapping <- "config/regionmappingH12.csv" cfg$extramappings_historic <- "" #### Current input data revision (.) #### +cfg$inputRevision <- "6.84gdp-shift-clean" #### Current CES parameter and GDX revision (commit hash) #### cfg$CESandGDXversion <- "d4c62a8f11e8a6827310519df09c98eb425a4070" From 740bdafcd1a71e82702d0578c522d57dcdafec3e Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Tue, 17 Sep 2024 18:09:20 +0200 Subject: [PATCH 17/25] fix bug by adding lines which where deleted by accident --- core/datainput.gms | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/core/datainput.gms b/core/datainput.gms index 9fcbb5b0c..3d4bdbbc2 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -248,6 +248,10 @@ $if not "%cm_inco0RegiFactor%" == "off" p_inco0(ttot,regi,te)$(p_inco0 *** inco0 (and incolearn) are given in $/kW (or $/(tC/a) for ccs-related tech or $/(t/a) for process-based industry) *** convert to REMIND units, i.e., T$/TW (or T$/(GtC/a) for ccs-related tech or T$/(Gt/a) for process-based industry) *** note that factor for $/kW -> T$/TW is the same as for $/(tC/a) -> T$/(GtC/a) +fm_dataglob("inco0",te) = s_DpKW_2_TDpTW * fm_dataglob("inco0",te); +fm_dataglob("incolearn",te) = s_DpKW_2_TDpTW * fm_dataglob("incolearn",te); +fm_dataglob("omv",te) = s_DpKWa_2_TDpTWa * fm_dataglob("omv",te); +p_inco0(ttot,regi,te) = s_DpKW_2_TDpTW * p_inco0(ttot,regi,te); *RP* rescale the global CSP investment costs in REMIND: Originally we assume a SM3/12h setup, while the cost data from IEA for the short term seems rather based on a SM2/6h setup (with 40% average CF) *** Accordingly, also decrease long-term costs in REMIND to 0.7 of the current values From 50372848859444d446b5b5b2b181dc4daf72a898 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Thu, 19 Sep 2024 13:28:51 +0200 Subject: [PATCH 18/25] redname demScen gdp_SSP2EU_demRedStrong in gdp_SSP2_demRedStrong --- core/sets.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/sets.gms b/core/sets.gms index 88995d976..3e4fb9ac0 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -77,7 +77,7 @@ gdp_SSP2EU_NAV_all "NAVIGATE demand scenarios: All measures (ele + act + tec)" gdp_SSP2EU_CAMP_weak "CAMPAIGNers scenario with low ambition lifestyle change" gdp_SSP2EU_CAMP_strong "CAMPAIGNers scenario with high ambition lifestyle change" gdp_SSP2_demDiffer_IKEA "Demand reduction in Global North (CAZ,EUR,JPN,NEU,USA) and demand increase in Emerging regions (IND,LAM,OAS,SSA). Reduction follows the factor f of demRedStrong scenario, while increase uses factor 2-f." -gdp_SSP2EU_demRedStrong "edget internal demScen, might be removed soon" +gdp_SSP2_demRedStrong "edget internal demScen, might be removed soon" / all_GDPpcScen "all possible GDP per capita scenarios (GDP and Population from the same SSP-scenario" From 2e15a375c5b6cf08f119a70976399339f6796143 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Thu, 19 Sep 2024 13:53:36 +0200 Subject: [PATCH 19/25] add gdp_SSP2_demRedWeak as demand scenario --- core/sets.gms | 1 + 1 file changed, 1 insertion(+) diff --git a/core/sets.gms b/core/sets.gms index 3e4fb9ac0..ce1f71336 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -78,6 +78,7 @@ gdp_SSP2EU_CAMP_weak "CAMPAIGNers scenario with low ambition lifestyle change" gdp_SSP2EU_CAMP_strong "CAMPAIGNers scenario with high ambition lifestyle change" gdp_SSP2_demDiffer_IKEA "Demand reduction in Global North (CAZ,EUR,JPN,NEU,USA) and demand increase in Emerging regions (IND,LAM,OAS,SSA). Reduction follows the factor f of demRedStrong scenario, while increase uses factor 2-f." gdp_SSP2_demRedStrong "edget internal demScen, might be removed soon" +gdp_SSP2_demRedWeak / all_GDPpcScen "all possible GDP per capita scenarios (GDP and Population from the same SSP-scenario" From ec039a46bb57cbf1d5726e3d93659ecd5b226878 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Fri, 20 Sep 2024 15:33:13 +0200 Subject: [PATCH 20/25] update declaration text --- core/declarations.gms | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index 8c775da9c..e4648ecfd 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -597,10 +597,10 @@ s_MtCO2_2_GtC "conversion factor from Mt s_MtCH4_2_TWa "Energy content of methane. MtCH4 --> TWa: 1 MtCH4 = 1.23 * 10^6 toe * 42 GJ/toe * 10^-9 EJ/GJ * 1 TWa/31.536 EJ = 0.001638 TWa (BP statistical review)" /0.001638/ -s_D2015_2_D2017 "Convert $2015 to $2017" /1.0292/ -sm_D2005_2_D2017 "Convert $2005 to $2017" /1.231/ -sm_D2020_2_D2017 "Convert $2020 to $2017" /0.9469/ -sm_EURO2023_2_D2017 "Convert EURO 2023 to $2017" /0.8915/ +s_D2015_2_D2017 "Convert US$2015 to US$2017" /1.0292/ +sm_D2005_2_D2017 "Convert US$2005 to US$2017" /1.231/ +sm_D2020_2_D2017 "Convert US$2020 to US$2017" /0.9469/ +sm_EURO2023_2_D2017 "Convert EURO 2023 to US$2017" /0.8915/ sm_h2kg_2_h2kWh "convert kilogramme of hydrogen to kwh energy value." /32.5/ sm_DptCO2_2_TDpGtC "Conversion multiplier to go from $/tCO2 to T$/GtC: 44/12/1000" /0.00366667/ From 1b6a625ca9af3e96316c5a10ca44daf20068ad02 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Sat, 21 Sep 2024 10:56:47 +0200 Subject: [PATCH 21/25] * add info in CHANGELOG.md * add min. version of R-packages * update to input data version 6.95 --- CHANGELOG.md | 2 ++ DESCRIPTION | 9 ++++++--- config/default.cfg | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 072a04e3a..3afb9bcba 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). ### input data/calibration - new input data rev6.84 [[#1757](https://github.com/remindmodel/remind/pull/1757)] +- new input data rev6.95 in US$2017[[#1812]] (https://github.com/remindmodel/remind/pull/1812) - CES parameter and gdx files calibrated with new default diffLin2Lin for NPi [[#1747](https://github.com/remindmodel/remind/pull/1747)] and [[#1757](https://github.com/remindmodel/remind/pull/1757)] @@ -15,6 +16,7 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). [[#1816](https://github.com/remindmodel/remind/pull/1816)] ### changed +- shift base unit from US$2005 to US$2017 [[#1812]] (https://github.com/remindmodel/remind/pull/1812) - plastic waste by default does not lag plastics production by ten years anymore; can be re-activated using `cm_wastelag` - moved to edgeTransport 2.0 version [[#1749](https://github.com/remindmodel/remind/pull/1749)] diff --git a/DESCRIPTION b/DESCRIPTION index bf9455e60..40c3f6c24 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -17,8 +17,8 @@ Imports: data.table, devtools, dplyr, - edgeTransport (>= 2.3.0), - reporttransport (>= 0.0.11), + edgeTransport (>= 2.7.0), + reporttransport (>= 0.5.0), flexdashboard, GDPuc, gdx (>= 1.53.0), @@ -45,7 +45,10 @@ Imports: magpiesets, mip (>= 0.150.0), modelstats, - mrremind, + mrremind (>= 0.191.2), + mrcommons (>= 1.43.6), + mrdrivers (>= 3.0.0), + mrtransport (>= 0.7.1), mrvalidation, ncdf4, nleqslv, diff --git a/config/default.cfg b/config/default.cfg index e76c67865..bdbbf7be8 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -28,7 +28,7 @@ cfg$regionmapping <- "config/regionmappingH12.csv" cfg$extramappings_historic <- "" #### Current input data revision (.) #### -cfg$inputRevision <- "6.84gdp-shift-clean" +cfg$inputRevision <- "6.95" #### Current CES parameter and GDX revision (commit hash) #### cfg$CESandGDXversion <- "d4c62a8f11e8a6827310519df09c98eb425a4070" From df6a882609e3a886fd708c732b4e4a9bf60ef59b Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Sat, 21 Sep 2024 11:26:36 +0200 Subject: [PATCH 22/25] adjust comment --- core/datainput.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/datainput.gms b/core/datainput.gms index 3d4bdbbc2..f46f0478a 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -597,7 +597,7 @@ $offdelim *** Import and set regional data ***--------------------------------------------------------------------------- -*RP* 2012-07-24: CO2-technologies don't have own emissions, but the pipeline leakage rate (s_co2pipe_leakage) is multiplied on the individual pe2se +*** CO2-technologies don't have own emissions, but the pipeline leakage rate (s_co2pipe_leakage) is multiplied on the individual pe2se s_co2pipe_leakage = 0.01; loop(emi2te(enty,enty2,te,enty3)$teCCS(te), From a1c7866045cf2aa079315722d0b2dcd68d79a83a Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Mon, 23 Sep 2024 09:46:08 +0200 Subject: [PATCH 23/25] CES parameter and gdx files for input data 6.95 for SSP2, SSP2-EU21, SSP1, SDP_MC, SSP2_lowEn and SSP5 (calibration runs: /p/tmp/lavinia/REMIND/REMIND_calibration_unitShift_2024_09_21/remind) --- config/default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/default.cfg b/config/default.cfg index 06b935fd4..cac360943 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -31,7 +31,7 @@ cfg$extramappings_historic <- "" cfg$inputRevision <- "6.95" #### Current CES parameter and GDX revision (commit hash) #### -cfg$CESandGDXversion <- "d4c62a8f11e8a6827310519df09c98eb425a4070" +cfg$CESandGDXversion <- "ffbff5da0c24de39586df082716e5af449f5f231" #### Force the model to download new input data #### cfg$force_download <- FALSE From 149a225f0b48b4ccaf0b20724d4fb64e9cd136a3 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Mon, 23 Sep 2024 11:57:29 +0200 Subject: [PATCH 24/25] set minimum version number for `remind2` --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index 9c1e841d8..b0ad6ea6e 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -64,7 +64,7 @@ Imports: raster, readr, readxl, - remind2 (>= 1.147.2), + remind2 (>= 1.156.1), renv, reshape2, reticulate, From a3cccecec3d524bc64c7ea5e0f3a6a0a262baa04 Mon Sep 17 00:00:00 2001 From: Lavinia Baumstark Date: Mon, 23 Sep 2024 14:05:21 +0200 Subject: [PATCH 25/25] adjuat minimum version number for R-package piamInterfaces --- DESCRIPTION | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/DESCRIPTION b/DESCRIPTION index b0ad6ea6e..d10f40021 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -54,7 +54,7 @@ Imports: nleqslv, optparse, piamenv (>= 0.4.0), - piamInterfaces (>= 0.27.2), + piamInterfaces (>= 0.31.0), piamPlotComparison (>= 0.0.10), piamutils, plotly,