From 4d8728a20afac80f251f6e751580f5dea5ae6bf7 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Tue, 23 Jul 2024 16:46:26 +0200 Subject: [PATCH 01/69] Process-based chemicals: first code skeleton with two dummy processes; data still needs to be added --- core/datainput.gms | 16 ++- core/input/generisdata_tech.prn | 8 ++ core/input/generisdata_vintages.prn | 13 +++ core/sets.gms | 17 ++- main.gms | 2 + modules/05_initialCap/on/preloop.gms | 2 +- modules/37_industry/subsectors/bounds.gms | 3 +- modules/37_industry/subsectors/datainput.gms | 58 ++++++++-- modules/37_industry/subsectors/sets.gms | 108 +++++++++++++++++-- 9 files changed, 200 insertions(+), 27 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index b668104a1b..a0325c2221 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -725,12 +725,18 @@ pm_cf(ttot,regi,"tdsynhos") = 0.6; pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; *** eternal short-term fix for process-based industry +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +pm_cf(ttot,regi,"chemOld") = 0.8; +pm_cf(ttot,regi,"chemNew") = 0.8; +$endif.cm_subsec_model_chemicals +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" pm_cf(ttot,regi,"bf") = 0.8; pm_cf(ttot,regi,"bfcc") = 0.8; pm_cf(ttot,regi,"bof") = 0.8; pm_cf(ttot,regi,"idr") = 0.8; pm_cf(ttot,regi,"idrcc") = 1.0; !! capex is derived from numbers per ton of CO2, where cf = 1 is assumed in conversion pm_cf(ttot,regi,"eaf") = 1.0; !! capex is derived from numbers per ton of CO2, where cf = 1 is assumed in conversion +$endif.cm_subsec_model_steel *RP* phasing down the ngt cf to "peak load" cf of 5% pm_cf(ttot,regi,"ngt")$(ttot.val eq 2025) = 0.9 * pm_cf(ttot,regi,"ngt"); @@ -804,7 +810,7 @@ pm_omeg(regi,opTimeYr,te) = max(0, 1 - ((opTimeYr.val - 0.5) / p_lifetime_max(re *** Map each technology with its possible age opTimeYr2te(te,opTimeYr) $ sum(regi $ (pm_omeg(regi,opTimeYr,te) > 0), 1) = yes; -*** Map each model timestep with the possible age of technologies +*** Map each model timestep with the possible age of technologies tsu2opTimeYr(ttot,"1") = yes; loop((ttot,ttot2) $ (ord(ttot2) le ord(ttot)), loop(opTimeYr $ (opTimeYr.val = pm_ttot_val(ttot) - pm_ttot_val(ttot2) + 1), @@ -922,9 +928,9 @@ $offdelim p_abatparam_CH4(tall,all_regi,all_enty,steps)$(ord(steps) gt 201) = p_abatparam_CH4(tall,all_regi,all_enty,"201"); p_abatparam_N2O(tall,all_regi,all_enty,steps)$(ord(steps) gt 201) = p_abatparam_N2O(tall,all_regi,all_enty,"201"); -*** Read methane emissions from fossil fuel extraction for calculating emission factors. +*** Read methane emissions from fossil fuel extraction for calculating emission factors. *** The base year determines whether the data comes from CEDS or EDGAR -$ifthen %cm_emifacs_baseyear% == "2005" +$ifthen %cm_emifacs_baseyear% == "2005" parameter p_emiFossilFuelExtr(all_regi,all_enty) "methane emissions in 2005 [Mt CH4], needed for the calculation of p_efFossilFuelExtr" / $ondelim @@ -1409,7 +1415,7 @@ $offdelim parameter p_macBaseIMAGE(tall,all_regi,all_enty) "baseline emissions of N2O from transport, adipic acid production, and nitric acid production based on data from van Vuuren" / $ondelim -$ifthen %cm_emifacs_baseyear% == "2005" +$ifthen %cm_emifacs_baseyear% == "2005" $include "./core/input/p_macBaseVanv.cs4r" $else $include "./core/input/p_macBaseHarmsen2022.cs4r" @@ -1582,7 +1588,7 @@ execute_load "input_ref.gdx", p_prodSeReference = vm_prodSe.l; execute_load "input_ref.gdx", pm_prodFEReference = vm_prodFe.l; execute_load "input_ref.gdx", p_prodUeReference = v_prodUe.l; execute_load "input_ref.gdx", p_co2CCSReference = vm_co2CCS.l; -*' load MAC costs from reference gdx. Values for t (i.e. after cm_start_year) will be overwritten in core/presolve.gms +*' load MAC costs from reference gdx. Values for t (i.e. after cm_start_year) will be overwritten in core/presolve.gms execute_load "input_ref.gdx" pm_macCost; ); diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index b330f95375..d3e7b2e37f 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -166,6 +166,14 @@ incolearn 14000 ccap0 0.0008 learn 0.15 +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!! TODO Qianzhi ++ chemOld chemNew +!! documentation & sources: see below +inco0 1100 900 +omf 0.06 0.06 +lifetime 20 20 +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf !! documentation & sources: see below diff --git a/core/input/generisdata_vintages.prn b/core/input/generisdata_vintages.prn index 9b5ccb776c..217d8cd096 100644 --- a/core/input/generisdata_vintages.prn +++ b/core/input/generisdata_vintages.prn @@ -162,6 +162,19 @@ $offtext 41 1.0 +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ++ chemOld chemNew +1 1.0 1.0 +6 1.0 1.0 +11 1.0 1.0 +16 1.0 1.0 +21 1.0 1.0 +26 1.0 1.0 +31 1.0 1.0 +36 1.0 1.0 +$endif.cm_subsec_model_chemicals + + $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf 1 1.0 1.0 1.0 1.0 diff --git a/core/sets.gms b/core/sets.gms index b7eab1a659..eb1d15d4e6 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -326,7 +326,7 @@ all_te "all energy technologies, including from modules" seceaf "Route: Scrap-loaded EAF" pcc "outdated technology, only here to avoid compilation errors if input data containing information for this technology are used" pco "outdated technology, only here to avoid compilation errors if input data containing information for this technology are used" -*** transport technologies for deleted realization complex of module 35_transport +*** transport technologies for deleted realization complex of module 35_transport *** only here to make it possible to process input data that still includes data for these obsolete transport technologies apCarPeT "outdated transport technology" apCarDiT "outdated transport technology" @@ -867,7 +867,7 @@ iso_regi "all iso countries and EU and greater China region" / EUR,CHA, UGA,UKR,UMI,URY,USA,UZB,VAT,VCT,VEN,VGB, VIR,VNM,VUT,WLF,WSM,YEM,ZAF,ZMB,ZWE / - map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" + map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" / EUR . EUR CHA . CHA @@ -1240,6 +1240,10 @@ te(all_te) "energy technologies" termX_lng "Export terminals for LNG (liquification)" termM_lng "Import terminals for LNG (regasification)" vess_lng "Vessels transporting LNG" +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld + chemNew +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr "Iron direct reduction" eaf "Electric-arc furnace" @@ -1896,7 +1900,9 @@ MacSector(all_enty) "sectors for which mac curves exist. Some MACs are used for n2owaste "waste (domestic sewage)" co2luc "land use change" co2cement "cement production (only process emissions)" +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" co2chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" co2steel $endif.cm_subsec_model_steel @@ -2689,7 +2695,9 @@ emiMac2mac(all_enty,all_enty) "mapping of emission sources to MACs - co2luc.co2luc co2cement_process. co2cement "process emissions are captured by kiln CCS too" co2cement . co2cement +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" co2chemicals . co2chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" co2steel . co2steel $endif.cm_subsec_model_steel @@ -2708,7 +2716,10 @@ emiMac2sector(all_enty,emi_sectors,sector_types,all_enty) "mapping of (n2ofertin, n2ofertcr, n2ofertsom, n2oanwstc, n2oanwstm, n2oanwstp, n2oagwaste).agriculture.process.n2o (n2oforest, n2osavan, n2opeatland).lulucf.process.n2o - (co2cement_process,co2cement,co2chemicals).indst.process.co2 + (co2cement_process,co2cement).indst.process.co2 +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" + co2chemicals.indst.process.co2 +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" co2steel.indst.process.co2 $endif.cm_subsec_model_steel diff --git a/main.gms b/main.gms index a109ffb260..0c18b7db4b 100755 --- a/main.gms +++ b/main.gms @@ -1823,6 +1823,8 @@ $setglobal cm_subsec_model_steel processes !! def = processes !! regexp = pro *** (off) no bounds for 2025 *** (on) some generous bounds for 2025 assuming that certain developments are not possible anymore even for fast growing technologies given 2023 data $setglobal cm_tech_bounds_2025 on !! def = on !! regexp = on|off +*** cm_subsec_model_chemicals "switch between ces-based and process-based chemicals implementation in subsectors realisation of industry module" +$setglobal cm_subsec_model_chemicals processes !! def = processes !! regexp = processes|ces *** set conopt version. Warning: conopt4 is in beta $setGlobal cm_conoptv conopt3 !! def = conopt3 *' c_empty_model "Short-circuit the model, just use the input as solution" diff --git a/modules/05_initialCap/on/preloop.gms b/modules/05_initialCap/on/preloop.gms index dab5544a14..93ebbcab26 100644 --- a/modules/05_initialCap/on/preloop.gms +++ b/modules/05_initialCap/on/preloop.gms @@ -206,7 +206,7 @@ loop(regi, loop(regi, loop(opTimeYr2te(te,opTimeYr)$(NOT teReNoBio(te)), loop(tsu2opTime5(ttot,opTimeYr), - loop(pe2se(entyPe,entySe,te), + loop(pe2se(entyPe,entySe,te), o_INI_DirProdSeTe(regi,entySe,te) = p05_cap0(regi,te) * pm_cf("2005",regi,te) * pm_dataren(regi,"nur","1",te) ); sm_tmp = 1 / pm_ts(ttot) * p05_cap0(regi,te) * p05_vintage(regi,opTimeYr,te); diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 8de41dc3be..b468a1ad4a 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -136,7 +136,6 @@ $drop cm_indstExogScen_set v37_regionalWasteIncinerationCCSshare.lo(t,regi) = 0.; v37_regionalWasteIncinerationCCSshare.up(t,regi) = p37_regionalWasteIncinerationCCSMaxShare(t,regi); -$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! fix processes procudction in historic years if (cm_startyear eq 2005, loop((ttot,regi,tePrc2opmoPrc(tePrc,opmoPrc))$(ttot.val ge 2005 AND ttot.val le 2020), @@ -145,13 +144,13 @@ if (cm_startyear eq 2005, ); !! Switch to turn off steel CCS +!! TODO Qianzhi: sector dependence is wrong if (cm_CCS_steel ne 1 OR cm_IndCCSscen ne 1, vm_cap.fx(t,regi,teCCPrc,rlf) = 0.; ); v37_shareWithCC.lo(t,regi,tePrc,opmoPrc) = 0.; v37_shareWithCC.up(t,regi,tePrc,opmoPrc) = 1.; -$endif.cm_subsec_model_steel $ifthen.fixedUE_scenario "%cm_fxIndUe%" == "on" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index a86b3446d6..5fd67388a8 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -22,9 +22,11 @@ Parameters en_cement 0.3 !! non-electric, electric en_cement_non_electric 2.0 !! solids, liquids, gases, hydrogen +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" ue_chemicals 1.7 !! energy, capital en_chemicals 0.3 !! fuels and high-temperature heat, electricity en_chemicals_fhth 3.0 !! solids, liquids, gases, electricity +$endif.cm_subsec_model_chemicals ue_steel 5 !! primary steel, secondary steel $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" @@ -48,10 +50,12 @@ pm_cesdata_sigma(ttot,"en_cement_non_electric")$ (ttot.val eq 2030) = 1.3; pm_cesdata_sigma(ttot,"en_cement_non_electric")$ (ttot.val eq 2035) = 1.7; pm_cesdata_sigma(ttot,"en_cement_non_electric")$ (ttot.val eq 2040) = 2.0; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" pm_cesdata_sigma(ttot,"en_chemicals_fhth")$ (ttot.val le 2025) = 0.7; pm_cesdata_sigma(ttot,"en_chemicals_fhth")$ (ttot.val eq 2030) = 1.3; pm_cesdata_sigma(ttot,"en_chemicals_fhth")$ (ttot.val eq 2035) = 2.0; pm_cesdata_sigma(ttot,"en_chemicals_fhth")$ (ttot.val eq 2040) = 3.0; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" pm_cesdata_sigma(ttot,"en_steel_furnace")$ (ttot.val le 2025) = 0.5; @@ -69,7 +73,7 @@ pm_cesdata_sigma(ttot,"en_otherInd_hth")$ (ttot.val eq 2040) = 2.0; loop ((ttot,steps)$( ttot.val ge 2005 ), - sm_tmp = steps.val * sm_dmac / sm_c_2_co2; !! CO2 price at MAC step [$/tCO2] + sm_tmp = steps.val * sm_dmac / sm_c_2_co2; !! CO2 price at MAC step [$/tCO2] $ifthen NOT "%cm_Industry_CCS_markup%" == "off" sm_tmp = sm_tmp / %cm_Industry_CCS_markup%; @@ -95,7 +99,7 @@ $endif.cm_subsec_model_steel if (cm_optimisticMAC eq 1, !! logarithmic curve through 0.75 @ $50 and 0.9 @ $150, limited to 0.95 - pm_abatparam_Ind(ttot,regi,emiInd37,steps)$( + pm_abatparam_Ind(ttot,regi,emiInd37,steps)$( YES $$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" AND NOT sameas(emiInd37,"co2steel") @@ -253,11 +257,13 @@ if (cm_IndCCSscen eq 1, emiMac2mac("co2cement_process","co2cement") = YES; ); +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" if (cm_CCS_chemicals eq 1, emiMacSector("co2chemicals") = YES; pm_macSwitch("co2chemicals") = YES; emiMac2mac("co2chemicals","co2chemicals") = YES; ); +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" if (cm_CCS_steel eq 1, @@ -315,12 +321,14 @@ Parameter p37_arcane_FE_limits(all_in,all_in) "minimum ratio of feelhth/feelwlth and feh2/fega (may be needed for calibration)" / feh2_cement . fega_cement 1e-5 +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" feh2_chemicals . fega_chemicals 1e-5 + feelhth_chemicals . feelwlth_chemicals 1e-5 +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" feh2_steel . fega_steel 1e-5 $endif.cm_subsec_model_steel feh2_otherInd . fega_otherInd 1e-5 - feelhth_chemicals . feelwlth_chemicals 1e-5 feelhth_otherInd . feelwlth_otherInd 1e-5 / ; @@ -439,9 +447,11 @@ pm_calibrate_eff_scale("feelhth_otherInd","fega_otherInd","width") = 15; pm_calibrate_eff_scale("feh2_cement","fega_cement","level") = 1.1; pm_calibrate_eff_scale("feh2_cement","fega_cement","midperiod") = 2050; pm_calibrate_eff_scale("feh2_cement","fega_cement","width") = 22; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" pm_calibrate_eff_scale("feh2_chemicals","fega_chemicals","level") = 1.1; pm_calibrate_eff_scale("feh2_chemicals","fega_chemicals","midperiod") = 2050; pm_calibrate_eff_scale("feh2_chemicals","fega_chemicals","width") = 22; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" pm_calibrate_eff_scale("feh2_steel","fega_steel","level") = 1.1; pm_calibrate_eff_scale("feh2_steel","fega_steel","midperiod") = 2050; @@ -487,20 +497,24 @@ p37_CESMkup(ttot,regi,in) = 0; *' Default industry mark-up cost without budget effect: *' mark-up cost on electrification (hth_electricity inputs), to reach > 1 MRS to *' gas/liquids as technical efficiency gains from electrification +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" pm_tau_ces_tax(t,regi,"feelhth_chemicals") = 100 * sm_TWa_2_MWh * 1e-12; -pm_tau_ces_tax(t,regi,"feelhth_otherInd") = 300 * sm_TWa_2_MWh * 1e-12; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" pm_tau_ces_tax(t,regi,"feel_steel_secondary") = 100 * sm_TWa_2_MWh * 1e-12; $endif.cm_subsec_model_steel +pm_tau_ces_tax(t,regi,"feelhth_otherInd") = 300 * sm_TWa_2_MWh * 1e-12; *' mark-up cost on H2 inputs, to reach MRS around 1 to gas/liquids as similar *' technical efficiency +pm_tau_ces_tax(t,regi,"feh2_cement") = 100 * sm_TWa_2_MWh * 1e-12; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" pm_tau_ces_tax(t,regi,"feh2_chemicals") = 100 * sm_TWa_2_MWh * 1e-12; -pm_tau_ces_tax(t,regi,"feh2_otherInd") = 50 * sm_TWa_2_MWh * 1e-12; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" pm_tau_ces_tax(t,regi,"feh2_steel") = 50 * sm_TWa_2_MWh * 1e-12; $endif.cm_subsec_model_steel -pm_tau_ces_tax(t,regi,"feh2_cement") = 100 * sm_TWa_2_MWh * 1e-12; +pm_tau_ces_tax(t,regi,"feh2_otherInd") = 50 * sm_TWa_2_MWh * 1e-12; *' overwrite or extent CES markup cost if specified by switch @@ -632,6 +646,8 @@ $endIf.cm_wasteIncinerationCCSshare *** --------------------------------------------------------------------------- p37_specMatDem(mat,all_te,opmoPrc) = 0.; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 p37_specMatDem("dripell","idr","h2") = 1.44; !! Source: POSTED / Copy from ng opMode @@ -650,6 +666,11 @@ $endif.cm_subsec_model_steel !!TODO: Think about accounting of integrated plants / casting & rolling p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!! TODO Qianzhi +p37_specFeDemTarget("feh2s","chemOld","standard") = 2.23 / (sm_TWa_2_MWh/sm_giga_2_non); !! +p37_specFeDemTarget("feh2s","chemNew","standard") = 2.23 / (sm_TWa_2_MWh/sm_giga_2_non); !! +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! numbers are given in MWh/t and converted to Remind units TWa/Gt with the factors after that (divided by 8.76) @@ -692,6 +713,14 @@ $endif.cm_subsec_model_steel *** -------------------------------- p37_mat2ue(all_enty,all_in) = 0.; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!! TODO Qianzhi: refine +!! ue_chemicals is measured in value_added (trn$2005), whilst olanadar is measured in Gt +!! So this is the price of olandar in trn$2005/Gt = $2005/kg +!! In this first dummy step, the process replaces all of chemistry, so olandar is only a dummy product reprenting the whole chemicals sector. It chould be much more expensive than olefines, since lots of the chemicals sector is much less energy intensive but has higher value added than olefines production +!! quick back-of-the envelope calculation: globall 5 trn value added, 2.4 bln tonnes petrochemicals --> maybe 3.3 bn tonnes total chemicals --> ratio is 1.5 +p37_mat2ue("olandar","ue_chemicals") = 1.5; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_mat2ue("sesteel","ue_steel_secondary") = 1.; p37_mat2ue("prsteel","ue_steel_primary") = 1.; @@ -757,9 +786,21 @@ $endif.cm_subsec_model_steel *** -------------------------------- pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; -pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; -p37_matFlowHist(tall,all_regi,mat) = 0.; +pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; if (cm_startyear eq 2005, +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!! TODO Qianzhi +$endif.cm_subsec_model_chemicals +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + pm_outflowPrcIni(regi,"bof","unheated") = pm_fedemand("2005",regi,"ue_steel_primary"); + pm_outflowPrcIni(regi,"bf","standard") = p37_specMatDem("pigiron","bof","unheated") * pm_outflowPrcIni(regi,"bof","unheated"); + pm_outflowPrcIni(regi,"eaf","sec") = pm_fedemand("2005",regi,"ue_steel_secondary"); + pm_outflowPrcIni(regi,"eaf","pri") = 0.; + pm_outflowPrcIni(regi,"idr","ng") = 0.; + pm_outflowPrcIni(regi,"idr","h2") = 0.; + pm_outflowPrcIni(regi,"bfcc","standard") = 0.; + pm_outflowPrcIni(regi,"idrcc","ng") = 0.; + loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), !! 2nd stage tech @@ -808,6 +849,7 @@ if (cm_startyear eq 2005, ); ); +$endif.cm_subsec_model_steel !! loop over other years and blend loop((entyFeStat(all_enty), tePrc(all_te), opmoPrc), diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 06e3f02bec..41a9d56bb7 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -40,7 +40,9 @@ Sets macInd37(all_enty) "industry CCS MACs" / co2cement +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" co2chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" co2steel $endif.cm_subsec_model_steel @@ -84,6 +86,7 @@ $endif.cm_subsec_model_steel ue_chemicals "useful energy of chemicals production" +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" en_chemicals "energy use of chemicals production" kap_chemicals "energy efficiency capital of chemicals production" en_chemicals_fhth "feedstock and high temperature heat energy use of chemicals production" @@ -93,6 +96,7 @@ $endif.cm_subsec_model_steel feh2_chemicals "hydrogen energy use of chemicals production" feelhth_chemicals "electric energy for high temperature heat in chemicals production" feelwlth_chemicals "electric energy for mechanical work and low temperature heat in chemicals production" +$endif.cm_subsec_model_chemicals ue_steel "useful energy of steel production" ue_steel_primary "useful energy of primary steel production" @@ -133,10 +137,12 @@ $endif.cm_subsec_model_steel en_cement . (en_cement_non_electric, feel_cement) en_cement_non_electric . (feso_cement, feli_cement, fega_cement, feh2_cement) +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" ue_chemicals . (en_chemicals, kap_chemicals) en_chemicals . (en_chemicals_fhth, feelwlth_chemicals) en_chemicals_fhth . (feso_chemicals, feli_chemicals, fega_chemicals, feh2_chemicals, feelhth_chemicals) +$endif.cm_subsec_model_chemicals ue_steel . (ue_steel_primary, ue_steel_secondary) $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" @@ -164,8 +170,10 @@ $endif.cm_subsec_model_steel ue_cement . (feso_cement, feli_cement, fega_cement, feh2_cement, feel_cement) +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" ue_chemicals . (feso_chemicals, feli_chemicals, fega_chemicals, feh2_chemicals, feelhth_chemicals, feelwlth_chemicals) +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" ue_steel_primary . (feso_steel, feli_steel, fega_steel, feh2_steel, @@ -190,7 +198,9 @@ $endif.cm_subsec_model_steel ppfKap_industry_dyn37(all_in) "energy efficiency capital of industry" / kap_cement +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" kap_chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" kap_steel_primary kap_steel_secondary @@ -201,8 +211,10 @@ $endif.cm_subsec_model_steel ppfen_industry_dyn37(all_in) "primary production factors energy - industry" / feso_cement, feli_cement, fega_cement, feh2_cement, feel_cement, +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" feso_chemicals, feli_chemicals, fega_chemicals, feh2_chemicals, feelhth_chemicals, feelwlth_chemicals, +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" feso_steel, feli_steel, fega_steel, feh2_steel, feel_steel_primary, feel_steel_secondary, @@ -224,7 +236,9 @@ $endif.cm_subsec_model_steel pf_quantity_shares_37(all_in,all_in) "quantities for the calibration defined as a percentage of another pf" / feh2_cement . fega_cement +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" feh2_chemicals . fega_chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" feh2_steel . fega_steel $endif.cm_subsec_model_steel @@ -241,9 +255,13 @@ $endif.cm_subsec_model_steel cement . (ue_cement, en_cement, kap_cement, en_cement_non_electric, feso_cement, feli_cement, fega_cement, feh2_cement, feel_cement) - chemicals . (ue_chemicals, en_chemicals, kap_chemicals, en_chemicals_fhth, + chemicals . (ue_chemicals +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" + , en_chemicals, kap_chemicals, en_chemicals_fhth, feso_chemicals, feli_chemicals, fega_chemicals, feh2_chemicals, - feelhth_chemicals, feelwlth_chemicals) + feelhth_chemicals, feelwlth_chemicals +$endif.cm_subsec_model_chemicals + ) steel . (ue_steel, ue_steel_primary, ue_steel_secondary $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" @@ -263,9 +281,11 @@ $endif.cm_subsec_model_steel ue_cement . (en_cement, kap_cement, en_cement_non_electric, feso_cement, feli_cement, fega_cement, feh2_cement, feel_cement) +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" ue_chemicals . (en_chemicals, kap_chemicals, en_chemicals_fhth, feso_chemicals, feli_chemicals, fega_chemicals, feh2_chemicals, feelhth_chemicals, feelwlth_chemicals) +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" ue_steel_primary . (en_steel_primary, kap_steel_primary, en_steel_furnace, @@ -290,13 +310,19 @@ $endif.cm_subsec_model_steel fe2ppfEn37(all_enty,all_in) "match ESM entyFe to ppfen" / - fesos . (feso_cement, feso_chemicals, feso_otherInd) - fehos . (feli_cement, feli_chemicals, feli_otherInd) - fegas . (fega_cement, fega_chemicals, fega_otherInd) - feh2s . (feh2_cement, feh2_chemicals, feh2_otherInd) + fesos . (feso_cement, feso_otherInd) + fehos . (feli_cement, feli_otherInd) + fegas . (fega_cement, fega_otherInd) + feh2s . (feh2_cement, feh2_otherInd) fehes . fehe_otherInd - feels . (feel_cement, feelhth_chemicals, feelwlth_chemicals, - feelhth_otherInd, feelwlth_otherInd) + feels . (feel_cement, feelhth_otherInd, feelwlth_otherInd) +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" + fesos . feso_chemicals + fehos . feli_chemicals + fegas . fega_chemicals + feh2s . feh2_chemicals + feels . (feelhth_chemicals, feelwlth_chemicals) +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "ces" fesos . feso_steel fehos . feli_steel @@ -345,6 +371,9 @@ ppfen_MkupCost37(all_in) "primary production factors in industry on which CES secInd37Prc(secInd37) "Sub-sectors with process-based modeling" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel $endif.cm_subsec_model_steel @@ -352,6 +381,10 @@ $endif.cm_subsec_model_steel tePrc(all_te) "Technologies used in process-based model (including CCS)" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld + chemNew +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf bof @@ -374,6 +407,9 @@ $endif.cm_subsec_model_steel mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + olandar +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel sesteel @@ -388,6 +424,8 @@ $endif.cm_subsec_model_steel matIn(all_enty) "Materials which serve as input to a process" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eafscrap "Steel scrap used in EAF" bofscrap "Steel scrap used in BOF" @@ -400,6 +438,9 @@ $endif.cm_subsec_model_steel matOut(all_enty) "Materials which serve as output of a process" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + olandar +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel sesteel @@ -410,6 +451,9 @@ $endif.cm_subsec_model_steel matFin(mat) "Final products of a process-based production route" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + olandar +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel sesteel @@ -419,6 +463,8 @@ $endif.cm_subsec_model_steel opmoPrc "Operation modes for technologies in process-based model" / standard "Only one operation mode implemented" +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" ng "Direct reduction using natural gas" h2 "Direct reduction using hydrogen" @@ -430,6 +476,9 @@ $endif.cm_subsec_model_steel ppfUePrc(all_in) "Ue CES tree nodes connected to process based implementation, which therefore become primary production factors (ppf)" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ue_chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" ue_steel_primary ue_steel_secondary @@ -438,6 +487,10 @@ $endif.cm_subsec_model_steel route(all_te) "Process routes; Currently only used for reporting" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemRo_old + chemRo_new +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idreaf_ng idreaf_ng_ccs @@ -450,6 +503,14 @@ $endif.cm_subsec_model_steel ppfen_no_ces_use(all_in) "FE nodes of all_in that are not part of the CES tree in the process-based industry model; Needed for pm_fedemand data input" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + feso_chemicals + feli_chemicals + fega_chemicals + feh2_chemicals, + feelhth_chemicals + feelwlth_chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" feso_steel feli_steel @@ -466,6 +527,10 @@ $endif.cm_subsec_model_steel tePrc2opmoPrc(tePrc,opmoPrc) "Mapping of technologies onto available operation modes" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld . standard + chemNew . standard +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) eaf . (pri,sec) @@ -478,6 +543,8 @@ $endif.cm_subsec_model_steel tePrc2matIn(tePrc,opmoPrc,mat) "Mapping of technologies onto input materials" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (h2,ng) . dripell eaf . pri . driron @@ -489,6 +556,10 @@ $endif.cm_subsec_model_steel tePrc2matOut(tePrc,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld . standard . olandar + chemNew . standard . olandar +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron bof . unheated . prsteel @@ -500,6 +571,10 @@ $endif.cm_subsec_model_steel tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld . ue_chemicals + chemNew . ue_chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" (bf,bfcc) . standard . ue_steel_primary bof . unheated . ue_steel_primary @@ -512,6 +587,8 @@ $endif.cm_subsec_model_steel tePrc2teCCPrc(tePrc,opmoPrc,tePrc,opmoPrc) "Mapping of base technologies to CCS technologies" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . bfcc . standard idr . ng . idrcc . ng @@ -520,6 +597,10 @@ $endif.cm_subsec_model_steel tePrc2route(tePrc,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld . standard . chemRo_old + chemNew . standard . chemRo_new +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf idr . h2 . idreaf_h2 @@ -539,6 +620,9 @@ $endif.cm_subsec_model_steel mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ces tree node the model is connected to" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + olandar . ue_chemicals +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary sesteel . ue_steel_secondary @@ -547,6 +631,10 @@ $endif.cm_subsec_model_steel fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included in en2en, which connects capex and opex to budget" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + entydummy.entydummy.chemOld + entydummy.entydummy.chemNew +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" entydummy.entydummy.bf entydummy.entydummy.bof @@ -559,6 +647,10 @@ $endif.cm_subsec_model_steel secInd37_tePrc(secInd37,tePrc) "Mapping of technologies onto industry subsectors" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemicals . chemOld + chemicals . chemNew +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr steel . eaf From c7d998931e991b680bbf91559958c6ee4c0ac941 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 19 Aug 2024 11:23:36 +0200 Subject: [PATCH 02/69] Fix bugs on first chemicals version with dummy processes --- core/sets.gms | 11 ++++++- modules/37_industry/subsectors/bounds.gms | 16 +++++++-- modules/37_industry/subsectors/datainput.gms | 34 +++++++++++++++++--- modules/37_industry/subsectors/sets.gms | 4 +-- 4 files changed, 55 insertions(+), 10 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index eb1d15d4e6..ae8e60fbb2 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -310,6 +310,13 @@ all_te "all energy technologies, including from modules" termX_nh3 "Export terminals for liquid ammonia (liquification)" termM_nh3 "Import terminals for liquid ammonia (regasification)" vess_nh3 "Vessels transporting liquid ammonia" + +*** TOCHECK: Qianzhi +*** PCV: technologies related to chemical + chemOld + chemNew + chemRo_old + chemRo_new *** PCV: technologies related to steel ironMine "Mining of iron ore" idr "Iron direct reduction" @@ -413,6 +420,8 @@ all_enty "all types of quantities" driron "Direct reduced iron" ironore "Iron ore" dripell "DRI pellets" + !! TOCHECK: QIANZHI + olandar !! emissions co2 "carbon dioxide emissions" @@ -867,7 +876,7 @@ iso_regi "all iso countries and EU and greater China region" / EUR,CHA, UGA,UKR,UMI,URY,USA,UZB,VAT,VCT,VEN,VGB, VIR,VNM,VUT,WLF,WSM,YEM,ZAF,ZMB,ZWE / - map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" + map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" / EUR . EUR CHA . CHA diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index b468a1ad4a..199b94c3cb 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -143,11 +143,21 @@ if (cm_startyear eq 2005, ); ); -!! Switch to turn off steel CCS -!! TODO Qianzhi: sector dependence is wrong -if (cm_CCS_steel ne 1 OR cm_IndCCSscen ne 1, +!! Switch to turn off all CCS +if (cm_IndCCSscen ne 1, vm_cap.fx(t,regi,teCCPrc,rlf) = 0.; ); +!! TOCHECK:Qianzhi +if (cm_CCS_steel ne 1, + loop(tePrc$(teCCPrc(tePrc) AND secInd37_tePrc("steel", tePrc)), + vm_cap.fx(t,regi,tePrc,rlf) = 0.; + ); +); +if (cm_CCS_chemicals ne 1, + loop(tePrc$(teCCPrc(tePrc) AND secInd37_tePrc("chemicals", tePrc)), + vm_cap.fx(t,regi,tePrc,rlf) = 0.; + ); +); v37_shareWithCC.lo(t,regi,tePrc,opmoPrc) = 0.; v37_shareWithCC.up(t,regi,tePrc,opmoPrc) = 1.; diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 5fd67388a8..13f258298a 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -667,9 +667,17 @@ $endif.cm_subsec_model_steel !!TODO: Think about accounting of integrated plants / casting & rolling p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! TODO Qianzhi -p37_specFeDemTarget("feh2s","chemOld","standard") = 2.23 / (sm_TWa_2_MWh/sm_giga_2_non); !! -p37_specFeDemTarget("feh2s","chemNew","standard") = 2.23 / (sm_TWa_2_MWh/sm_giga_2_non); !! +!! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons +p37_specFeDemTarget("fegas","chemOld","standard") = 7.65 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 +p37_specFeDemTarget("feels","chemOld","standard") = 0.08 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 +p37_specFeDemTarget("fesos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY +p37_specFeDemTarget("fehos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY +!!p37_specFeDemTarget("feh2s","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY + + +p37_specFeDemTarget("feh2s","chemNew","standard") = 5.93 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feels","chemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -719,7 +727,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! So this is the price of olandar in trn$2005/Gt = $2005/kg !! In this first dummy step, the process replaces all of chemistry, so olandar is only a dummy product reprenting the whole chemicals sector. It chould be much more expensive than olefines, since lots of the chemicals sector is much less energy intensive but has higher value added than olefines production !! quick back-of-the envelope calculation: globall 5 trn value added, 2.4 bln tonnes petrochemicals --> maybe 3.3 bn tonnes total chemicals --> ratio is 1.5 -p37_mat2ue("olandar","ue_chemicals") = 1.5; + +!! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. + +p37_mat2ue("olandar","ue_chemicals") = 1.27; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_mat2ue("sesteel","ue_steel_secondary") = 1.; @@ -790,6 +801,21 @@ pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; if (cm_startyear eq 2005, $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi + pm_outflowPrcIni(regi,"ChemOld","standard") = pm_fedemand("2005",regi,"ue_chemicals") / p37_mat2ue("olandar","ue_chemicals"); + pm_outflowPrcIni(regi,"ChemNew","standard") = 0; + + loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), + pm_specFeDem(ttot,regi,"feh2s","ChemNew","standard") = p37_specFeDemTarget("feh2s","ChemNew","standard"); + pm_specFeDem(ttot,regi,"feels","ChemNew","standard") = p37_specFeDemTarget("feels","ChemNew","standard"); + + pm_specFeDem(ttot,regi,"fegas","ChemOld","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fesos","ChemOld","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fehos","ChemOld","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + !!pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = pm_fedemand(ttot,regi,"feel_chemicals") * sm_EJ_2_TWa / ( p37_specMatDem("pigiron","bof","unheated") * pm_fedemand(ttot,regi,"ue_steel_primary") ); + + ); + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" pm_outflowPrcIni(regi,"bof","unheated") = pm_fedemand("2005",regi,"ue_steel_primary"); diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 41a9d56bb7..53f902eabf 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -572,8 +572,8 @@ $endif.cm_subsec_model_steel tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld . ue_chemicals - chemNew . ue_chemicals + chemOld . standard . ue_chemicals + chemNew . standard . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" (bf,bfcc) . standard . ue_steel_primary From d27fbcde9f84e0d906eaa16316e91b3de557d633 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 2 Sep 2024 12:52:41 +0200 Subject: [PATCH 03/69] Chemicals processes develpment with Ammonia CCS --- core/datainput.gms | 13 ++++ core/input/generisdata_tech.prn | 12 +++- core/sets.gms | 29 ++++++-- modules/37_industry/subsectors/bounds.gms | 4 +- modules/37_industry/subsectors/datainput.gms | 70 +++++++++++++++++-- .../37_industry/subsectors/declarations.gms | 1 + modules/37_industry/subsectors/equations.gms | 21 +++++- modules/37_industry/subsectors/sets.gms | 68 +++++++++++++++--- 8 files changed, 191 insertions(+), 27 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index a0325c2221..ae7f14fa0c 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -728,6 +728,11 @@ pm_cf(ttot,regi,"tdsyndie") = 0.7; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_cf(ttot,regi,"chemOld") = 0.8; pm_cf(ttot,regi,"chemNew") = 0.8; +pm_cf(ttot,regi,"AmSyCoal") = 0.8; !! ammonia tech QIANZHI +pm_cf(ttot,regi,"AmSyNG") = 0.8; +pm_cf(ttot,regi,"AmSyCoalcc") = 0.8; +pm_cf(ttot,regi,"AmSyNGcc") = 0.8; +pm_cf(ttot,regi,"AmSyH2") = 0.8; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" pm_cf(ttot,regi,"bf") = 0.8; @@ -1189,6 +1194,10 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'dac') = 0.25; p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.05; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.05; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; p_adj_seed_te(ttot,regi,"idrcc") = 0.05; @@ -1222,6 +1231,10 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"spv") = 0.15; p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI + p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; p_adj_coeff(ttot,regi,"idrcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index d3e7b2e37f..1b010cde31 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -167,10 +167,16 @@ ccap0 0.0008 learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! TODO Qianzhi -+ chemOld chemNew +!! ammonia tech QIANZHI ++ chemOld chemNew AmSyCoal AmSyNG AmSyH2 !! documentation & sources: see below -inco0 1100 900 +inco0 1100 900 1100 1100 900 +omf 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 + ++ AmSyCoalcc AmSyNGcc +!! documentation & sources: see below +inco0 1800 1800 omf 0.06 0.06 lifetime 20 20 $endif.cm_subsec_model_chemicals diff --git a/core/sets.gms b/core/sets.gms index ae8e60fbb2..732f508634 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -311,12 +311,23 @@ all_te "all energy technologies, including from modules" termM_nh3 "Import terminals for liquid ammonia (regasification)" vess_nh3 "Vessels transporting liquid ammonia" -*** TOCHECK: Qianzhi +*** TOCHECK: Qianzhi *** PCV: technologies related to chemical chemOld chemNew chemRo_old chemRo_new + + AmSyCoal !! ammonia tech QIANZHI + AmSyNG + AmSyCoalcc + AmSyNGcc + AmSyH2 + AmSyRo_Coal + AmSyRo_NG + AmSyRo_Coal_ccs + AmSyRo_NG_ccs + AmSyRo_H2 *** PCV: technologies related to steel ironMine "Mining of iron ore" idr "Iron direct reduction" @@ -422,6 +433,7 @@ all_enty "all types of quantities" dripell "DRI pellets" !! TOCHECK: QIANZHI olandar + ammonia !! emissions co2 "carbon dioxide emissions" @@ -498,7 +510,7 @@ all_enty "all types of quantities" perm "Carbon permit" peog "aggregated oil and gas, only relevant for calibration because IEA only provides aggregated data" bfco2 "CO2 emission from blast furnace" - + !! outdated entries, still used in module 04 until structuremappings are fixed fesoi "industry use of solid energy carriers" fehoi "industry use of liquid energy carriers" @@ -876,7 +888,7 @@ iso_regi "all iso countries and EU and greater China region" / EUR,CHA, UGA,UKR,UMI,URY,USA,UZB,VAT,VCT,VEN,VGB, VIR,VNM,VUT,WLF,WSM,YEM,ZAF,ZMB,ZWE / - map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" + map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" / EUR . EUR CHA . CHA @@ -1095,7 +1107,7 @@ ttot(tall) "time index with spin-up, years between 1900 and 2150 with 5 to 20 *** 10-year intervals from 2060 to 2110, *** 20-year intervals from 2110 to 2150. / - 1900, 1905, 1910, 1915, 1920, 1925, 1930, 1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, + 1900, 1905, 1910, 1915, 1920, 1925, 1930, 1935, 1940, 1945, 1950, 1955, 1960, 1965, 1970, 1975, 1980, 1985, 1990, 1995, 2000, 2005, 2010, 2015, 2020, 2025, 2030, 2035, 2040, 2045, 2050, 2055, 2060, 2070, 2080, 2090, 2100, 2110, 2130, 2150 @@ -1252,6 +1264,11 @@ te(all_te) "energy technologies" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld chemNew + AmSyCoal !! ammonia tech QIANZHI + AmSyNG + AmSyCoalcc + AmSyNGcc + AmSyH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr "Iron direct reduction" @@ -1333,6 +1350,10 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition *** gridwind "grid between areas with high wind onshore production and the rest" gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI + AmSyNGcc "Ammonia by Gas CCS" +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" idrcc "Direct reduction CCS" diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 199b94c3cb..7b13735ff7 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -149,12 +149,12 @@ if (cm_IndCCSscen ne 1, ); !! TOCHECK:Qianzhi if (cm_CCS_steel ne 1, - loop(tePrc$(teCCPrc(tePrc) AND secInd37_tePrc("steel", tePrc)), + loop(tePrc$(teCCPrc(tePrc) AND secInd37_tePrc("steel", tePrc)), vm_cap.fx(t,regi,tePrc,rlf) = 0.; ); ); if (cm_CCS_chemicals ne 1, - loop(tePrc$(teCCPrc(tePrc) AND secInd37_tePrc("chemicals", tePrc)), + loop(tePrc$(teCCPrc(tePrc) AND secInd37_tePrc("chemicals", tePrc)), vm_cap.fx(t,regi,tePrc,rlf) = 0.; ); ); diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 13f258298a..fa84d8088c 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -668,16 +668,38 @@ $endif.cm_subsec_model_steel p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fegas","chemOld","standard") = 7.65 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 -p37_specFeDemTarget("feels","chemOld","standard") = 0.08 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 -p37_specFeDemTarget("fesos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY -p37_specFeDemTarget("fehos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY +!! p37_specFeDemTarget("fegas","chemOld","standard") = 7.65 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 +!!p37_specFeDemTarget("feels","chemOld","standard") = 0.08 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 +!!p37_specFeDemTarget("fesos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY +!!p37_specFeDemTarget("fehos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY + +p37_specFeDemTarget("fegas","chemOld","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","chemOld","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","chemOld","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","chemOld","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); + !!p37_specFeDemTarget("feh2s","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY -p37_specFeDemTarget("feh2s","chemNew","standard") = 5.93 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feh2s","chemNew","standard") = 8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("feels","chemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 + +p37_specFeDemTarget("fesos","AmSyCoal","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI +p37_specFeDemTarget("feels","AmSyCoal","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fegas","AmSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("feh2s","AmSyH2","standard") = 8 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -721,6 +743,7 @@ $endif.cm_subsec_model_steel *** -------------------------------- p37_mat2ue(all_enty,all_in) = 0.; +p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi: refine !! ue_chemicals is measured in value_added (trn$2005), whilst olanadar is measured in Gt @@ -731,8 +754,15 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. p37_mat2ue("olandar","ue_chemicals") = 1.27; +p37_mat2ue("ammonia","ue_chemicals") = 1.27; !! ammonia tech QIANZHI + +p37_ue_share("olandar","ue_chemicals") = 0.7; +p37_ue_share("ammonia","ue_chemicals") = 0.3; !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" +p37_ue_share("sesteel","ue_steel_secondary") = 1.; +p37_ue_share("prsteel","ue_steel_primary") = 1.; + p37_mat2ue("sesteel","ue_steel_secondary") = 1.; p37_mat2ue("prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel @@ -773,6 +803,14 @@ s37_shareHistFeDemPenalty = 0.6; p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; + +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +p37_captureRate("AmSyCoalcc") = 0.73; !! ammonia tech QIANZHI +p37_captureRate("AmSyNGcc") = 0.85; +p37_selfCaptureRate("AmSyCoalcc") = 0.9; +p37_selfCaptureRate("AmSyNGcc") = 0.9; +$endif.cm_subsec_model_chemicals + $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_captureRate("bfcc") = 0.73; !! Source: Witecka 2023, Figure 18 p37_captureRate("idrcc") = 0.85; !! Source: IEA Steel Roadmap Fig. 2.11 @@ -801,9 +839,15 @@ pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; if (cm_startyear eq 2005, $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi - pm_outflowPrcIni(regi,"ChemOld","standard") = pm_fedemand("2005",regi,"ue_chemicals") / p37_mat2ue("olandar","ue_chemicals"); + pm_outflowPrcIni(regi,"ChemOld","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals"); pm_outflowPrcIni(regi,"ChemNew","standard") = 0; + pm_outflowPrcIni(regi,"AmSyCoal","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("ammonia","ue_chemicals") / p37_mat2ue("ammonia","ue_chemicals") * 0.3; !!! ammonia tech QIANZHI + pm_outflowPrcIni(regi,"AmSyNG","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("ammonia","ue_chemicals") / p37_mat2ue("ammonia","ue_chemicals") * 0.7; + pm_outflowPrcIni(regi,"AmSyCoalcc","standard") = 0; + pm_outflowPrcIni(regi,"AmSyNGcc","standard") = 0; + pm_outflowPrcIni(regi,"AmSyH2","standard") = 0; + loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), pm_specFeDem(ttot,regi,"feh2s","ChemNew","standard") = p37_specFeDemTarget("feh2s","ChemNew","standard"); pm_specFeDem(ttot,regi,"feels","ChemNew","standard") = p37_specFeDemTarget("feels","ChemNew","standard"); @@ -812,7 +856,19 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_specFeDem(ttot,regi,"fesos","ChemOld","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); pm_specFeDem(ttot,regi,"fehos","ChemOld","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - !!pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = pm_fedemand(ttot,regi,"feel_chemicals") * sm_EJ_2_TWa / ( p37_specMatDem("pigiron","bof","unheated") * pm_fedemand(ttot,regi,"ue_steel_primary") ); + + pm_specFeDem(ttot,regi,"feh2s","AmSyH2","standard") = p37_specFeDemTarget("feh2s","AmSyH2","standard"); !!! ammonia tech QIANZHI + pm_specFeDem(ttot,regi,"feels","AmSyH2","standard") = p37_specFeDemTarget("feels","AmSyH2","standard"); + + pm_specFeDem(ttot,regi,"fesos","AmSyCoalcc","standard") = p37_specFeDemTarget("fesos","AmSyCoalcc","standard"); + pm_specFeDem(ttot,regi,"feels","AmSyCoalcc","standard") = p37_specFeDemTarget("feels","AmSyCoalcc","standard"); + pm_specFeDem(ttot,regi,"fegas","AmSyNGcc","standard") = p37_specFeDemTarget("fegas","AmSyNGcc","standard"); + pm_specFeDem(ttot,regi,"feels","AmSyNGcc","standard") = p37_specFeDemTarget("feels","AmSyNGcc","standard"); + + pm_specFeDem(ttot,regi,"fesos","AmSyCoal","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); + pm_specFeDem(ttot,regi,"feels","AmSyCoal","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); + pm_specFeDem(ttot,regi,"fegas","AmSyNG","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); + pm_specFeDem(ttot,regi,"feels","AmSyNG","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); ); diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 1425093a71..4ae10278bb 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -147,6 +147,7 @@ $endif.no_calibration q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" + q37_ue_share(tall,all_regi,mat,all_in) "Fix share of material contribution to ue !! ammonia tech QIANZHI" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" q37_emiCCPrc(tall,all_regi,emiInd37) "Captured emissions from CCS" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index db80cadd5a..1bd945a2da 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -81,9 +81,8 @@ $endif.exogDem_scen *' energy mix, as that is what can be captured); vm_emiIndBase itself is not used for emission *' accounting, just as a CCS baseline. ***------------------------------------------------------ -q37_emiIndBase(t,regi,enty,secInd37)$( - entyFeCC37(enty) - OR sameas(enty,"co2cement_process") ) .. +q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) + OR sameas(enty,"co2cement_process") ) .. vm_emiIndBase(t,regi,enty,secInd37) =e= sum((secInd37_2_pf(secInd37,ppfen_industry_dyn37(in)),fe2ppfEn(entyFeCC37(enty),in)), @@ -457,6 +456,22 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. ) ; +***------------------------------------------------------ +*' Fixed share of final materials in ue !! ammonia tech QIANZHI +***------------------------------------------------------ +q37_ue_share(t,regi,mat,in)$( ppfUePrc(in) ) .. + (vm_cesIO(t,regi,in) + + pm_cesdata(t,regi,in,"offset_quantity")) + * p37_ue_share(mat,in) + =e= + sum(mat2ue(mat,in), + p37_mat2ue(mat,in) + * + v37_matFlow(t,regi,mat) + ) +; + + ***------------------------------------------------------ *' Definition of capacity constraints ***------------------------------------------------------ diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 53f902eabf..53c5aa520b 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -384,6 +384,12 @@ tePrc(all_te) "Technologies used in process-based model (including CCS)" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld chemNew + + AmSyCoal !! ammonia tech QIANZHI + AmSyNG + AmSyCoalcc + AmSyNGcc + AmSyH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf @@ -409,6 +415,7 @@ mat(all_enty) "Materials considered in process-based model; Can be input and/o / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" olandar + ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -440,6 +447,7 @@ matOut(all_enty) "Materials which serve as output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" olandar + ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -452,7 +460,8 @@ $endif.cm_subsec_model_steel matFin(mat) "Final products of a process-based production route" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - olandar + olandar + ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -490,6 +499,12 @@ route(all_te) "Process routes; Currently only used for reporting" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemRo_old chemRo_new + + AmSyRo_Coal !! ammonia tech QIANZHI + AmSyRo_NG + AmSyRo_Coal_ccs + AmSyRo_NG_ccs + AmSyRo_H2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idreaf_ng @@ -530,6 +545,12 @@ tePrc2opmoPrc(tePrc,opmoPrc) "Mapping of technologies onto available operation $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard chemNew . standard + + AmSyCoal . standard !! ammonia tech QIANZHI + AmSyNG . standard + AmSyCoalcc . standard + AmSyNGcc . standard + AmSyH2 . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) @@ -559,6 +580,12 @@ tePrc2matOut(tePrc,opmoPrc,mat) "Mapping of industry process technologies onto $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . olandar chemNew . standard . olandar + + AmSyCoal . standard . ammonia !! ammonia tech QIANZHI + AmSyNG . standard . ammonia + AmSyCoalcc . standard . ammonia + AmSyNGcc . standard . ammonia + AmSyH2 . standard . ammonia $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron @@ -573,21 +600,27 @@ tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to th / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . ue_chemicals - chemNew . standard . ue_chemicals + chemNew . standard . ue_chemicals + + (AmSyCoal,AmSyCoalcc) . standard . ue_chemicals + (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI + AmSyH2 . standard . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" - (bf,bfcc) . standard . ue_steel_primary - bof . unheated . ue_steel_primary - idr . (h2,ng) . ue_steel_primary - idrcc . ng . ue_steel_primary - eaf . pri . ue_steel_primary - eaf . sec . ue_steel_secondary + (bf,bfcc) . standard . ue_steel_primary + bof . unheated . ue_steel_primary + idr . (h2,ng) . ue_steel_primary + idrcc . ng . ue_steel_primary + eaf . pri . ue_steel_primary + eaf . sec . ue_steel_secondary $endif.cm_subsec_model_steel / tePrc2teCCPrc(tePrc,opmoPrc,tePrc,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + AmSyCoal . standard . AmSyCoalcc . standard !! ammonia tech QIANZHI + AmSyNG . standard . AmSyNGcc . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . bfcc . standard @@ -600,6 +633,12 @@ tePrc2route(tePrc,opmoPrc,route) "Mapping of technologies onto the production r $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . chemRo_old chemNew . standard . chemRo_new + + AmSyCoal . standard . AmSyRo_Coal !! ammonia tech QIANZHI + AmSyNG . standard . AmSyRo_NG + AmSyCoalcc . standard . AmSyRo_Coal_ccs + AmSyNGcc . standard . AmSyRo_NG_ccs + AmSyH2 . standard . AmSyRo_H2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -622,6 +661,7 @@ mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ce / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" olandar . ue_chemicals + ammonia . ue_chemicals !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary @@ -634,6 +674,12 @@ fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.chemOld entydummy.entydummy.chemNew + + entydummy.entydummy.AmSyCoal !! ammonia tech QIANZHI + entydummy.entydummy.AmSyNG + entydummy.entydummy.AmSyCoalcc + entydummy.entydummy.AmSyNGcc + entydummy.entydummy.AmSyH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" entydummy.entydummy.bf @@ -650,6 +696,12 @@ secInd37_tePrc(secInd37,tePrc) "Mapping of technologies onto industry subsecto $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . chemOld chemicals . chemNew + + chemicals . AmSyCoal !! ammonia tech QIANZHI + chemicals . AmSyNG + chemicals . AmSyCoalcc + chemicals . AmSyNGcc + chemicals . AmSyH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr From 6891129bbdf1240ee9d159ee893bb05ec4650301 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Fri, 6 Sep 2024 11:59:26 +0200 Subject: [PATCH 04/69] add methanol tech --- core/datainput.gms | 13 +++ core/input/generisdata_tech.prn | 17 ++-- core/sets.gms | 27 ++++++ modules/37_industry/subsectors/datainput.gms | 98 ++++++++++++++++---- modules/37_industry/subsectors/sets.gms | 95 +++++++++++++++++-- 5 files changed, 215 insertions(+), 35 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index ae7f14fa0c..be6a66ae35 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -728,6 +728,13 @@ pm_cf(ttot,regi,"tdsyndie") = 0.7; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_cf(ttot,regi,"chemOld") = 0.8; pm_cf(ttot,regi,"chemNew") = 0.8; +pm_cf(ttot,regi,"MeSySol") = 0.8; !! methanol tech QIANZHI +pm_cf(ttot,regi,"MeSyNG") = 0.8; +pm_cf(ttot,regi,"MeSyLiq") = 0.8; +pm_cf(ttot,regi,"MeSySolcc") = 0.8; +pm_cf(ttot,regi,"MeSyNGcc") = 0.8; +pm_cf(ttot,regi,"MeSyLiqcc") = 0.8; +pm_cf(ttot,regi,"MeSyH2") = 0.8; pm_cf(ttot,regi,"AmSyCoal") = 0.8; !! ammonia tech QIANZHI pm_cf(ttot,regi,"AmSyNG") = 0.8; pm_cf(ttot,regi,"AmSyCoalcc") = 0.8; @@ -1195,6 +1202,9 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; + p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.05; p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.05; !! ammonia tech QIANZHI p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.05; $endif.cm_subsec_model_chemicals @@ -1232,6 +1242,9 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI + p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; + p_adj_coeff(ttot,regi,"MeSyLiqcc") = 1.0; p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; $endif.cm_subsec_model_chemicals diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 1b010cde31..182f3c4efc 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -167,18 +167,17 @@ ccap0 0.0008 learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! ammonia tech QIANZHI -+ chemOld chemNew AmSyCoal AmSyNG AmSyH2 ++ chemOld chemNew AmSyCoal AmSyNG AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 900 1100 1100 900 -omf 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 +inco0 1100 900 1100 1100 900 900 900 900 900 +omf 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 20 20 20 20 -+ AmSyCoalcc AmSyNGcc ++ AmSyCoalcc AmSyNGcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 1800 1800 -omf 0.06 0.06 -lifetime 20 20 +inco0 1400 1400 1200 1200 1200 +omf 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 732f508634..294b476332 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -318,6 +318,22 @@ all_te "all energy technologies, including from modules" chemRo_old chemRo_new + MeSySol !! methanol tech QIANZHI + MeSyNG + MeSyLiq + MeSySolcc + MeSyNGcc + MeSyLiqcc + MeSyH2 + MeSyRo_Sol_greyh2 + MeSyRo_Sol_gh2 + MeSyRo_Sol_ccs + MeSyRo_NG + MeSyRo_NG_ccs + MeSyRo_Liq + MeSyRo_Liq_ccs + MeSyRo_H2 + AmSyCoal !! ammonia tech QIANZHI AmSyNG AmSyCoalcc @@ -432,6 +448,7 @@ all_enty "all types of quantities" ironore "Iron ore" dripell "DRI pellets" !! TOCHECK: QIANZHI + otherchem olandar ammonia @@ -1264,6 +1281,13 @@ te(all_te) "energy technologies" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld chemNew + MeSySol !! methanol tech QIANZHI + MeSyNG + MeSyLiq + MeSySolcc + MeSyNGcc + MeSyLiqcc + MeSyH2 AmSyCoal !! ammonia tech QIANZHI AmSyNG AmSyCoalcc @@ -1351,6 +1375,9 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI + MeSyNGcc "Methanol by Gas CCS" + MeSyLiqcc "Methanol by Liquids CCS" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" $endif.cm_subsec_model_chemicals diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index fa84d8088c..b956be6a25 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -680,24 +680,47 @@ p37_specFeDemTarget("fehos","chemOld","standard") = 5.0 / (sm_TWa_2_MWh/sm_gi !!p37_specFeDemTarget("feh2s","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY - -p37_specFeDemTarget("feh2s","chemNew","standard") = 8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feh2s","chemNew","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("feels","chemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fesos","MeSySol","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI +p37_specFeDemTarget("feels","MeSySol","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fesos","MeSySol","gh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSySol","gh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSySol","gh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fegas","MeSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fehos","MeSyLiq","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","AmSyCoal","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI +p37_specFeDemTarget("fegas","MeSyNGcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fehos","MeSyLiqcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("feh2s","MeSyH2","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fesos","AmSyCoal","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI p37_specFeDemTarget("feels","AmSyCoal","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fegas","AmSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","AmSyH2","standard") = 8 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); $endif.cm_subsec_model_chemicals @@ -746,17 +769,21 @@ p37_mat2ue(all_enty,all_in) = 0.; p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi: refine -!! ue_chemicals is measured in value_added (trn$2005), whilst olanadar is measured in Gt +!! ue_chemicals is measured in value_added (trn$2005), whilst olandar is measured in Gt !! So this is the price of olandar in trn$2005/Gt = $2005/kg !! In this first dummy step, the process replaces all of chemistry, so olandar is only a dummy product reprenting the whole chemicals sector. It chould be much more expensive than olefines, since lots of the chemicals sector is much less energy intensive but has higher value added than olefines production !! quick back-of-the envelope calculation: globall 5 trn value added, 2.4 bln tonnes petrochemicals --> maybe 3.3 bn tonnes total chemicals --> ratio is 1.5 !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. -p37_mat2ue("olandar","ue_chemicals") = 1.27; -p37_mat2ue("ammonia","ue_chemicals") = 1.27; !! ammonia tech QIANZHI +p37_mat2ue("olandar","ue_chemicals") = 1.27 * 3; +p37_mat2ue("otherchem","ue_chemicals") = 1.27 * 3; !! methanol tech QIANZHI +!!p37_mat2ue("methanol","ue_chemicals") = 1.27; +p37_mat2ue("ammonia","ue_chemicals") = 1.27 * 3; !! ammonia tech QIANZHI -p37_ue_share("olandar","ue_chemicals") = 0.7; +p37_ue_share("olandar","ue_chemicals") = 0.1; !! methanol tech QIANZHI +p37_ue_share("otherchem","ue_chemicals") = 0.6; +!!p37_ue_share("methanol","ue_chemicals") = 0.1; p37_ue_share("ammonia","ue_chemicals") = 0.3; !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -805,6 +832,13 @@ p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +p37_captureRate("MeSySolcc") = 0.73; !! methanol tech QIANZHI +p37_captureRate("MeSyNGcc") = 0.85; +p37_captureRate("MeSyLiqcc") = 0.73; +p37_selfCaptureRate("MeSySolcc") = 0.9; +p37_selfCaptureRate("MeSyNGcc") = 0.9; +p37_selfCaptureRate("MeSyLiqcc") = 0.9; + p37_captureRate("AmSyCoalcc") = 0.73; !! ammonia tech QIANZHI p37_captureRate("AmSyNGcc") = 0.85; p37_selfCaptureRate("AmSyCoalcc") = 0.9; @@ -839,9 +873,18 @@ pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; if (cm_startyear eq 2005, $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi - pm_outflowPrcIni(regi,"ChemOld","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals"); + pm_outflowPrcIni(regi,"ChemOld","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("otherchem","ue_chemicals") / p37_mat2ue("otherchem","ue_chemicals"); pm_outflowPrcIni(regi,"ChemNew","standard") = 0; + pm_outflowPrcIni(regi,"MeSySol","greyh2") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals") * 0.3; !! methanol tech QIANZHI + pm_outflowPrcIni(regi,"MeSyNG","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals") * 0.6; + pm_outflowPrcIni(regi,"MeSyLiq","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals") * 0.1; + pm_outflowPrcIni(regi,"MeSySol","gh2") = 0; + pm_outflowPrcIni(regi,"MeSySolcc","greyh2") = 0; + pm_outflowPrcIni(regi,"MeSyNGcc","standard") = 0; + pm_outflowPrcIni(regi,"MeSyLiqcc","standard") = 0; + pm_outflowPrcIni(regi,"MeSyH2","standard") = 0; + pm_outflowPrcIni(regi,"AmSyCoal","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("ammonia","ue_chemicals") / p37_mat2ue("ammonia","ue_chemicals") * 0.3; !!! ammonia tech QIANZHI pm_outflowPrcIni(regi,"AmSyNG","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("ammonia","ue_chemicals") / p37_mat2ue("ammonia","ue_chemicals") * 0.7; pm_outflowPrcIni(regi,"AmSyCoalcc","standard") = 0; @@ -852,10 +895,29 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_specFeDem(ttot,regi,"feh2s","ChemNew","standard") = p37_specFeDemTarget("feh2s","ChemNew","standard"); pm_specFeDem(ttot,regi,"feels","ChemNew","standard") = p37_specFeDemTarget("feels","ChemNew","standard"); - pm_specFeDem(ttot,regi,"fegas","ChemOld","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"fesos","ChemOld","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"fehos","ChemOld","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fegas","ChemOld","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fesos","ChemOld","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fehos","ChemOld","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + + !!pm_specFeDem(ttot,regi,"fesos","MeSySol","gh2") = p37_specFeDemTarget("fesos","MeSySol","gh2"); !! methanol tech QIANZHI + !!pm_specFeDem(ttot,regi,"feh2s","MeSySol","gh2") = p37_specFeDemTarget("feh2s","MeSySol","gh2"); + !!pm_specFeDem(ttot,regi,"feels","MeSySol","gh2") = p37_specFeDemTarget("feels","MeSySol","gh2"); + !!pm_specFeDem(ttot,regi,"fesos","MeSySolcc","greyh2") = p37_specFeDemTarget("fesos","MeSySolcc","greyh2"); + !!pm_specFeDem(ttot,regi,"feels","MeSySolcc","greyh2") = p37_specFeDemTarget("feels","MeSySolcc","greyh2"); + !!pm_specFeDem(ttot,regi,"fegas","MeSyNGcc","standard") = p37_specFeDemTarget("fegas","MeSyNGcc","standard"); + !!pm_specFeDem(ttot,regi,"feels","MeSyNGcc","standard") = p37_specFeDemTarget("feels","MeSyNGcc","standard"); + !!pm_specFeDem(ttot,regi,"fehos","MeSyLiqcc","standard") = p37_specFeDemTarget("fehos","MeSyLiqcc","standard"); + !!pm_specFeDem(ttot,regi,"feels","MeSyLiqcc","standard") = p37_specFeDemTarget("feels","MeSyLiqcc","standard"); + !!pm_specFeDem(ttot,regi,"feh2s","MeSyH2","standard") = p37_specFeDemTarget("feh2s","MeSyH2","standard"); + !!pm_specFeDem(ttot,regi,"feels","MeSyH2","standard") = p37_specFeDemTarget("feels","MeSyH2","standard"); + + !!pm_specFeDem(ttot,regi,"fesos","MeSySol","greyh2") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + !!pm_specFeDem(ttot,regi,"feels","MeSySol","greyh2") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fegas","MeSyNG","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"feels","MeSyNG","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + !!pm_specFeDem(ttot,regi,"fehos","MeSyLiq","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + !!pm_specFeDem(ttot,regi,"feels","MeSyLiq","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); pm_specFeDem(ttot,regi,"feh2s","AmSyH2","standard") = p37_specFeDemTarget("feh2s","AmSyH2","standard"); !!! ammonia tech QIANZHI pm_specFeDem(ttot,regi,"feels","AmSyH2","standard") = p37_specFeDemTarget("feels","AmSyH2","standard"); @@ -865,10 +927,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_specFeDem(ttot,regi,"fegas","AmSyNGcc","standard") = p37_specFeDemTarget("fegas","AmSyNGcc","standard"); pm_specFeDem(ttot,regi,"feels","AmSyNGcc","standard") = p37_specFeDemTarget("feels","AmSyNGcc","standard"); - pm_specFeDem(ttot,regi,"fesos","AmSyCoal","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); - pm_specFeDem(ttot,regi,"feels","AmSyCoal","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); - pm_specFeDem(ttot,regi,"fegas","AmSyNG","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); - pm_specFeDem(ttot,regi,"feels","AmSyNG","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * (p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals")); + pm_specFeDem(ttot,regi,"fesos","AmSyCoal","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"feels","AmSyCoal","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"fegas","AmSyNG","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); + pm_specFeDem(ttot,regi,"feels","AmSyNG","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); ); diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 53c5aa520b..6343ec9bf8 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -385,6 +385,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld chemNew + MeSySol !! methanol tech QIANZHI + MeSyNG + MeSyLiq + MeSySolcc + MeSyNGcc + MeSyLiqcc + MeSyH2 + AmSyCoal !! ammonia tech QIANZHI AmSyNG AmSyCoalcc @@ -414,6 +422,7 @@ $endif.cm_subsec_model_steel mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + otherchem olandar ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals @@ -446,6 +455,7 @@ $endif.cm_subsec_model_steel matOut(all_enty) "Materials which serve as output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + otherchem olandar ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals @@ -460,6 +470,7 @@ $endif.cm_subsec_model_steel matFin(mat) "Final products of a process-based production route" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + otherchem olandar ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals @@ -473,6 +484,8 @@ opmoPrc "Operation modes for technologies in process-based model" / standard "Only one operation mode implemented" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + greyh2 !! methanol tech QIANZHI + gh2 "Input of green hydrogen to adjust the C-H ratio" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" ng "Direct reduction using natural gas" @@ -500,6 +513,15 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemRo_old chemRo_new + MeSyRo_Sol_greyh2 !! methanol tech QIANZHI + MeSyRo_Sol_gh2 + MeSyRo_NG + MeSyRo_Liq + MeSyRo_Sol_ccs + MeSyRo_NG_ccs + MeSyRo_Liq_ccs + MeSyRo_H2 + AmSyRo_Coal !! ammonia tech QIANZHI AmSyRo_NG AmSyRo_Coal_ccs @@ -546,6 +568,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard chemNew . standard + MeSySol . (greyh2,gh2) !! methanol tech QIANZHI + MeSyNG . standard + MeSyLiq . standard + MeSySolcc . (greyh2) + MeSyNGcc . standard + MeSyLiqcc . standard + MeSyH2 . standard + AmSyCoal . standard !! ammonia tech QIANZHI AmSyNG . standard AmSyCoalcc . standard @@ -578,13 +608,21 @@ $endif.cm_subsec_model_steel tePrc2matOut(tePrc,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld . standard . olandar - chemNew . standard . olandar + chemOld . standard . otherchem + chemNew . standard . otherchem + + MeSySol . (greyh2,gh2) . olandar !! methanol tech QIANZHI + MeSyNG . standard . olandar + MeSyLiq . standard . olandar + !!MeSySolcc . coalh2 . olandar + !!MeSyNGcc . standard . olandar + !!MeSyLiqcc . standard . olandar + MeSyH2 . standard . olandar AmSyCoal . standard . ammonia !! ammonia tech QIANZHI AmSyNG . standard . ammonia - AmSyCoalcc . standard . ammonia - AmSyNGcc . standard . ammonia + !!AmSyCoalcc . standard . ammonia + !!AmSyNGcc . standard . ammonia AmSyH2 . standard . ammonia $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -600,8 +638,14 @@ tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to th / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . ue_chemicals - chemNew . standard . ue_chemicals - + chemNew . standard . ue_chemicals + + MeSySol . (greyh2,gh2) . ue_chemicals !! methanol tech QIANZHI + MeSySolcc . greyh2 . ue_chemicals + MeSyNG . standard . ue_chemicals + (MeSyLiq,MeSyLiqcc) . standard . ue_chemicals + MeSyH2 . standard . ue_chemicals + (AmSyCoal,AmSyCoalcc) . standard . ue_chemicals (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI AmSyH2 . standard . ue_chemicals @@ -619,6 +663,10 @@ $endif.cm_subsec_model_steel tePrc2teCCPrc(tePrc,opmoPrc,tePrc,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + MeSySol . greyh2 . MeSySolcc . greyh2 !! methanol tech QIANZHI + MeSyNG . standard . MeSyNGcc . standard + MeSyLiq . standard . MeSyLiqcc . standard + AmSyCoal . standard . AmSyCoalcc . standard !! ammonia tech QIANZHI AmSyNG . standard . AmSyNGcc . standard $endif.cm_subsec_model_chemicals @@ -634,8 +682,22 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . chemRo_old chemNew . standard . chemRo_new + MeSySol . gh2 . MeSyRo_Sol_gh2 !! methanol tech QIANZHI + MeSySol . greyh2 . MeSyRo_Sol_greyh2 + MeSySol . greyh2 . MeSyRo_Sol_ccs + MeSyNG . standard . MeSyRo_NG + MeSyNG . standard . MeSyRo_NG_ccs + MeSyLiq . standard . MeSyRo_Liq + MeSyLiq . standard . MeSyRo_Liq_ccs + MeSySolcc . greyh2 . MeSyRo_Sol_ccs + MeSyNGcc . standard . MeSyRo_NG_ccs + MeSyLiqcc . standard . MeSyRo_Liq_ccs + MeSyH2 . standard . MeSyRo_H2 + AmSyCoal . standard . AmSyRo_Coal !! ammonia tech QIANZHI + AmSyCoal . standard . AmSyRo_Coal_ccs AmSyNG . standard . AmSyRo_NG + AmSyNG . standard . AmSyRo_NG_ccs AmSyCoalcc . standard . AmSyRo_Coal_ccs AmSyNGcc . standard . AmSyRo_NG_ccs AmSyH2 . standard . AmSyRo_H2 @@ -660,8 +722,9 @@ $endif.cm_subsec_model_steel mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ces tree node the model is connected to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - olandar . ue_chemicals - ammonia . ue_chemicals !! ammonia tech QIANZHI + otherchem . ue_chemicals + olandar . ue_chemicals + ammonia . ue_chemicals !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary @@ -675,6 +738,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.chemOld entydummy.entydummy.chemNew + entydummy.entydummy.MeSySol !! methanol tech QIANZHI + entydummy.entydummy.MeSyNG + entydummy.entydummy.MeSyLiq + entydummy.entydummy.MeSySolcc + entydummy.entydummy.MeSyNGcc + entydummy.entydummy.MeSyLiqcc + entydummy.entydummy.MeSyH2 + entydummy.entydummy.AmSyCoal !! ammonia tech QIANZHI entydummy.entydummy.AmSyNG entydummy.entydummy.AmSyCoalcc @@ -697,6 +768,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . chemOld chemicals . chemNew + chemicals . MeSySol !! methanol tech QIANZHI + chemicals . MeSyNG + chemicals . MeSyLiq + chemicals . MeSySolcc + chemicals . MeSyNGcc + chemicals . MeSyLiqcc + chemicals . MeSyH2 + chemicals . AmSyCoal !! ammonia tech QIANZHI chemicals . AmSyNG chemicals . AmSyCoalcc From 1130df54198cdbf10ac3f690ab9a70edab1a18ec Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 12 Sep 2024 12:10:15 +0200 Subject: [PATCH 05/69] chCnge the name for ChemOld and ChemNew --- core/datainput.gms | 13 +++++- core/sets.gms | 20 +++++--- modules/37_industry/subsectors/datainput.gms | 24 +++++----- modules/37_industry/subsectors/sets.gms | 48 ++++++++++---------- 4 files changed, 60 insertions(+), 45 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index be6a66ae35..aebb43e4ce 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -726,8 +726,8 @@ pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; *** eternal short-term fix for process-based industry $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -pm_cf(ttot,regi,"chemOld") = 0.8; -pm_cf(ttot,regi,"chemNew") = 0.8; +pm_cf(ttot,regi,"ChemOld") = 0.8; +pm_cf(ttot,regi,"ChemNew") = 0.8; pm_cf(ttot,regi,"MeSySol") = 0.8; !! methanol tech QIANZHI pm_cf(ttot,regi,"MeSyNG") = 0.8; pm_cf(ttot,regi,"MeSyLiq") = 0.8; @@ -740,6 +740,9 @@ pm_cf(ttot,regi,"AmSyNG") = 0.8; pm_cf(ttot,regi,"AmSyCoalcc") = 0.8; pm_cf(ttot,regi,"AmSyNGcc") = 0.8; pm_cf(ttot,regi,"AmSyH2") = 0.8; + +!!pm_cf(ttot,regi,"MtOMtA") = 0.8; +!!pm_cf(ttot,regi,"FertProd") = 0.8; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" pm_cf(ttot,regi,"bf") = 0.8; @@ -1202,11 +1205,14 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_seed_te(ttot,regi,"ChemNew") = 0.05; p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.05; + p_adj_seed_te(ttot,regi,"MeSyH2") = 0.05; p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.05; !! ammonia tech QIANZHI p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.05; + p_adj_seed_te(ttot,regi,"AmSyH2") = 0.05; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1242,11 +1248,14 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_coeff(ttot,regi,"ChemNew") = 1.0; p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; p_adj_coeff(ttot,regi,"MeSyLiqcc") = 1.0; + p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; + p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; diff --git a/core/sets.gms b/core/sets.gms index 294b476332..8a5babf7d2 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -313,10 +313,10 @@ all_te "all energy technologies, including from modules" *** TOCHECK: Qianzhi *** PCV: technologies related to chemical - chemOld - chemNew - chemRo_old - chemRo_new + ChemOld + ChemNew + ChemRo_old + ChemRo_new MeSySol !! methanol tech QIANZHI MeSyNG @@ -326,7 +326,7 @@ all_te "all energy technologies, including from modules" MeSyLiqcc MeSyH2 MeSyRo_Sol_greyh2 - MeSyRo_Sol_gh2 + MeSyRo_Sol_greenh2 MeSyRo_Sol_ccs MeSyRo_NG MeSyRo_NG_ccs @@ -1279,8 +1279,8 @@ te(all_te) "energy technologies" termM_lng "Import terminals for LNG (regasification)" vess_lng "Vessels transporting LNG" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld - chemNew + ChemOld + ChemNew MeSySol !! methanol tech QIANZHI MeSyNG MeSyLiq @@ -1293,6 +1293,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoalcc AmSyNGcc AmSyH2 + + !!MtOMtA + !!FertProd $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr "Iron direct reduction" @@ -1375,11 +1378,14 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemNew "Other chemicals by Hydrogen" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" MeSyLiqcc "Methanol by Liquids CCS" + MeSyH2 "Methanol by Hydrogen" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" + AmSyH2 "Ammonia by Hydrogen" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index b956be6a25..30fcb5bd32 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -668,27 +668,21 @@ $endif.cm_subsec_model_steel p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -!! p37_specFeDemTarget("fegas","chemOld","standard") = 7.65 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 -!!p37_specFeDemTarget("feels","chemOld","standard") = 0.08 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen 2019 -!!p37_specFeDemTarget("fesos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY -!!p37_specFeDemTarget("fehos","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY p37_specFeDemTarget("fegas","chemOld","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","chemOld","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fesos","chemOld","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fehos","chemOld","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); -!!p37_specFeDemTarget("feh2s","chemOld","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DUMMY - p37_specFeDemTarget("feh2s","chemNew","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("feels","chemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("fesos","MeSySol","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI p37_specFeDemTarget("feels","MeSySol","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySol","gh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","MeSySol","gh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSySol","gh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greenh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSySol","greenh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fegas","MeSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","MeSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -776,7 +770,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. -p37_mat2ue("olandar","ue_chemicals") = 1.27 * 3; +p37_mat2ue("olandar","ue_chemicals") = 1.27 * 3; p37_mat2ue("otherchem","ue_chemicals") = 1.27 * 3; !! methanol tech QIANZHI !!p37_mat2ue("methanol","ue_chemicals") = 1.27; p37_mat2ue("ammonia","ue_chemicals") = 1.27 * 3; !! ammonia tech QIANZHI @@ -797,6 +791,12 @@ $endif.cm_subsec_model_steel *** -------------------------------- p37_ue_share(all_enty,all_in) = 0.; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +p37_ue_share("olandar","ue_chemicals") = 0.3; !! methanol tech QIANZHI +p37_ue_share("otherchem","ue_chemicals") = 0.4; +!!p37_ue_share("methanol","ue_chemicals") = 0.1; +p37_ue_share("ammonia","ue_chemicals") = 0.3; !! ammonia tech QIANZHI +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; p37_ue_share("prsteel","ue_steel_primary") = 1.; @@ -833,14 +833,14 @@ p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_captureRate("MeSySolcc") = 0.73; !! methanol tech QIANZHI -p37_captureRate("MeSyNGcc") = 0.85; +p37_captureRate("MeSyNGcc") = 0.85; p37_captureRate("MeSyLiqcc") = 0.73; p37_selfCaptureRate("MeSySolcc") = 0.9; p37_selfCaptureRate("MeSyNGcc") = 0.9; p37_selfCaptureRate("MeSyLiqcc") = 0.9; p37_captureRate("AmSyCoalcc") = 0.73; !! ammonia tech QIANZHI -p37_captureRate("AmSyNGcc") = 0.85; +p37_captureRate("AmSyNGcc") = 0.85; p37_selfCaptureRate("AmSyCoalcc") = 0.9; p37_selfCaptureRate("AmSyNGcc") = 0.9; $endif.cm_subsec_model_chemicals diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 6343ec9bf8..5dce089e5c 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -393,7 +393,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyLiqcc MeSyH2 - AmSyCoal !! ammonia tech QIANZHI + AmSyCoal !! ammonia tech QIANZHI AmSyNG AmSyCoalcc AmSyNGcc @@ -424,7 +424,7 @@ mat(all_enty) "Materials considered in process-based model; Can be input and/o $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" otherchem olandar - ammonia !! ammonia tech QIANZHI + ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -457,7 +457,7 @@ matOut(all_enty) "Materials which serve as output of a process" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" otherchem olandar - ammonia !! ammonia tech QIANZHI + ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -472,7 +472,7 @@ matFin(mat) "Final products of a process-based production route" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" otherchem olandar - ammonia !! ammonia tech QIANZHI + ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -485,7 +485,7 @@ opmoPrc "Operation modes for technologies in process-based model" standard "Only one operation mode implemented" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" greyh2 !! methanol tech QIANZHI - gh2 "Input of green hydrogen to adjust the C-H ratio" + greenh2 "Input of green hydrogen to adjust the C-H ratio" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" ng "Direct reduction using natural gas" @@ -514,7 +514,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemRo_new MeSyRo_Sol_greyh2 !! methanol tech QIANZHI - MeSyRo_Sol_gh2 + MeSyRo_Sol_greenh2 MeSyRo_NG MeSyRo_Liq MeSyRo_Sol_ccs @@ -522,7 +522,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyRo_Liq_ccs MeSyRo_H2 - AmSyRo_Coal !! ammonia tech QIANZHI + AmSyRo_Coal !! ammonia tech QIANZHI AmSyRo_NG AmSyRo_Coal_ccs AmSyRo_NG_ccs @@ -568,7 +568,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard chemNew . standard - MeSySol . (greyh2,gh2) !! methanol tech QIANZHI + MeSySol . (greyh2,greenh2) !! methanol tech QIANZHI MeSyNG . standard MeSyLiq . standard MeSySolcc . (greyh2) @@ -576,7 +576,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyLiqcc . standard MeSyH2 . standard - AmSyCoal . standard !! ammonia tech QIANZHI + AmSyCoal . standard !! ammonia tech QIANZHI AmSyNG . standard AmSyCoalcc . standard AmSyNGcc . standard @@ -611,7 +611,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . otherchem chemNew . standard . otherchem - MeSySol . (greyh2,gh2) . olandar !! methanol tech QIANZHI + MeSySol . (greyh2,greenh2) . olandar !! methanol tech QIANZHI MeSyNG . standard . olandar MeSyLiq . standard . olandar !!MeSySolcc . coalh2 . olandar @@ -619,7 +619,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !!MeSyLiqcc . standard . olandar MeSyH2 . standard . olandar - AmSyCoal . standard . ammonia !! ammonia tech QIANZHI + AmSyCoal . standard . ammonia !! ammonia tech QIANZHI AmSyNG . standard . ammonia !!AmSyCoalcc . standard . ammonia !!AmSyNGcc . standard . ammonia @@ -640,15 +640,15 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . ue_chemicals chemNew . standard . ue_chemicals - MeSySol . (greyh2,gh2) . ue_chemicals !! methanol tech QIANZHI + MeSySol . (greyh2,greenh2) . ue_chemicals !! methanol tech QIANZHI MeSySolcc . greyh2 . ue_chemicals MeSyNG . standard . ue_chemicals (MeSyLiq,MeSyLiqcc) . standard . ue_chemicals - MeSyH2 . standard . ue_chemicals - + MeSyH2 . standard . ue_chemicals + (AmSyCoal,AmSyCoalcc) . standard . ue_chemicals - (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI - AmSyH2 . standard . ue_chemicals + (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI + AmSyH2 . standard . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" (bf,bfcc) . standard . ue_steel_primary @@ -663,11 +663,11 @@ $endif.cm_subsec_model_steel tePrc2teCCPrc(tePrc,opmoPrc,tePrc,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - MeSySol . greyh2 . MeSySolcc . greyh2 !! methanol tech QIANZHI - MeSyNG . standard . MeSyNGcc . standard + MeSySol . greyh2 . MeSySolcc . greyh2 !! methanol tech QIANZHI + MeSyNG . standard . MeSyNGcc . standard MeSyLiq . standard . MeSyLiqcc . standard - AmSyCoal . standard . AmSyCoalcc . standard !! ammonia tech QIANZHI + AmSyCoal . standard . AmSyCoalcc . standard !! ammonia tech QIANZHI AmSyNG . standard . AmSyNGcc . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -682,7 +682,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemOld . standard . chemRo_old chemNew . standard . chemRo_new - MeSySol . gh2 . MeSyRo_Sol_gh2 !! methanol tech QIANZHI + MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI MeSySol . greyh2 . MeSyRo_Sol_greyh2 MeSySol . greyh2 . MeSyRo_Sol_ccs MeSyNG . standard . MeSyRo_NG @@ -694,7 +694,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyLiqcc . standard . MeSyRo_Liq_ccs MeSyH2 . standard . MeSyRo_H2 - AmSyCoal . standard . AmSyRo_Coal !! ammonia tech QIANZHI + AmSyCoal . standard . AmSyRo_Coal !! ammonia tech QIANZHI AmSyCoal . standard . AmSyRo_Coal_ccs AmSyNG . standard . AmSyRo_NG AmSyNG . standard . AmSyRo_NG_ccs @@ -724,7 +724,7 @@ mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ce $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" otherchem . ue_chemicals olandar . ue_chemicals - ammonia . ue_chemicals !! ammonia tech QIANZHI + ammonia . ue_chemicals !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary @@ -746,7 +746,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.MeSyLiqcc entydummy.entydummy.MeSyH2 - entydummy.entydummy.AmSyCoal !! ammonia tech QIANZHI + entydummy.entydummy.AmSyCoal !! ammonia tech QIANZHI entydummy.entydummy.AmSyNG entydummy.entydummy.AmSyCoalcc entydummy.entydummy.AmSyNGcc @@ -776,7 +776,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . MeSyLiqcc chemicals . MeSyH2 - chemicals . AmSyCoal !! ammonia tech QIANZHI + chemicals . AmSyCoal !! ammonia tech QIANZHI chemicals . AmSyNG chemicals . AmSyCoalcc chemicals . AmSyNGcc From 4995134bec0cd851fa958d242be9b485398b2c6d Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Sun, 15 Sep 2024 22:35:59 +0200 Subject: [PATCH 06/69] addTTry adding two layers of technology --- core/datainput.gms | 4 +- core/input/generisdata_tech.prn | 6 ++ core/sets.gms | 15 ++- modules/37_industry/subsectors/datainput.gms | 57 +++++++----- modules/37_industry/subsectors/sets.gms | 98 +++++++++++++------- 5 files changed, 117 insertions(+), 63 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index aebb43e4ce..fa711a33c8 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -741,8 +741,8 @@ pm_cf(ttot,regi,"AmSyCoalcc") = 0.8; pm_cf(ttot,regi,"AmSyNGcc") = 0.8; pm_cf(ttot,regi,"AmSyH2") = 0.8; -!!pm_cf(ttot,regi,"MtOMtA") = 0.8; -!!pm_cf(ttot,regi,"FertProd") = 0.8; +pm_cf(ttot,regi,"MtOMtA") = 0.8; +pm_cf(ttot,regi,"FertProd") = 0.8; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" pm_cf(ttot,regi,"bf") = 0.8; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 182f3c4efc..d2123c43c9 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -178,6 +178,12 @@ lifetime 20 20 20 20 20 inco0 1400 1400 1200 1200 1200 omf 0.06 0.06 0.06 0.06 0.06 lifetime 20 20 20 20 20 + ++ MtOMtA FertProd +!! documentation & sources: see below +inco0 500 500 +omf 0.06 0.06 +lifetime 20 20 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 8a5babf7d2..64669be8f0 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -344,6 +344,11 @@ all_te "all energy technologies, including from modules" AmSyRo_Coal_ccs AmSyRo_NG_ccs AmSyRo_H2 + + MtOMtA + MtOMtA_Ro + FertProd + FertProd_Ro *** PCV: technologies related to steel ironMine "Mining of iron ore" idr "Iron direct reduction" @@ -448,8 +453,10 @@ all_enty "all types of quantities" ironore "Iron ore" dripell "DRI pellets" !! TOCHECK: QIANZHI - otherchem - olandar + OtherChem + HVC + Fertilizer + methanol ammonia !! emissions @@ -1294,8 +1301,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyNGcc AmSyH2 - !!MtOMtA - !!FertProd + MtOMtA + FertProd $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr "Iron direct reduction" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 30fcb5bd32..cb8614a096 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,6 +647,8 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +p37_specMatDem("ammonia","FertProd","standard") = 1.2; +p37_specMatDem("methanol","MtOMtA","standard") = 1.2; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -669,13 +671,13 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fegas","chemOld","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","chemOld","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","chemOld","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","chemOld","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemOld","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemOld","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemOld","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemOld","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","chemNew","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("feels","chemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feh2s","ChemNew","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feels","ChemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("fesos","MeSySol","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI p37_specFeDemTarget("feels","MeSySol","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -717,6 +719,9 @@ p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_g p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MtOMtA","standard") = 1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","FertProd","standard") = 1 / (sm_TWa_2_MWh/sm_giga_2_non); + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -770,15 +775,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. -p37_mat2ue("olandar","ue_chemicals") = 1.27 * 3; -p37_mat2ue("otherchem","ue_chemicals") = 1.27 * 3; !! methanol tech QIANZHI +p37_mat2ue("HVC","ue_chemicals") = 1.27 * 3; +p37_mat2ue("OtherChem","ue_chemicals") = 1.27 * 3; !! methanol tech QIANZHI !!p37_mat2ue("methanol","ue_chemicals") = 1.27; -p37_mat2ue("ammonia","ue_chemicals") = 1.27 * 3; !! ammonia tech QIANZHI - -p37_ue_share("olandar","ue_chemicals") = 0.1; !! methanol tech QIANZHI -p37_ue_share("otherchem","ue_chemicals") = 0.6; -!!p37_ue_share("methanol","ue_chemicals") = 0.1; -p37_ue_share("ammonia","ue_chemicals") = 0.3; !! ammonia tech QIANZHI +p37_mat2ue("Fertilizer","ue_chemicals") = 1.27 * 3; !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; @@ -792,10 +792,10 @@ $endif.cm_subsec_model_steel p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_ue_share("olandar","ue_chemicals") = 0.3; !! methanol tech QIANZHI -p37_ue_share("otherchem","ue_chemicals") = 0.4; +p37_ue_share("HVC","ue_chemicals") = 0.3; !! methanol tech QIANZHI +p37_ue_share("OtherChem","ue_chemicals") = 0.4; !!p37_ue_share("methanol","ue_chemicals") = 0.1; -p37_ue_share("ammonia","ue_chemicals") = 0.3; !! ammonia tech QIANZHI +p37_ue_share("Fertilizer","ue_chemicals") = 0.3; !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; @@ -810,9 +810,21 @@ loop(ppfUePrc(in), *** -------------------------------- p37_teMatShareHist(tePrc,opmoPrc,mat) = 0.; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +p37_teMatShareHist("ChemOld","standard","OtherChem") = 1.; +p37_teMatShareHist("MeSySol","greyh2","methanol") = 0.3; +p37_teMatShareHist("MeSyNG","standard","methanol") = 0.6; +p37_teMatShareHist("MeSyLiq","standard","methanol") = 0.1; +p37_teMatShareHist("AmSyCoal","standard","ammonia") = 0.3; +p37_teMatShareHist("AmSyNG","standard","ammonia") = 0.7; +p37_teMatShareHist("MtOMtA","standard","HVC") = 1.; +p37_teMatShareHist("FertProd","standard","Fertilizer") = 1.; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_teMatShareHist("bof","unheated","prsteel") = 1.; p37_teMatShareHist("eaf","sec","sesteel") = 1.; +p37_teMatShareHist("bf","standard","pigiron") = 1.; +p37_teMatShareHist("idr","ng","driron") = 1.; $endif.cm_subsec_model_steel loop(matFin(mat), if(abs(sum((tePrc,opmoPrc),p37_teMatShareHist(tePrc,opmoPrc,mat))-1.) gt sm_eps, @@ -820,10 +832,10 @@ loop(matFin(mat), abort "p37_teMatShareHist must add to one for each matFin"; ); ); -if(sum((tePrc,opmoPrc,mat)$(not matFin(mat)), p37_teMatShareHist(tePrc,opmoPrc,mat)) gt sm_eps, - display p37_teMatShareHist; - abort "p37_teMatShareHist must only be non-zero for matFin"; -); +!!if(sum((tePrc,opmoPrc,mat)$(not matFin(mat)), p37_teMatShareHist(tePrc,opmoPrc,mat)) gt sm_eps, +!! display p37_teMatShareHist; +!! abort "p37_teMatShareHist must only be non-zero for matFin"; +!!\); *** -------------------------------- s37_shareHistFeDemPenalty = 0.6; *** -------------------------------- @@ -965,7 +977,8 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" tePrc2matIn(tePrc2,opmoPrc2,mat)), !!TODO: enable p37_teMatShareHist here, too (has to be defined, though) p37_specMatDem(mat,tePrc2,opmoPrc2) * pm_outflowPrcHist(ttot,regi,tePrc2,opmoPrc2) ); - pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) = p37_matFlowHist(ttot,regi,mat); + !!TODO: enable p37_teMatShareHist here, too (has to be defined, though) + pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc1,opmoPrc1,mat); ); loop((entyFe,ppfUePrc), diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 5dce089e5c..d69c1e4655 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -382,8 +382,8 @@ $endif.cm_subsec_model_steel tePrc(all_te) "Technologies used in process-based model (including CCS)" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld - chemNew + ChemOld + ChemNew MeSySol !! methanol tech QIANZHI MeSyNG @@ -398,6 +398,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoalcc AmSyNGcc AmSyH2 + + MtOMtA + FertProd $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf @@ -422,8 +425,10 @@ $endif.cm_subsec_model_steel mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - otherchem - olandar + OtherChem + HVC + Fertilizer + methanol ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -441,6 +446,8 @@ $endif.cm_subsec_model_steel matIn(all_enty) "Materials which serve as input to a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + methanol + ammonia $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eafscrap "Steel scrap used in EAF" @@ -455,8 +462,10 @@ $endif.cm_subsec_model_steel matOut(all_enty) "Materials which serve as output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - otherchem - olandar + OtherChem + HVC + Fertilizer + methanol ammonia !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -470,9 +479,9 @@ $endif.cm_subsec_model_steel matFin(mat) "Final products of a process-based production route" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - otherchem - olandar - ammonia !! ammonia tech QIANZHI + OtherChem + HVC + Fertilizer !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -510,8 +519,8 @@ $endif.cm_subsec_model_steel route(all_te) "Process routes; Currently only used for reporting" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemRo_old - chemRo_new + ChemRo_old + ChemRo_new MeSyRo_Sol_greyh2 !! methanol tech QIANZHI MeSyRo_Sol_greenh2 @@ -527,6 +536,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyRo_Coal_ccs AmSyRo_NG_ccs AmSyRo_H2 + + MtOMtA_Ro + FertProd_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idreaf_ng @@ -565,8 +577,8 @@ $endif.cm_subsec_model_steel tePrc2opmoPrc(tePrc,opmoPrc) "Mapping of technologies onto available operation modes" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld . standard - chemNew . standard + ChemOld . standard + ChemNew . standard MeSySol . (greyh2,greenh2) !! methanol tech QIANZHI MeSyNG . standard @@ -581,6 +593,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoalcc . standard AmSyNGcc . standard AmSyH2 . standard + + MtOMtA . standard + FertProd . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) @@ -595,6 +610,8 @@ $endif.cm_subsec_model_steel tePrc2matIn(tePrc,opmoPrc,mat) "Mapping of technologies onto input materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + FertProd . standard . ammonia + MtOMtA . standard . methanol $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (h2,ng) . dripell @@ -608,22 +625,20 @@ $endif.cm_subsec_model_steel tePrc2matOut(tePrc,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld . standard . otherchem - chemNew . standard . otherchem + ChemOld . standard . OtherChem + ChemNew . standard . OtherChem - MeSySol . (greyh2,greenh2) . olandar !! methanol tech QIANZHI - MeSyNG . standard . olandar - MeSyLiq . standard . olandar - !!MeSySolcc . coalh2 . olandar - !!MeSyNGcc . standard . olandar - !!MeSyLiqcc . standard . olandar - MeSyH2 . standard . olandar + MeSySol . (greyh2,greenh2) . methanol !! methanol tech QIANZHI + MeSyNG . standard . methanol + MeSyLiq . standard . methanol + MeSyH2 . standard . methanol AmSyCoal . standard . ammonia !! ammonia tech QIANZHI AmSyNG . standard . ammonia - !!AmSyCoalcc . standard . ammonia - !!AmSyNGcc . standard . ammonia AmSyH2 . standard . ammonia + + MtOMtA . standard . HVC + FertProd . standard . Fertilizer $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron @@ -637,8 +652,8 @@ $endif.cm_subsec_model_steel tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld . standard . ue_chemicals - chemNew . standard . ue_chemicals + ChemOld . standard . ue_chemicals + ChemNew . standard . ue_chemicals MeSySol . (greyh2,greenh2) . ue_chemicals !! methanol tech QIANZHI MeSySolcc . greyh2 . ue_chemicals @@ -649,6 +664,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" (AmSyCoal,AmSyCoalcc) . standard . ue_chemicals (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI AmSyH2 . standard . ue_chemicals + + MtOMtA . standard . ue_chemicals + FertProd . standard . ue_chemicals + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" (bf,bfcc) . standard . ue_steel_primary @@ -679,8 +698,8 @@ $endif.cm_subsec_model_steel tePrc2route(tePrc,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld . standard . chemRo_old - chemNew . standard . chemRo_new + ChemOld . standard . ChemRo_old + ChemNew . standard . ChemRo_new MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI MeSySol . greyh2 . MeSyRo_Sol_greyh2 @@ -701,6 +720,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoalcc . standard . AmSyRo_Coal_ccs AmSyNGcc . standard . AmSyRo_NG_ccs AmSyH2 . standard . AmSyRo_H2 + + MtOMtA . standard . MtOMtA_Ro + FertProd . standard . FertProd_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -722,9 +744,9 @@ $endif.cm_subsec_model_steel mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ces tree node the model is connected to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - otherchem . ue_chemicals - olandar . ue_chemicals - ammonia . ue_chemicals !! ammonia tech QIANZHI + OtherChem . ue_chemicals + HVC . ue_chemicals + Fertilizer . ue_chemicals !! ammonia tech QIANZHI $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary @@ -735,8 +757,8 @@ $endif.cm_subsec_model_steel fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included in en2en, which connects capex and opex to budget" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - entydummy.entydummy.chemOld - entydummy.entydummy.chemNew + entydummy.entydummy.ChemOld + entydummy.entydummy.ChemNew entydummy.entydummy.MeSySol !! methanol tech QIANZHI entydummy.entydummy.MeSyNG @@ -751,6 +773,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.AmSyCoalcc entydummy.entydummy.AmSyNGcc entydummy.entydummy.AmSyH2 + + entydummy.entydummy.MtOMtA + entydummy.entydummy.FertProd $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" entydummy.entydummy.bf @@ -765,8 +790,8 @@ $endif.cm_subsec_model_steel secInd37_tePrc(secInd37,tePrc) "Mapping of technologies onto industry subsectors" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemicals . chemOld - chemicals . chemNew + chemicals . ChemOld + chemicals . ChemNew chemicals . MeSySol !! methanol tech QIANZHI chemicals . MeSyNG @@ -781,6 +806,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . AmSyCoalcc chemicals . AmSyNGcc chemicals . AmSyH2 + + chemicals . MtOMtA + chemicals . FertProd $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr From 5d526cba440545697d406df9dca4ffe42548d990 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Sat, 21 Sep 2024 10:05:18 +0200 Subject: [PATCH 07/69] First version of the structure of the Chemical Processes module --- core/datainput.gms | 23 +++- core/input/generisdata_tech.prn | 26 ++--- core/input/generisdata_vintages.prn | 18 +-- core/sets.gms | 43 +++++-- modules/37_industry/subsectors/datainput.gms | 72 +++++++++--- modules/37_industry/subsectors/sets.gms | 117 ++++++++++++++++--- 6 files changed, 231 insertions(+), 68 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index fa711a33c8..9a05944e0d 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -726,8 +726,14 @@ pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; *** eternal short-term fix for process-based industry $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -pm_cf(ttot,regi,"ChemOld") = 0.8; -pm_cf(ttot,regi,"ChemNew") = 0.8; +pm_cf(ttot,regi,"ChemSol") = 0.8; +pm_cf(ttot,regi,"ChemNG") = 0.8; +pm_cf(ttot,regi,"ChemLiq") = 0.8; +pm_cf(ttot,regi,"ChemH2") = 0.8; + +pm_cf(ttot,regi,"StCrNG") = 0.8; +pm_cf(ttot,regi,"StCrLiq") = 0.8; + pm_cf(ttot,regi,"MeSySol") = 0.8; !! methanol tech QIANZHI pm_cf(ttot,regi,"MeSyNG") = 0.8; pm_cf(ttot,regi,"MeSyLiq") = 0.8; @@ -737,12 +743,17 @@ pm_cf(ttot,regi,"MeSyLiqcc") = 0.8; pm_cf(ttot,regi,"MeSyH2") = 0.8; pm_cf(ttot,regi,"AmSyCoal") = 0.8; !! ammonia tech QIANZHI pm_cf(ttot,regi,"AmSyNG") = 0.8; +pm_cf(ttot,regi,"AmSyLiq") = 0.8; pm_cf(ttot,regi,"AmSyCoalcc") = 0.8; pm_cf(ttot,regi,"AmSyNGcc") = 0.8; +pm_cf(ttot,regi,"AmSyLiqcc") = 0.8; pm_cf(ttot,regi,"AmSyH2") = 0.8; pm_cf(ttot,regi,"MtOMtA") = 0.8; pm_cf(ttot,regi,"FertProd") = 0.8; +pm_cf(ttot,regi,"MeToFinal") = 0.8; +pm_cf(ttot,regi,"AmToFinal") = 0.8; + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" pm_cf(ttot,regi,"bf") = 0.8; @@ -1205,13 +1216,14 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_seed_te(ttot,regi,"ChemNew") = 0.05; + p_adj_seed_te(ttot,regi,"ChemH2") = 0.05; p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.05; p_adj_seed_te(ttot,regi,"MeSyH2") = 0.05; p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.05; !! ammonia tech QIANZHI p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.05; + p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.05; p_adj_seed_te(ttot,regi,"AmSyH2") = 0.05; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1248,14 +1260,15 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_coeff(ttot,regi,"ChemNew") = 1.0; + p_adj_coeff(ttot,regi,"ChemH2") = 1.0; p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; p_adj_coeff(ttot,regi,"MeSyLiqcc") = 1.0; p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; - p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; + p_adj_coeff(ttot,regi,"AmSyLiqcc") = 1.0; + p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index d2123c43c9..c75fcffac7 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -167,23 +167,23 @@ ccap0 0.0008 learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -+ chemOld chemNew AmSyCoal AmSyNG AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 -!! documentation & sources: see below -inco0 1100 900 1100 1100 900 900 900 900 900 -omf 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 20 20 20 20 ++ ChemSol ChemNG ChemLiq ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 +!! documentation & sources: see below +inco0 1100 1100 1100 1100 1500 1500 1100 1100 1100 1100 900 900 900 900 +omf 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 20 20 20 20 20 20 20 20 20 -+ AmSyCoalcc AmSyNGcc MeSySolcc MeSyNGcc MeSyLiqcc ++ AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 1400 1400 1200 1200 1200 -omf 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 +inco0 1400 1400 1400 1200 1200 1200 +omf 0.06 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 20 -+ MtOMtA FertProd ++ MtOMtA FertProd AmToFinal MeToFinal !! documentation & sources: see below -inco0 500 500 -omf 0.06 0.06 -lifetime 20 20 +inco0 500 500 500 500 +omf 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/input/generisdata_vintages.prn b/core/input/generisdata_vintages.prn index 217d8cd096..529e1a6bd2 100644 --- a/core/input/generisdata_vintages.prn +++ b/core/input/generisdata_vintages.prn @@ -163,15 +163,15 @@ $offtext $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -+ chemOld chemNew -1 1.0 1.0 -6 1.0 1.0 -11 1.0 1.0 -16 1.0 1.0 -21 1.0 1.0 -26 1.0 1.0 -31 1.0 1.0 -36 1.0 1.0 ++ ChemSol ChemNG ChemLiq StCrNG StCrLiq MeSySol MeSyNG MeSyLiq AmSyCoal AmSyNG AmSyLiq MtOMtA FertProd +1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +11 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +16 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +21 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +26 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +31 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +36 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 $endif.cm_subsec_model_chemicals diff --git a/core/sets.gms b/core/sets.gms index 64669be8f0..c0a3eedbce 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -313,10 +313,19 @@ all_te "all energy technologies, including from modules" *** TOCHECK: Qianzhi *** PCV: technologies related to chemical - ChemOld - ChemNew - ChemRo_old - ChemRo_new + ChemSol + ChemNG + ChemLiq + ChemH2 + ChemRo_Sol + ChemRo_NG + ChemRo_Liq + ChemRo_H2 + + StCrNG + StCrLiq + StCrNG_Ro + StCrLiq_Ro MeSySol !! methanol tech QIANZHI MeSyNG @@ -336,19 +345,27 @@ all_te "all energy technologies, including from modules" AmSyCoal !! ammonia tech QIANZHI AmSyNG + AmSyLiq AmSyCoalcc AmSyNGcc + AmSyLiqcc AmSyH2 AmSyRo_Coal AmSyRo_NG + AmSyRo_Liq AmSyRo_Coal_ccs AmSyRo_NG_ccs + AmSyRo_Liq_ccs AmSyRo_H2 MtOMtA MtOMtA_Ro FertProd FertProd_Ro + MeToFinal + MeToFinal_Ro + AmToFinal + AmToFinal_Ro *** PCV: technologies related to steel ironMine "Mining of iron ore" idr "Iron direct reduction" @@ -458,6 +475,8 @@ all_enty "all types of quantities" Fertilizer methanol ammonia + MethFinal + AmmoFinal !! emissions co2 "carbon dioxide emissions" @@ -1286,8 +1305,12 @@ te(all_te) "energy technologies" termM_lng "Import terminals for LNG (regasification)" vess_lng "Vessels transporting LNG" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld - ChemNew + ChemSol + ChemNG + ChemLiq + ChemH2 + StCrNG + StCrLiq MeSySol !! methanol tech QIANZHI MeSyNG MeSyLiq @@ -1297,12 +1320,17 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyH2 AmSyCoal !! ammonia tech QIANZHI AmSyNG + AmSyLiq AmSyCoalcc AmSyNGcc + AmSyLiqcc AmSyH2 MtOMtA FertProd + AmToFinal + MeToFinal + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr "Iron direct reduction" @@ -1385,13 +1413,14 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemNew "Other chemicals by Hydrogen" + ChemH2 "Other chemicals by Hydrogen" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" MeSyLiqcc "Methanol by Liquids CCS" MeSyH2 "Methanol by Hydrogen" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" + AmSyLiqcc "Ammonia by Liquids CCS" AmSyH2 "Ammonia by Hydrogen" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index cb8614a096..e72e647677 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,8 +647,15 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +<<<<<<< HEAD p37_specMatDem("ammonia","FertProd","standard") = 1.2; p37_specMatDem("methanol","MtOMtA","standard") = 1.2; +======= +p37_specMatDem("ammonia","FertProd","standard") = 1.2; +p37_specMatDem("methanol","MtOMtA","standard") = 1.2; +p37_specMatDem("ammonia","AmToFinal","standard") = 1; +p37_specMatDem("methanol","MeToFinal","standard") = 1; +>>>>>>> 45946528 (First version of the structure of the Chemical Processes module) $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -671,13 +678,23 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fegas","ChemOld","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemOld","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemOld","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemOld","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemSol","standard") = 3.2/ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemSol","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","ChemNew","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("feels","ChemNew","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fegas","ChemNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fehos","ChemLiq","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("feh2s","ChemH2","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feels","ChemH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 + +p37_specFeDemTarget("fegas","StCrNG","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","StCrNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fehos","StCrLiq","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","StCrLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fesos","MeSySol","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI p37_specFeDemTarget("feels","MeSySol","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -710,12 +727,18 @@ p37_specFeDemTarget("feels","AmSyCoal","standard") = 0.4 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fegas","AmSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","AmSyLiq","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","AmSyLiqcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); + p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","AmSyH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -775,10 +798,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. -p37_mat2ue("HVC","ue_chemicals") = 1.27 * 3; -p37_mat2ue("OtherChem","ue_chemicals") = 1.27 * 3; !! methanol tech QIANZHI -!!p37_mat2ue("methanol","ue_chemicals") = 1.27; -p37_mat2ue("Fertilizer","ue_chemicals") = 1.27 * 3; !! ammonia tech QIANZHI +p37_mat2ue("HVC","ue_chemicals") = 1.27 * 5; +p37_mat2ue("OtherChem","ue_chemicals") = 1.27 * 5; !! methanol tech QIANZHI +p37_mat2ue("Fertilizer","ue_chemicals") = 1.27 * 5; !! ammonia tech QIANZHI +p37_mat2ue("MethFinal","ue_chemicals") = 1.27 * 5; +p37_mat2ue("AmmoFinal","ue_chemicals") = 1.27 * 5; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; @@ -792,10 +816,11 @@ $endif.cm_subsec_model_steel p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_ue_share("HVC","ue_chemicals") = 0.3; !! methanol tech QIANZHI -p37_ue_share("OtherChem","ue_chemicals") = 0.4; -!!p37_ue_share("methanol","ue_chemicals") = 0.1; -p37_ue_share("Fertilizer","ue_chemicals") = 0.3; !! ammonia tech QIANZHI +p37_ue_share("HVC","ue_chemicals") = 0.4; !! methanol tech QIANZHI +p37_ue_share("OtherChem","ue_chemicals") = 0.2; +p37_ue_share("Fertilizer","ue_chemicals") = 0.2; !! ammonia tech QIANZHI +p37_ue_share("MethFinal","ue_chemicals") = 0.1; +p37_ue_share("AmmoFinal","ue_chemicals") = 0.1; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; @@ -811,14 +836,25 @@ loop(ppfUePrc(in), *** -------------------------------- p37_teMatShareHist(tePrc,opmoPrc,mat) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_teMatShareHist("ChemOld","standard","OtherChem") = 1.; +p37_teMatShareHist("ChemSol","standard","OtherChem") = 0.1; +p37_teMatShareHist("ChemNG","standard","OtherChem") = 0.3; +p37_teMatShareHist("ChemLiq","standard","OtherChem") = 0.6; + p37_teMatShareHist("MeSySol","greyh2","methanol") = 0.3; p37_teMatShareHist("MeSyNG","standard","methanol") = 0.6; p37_teMatShareHist("MeSyLiq","standard","methanol") = 0.1; + p37_teMatShareHist("AmSyCoal","standard","ammonia") = 0.3; -p37_teMatShareHist("AmSyNG","standard","ammonia") = 0.7; -p37_teMatShareHist("MtOMtA","standard","HVC") = 1.; +p37_teMatShareHist("AmSyNG","standard","ammonia") = 0.6; +p37_teMatShareHist("AmSyLiq","standard","ammonia") = 0.1; + +p37_teMatShareHist("MtOMtA","standard","HVC") = 0.5; +p37_teMatShareHist("StCrNG","standard","HVC") = 0.15; +p37_teMatShareHist("StCrLiq","standard","HVC") = 0.35; + p37_teMatShareHist("FertProd","standard","Fertilizer") = 1.; +p37_teMatShareHist("MeToFinal","standard","MethFinal") = 1.; +p37_teMatShareHist("AmToFinal","standard","AmmoFinal") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_teMatShareHist("bof","unheated","prsteel") = 1.; @@ -853,8 +889,10 @@ p37_selfCaptureRate("MeSyLiqcc") = 0.9; p37_captureRate("AmSyCoalcc") = 0.73; !! ammonia tech QIANZHI p37_captureRate("AmSyNGcc") = 0.85; +p37_captureRate("AmSyLiqcc") = 0.85; p37_selfCaptureRate("AmSyCoalcc") = 0.9; p37_selfCaptureRate("AmSyNGcc") = 0.9; +p37_selfCaptureRate("AmSyLiqcc") = 0.9; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index d69c1e4655..44005bd943 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -382,8 +382,13 @@ $endif.cm_subsec_model_steel tePrc(all_te) "Technologies used in process-based model (including CCS)" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld - ChemNew + ChemSol + ChemNG + ChemLiq + ChemH2 + + StCrNG + StCrLiq MeSySol !! methanol tech QIANZHI MeSyNG @@ -395,12 +400,17 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoal !! ammonia tech QIANZHI AmSyNG + AmSyLiq AmSyCoalcc AmSyNGcc + AmSyLiqcc AmSyH2 MtOMtA FertProd + MeToFinal + AmToFinal + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf @@ -430,6 +440,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Fertilizer methanol ammonia !! ammonia tech QIANZHI + MethFinal + AmmoFinal + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -466,7 +479,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" HVC Fertilizer methanol - ammonia !! ammonia tech QIANZHI + ammonia !! ammonia tech + MethFinal + AmmoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -482,6 +497,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" OtherChem HVC Fertilizer !! ammonia tech QIANZHI + MethFinal + AmmoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -519,8 +536,13 @@ $endif.cm_subsec_model_steel route(all_te) "Process routes; Currently only used for reporting" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemRo_old - ChemRo_new + ChemRo_Sol + ChemRo_NG + ChemRo_Liq + ChemRo_H2 + + StCrNG_Ro + StCrLiq_Ro MeSyRo_Sol_greyh2 !! methanol tech QIANZHI MeSyRo_Sol_greenh2 @@ -533,12 +555,16 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyRo_Coal !! ammonia tech QIANZHI AmSyRo_NG + AmSyRo_Liq AmSyRo_Coal_ccs AmSyRo_NG_ccs + AmSyRo_Liq_ccs AmSyRo_H2 MtOMtA_Ro FertProd_Ro + MeToFinal_Ro + AmToFinal_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idreaf_ng @@ -577,8 +603,13 @@ $endif.cm_subsec_model_steel tePrc2opmoPrc(tePrc,opmoPrc) "Mapping of technologies onto available operation modes" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard - ChemNew . standard + ChemSol . standard + ChemNG . standard + ChemLiq . standard + ChemH2 . standard + + StCrNG . standard + StCrLiq . standard MeSySol . (greyh2,greenh2) !! methanol tech QIANZHI MeSyNG . standard @@ -590,12 +621,16 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoal . standard !! ammonia tech QIANZHI AmSyNG . standard + AmSyLiq . standard AmSyCoalcc . standard AmSyNGcc . standard + AmSyLiqcc . standard AmSyH2 . standard MtOMtA . standard FertProd . standard + MeToFinal . standard + AmToFinal . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) @@ -612,6 +647,8 @@ tePrc2matIn(tePrc,opmoPrc,mat) "Mapping of technologies onto input materials" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ammonia MtOMtA . standard . methanol + MeToFinal . standard . methanol + AmToFinal . standard . ammonia $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (h2,ng) . dripell @@ -625,8 +662,13 @@ $endif.cm_subsec_model_steel tePrc2matOut(tePrc,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . OtherChem - ChemNew . standard . OtherChem + ChemSol . standard . OtherChem + ChemNG . standard . OtherChem + ChemLiq . standard . OtherChem + ChemH2 . standard . OtherChem + + StCrNG . standard . HVC + StCrLiq . standard . HVC MeSySol . (greyh2,greenh2) . methanol !! methanol tech QIANZHI MeSyNG . standard . methanol @@ -635,10 +677,13 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoal . standard . ammonia !! ammonia tech QIANZHI AmSyNG . standard . ammonia + AmSyLiq . standard . ammonia AmSyH2 . standard . ammonia MtOMtA . standard . HVC FertProd . standard . Fertilizer + MeToFinal . standard . MethFinal + AmToFinal . standard . AmmoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron @@ -652,8 +697,13 @@ $endif.cm_subsec_model_steel tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . ue_chemicals - ChemNew . standard . ue_chemicals + ChemSol . standard . ue_chemicals + ChemNG . standard . ue_chemicals + ChemLiq . standard . ue_chemicals + ChemH2 . standard . ue_chemicals + + StCrNG . standard . ue_chemicals + StCrLiq . standard . ue_chemicals MeSySol . (greyh2,greenh2) . ue_chemicals !! methanol tech QIANZHI MeSySolcc . greyh2 . ue_chemicals @@ -663,10 +713,13 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" (AmSyCoal,AmSyCoalcc) . standard . ue_chemicals (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI + (AmSyLiq,AmSyLiqcc) . standard . ue_chemicals AmSyH2 . standard . ue_chemicals MtOMtA . standard . ue_chemicals FertProd . standard . ue_chemicals + MeToFinal . standard . ue_chemicals + AmToFinal . standard . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -688,6 +741,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoal . standard . AmSyCoalcc . standard !! ammonia tech QIANZHI AmSyNG . standard . AmSyNGcc . standard + AmSyLiq . standard . AmSyLiqcc . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . bfcc . standard @@ -698,8 +752,12 @@ $endif.cm_subsec_model_steel tePrc2route(tePrc,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . ChemRo_old - ChemNew . standard . ChemRo_new + ChemSol . standard . ChemRo_Sol + ChemNG . standard . ChemRo_NG + ChemLiq . standard . ChemRo_Liq + + StCrNG . standard . StCrNG_Ro + StCrLiq . standard . StCrLiq_Ro MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI MeSySol . greyh2 . MeSyRo_Sol_greyh2 @@ -717,12 +775,17 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoal . standard . AmSyRo_Coal_ccs AmSyNG . standard . AmSyRo_NG AmSyNG . standard . AmSyRo_NG_ccs + AmSyLiq . standard . AmSyRo_Liq + AmSyLiq . standard . AmSyRo_Liq_ccs AmSyCoalcc . standard . AmSyRo_Coal_ccs AmSyNGcc . standard . AmSyRo_NG_ccs + AmSyLiqcc . standard . AmSyRo_Liq_ccs AmSyH2 . standard . AmSyRo_H2 MtOMtA . standard . MtOMtA_Ro FertProd . standard . FertProd_Ro + MeToFinal . standard . MeToFinal_Ro + AmToFinal . standard . AmToFinal_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -747,6 +810,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" OtherChem . ue_chemicals HVC . ue_chemicals Fertilizer . ue_chemicals !! ammonia tech QIANZHI + MethFinal . ue_chemicals + AmmoFinal . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary @@ -757,8 +822,13 @@ $endif.cm_subsec_model_steel fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included in en2en, which connects capex and opex to budget" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - entydummy.entydummy.ChemOld - entydummy.entydummy.ChemNew + entydummy.entydummy.ChemSol + entydummy.entydummy.ChemNG + entydummy.entydummy.ChemLiq + entydummy.entydummy.ChemH2 + + entydummy.entydummy.StCrNG + entydummy.entydummy.StCrLiq entydummy.entydummy.MeSySol !! methanol tech QIANZHI entydummy.entydummy.MeSyNG @@ -770,12 +840,16 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.AmSyCoal !! ammonia tech QIANZHI entydummy.entydummy.AmSyNG + entydummy.entydummy.AmSyLiq entydummy.entydummy.AmSyCoalcc entydummy.entydummy.AmSyNGcc + entydummy.entydummy.AmSyLiqcc entydummy.entydummy.AmSyH2 entydummy.entydummy.MtOMtA entydummy.entydummy.FertProd + entydummy.entydummy.MeToFinal + entydummy.entydummy.AmToFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" entydummy.entydummy.bf @@ -790,8 +864,13 @@ $endif.cm_subsec_model_steel secInd37_tePrc(secInd37,tePrc) "Mapping of technologies onto industry subsectors" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemicals . ChemOld - chemicals . ChemNew + chemicals . ChemSol + chemicals . ChemNG + chemicals . ChemLiq + chemicals . ChemH2 + + chemicals . StCrNG + chemicals . StCrLiq chemicals . MeSySol !! methanol tech QIANZHI chemicals . MeSyNG @@ -803,12 +882,16 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . AmSyCoal !! ammonia tech QIANZHI chemicals . AmSyNG + chemicals . AmSyLiq chemicals . AmSyCoalcc chemicals . AmSyNGcc + chemicals . AmSyLiqcc chemicals . AmSyH2 chemicals . MtOMtA chemicals . FertProd + chemicals . MeToFinal + chemicals . AmToFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr From ebd3ea895de116a6e37ea9a7c5adf4dc7fd2c2b3 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 25 Sep 2024 14:27:38 +0200 Subject: [PATCH 08/69] Change tech-econ data for chemicals processes --- core/input/generisdata_tech.prn | 8 +- modules/37_industry/subsectors/datainput.gms | 103 +++++++++---------- 2 files changed, 52 insertions(+), 59 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index c75fcffac7..396126094e 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -169,13 +169,13 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemSol ChemNG ChemLiq ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 1100 1100 1100 1500 1500 1100 1100 1100 1100 900 900 900 900 -omf 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 20 20 20 20 20 20 20 20 20 +inco0 1100 1100 1100 1100 2000 3200 2100 900 1200 750 750 300 300 625 +omf 0.06 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.04 +lifetime 20 20 20 20 25 25 25 25 25 25 25 25 25 25 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 1400 1400 1400 1200 1200 1200 +inco0 2500 1200 1600 1100 700 700 omf 0.06 0.06 0.06 0.06 0.06 0.06 lifetime 20 20 20 20 20 20 diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index e72e647677..47bf113d31 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,15 +647,8 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -<<<<<<< HEAD -p37_specMatDem("ammonia","FertProd","standard") = 1.2; -p37_specMatDem("methanol","MtOMtA","standard") = 1.2; -======= -p37_specMatDem("ammonia","FertProd","standard") = 1.2; -p37_specMatDem("methanol","MtOMtA","standard") = 1.2; -p37_specMatDem("ammonia","AmToFinal","standard") = 1; -p37_specMatDem("methanol","MeToFinal","standard") = 1; ->>>>>>> 45946528 (First version of the structure of the Chemical Processes module) +p37_specMatDem("ammonia","AmToFinal","standard") = 1; +p37_specMatDem("methanol","MeToFinal","standard") = 1; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -678,72 +671,72 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","ChemSol","standard") = 3.2/ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemSol","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemSol","standard") = 10./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemSol","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemNG","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemNG","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemLiq","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemLiq","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemLiq","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","ChemH2","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("feels","ChemH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feh2s","ChemH2","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feels","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("fegas","StCrNG","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","StCrNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","StCrNG","standard") = 22.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","StCrNG","standard") = 0.15 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","StCrLiq","standard") = 5.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","StCrLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","StCrLiq","standard") = 41.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","StCrLiq","standard") = 0.04 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySol","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI -p37_specFeDemTarget("feels","MeSySol","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI +p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySol","greenh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 1.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSySol","greenh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","MeSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","MeSyNG","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNG","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","MeSyLiq","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","MeSyLiq","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiq","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","MeSyNGcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","MeSyNGcc","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNGcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","MeSyLiqcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","MeSyLiqcc","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","MeSyH2","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","AmSyCoal","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI -p37_specFeDemTarget("feels","AmSyCoal","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI +p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","AmSyNG","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNG","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","AmSyNG","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","AmSyLiq","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","AmSyLiq","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiq","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","AmSyLiqcc","standard") = 3.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","AmSyLiqcc","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyH2","standard") = 0.73 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5.9 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyH2","standard") = 0.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MtOMtA","standard") = 1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","FertProd","standard") = 1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","FertProd","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -819,8 +812,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_ue_share("HVC","ue_chemicals") = 0.4; !! methanol tech QIANZHI p37_ue_share("OtherChem","ue_chemicals") = 0.2; p37_ue_share("Fertilizer","ue_chemicals") = 0.2; !! ammonia tech QIANZHI -p37_ue_share("MethFinal","ue_chemicals") = 0.1; -p37_ue_share("AmmoFinal","ue_chemicals") = 0.1; +p37_ue_share("MethFinal","ue_chemicals") = 0.1; +p37_ue_share("AmmoFinal","ue_chemicals") = 0.1; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; From cc221a93097f6aba2379651103a58beeee918317 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 25 Sep 2024 13:32:18 +0200 Subject: [PATCH 09/69] industry ccu first empty implementation --- core/sets.gms | 2 ++ core/sets_calculations.gms | 2 +- modules/37_industry/subsectors/sets.gms | 18 +++++++++++------- modules/39_CCU/off/sets.gms | 14 ++++++++++---- modules/39_CCU/on/bounds.gms | 4 ++-- modules/39_CCU/on/equations.gms | 24 +++++++++++++++--------- modules/39_CCU/on/sets.gms | 18 ++++++++++++------ 7 files changed, 53 insertions(+), 29 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index c0a3eedbce..2a2e1e3544 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -460,6 +460,8 @@ all_enty "all types of quantities" entydummy "dummy FE for process based industry implementation" !! materials, feedstock, and industrial goods + co2f "feedstock CO2" + prsteel "Primary steel" sesteel "Secondary steel" dri "Directly reduced iron" diff --git a/core/sets_calculations.gms b/core/sets_calculations.gms index 45176259b9..6c2a838264 100644 --- a/core/sets_calculations.gms +++ b/core/sets_calculations.gms @@ -37,7 +37,7 @@ peRicardian(enty) = peBio(enty) + peEx(enty); en2se(enty,enty2,te) = pe2se(enty,enty2,te) + se2se(enty,enty2,te); en2en(enty,enty2,te) = pe2se(enty,enty2,te) + se2se(enty,enty2,te) + se2fe(enty,enty2,te) + fe2ue(enty,enty2,te) + ccs2te(enty,enty2,te) + fe2mat(enty,enty2,te); -te2rlf(te,rlf) = teFe2rlf(te,rlf) + teSe2rlf(te,rlf) + teue2rlf(te,rlf) + teCCS2rlf(te,rlf) + teCCU2rlf2(te,rlf) +teNoTransform2rlf(te,rlf) + teFe2rlfH2BI(te,rlf) + teMat2rlf(te,rlf); +te2rlf(te,rlf) = teFe2rlf(te,rlf) + teSe2rlf(te,rlf) + teue2rlf(te,rlf) + teCCS2rlf(te,rlf) + teSeCCU2rlf(te,rlf) +teNoTransform2rlf(te,rlf) + teFe2rlfH2BI(te,rlf) + teMat2rlf(te,rlf); ***---------------------------------------------------------------------------- *** Fill sets that were created empty and should be filled from the mappings above ***---------------------------------------------------------------------------- diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 44005bd943..d1c0495696 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -423,7 +423,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / - teCCPrc(tePrc) "Technologies used in process-based model (only CCS)" + teCCPrc(all_te) "Technologies used in process-based model (only CCS)" / $$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc @@ -431,6 +431,9 @@ $endif.cm_subsec_model_steel $$endif.cm_subsec_model_steel / +teCUPrc(all_te) "Technologies using CO2 as a feedstock" + / + / mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / @@ -442,8 +445,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ammonia !! ammonia tech QIANZHI MethFinal AmmoFinal - $endif.cm_subsec_model_chemicals + co2f $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel sesteel @@ -462,6 +465,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" methanol ammonia $endif.cm_subsec_model_chemicals + co2f $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eafscrap "Steel scrap used in EAF" bofscrap "Steel scrap used in BOF" @@ -479,7 +483,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" HVC Fertilizer methanol - ammonia !! ammonia tech + ammonia !! ammonia tech MethFinal AmmoFinal $endif.cm_subsec_model_chemicals @@ -608,8 +612,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemLiq . standard ChemH2 . standard - StCrNG . standard - StCrLiq . standard + StCrNG . standard + StCrLiq . standard MeSySol . (greyh2,greenh2) !! methanol tech QIANZHI MeSyNG . standard @@ -701,7 +705,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemNG . standard . ue_chemicals ChemLiq . standard . ue_chemicals ChemH2 . standard . ue_chemicals - + StCrNG . standard . ue_chemicals StCrLiq . standard . ue_chemicals @@ -720,7 +724,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ue_chemicals MeToFinal . standard . ue_chemicals AmToFinal . standard . ue_chemicals - + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" (bf,bfcc) . standard . ue_steel_primary diff --git a/modules/39_CCU/off/sets.gms b/modules/39_CCU/off/sets.gms index e889bce983..5d1c4965c9 100644 --- a/modules/39_CCU/off/sets.gms +++ b/modules/39_CCU/off/sets.gms @@ -25,22 +25,28 @@ te_ccu39(all_te) "CCU technologies" / - teCCU2rlf(all_te,rlf) "mapping for CCU technologies to grades" +/ +/ + + +teSeCCU2rlf(all_te,rlf) "mapping for CCU technologies to grades" / (h22ch4) . 1 (MeOH) . 1 / + ; -alias(teCCU2rlf,teCCU2rlf2); ***------------------------------------------------------------------------- *** add module specific sets and mappings to the global sets and mappings ***------------------------------------------------------------------------- +teCCU2rlf(teSeCCU2rlf) = YES; +teCCU2rlf(teCUPrc,"1") = YES; -enty(enty_ccu39) = YES; -te(te_ccu39) = YES; +enty(enty_ccu3) = YES; +te(te_ccu39) = YES; *** EOF ./modules/39_CCU/off/sets.gms diff --git a/modules/39_CCU/on/bounds.gms b/modules/39_CCU/on/bounds.gms index 0086f9d989..bd2d4a656d 100644 --- a/modules/39_CCU/on/bounds.gms +++ b/modules/39_CCU/on/bounds.gms @@ -45,7 +45,7 @@ if(cm_emiscen = 1, ); ***---------------------------------------------------------------------------- -*** force synthetic liquids in as a minimum share of total liquids if cm_shSynLiq switch used +*** force synthetic liquids in as a minimum share of total liquids if cm_shSynLiq switch used ***---------------------------------------------------------------------------- if (cm_shSynLiq gt 0, @@ -55,7 +55,7 @@ if (cm_shSynLiq gt 0, ); ***---------------------------------------------------------------------------- -*** force synthetic gases in as a minimum share of total liquids if cm_shSynGas switch used +*** force synthetic gases in as a minimum share of total liquids if cm_shSynGas switch used ***---------------------------------------------------------------------------- if (cm_shSynGas gt 0, diff --git a/modules/39_CCU/on/equations.gms b/modules/39_CCU/on/equations.gms index 5951701833..c631016f92 100644 --- a/modules/39_CCU/on/equations.gms +++ b/modules/39_CCU/on/equations.gms @@ -12,40 +12,46 @@ *' calculate CCU emissions (= CO2 demand of CCU technologies) *** --------------------------------------------------------- -q39_emiCCU(t,regi,te)$(te_ccu39(te)).. +q39_emiCCU(t,regi,te)$(te_ccu39(te) OR teCUPrc(te)).. sum(teCCU2rlf(te,rlf), vm_co2CCUshort(t,regi,"cco2","ccuco2short",te,rlf) ) =e= - sum(se2se_ccu39(enty,enty2,te), - p39_co2_dem(t,regi,enty,enty2,te) + sum(se2se_ccu39(enty,enty2,te), + p39_co2_dem(t,regi,enty,enty2,te) * vm_prodSe(t,regi,enty,enty2,te) ) + + + sum(tePrc2matIn(tePrc,opmoPrc,mat)$(sameAs(mat,"co2f")), + p37_specMatDem(mat,tePrc,opmoPrc) + * vm_outflowPrc(t,regi,tePrc,opmoPrc) + ) + ; -*' calculate v39_shSynLiq, share of synthetic (hydrogen-based) liquids in all SE liquids if cm_shSynLiq switch used +*' calculate v39_shSynLiq, share of synthetic (hydrogen-based) liquids in all SE liquids if cm_shSynLiq switch used q39_shSynLiq(t,regi)$(cm_shSynLiq gt 0).. ( sum(pe2se(entyPe,entySe,te)$seAgg2se("all_seliq",entySe), vm_prodSe(t,regi,entyPe,entySe,te)) + sum(se2se(entySe,entySe2,te)$seAgg2se("all_seliq",entySe2), vm_prodSe(t,regi,entySe,entySe2,te)) ) * v39_shSynLiq(t,regi) =e= - sum(se2se(entySe,entySe2,te)$(sameAs(entySe, "seh2") AND + sum(se2se(entySe,entySe2,te)$(sameAs(entySe, "seh2") AND sameAs(entySe2, "seliqsyn") AND - te_ccu39(te)), + te_ccu39(te)), vm_prodSe(t,regi,entySe,entySe2,te)) ; -*' calculate v39_shSynGas, share of synthetic (hydrogen-based) gas in all SE gases if cm_shSynGas switch used +*' calculate v39_shSynGas, share of synthetic (hydrogen-based) gas in all SE gases if cm_shSynGas switch used q39_shSynGas(t,regi)$(cm_shSynGas gt 0).. ( sum(pe2se(entyPe,entySe,te)$seAgg2se("all_sega",entySe), vm_prodSe(t,regi,entyPe,entySe,te)) + sum(se2se(entySe,entySe2,te)$seAgg2se("all_sega",entySe2), vm_prodSe(t,regi,entySe,entySe2,te)) ) * v39_shSynGas(t,regi) =e= - sum(se2se(entySe,entySe2,te)$(sameAs(entySe, "seh2") AND + sum(se2se(entySe,entySe2,te)$(sameAs(entySe, "seh2") AND sameAs(entySe2, "segasyn") AND - te_ccu39(te)), + te_ccu39(te)), vm_prodSe(t,regi,entySe,entySe2,te)) ; diff --git a/modules/39_CCU/on/sets.gms b/modules/39_CCU/on/sets.gms index 9f400c51fb..1d31a3a5d9 100644 --- a/modules/39_CCU/on/sets.gms +++ b/modules/39_CCU/on/sets.gms @@ -37,30 +37,36 @@ se2se_ccu39(all_enty,all_enty,all_te) "map secondary energy to secondary ene teCCU2rlf(all_te,rlf) "mapping for CCU technologies to grades" / - (h22ch4) . 1 - (MeOH) . 1 / teSeCCU2rlf(all_te,rlf) "mapping for secondary energy CCU technologies to grades" / - (h22ch4) . 1 - (MeOH) . 1 + (h22ch4) . 1 + (MeOH) . 1 / ; -alias(teCCU2rlf,teCCU2rlf2); - ***------------------------------------------------------------------------- *** add module specific sets and mappings to the global sets and mappings ***------------------------------------------------------------------------- +<<<<<<< HEAD enty(enty_ccu39) = YES; te(te_ccu39) = YES; se2se(se2se_ccu39) = YES; teSe2rlf(teCCU2rlf) = YES; teAdj(te_ccu39) = YES; +======= +teCCU2rlf(teSeCCU2rlf) = YES; +teCCU2rlf(teCUPrc,"1") = YES; + +enty(enty_ccu39) = YES; +te(te_ccu39) = YES; +se2se(se2se_ccu39) = YES; +teSe2rlf(teCCU2rlf) = YES; +>>>>>>> 48492eac (industry ccu first empty implementation) *** EOF ./modules/39_CCU/on/sets.gms From 34914363060319921efeca00e717d1978301b8ca Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 25 Sep 2024 16:01:06 +0200 Subject: [PATCH 10/69] Set up CCU tech in Chemicals processes --- core/datainput.gms | 1 + core/input/generisdata_tech.prn | 8 ++-- core/sets.gms | 7 ++++ modules/37_industry/subsectors/datainput.gms | 9 +++++ modules/37_industry/subsectors/sets.gms | 42 ++++++++++++++++++-- 5 files changed, 59 insertions(+), 8 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 9a05944e0d..9cb38c41cd 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -751,6 +751,7 @@ pm_cf(ttot,regi,"AmSyH2") = 0.8; pm_cf(ttot,regi,"MtOMtA") = 0.8; pm_cf(ttot,regi,"FertProd") = 0.8; +pm_cf(ttot,regi,"FertProdH2") = 0.8; pm_cf(ttot,regi,"MeToFinal") = 0.8; pm_cf(ttot,regi,"AmToFinal") = 0.8; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 396126094e..cf30d2fc0a 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -179,11 +179,11 @@ inco0 2500 1200 1600 1100 700 omf 0.06 0.06 0.06 0.06 0.06 0.06 lifetime 20 20 20 20 20 20 -+ MtOMtA FertProd AmToFinal MeToFinal ++ MtOMtA FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal !! documentation & sources: see below -inco0 500 500 500 500 -omf 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 +inco0 500 500 500 500 500 500 +omf 0.06 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 20 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 2a2e1e3544..c457f449fe 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -361,11 +361,15 @@ all_te "all energy technologies, including from modules" MtOMtA MtOMtA_Ro FertProd + FertProdH2 FertProd_Ro + FertProdH2_Ro MeToFinal MeToFinal_Ro AmToFinal AmToFinal_Ro + AmToFinalH2 + AmToFinalH2_Ro *** PCV: technologies related to steel ironMine "Mining of iron ore" idr "Iron direct reduction" @@ -477,6 +481,7 @@ all_enty "all types of quantities" Fertilizer methanol ammonia + ammoniaH2 MethFinal AmmoFinal @@ -1330,7 +1335,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MtOMtA FertProd + FertProdH2 AmToFinal + AmToFinalH2 MeToFinal $endif.cm_subsec_model_chemicals diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 47bf113d31..24b914b838 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,8 +647,16 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +p37_specMatDem("ammonia","FertProd","standard") = 0.57; +p37_specMatDem("ammoniaH2","FertProdH2","standard") = 0.57; + +p37_specMatDem("methanol","MtOMtA","standard") = 4.5; p37_specMatDem("ammonia","AmToFinal","standard") = 1; +p37_specMatDem("ammoniaH2","AmToFinal","standard") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; + +p37_specMatDem("co2f","FertProdH2","standard") = 0.73; +p37_specMatDem("co2f","MeSyH2","standard") = 1.373; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -737,6 +745,7 @@ p37_specFeDemTarget("feels","AmSyH2","standard") = 0.7 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","FertProd","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","FertProdH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index d1c0495696..5b7022e77d 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -408,8 +408,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MtOMtA FertProd + FertProdH2 MeToFinal AmToFinal + AmToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -429,10 +431,24 @@ $endif.cm_subsec_model_steel bfcc idrcc $$endif.cm_subsec_model_steel + + $$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + MeSySolcc + MeSyNGcc + MeSyLiqcc + + AmSyCoalcc + AmSyNGcc + AmSyLiqcc + $$endif.cm_subsec_model_chemicals / teCUPrc(all_te) "Technologies using CO2 as a feedstock" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + MeSyH2 + FertProdH2 +$endif.cm_subsec_model_chemicals / mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" @@ -443,10 +459,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Fertilizer methanol ammonia !! ammonia tech QIANZHI + ammoniaH2 MethFinal AmmoFinal -$endif.cm_subsec_model_chemicals co2f +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel sesteel @@ -464,8 +481,8 @@ matIn(all_enty) "Materials which serve as input to a process" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" methanol ammonia -$endif.cm_subsec_model_chemicals co2f +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eafscrap "Steel scrap used in EAF" bofscrap "Steel scrap used in BOF" @@ -484,6 +501,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Fertilizer methanol ammonia !! ammonia tech + ammoniaH2 MethFinal AmmoFinal $endif.cm_subsec_model_chemicals @@ -567,8 +585,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MtOMtA_Ro FertProd_Ro + FertProdH2_Ro MeToFinal_Ro AmToFinal_Ro + AmToFinalH2_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idreaf_ng @@ -633,8 +653,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MtOMtA . standard FertProd . standard + FertProdH2 . standard MeToFinal . standard AmToFinal . standard + AmToFinalH2 . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) @@ -650,9 +672,11 @@ tePrc2matIn(tePrc,opmoPrc,mat) "Mapping of technologies onto input materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ammonia + FertProdH2 . standard . ammoniaH2 MtOMtA . standard . methanol MeToFinal . standard . methanol AmToFinal . standard . ammonia + AmToFinalH2 . standard . ammoniaH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (h2,ng) . dripell @@ -682,12 +706,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoal . standard . ammonia !! ammonia tech QIANZHI AmSyNG . standard . ammonia AmSyLiq . standard . ammonia - AmSyH2 . standard . ammonia + AmSyH2 . standard . ammoniaH2 MtOMtA . standard . HVC FertProd . standard . Fertilizer + FertProdH2 . standard . Fertilizer MeToFinal . standard . MethFinal AmToFinal . standard . AmmoFinal + AmToFinalH2 . standard . AmmoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron @@ -722,8 +748,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MtOMtA . standard . ue_chemicals FertProd . standard . ue_chemicals + FertProdH2 . standard . ue_chemicals MeToFinal . standard . ue_chemicals AmToFinal . standard . ue_chemicals + AmToFinalH2 . standard . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -736,7 +764,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrc2teCCPrc(tePrc,opmoPrc,tePrc,opmoPrc) "Mapping of base technologies to CCS technologies" +tePrc2teCCPrc(tePrc,opmoPrc,teCCPrc,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSySol . greyh2 . MeSySolcc . greyh2 !! methanol tech QIANZHI @@ -788,8 +816,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MtOMtA . standard . MtOMtA_Ro FertProd . standard . FertProd_Ro + FertProdH2 . standard . FertProdH2_Ro MeToFinal . standard . MeToFinal_Ro AmToFinal . standard . AmToFinal_Ro + AmToFinalH2 . standard . AmToFinalH2_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -852,8 +882,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.MtOMtA entydummy.entydummy.FertProd + entydummy.entydummy.FertProdH2 entydummy.entydummy.MeToFinal entydummy.entydummy.AmToFinal + entydummy.entydummy.AmToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" entydummy.entydummy.bf @@ -894,8 +926,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . MtOMtA chemicals . FertProd + chemicals . FertProdH2 chemicals . MeToFinal chemicals . AmToFinal + chemicals . AmToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr From 780c4d14914b64243631f20635e55969c642425b Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 25 Sep 2024 15:58:31 +0200 Subject: [PATCH 11/69] fix domain errors --- modules/37_industry/subsectors/equations.gms | 3 +-- modules/37_industry/subsectors/sets.gms | 24 ++++++++++---------- 2 files changed, 13 insertions(+), 14 deletions(-) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 1bd945a2da..e6cc1a55d3 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -504,8 +504,7 @@ q37_emiPrc(t,regi,entyFe,tePrc,opmoPrc) .. ***------------------------------------------------------ *' Carbon capture processes can only capture as much co2 as the base process and the CCS process combined emit ***------------------------------------------------------ -q37_limitOutflowCCPrc(t,regi,teCCPrc)$( - sum((tePrc,opmoPrc,opmoCCPrc),tePrc2teCCPrc(tePrc,opmoPrc,teCCPrc,opmoCCPrc)) ) .. +q37_limitOutflowCCPrc(t,regi,teCCPrc) .. sum(tePrc2opmoPrc(teCCPrc,opmoCCPrc), vm_outflowPrc(t,regi,teCCPrc,opmoCCPrc) ) diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 5b7022e77d..06c21627b7 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -425,14 +425,14 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / - teCCPrc(all_te) "Technologies used in process-based model (only CCS)" +teCCPrc(all_te) "Technologies used in process-based model (only CCS)" / - $$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc idrcc - $$endif.cm_subsec_model_steel +$endif.cm_subsec_model_steel - $$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSySolcc MeSyNGcc MeSyLiqcc @@ -440,7 +440,7 @@ $endif.cm_subsec_model_steel AmSyCoalcc AmSyNGcc AmSyLiqcc - $$endif.cm_subsec_model_chemicals +$endif.cm_subsec_model_chemicals / teCUPrc(all_te) "Technologies using CO2 as a feedstock" @@ -624,7 +624,7 @@ $endif.cm_subsec_model_steel *** B) mappings *** ----------------------- -tePrc2opmoPrc(tePrc,opmoPrc) "Mapping of technologies onto available operation modes" +tePrc2opmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operation modes" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemSol . standard @@ -668,7 +668,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrc2matIn(tePrc,opmoPrc,mat) "Mapping of technologies onto input materials" +tePrc2matIn(all_te,opmoPrc,mat) "Mapping of technologies onto input materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ammonia @@ -687,7 +687,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrc2matOut(tePrc,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" +tePrc2matOut(all_te,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemSol . standard . OtherChem @@ -724,7 +724,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrc2ue(tePrc,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" +tePrc2ue(all_te,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemSol . standard . ue_chemicals @@ -764,7 +764,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrc2teCCPrc(tePrc,opmoPrc,teCCPrc,opmoPrc) "Mapping of base technologies to CCS technologies" +tePrc2teCCPrc(all_te,opmoPrc,all_te,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSySol . greyh2 . MeSySolcc . greyh2 !! methanol tech QIANZHI @@ -781,7 +781,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrc2route(tePrc,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" +tePrc2route(all_te,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemSol . standard . ChemRo_Sol @@ -897,7 +897,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -secInd37_tePrc(secInd37,tePrc) "Mapping of technologies onto industry subsectors" +secInd37_tePrc(secInd37,all_te) "Mapping of technologies onto industry subsectors" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . ChemSol From 0c7ccae0fa4a71931272506171d18bfbee6f003e Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 6 Jan 2025 09:12:45 +0100 Subject: [PATCH 12/69] Distinguishing between technical routes for the synthesis of ammonia from hydrogen --- core/datainput.gms | 1 + modules/37_industry/subsectors/datainput.gms | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/datainput.gms b/core/datainput.gms index 9cb38c41cd..a355e334b8 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -754,6 +754,7 @@ pm_cf(ttot,regi,"FertProd") = 0.8; pm_cf(ttot,regi,"FertProdH2") = 0.8; pm_cf(ttot,regi,"MeToFinal") = 0.8; pm_cf(ttot,regi,"AmToFinal") = 0.8; +pm_cf(ttot,regi,"AmToFinalH2") = 0.8; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 24b914b838..9154953cb5 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -652,7 +652,7 @@ p37_specMatDem("ammoniaH2","FertProdH2","standard") = 0.57; p37_specMatDem("methanol","MtOMtA","standard") = 4.5; p37_specMatDem("ammonia","AmToFinal","standard") = 1; -p37_specMatDem("ammoniaH2","AmToFinal","standard") = 1; +p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; p37_specMatDem("co2f","FertProdH2","standard") = 0.73; From 98ba52a224ad31d47bf2010fffde676c7603cef4 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 22 Jan 2025 13:40:10 +0100 Subject: [PATCH 13/69] input data test --- modules/37_industry/subsectors/datainput.gms | 31 ++++++++++++++------ modules/37_industry/subsectors/equations.gms | 2 +- 2 files changed, 23 insertions(+), 10 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 9154953cb5..1c4599ada7 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -645,6 +645,20 @@ $endIf.cm_wasteIncinerationCCSshare *** 2. Process-Based *** --------------------------------------------------------------------------- +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + +* Load secondary steel share limits +Parameter + p37_chemical__input(tall,all_regi,all_te) "Histrionic chemical data input" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2015-2020.cs4r"; +$offdelim + / +; + +$endif.cm_subsec_model_chemicals + p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_specMatDem("ammonia","FertProd","standard") = 0.57; @@ -800,11 +814,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. -p37_mat2ue("HVC","ue_chemicals") = 1.27 * 5; -p37_mat2ue("OtherChem","ue_chemicals") = 1.27 * 5; !! methanol tech QIANZHI -p37_mat2ue("Fertilizer","ue_chemicals") = 1.27 * 5; !! ammonia tech QIANZHI -p37_mat2ue("MethFinal","ue_chemicals") = 1.27 * 5; -p37_mat2ue("AmmoFinal","ue_chemicals") = 1.27 * 5; +p37_mat2ue("HVC","ue_chemicals") = 0.52; #2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/propylene-price-index/ 2020 Global Average of Ethylene, Propylene and BTX +p37_mat2ue("Fertilizer","ue_chemicals") = 0.58; #2005$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +p37_mat2ue("MethFinal","ue_chemicals") = 0.21; #2005$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +p37_mat2ue("AmmoFinal","ue_chemicals") = 0.28; #2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue("OtherChem","ue_chemicals") = 1.27 * 5; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; @@ -1001,9 +1015,9 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! 2nd stage tech loop(mat2ue(mat,in), - p37_matFlowHist(ttot,regi,mat) = pm_fedemand(ttot,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(mat,in); + p37_matFlowHist(ttot,regi,mat) = pm_fedemand(ttot,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(mat,in); #TODOQZ:: This is the sum of pm_outflowPrcHist loop(tePrc2matOut(tePrc,opmoPrc,mat), - pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc,opmoPrc,mat); + pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc,opmoPrc,mat); #TODOQZ:: Directly read data ); ); @@ -1015,10 +1029,9 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_matFlowHist(ttot,regi,mat) = sum((tePrc2matOut(tePrc1,opmoPrc1,mat), tePrc2matIn(tePrc2,opmoPrc2,mat)), - !!TODO: enable p37_teMatShareHist here, too (has to be defined, though) p37_specMatDem(mat,tePrc2,opmoPrc2) * pm_outflowPrcHist(ttot,regi,tePrc2,opmoPrc2) ); !!TODO: enable p37_teMatShareHist here, too (has to be defined, though) - pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc1,opmoPrc1,mat); + pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc1,opmoPrc1,mat); #TODOQZ:: Directly read data ); loop((entyFe,ppfUePrc), diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index e6cc1a55d3..f71c1f12ff 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -444,7 +444,7 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. ***------------------------------------------------------ *' Hand-over to CES ***------------------------------------------------------ -q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. +q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. #TODOQZ:: Seems like vm_cesIO(t,regi,in) is read from BAU run and can not get from outside? (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) * p37_ue_share(mat,in) From 3b42656ca10766ee823cd2bb4b7b9798f5cfe271 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Fri, 24 Jan 2025 12:02:12 +0100 Subject: [PATCH 14/69] read chemicals inputdata - first draft --- modules/37_industry/subsectors/datainput.gms | 283 ++++++++---------- .../37_industry/subsectors/declarations.gms | 1 - modules/37_industry/subsectors/equations.gms | 2 +- 3 files changed, 121 insertions(+), 165 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 1c4599ada7..2b0512d016 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -645,20 +645,6 @@ $endIf.cm_wasteIncinerationCCSshare *** 2. Process-Based *** --------------------------------------------------------------------------- -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - -* Load secondary steel share limits -Parameter - p37_chemical__input(tall,all_regi,all_te) "Histrionic chemical data input" - / -$ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2015-2020.cs4r"; -$offdelim - / -; - -$endif.cm_subsec_model_chemicals - p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_specMatDem("ammonia","FertProd","standard") = 0.57; @@ -803,10 +789,79 @@ $endif.cm_subsec_model_steel *** -------------------------------- +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +* Load secondary steel share limits +Parameter + p37_matFlowHist(tall,all_regi,all_enty) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChem_Flow_Value_2020.cs4r"; +$offdelim + / +; +!! scale 2005 to 2015 with ue_chemicals +loop(t$(t.val ge 2005 AND t.val le 2015), + pm_matFlowHist(t,regi,mat) + = pm_matFlowHist("2020",regi,mat) + * pm_fedemand(t,regi,"ue_chemicals") + / pm_fedemand("2020",regi,"ue_chemicals"); +); +Parameter + pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2020.cs4r"; +$offdelim + / +; +!! scale 2005 to 2015 with ue_chemicals +loop(t$(t.val ge 2005 AND t.val le 2015), + pm_outflowPrcHist(t,regi,tePrc,opmoPrc) + = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) + * pm_fedemand(t,regi,"ue_chemicals") + / pm_fedemand("2020",regi,"ue_chemicals"); +); +Parameter + p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChem_Ueshare_Value_2020.cs4r"; +$offdelim + / +; +loop(t, + p37_ue_share(t,regi,all_enty,all_in) = p37_ue_share("2020",regi,all_enty,all_in); +); + +Parameter + p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2020.cs4r"; +$offdelim + / +; +loop((t$(t.val ge 2005 AND t.val le 2015), + regi, + tePrc2opmoPrc(tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)), + ue2ppfenPrc("ue_chemicals",in2) + fe2ppfen_no_ces_use(entyFe,in2)), + p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) + = p37_demFePrcHist("2020",regi,tePrc,opmoPrc,entyFe) + * sum(fe2ppfen_no_ces_use(entyFe,in), pm_fedemand(t,regi,in)) + / max(sm_eps, sum(fe2ppfen_no_ces_use(entyFe,in), pm_fedemand("2020",regi,in))); + + if(pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt sm_eps, + pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) / pm_outflowPrcHist(t,regi,tePrc,opmoPrc); + else + pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_specFeDemTarget(entyFe,tePrc,opmoPrc); + ); +); +$endif.cm_subsec_model_chemicals + p37_mat2ue(all_enty,all_in) = 0.; p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! TODO Qianzhi: refine !! ue_chemicals is measured in value_added (trn$2005), whilst olandar is measured in Gt !! So this is the price of olandar in trn$2005/Gt = $2005/kg !! In this first dummy step, the process replaces all of chemistry, so olandar is only a dummy product reprenting the whole chemicals sector. It chould be much more expensive than olefines, since lots of the chemicals sector is much less energy intensive but has higher value added than olefines production @@ -814,11 +869,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. -p37_mat2ue("HVC","ue_chemicals") = 0.52; #2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/propylene-price-index/ 2020 Global Average of Ethylene, Propylene and BTX -p37_mat2ue("Fertilizer","ue_chemicals") = 0.58; #2005$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average -p37_mat2ue("MethFinal","ue_chemicals") = 0.21; #2005$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average -p37_mat2ue("AmmoFinal","ue_chemicals") = 0.28; #2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average -p37_mat2ue("OtherChem","ue_chemicals") = 1.27 * 5; +p37_mat2ue("HVC","ue_chemicals") = 1.1; !!2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/propylene-price-index/ 2020 Global Average of Ethylene, Propylene and BTX +p37_mat2ue("Fertilizer","ue_chemicals") = 0.58; !!2005$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +p37_mat2ue("MethFinal","ue_chemicals") = 0.3; !!2005$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +p37_mat2ue("AmmoFinal","ue_chemicals") = 0.55; !!2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue("OtherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share("sesteel","ue_steel_secondary") = 1.; @@ -830,56 +885,32 @@ $endif.cm_subsec_model_steel *** -------------------------------- -p37_ue_share(all_enty,all_in) = 0.; -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_ue_share("HVC","ue_chemicals") = 0.4; !! methanol tech QIANZHI -p37_ue_share("OtherChem","ue_chemicals") = 0.2; -p37_ue_share("Fertilizer","ue_chemicals") = 0.2; !! ammonia tech QIANZHI -p37_ue_share("MethFinal","ue_chemicals") = 0.1; -p37_ue_share("AmmoFinal","ue_chemicals") = 0.1; -$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_ue_share("sesteel","ue_steel_secondary") = 1.; -p37_ue_share("prsteel","ue_steel_primary") = 1.; +p37_ue_share(t,regi,"sesteel","ue_steel_secondary") = 1.; +p37_ue_share(t,regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel -loop(ppfUePrc(in), - if(abs(sum(mat,p37_ue_share(mat,in))-1.) gt sm_eps, +loop((t,regi,ppfUePrc(in)), + if(abs(sum(mat,p37_ue_share(t,regi,mat,in))-1.) gt sm_eps, display p37_ue_share; abort "p37_ue_share must add to one for each ue"; ); ); *** -------------------------------- -p37_teMatShareHist(tePrc,opmoPrc,mat) = 0.; -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_teMatShareHist("ChemSol","standard","OtherChem") = 0.1; -p37_teMatShareHist("ChemNG","standard","OtherChem") = 0.3; -p37_teMatShareHist("ChemLiq","standard","OtherChem") = 0.6; - -p37_teMatShareHist("MeSySol","greyh2","methanol") = 0.3; -p37_teMatShareHist("MeSyNG","standard","methanol") = 0.6; -p37_teMatShareHist("MeSyLiq","standard","methanol") = 0.1; - -p37_teMatShareHist("AmSyCoal","standard","ammonia") = 0.3; -p37_teMatShareHist("AmSyNG","standard","ammonia") = 0.6; -p37_teMatShareHist("AmSyLiq","standard","ammonia") = 0.1; - -p37_teMatShareHist("MtOMtA","standard","HVC") = 0.5; -p37_teMatShareHist("StCrNG","standard","HVC") = 0.15; -p37_teMatShareHist("StCrLiq","standard","HVC") = 0.35; - -p37_teMatShareHist("FertProd","standard","Fertilizer") = 1.; -p37_teMatShareHist("MeToFinal","standard","MethFinal") = 1.; -p37_teMatShareHist("AmToFinal","standard","AmmoFinal") = 1.; -$endif.cm_subsec_model_chemicals +p37_teMatShareHist(all_regi,tePrc,opmoPrc,mat) = 0.; +!!$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!!loop(tePrc$(secInd37_tePrc("chemicals",tePrc)), +!! p37_teMatShareHist(regi,tePrc,opmoPrc,mat) = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) / p37_matFlowHist("2020",regi,mat); +!!); +!!$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_teMatShareHist("bof","unheated","prsteel") = 1.; -p37_teMatShareHist("eaf","sec","sesteel") = 1.; -p37_teMatShareHist("bf","standard","pigiron") = 1.; -p37_teMatShareHist("idr","ng","driron") = 1.; +p37_teMatShareHist(regi,"bof","unheated","prsteel") = 1.; +p37_teMatShareHist(regi,"eaf","sec","sesteel") = 1.; +p37_teMatShareHist(regi,"bf","standard","pigiron") = 1.; +p37_teMatShareHist(regi,"idr","ng","driron") = 1.; $endif.cm_subsec_model_steel -loop(matFin(mat), - if(abs(sum((tePrc,opmoPrc),p37_teMatShareHist(tePrc,opmoPrc,mat))-1.) gt sm_eps, +loop((regi,matFin(mat)), + if(abs(sum((tePrc,opmoPrc),p37_teMatShareHist(regi,tePrc,opmoPrc,mat))-1.) gt sm_eps, display p37_teMatShareHist; abort "p37_teMatShareHist must add to one for each matFin"; ); @@ -896,16 +927,16 @@ p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_captureRate("MeSySolcc") = 0.73; !! methanol tech QIANZHI -p37_captureRate("MeSyNGcc") = 0.85; -p37_captureRate("MeSyLiqcc") = 0.73; +p37_captureRate("MeSySolcc") = 0.9; !! methanol tech QIANZHI +p37_captureRate("MeSyNGcc") = 0.9; +p37_captureRate("MeSyLiqcc") = 0.9; p37_selfCaptureRate("MeSySolcc") = 0.9; p37_selfCaptureRate("MeSyNGcc") = 0.9; p37_selfCaptureRate("MeSyLiqcc") = 0.9; -p37_captureRate("AmSyCoalcc") = 0.73; !! ammonia tech QIANZHI -p37_captureRate("AmSyNGcc") = 0.85; -p37_captureRate("AmSyLiqcc") = 0.85; +p37_captureRate("AmSyCoalcc") = 0.9; !! ammonia tech QIANZHI +p37_captureRate("AmSyNGcc") = 0.9; +p37_captureRate("AmSyLiqcc") = 0.9; p37_selfCaptureRate("AmSyCoalcc") = 0.9; p37_selfCaptureRate("AmSyNGcc") = 0.9; p37_selfCaptureRate("AmSyLiqcc") = 0.9; @@ -937,87 +968,13 @@ $endif.cm_subsec_model_steel pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; if (cm_startyear eq 2005, -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! TODO Qianzhi - pm_outflowPrcIni(regi,"ChemOld","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("otherchem","ue_chemicals") / p37_mat2ue("otherchem","ue_chemicals"); - pm_outflowPrcIni(regi,"ChemNew","standard") = 0; - - pm_outflowPrcIni(regi,"MeSySol","greyh2") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals") * 0.3; !! methanol tech QIANZHI - pm_outflowPrcIni(regi,"MeSyNG","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals") * 0.6; - pm_outflowPrcIni(regi,"MeSyLiq","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("olandar","ue_chemicals") / p37_mat2ue("olandar","ue_chemicals") * 0.1; - pm_outflowPrcIni(regi,"MeSySol","gh2") = 0; - pm_outflowPrcIni(regi,"MeSySolcc","greyh2") = 0; - pm_outflowPrcIni(regi,"MeSyNGcc","standard") = 0; - pm_outflowPrcIni(regi,"MeSyLiqcc","standard") = 0; - pm_outflowPrcIni(regi,"MeSyH2","standard") = 0; - - pm_outflowPrcIni(regi,"AmSyCoal","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("ammonia","ue_chemicals") / p37_mat2ue("ammonia","ue_chemicals") * 0.3; !!! ammonia tech QIANZHI - pm_outflowPrcIni(regi,"AmSyNG","standard") = pm_fedemand("2005",regi,"ue_chemicals") * p37_ue_share("ammonia","ue_chemicals") / p37_mat2ue("ammonia","ue_chemicals") * 0.7; - pm_outflowPrcIni(regi,"AmSyCoalcc","standard") = 0; - pm_outflowPrcIni(regi,"AmSyNGcc","standard") = 0; - pm_outflowPrcIni(regi,"AmSyH2","standard") = 0; - - loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), - pm_specFeDem(ttot,regi,"feh2s","ChemNew","standard") = p37_specFeDemTarget("feh2s","ChemNew","standard"); - pm_specFeDem(ttot,regi,"feels","ChemNew","standard") = p37_specFeDemTarget("feels","ChemNew","standard"); - - pm_specFeDem(ttot,regi,"fegas","ChemOld","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"fesos","ChemOld","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"fehos","ChemOld","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"feels","ChemOld","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("otherchem","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - - !!pm_specFeDem(ttot,regi,"fesos","MeSySol","gh2") = p37_specFeDemTarget("fesos","MeSySol","gh2"); !! methanol tech QIANZHI - !!pm_specFeDem(ttot,regi,"feh2s","MeSySol","gh2") = p37_specFeDemTarget("feh2s","MeSySol","gh2"); - !!pm_specFeDem(ttot,regi,"feels","MeSySol","gh2") = p37_specFeDemTarget("feels","MeSySol","gh2"); - !!pm_specFeDem(ttot,regi,"fesos","MeSySolcc","greyh2") = p37_specFeDemTarget("fesos","MeSySolcc","greyh2"); - !!pm_specFeDem(ttot,regi,"feels","MeSySolcc","greyh2") = p37_specFeDemTarget("feels","MeSySolcc","greyh2"); - !!pm_specFeDem(ttot,regi,"fegas","MeSyNGcc","standard") = p37_specFeDemTarget("fegas","MeSyNGcc","standard"); - !!pm_specFeDem(ttot,regi,"feels","MeSyNGcc","standard") = p37_specFeDemTarget("feels","MeSyNGcc","standard"); - !!pm_specFeDem(ttot,regi,"fehos","MeSyLiqcc","standard") = p37_specFeDemTarget("fehos","MeSyLiqcc","standard"); - !!pm_specFeDem(ttot,regi,"feels","MeSyLiqcc","standard") = p37_specFeDemTarget("feels","MeSyLiqcc","standard"); - !!pm_specFeDem(ttot,regi,"feh2s","MeSyH2","standard") = p37_specFeDemTarget("feh2s","MeSyH2","standard"); - !!pm_specFeDem(ttot,regi,"feels","MeSyH2","standard") = p37_specFeDemTarget("feels","MeSyH2","standard"); - - !!pm_specFeDem(ttot,regi,"fesos","MeSySol","greyh2") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - !!pm_specFeDem(ttot,regi,"feels","MeSySol","greyh2") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"fegas","MeSyNG","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"feels","MeSyNG","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - !!pm_specFeDem(ttot,regi,"fehos","MeSyLiq","standard") = pm_fedemand(ttot,regi,"feli_chemicals") * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - !!pm_specFeDem(ttot,regi,"feels","MeSyLiq","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("olandar","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - - pm_specFeDem(ttot,regi,"feh2s","AmSyH2","standard") = p37_specFeDemTarget("feh2s","AmSyH2","standard"); !!! ammonia tech QIANZHI - pm_specFeDem(ttot,regi,"feels","AmSyH2","standard") = p37_specFeDemTarget("feels","AmSyH2","standard"); - - pm_specFeDem(ttot,regi,"fesos","AmSyCoalcc","standard") = p37_specFeDemTarget("fesos","AmSyCoalcc","standard"); - pm_specFeDem(ttot,regi,"feels","AmSyCoalcc","standard") = p37_specFeDemTarget("feels","AmSyCoalcc","standard"); - pm_specFeDem(ttot,regi,"fegas","AmSyNGcc","standard") = p37_specFeDemTarget("fegas","AmSyNGcc","standard"); - pm_specFeDem(ttot,regi,"feels","AmSyNGcc","standard") = p37_specFeDemTarget("feels","AmSyNGcc","standard"); - - pm_specFeDem(ttot,regi,"fesos","AmSyCoal","standard") = pm_fedemand(ttot,regi,"feso_chemicals") * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"feels","AmSyCoal","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"fegas","AmSyNG","standard") = pm_fedemand(ttot,regi,"fega_chemicals") * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - pm_specFeDem(ttot,regi,"feels","AmSyNG","standard") = (pm_fedemand(ttot,regi,"feelhth_chemicals") + pm_fedemand(ttot,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa * p37_mat2ue("ammonia","ue_chemicals") / pm_fedemand(ttot,regi,"ue_chemicals"); - - ); - -$endif.cm_subsec_model_chemicals -$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" - pm_outflowPrcIni(regi,"bof","unheated") = pm_fedemand("2005",regi,"ue_steel_primary"); - pm_outflowPrcIni(regi,"bf","standard") = p37_specMatDem("pigiron","bof","unheated") * pm_outflowPrcIni(regi,"bof","unheated"); - pm_outflowPrcIni(regi,"eaf","sec") = pm_fedemand("2005",regi,"ue_steel_secondary"); - pm_outflowPrcIni(regi,"eaf","pri") = 0.; - pm_outflowPrcIni(regi,"idr","ng") = 0.; - pm_outflowPrcIni(regi,"idr","h2") = 0.; - pm_outflowPrcIni(regi,"bfcc","standard") = 0.; - pm_outflowPrcIni(regi,"idrcc","ng") = 0.; - - loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), + loop(t$(t.val ge 2005 AND t.val le 2020), !! 2nd stage tech - loop(mat2ue(mat,in), - p37_matFlowHist(ttot,regi,mat) = pm_fedemand(ttot,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(mat,in); #TODOQZ:: This is the sum of pm_outflowPrcHist + loop(mat2ue(mat,in)$(NOT sameas(in,"ue_chemicals")), + p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(t,regi,mat,in); loop(tePrc2matOut(tePrc,opmoPrc,mat), - pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc,opmoPrc,mat); #TODOQZ:: Directly read data + pm_outflowPrcHist(t,regi,tePrc,opmoPrc) = p37_matFlowHist(t,regi,mat) * p37_teMatShareHist(regi,tePrc,opmoPrc,mat); ); ); @@ -1025,35 +982,35 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! TODO: simply do this loop several times to fill more than two stages? loop((tePrc1,opmoPrc1,mat)$( sum((tePrc2,opmoPrc2), tePrc2matIn(tePrc2,opmoPrc2,mat)) - AND tePrc2matOut(tePrc1,opmoPrc1,mat)), - p37_matFlowHist(ttot,regi,mat) + AND tePrc2matOut(tePrc1,opmoPrc1,mat) + AND secInd37_tePrc("steel",tePrc)), + p37_matFlowHist(t,regi,mat) = sum((tePrc2matOut(tePrc1,opmoPrc1,mat), tePrc2matIn(tePrc2,opmoPrc2,mat)), - p37_specMatDem(mat,tePrc2,opmoPrc2) * pm_outflowPrcHist(ttot,regi,tePrc2,opmoPrc2) ); - !!TODO: enable p37_teMatShareHist here, too (has to be defined, though) - pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc1,opmoPrc1,mat); #TODOQZ:: Directly read data + p37_specMatDem(mat,tePrc2,opmoPrc2) * pm_outflowPrcHist(t,regi,tePrc2,opmoPrc2) ); + pm_outflowPrcHist(t,regi,tePrc1,opmoPrc1) = p37_matFlowHist(t,regi,mat) * p37_teMatShareHist(regi,tePrc1,opmoPrc1,mat); ); - loop((entyFe,ppfUePrc), - p37_demFeTarget(ttot,regi,entyFe,ppfUePrc) = sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) * p37_specFeDemTarget(entyFe,tePrc,opmoPrc)); - p37_demFeActual(ttot,regi,entyFe,ppfUePrc) = sum((fe2ppfen_no_ces_use(entyFe,all_in),ue2ppfenPrc(ppfUePrc,all_in)), pm_fedemand(ttot,regi,all_in) * sm_EJ_2_TWa); + loop((entyFe,ppfUePrc$(not sameas(ppfUePrc, "ue_chemicals"))), + p37_demFeTarget(t,regi,entyFe,ppfUePrc) = sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) * p37_specFeDemTarget(entyFe,tePrc,opmoPrc)); + p37_demFeActual(t,regi,entyFe,ppfUePrc) = sum((fe2ppfen_no_ces_use(entyFe,all_in),ue2ppfenPrc(ppfUePrc,all_in)), pm_fedemand(t,regi,all_in) * sm_EJ_2_TWa); ); - p37_demFeRatio(ttot,regi,ppfUePrc) = sum(entyFe,p37_demFeActual(ttot,regi,entyFe,ppfUePrc)) / sum(entyFe,p37_demFeTarget(ttot,regi,entyFe,ppfUePrc)); + p37_demFeRatio(t,regi,ppfUePrc)$(not sameas(ppfUePrc, "ue_chemicals")) = sum(entyFe,p37_demFeActual(t,regi,entyFe,ppfUePrc)) / sum(entyFe,p37_demFeTarget(t,regi,entyFe,ppfUePrc)); - loop((tePrc2opmoPrc(tePrc,opmoPrc),regi,entyFe)$(p37_specFeDemTarget(entyFe,tePrc,opmoPrc) gt 0.01*sm_eps), - if((pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) gt sm_eps), - pm_specFeDem(ttot,regi,entyFe,tePrc,opmoPrc) + loop((tePrc2opmoPrc(tePrc,opmoPrc),regi,entyFe)$(p37_specFeDemTarget(entyFe,tePrc,opmoPrc) gt 0.01*sm_eps and secInd37_tePrc("steel",tePrc)), + if((pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt sm_eps), + pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_specFeDemTarget(entyFe,tePrc,opmoPrc) * sum(tePrc2ue(tePrc,opmoPrc,in), - p37_demFeActual(ttot,regi,entyFe,in) - / p37_demFeTarget(ttot,regi,entyFe,in)); + p37_demFeActual(t,regi,entyFe,in) + / p37_demFeTarget(t,regi,entyFe,in)); else - pm_specFeDem(ttot,regi,entyFe,tePrc,opmoPrc) + pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_specFeDemTarget(entyFe,tePrc,opmoPrc) * (1. + s37_shareHistFeDemPenalty - * (sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), p37_demFeRatio(ttot,regi,ppfUePrc)) + * (sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), p37_demFeRatio(t,regi,ppfUePrc)) -1.)); ); ); @@ -1064,13 +1021,13 @@ $endif.cm_subsec_model_steel !! loop over other years and blend loop((entyFeStat(all_enty), tePrc(all_te), opmoPrc), if( (p37_specFeDemTarget(all_enty,all_te,opmoPrc) gt 0.), - loop(ttot$(ttot.val > 2020), + loop(t$(t.val > 2020), !! fedemand in excess of BAT halves until 2055 !! gams cannot handle float exponents, so pre-compute 0.5^(1/(2055-2020)) = 0.9804 - pm_specFeDem(ttot,regi,all_enty,all_te,opmoPrc) + pm_specFeDem(t,regi,all_enty,all_te,opmoPrc) = p37_specFeDemTarget(all_enty,all_te,opmoPrc) + (pm_specFeDem("2020",regi,all_enty,all_te,opmoPrc) - p37_specFeDemTarget(all_enty,all_te,opmoPrc)) - * power(0.9804, ttot.val - 2020) ; + * power(0.9804, t.val - 2020) ; ); ); ); diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 4ae10278bb..af4e82c0f6 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -33,7 +33,6 @@ Parameters pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" p37_matFlowHist(tall,all_regi,all_enty) "Historic material flows" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" - p37_ue_share(all_enty,all_in) "Fixed share of material in ue" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index f71c1f12ff..741ab60458 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -447,7 +447,7 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. #TODOQZ:: Seems like vm_cesIO(t,regi,in) is read from BAU run and can not get from outside? (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) - * p37_ue_share(mat,in) + * p37_ue_share(t,regi,mat,in) =e= sum(mat2ue(mat,in), p37_mat2ue(mat,in) From 9670ac38f9edf3d20ace0886cf55c85b59d88cdb Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 27 Jan 2025 19:16:32 +0100 Subject: [PATCH 15/69] bugfixes from gamscompile --- modules/37_industry/subsectors/datainput.gms | 30 ++++++++++++------- .../37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 2 +- 3 files changed, 22 insertions(+), 12 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 2b0512d016..ed67f53e93 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -801,8 +801,8 @@ $offdelim ; !! scale 2005 to 2015 with ue_chemicals loop(t$(t.val ge 2005 AND t.val le 2015), - pm_matFlowHist(t,regi,mat) - = pm_matFlowHist("2020",regi,mat) + p37_matFlowHist(t,regi,mat) + = p37_matFlowHist("2020",regi,mat) * pm_fedemand(t,regi,"ue_chemicals") / pm_fedemand("2020",regi,"ue_chemicals"); ); @@ -841,11 +841,19 @@ $include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2020.c $offdelim / ; -loop((t$(t.val ge 2005 AND t.val le 2015), +!!TODO: This is a hotfix!! +loop(regi, + p37_demFePrcHist("2020",regi,"ChemNG","standard","feels") = p37_demFePrcHist("2020",regi,"ChemNG","standard","feels") /3.; + p37_demFePrcHist("2020",regi,"ChemLiq","standard","feels") = p37_demFePrcHist("2020",regi,"ChemLiq","standard","feels") /3.; + p37_demFePrcHist("2020",regi,"ChemSol","standard","feels") = p37_demFePrcHist("2020",regi,"ChemSol","standard","feels") /3.; +); + +loop((t, regi, - tePrc2opmoPrc(tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)), - ue2ppfenPrc("ue_chemicals",in2) - fe2ppfen_no_ces_use(entyFe,in2)), + tePrc2opmoPrc(tePrc,opmoPrc), + entyFe)$( t.val ge 2005 AND t.val le 2015 + AND secInd37_tePrc("chemicals",tePrc) + AND sum(in2,fe2ppfen_no_ces_use(entyFe,in2) AND ue2ppfenPrc("ue_chemicals",in2))), p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) = p37_demFePrcHist("2020",regi,tePrc,opmoPrc,entyFe) * sum(fe2ppfen_no_ces_use(entyFe,in), pm_fedemand(t,regi,in)) @@ -909,7 +917,7 @@ p37_teMatShareHist(regi,"eaf","sec","sesteel") = 1.; p37_teMatShareHist(regi,"bf","standard","pigiron") = 1.; p37_teMatShareHist(regi,"idr","ng","driron") = 1.; $endif.cm_subsec_model_steel -loop((regi,matFin(mat)), +loop((regi,matFin(mat))$(NOT mat2ue(mat,"ue_chemicals")), if(abs(sum((tePrc,opmoPrc),p37_teMatShareHist(regi,tePrc,opmoPrc,mat))-1.) gt sm_eps, display p37_teMatShareHist; abort "p37_teMatShareHist must add to one for each matFin"; @@ -983,7 +991,7 @@ if (cm_startyear eq 2005, loop((tePrc1,opmoPrc1,mat)$( sum((tePrc2,opmoPrc2), tePrc2matIn(tePrc2,opmoPrc2,mat)) AND tePrc2matOut(tePrc1,opmoPrc1,mat) - AND secInd37_tePrc("steel",tePrc)), + AND secInd37_tePrc("steel",tePrc1)), p37_matFlowHist(t,regi,mat) = sum((tePrc2matOut(tePrc1,opmoPrc1,mat), tePrc2matIn(tePrc2,opmoPrc2,mat)), @@ -991,14 +999,16 @@ if (cm_startyear eq 2005, pm_outflowPrcHist(t,regi,tePrc1,opmoPrc1) = p37_matFlowHist(t,regi,mat) * p37_teMatShareHist(regi,tePrc1,opmoPrc1,mat); ); - loop((entyFe,ppfUePrc$(not sameas(ppfUePrc, "ue_chemicals"))), + loop((entyFe,ppfUePrc)$(not sameas(ppfUePrc, "ue_chemicals")), p37_demFeTarget(t,regi,entyFe,ppfUePrc) = sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) * p37_specFeDemTarget(entyFe,tePrc,opmoPrc)); p37_demFeActual(t,regi,entyFe,ppfUePrc) = sum((fe2ppfen_no_ces_use(entyFe,all_in),ue2ppfenPrc(ppfUePrc,all_in)), pm_fedemand(t,regi,all_in) * sm_EJ_2_TWa); ); p37_demFeRatio(t,regi,ppfUePrc)$(not sameas(ppfUePrc, "ue_chemicals")) = sum(entyFe,p37_demFeActual(t,regi,entyFe,ppfUePrc)) / sum(entyFe,p37_demFeTarget(t,regi,entyFe,ppfUePrc)); - loop((tePrc2opmoPrc(tePrc,opmoPrc),regi,entyFe)$(p37_specFeDemTarget(entyFe,tePrc,opmoPrc) gt 0.01*sm_eps and secInd37_tePrc("steel",tePrc)), + loop((tePrc2opmoPrc(tePrc,opmoPrc),regi,entyFe)$( + p37_specFeDemTarget(entyFe,tePrc,opmoPrc) gt 0.01*sm_eps + AND secInd37_tePrc("steel",tePrc)), if((pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt sm_eps), pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_specFeDemTarget(entyFe,tePrc,opmoPrc) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index af4e82c0f6..bc45d4a25d 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -34,7 +34,7 @@ Parameters p37_matFlowHist(tall,all_regi,all_enty) "Historic material flows" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" - p37_teMatShareHist(all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" + p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" 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 [US$/kg] = [trn$US/Gt]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 741ab60458..751938801c 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -444,7 +444,7 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. ***------------------------------------------------------ *' Hand-over to CES ***------------------------------------------------------ -q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. #TODOQZ:: Seems like vm_cesIO(t,regi,in) is read from BAU run and can not get from outside? +q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. !!TODOQZ:: Seems like vm_cesIO(t,regi,in) is read from BAU run and can not get from outside? (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) * p37_ue_share(t,regi,mat,in) From b339a8cb8be1f1451dad471c630a9dc125f7a5d0 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Tue, 4 Feb 2025 10:29:50 +0100 Subject: [PATCH 16/69] new chemical TE data --- modules/37_industry/subsectors/datainput.gms | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index ed67f53e93..0d2bee9e98 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,16 +647,16 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_specMatDem("ammonia","FertProd","standard") = 0.57; -p37_specMatDem("ammoniaH2","FertProdH2","standard") = 0.57; +p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal +p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; -p37_specMatDem("methanol","MtOMtA","standard") = 4.5; -p37_specMatDem("ammonia","AmToFinal","standard") = 1; +p37_specMatDem("methanol","MtOMtA","standard") = 2.28; +p37_specMatDem("ammonia","AmToFinal","standard") = 1; p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; -p37_specMatDem("methanol","MeToFinal","standard") = 1; +p37_specMatDem("methanol","MeToFinal","standard") = 1; -p37_specMatDem("co2f","FertProdH2","standard") = 0.73; -p37_specMatDem("co2f","MeSyH2","standard") = 1.373; +p37_specMatDem("co2f","FertProdH2","standard") = 1.52; +p37_specMatDem("co2f","MeSyH2","standard") = 1.373; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 From 1ece72e8bb31acb6321d30e77335fced61a5ff59 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Tue, 4 Feb 2025 10:29:00 +0100 Subject: [PATCH 17/69] bugfix in chemicals datainput --- modules/37_industry/subsectors/datainput.gms | 15 ++++++++------- modules/37_industry/subsectors/declarations.gms | 4 ++-- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 0d2bee9e98..a5975d181c 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -648,15 +648,15 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal -p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; +p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; -p37_specMatDem("methanol","MtOMtA","standard") = 2.28; -p37_specMatDem("ammonia","AmToFinal","standard") = 1; +p37_specMatDem("methanol","MtOMtA","standard") = 2.28; +p37_specMatDem("ammonia","AmToFinal","standard") = 1; p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; -p37_specMatDem("methanol","MeToFinal","standard") = 1; +p37_specMatDem("methanol","MeToFinal","standard") = 1; p37_specMatDem("co2f","FertProdH2","standard") = 1.52; -p37_specMatDem("co2f","MeSyH2","standard") = 1.373; +p37_specMatDem("co2f","MeSyH2","standard") = 1.373; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -848,6 +848,7 @@ loop(regi, p37_demFePrcHist("2020",regi,"ChemSol","standard","feels") = p37_demFePrcHist("2020",regi,"ChemSol","standard","feels") /3.; ); +pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; loop((t, regi, tePrc2opmoPrc(tePrc,opmoPrc), @@ -973,8 +974,8 @@ $endif.cm_subsec_model_steel *** -------------------------------- -pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; -pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; +!!pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; +!!p37_matFlowHist(tall,all_regi,mat) = 0.; if (cm_startyear eq 2005, loop(t$(t.val ge 2005 AND t.val le 2020), diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index bc45d4a25d..8f20b616cc 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -30,8 +30,8 @@ Parameters p37_demFeTarget(tall,all_regi,all_enty,all_in) "Total Fe demand that would be have been consumed historically for production of a UE if all tech had BAT efficiency" p37_demFeActual(tall,all_regi,all_enty,all_in) "Total historic Fe demand consumed for production of a UE" p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" - pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" - p37_matFlowHist(tall,all_regi,all_enty) "Historic material flows" + !!pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" + !!p37_matFlowHist(tall,all_regi,all_enty) "Historic material flows" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" From cf4c4a2ec155c3b13de22b5fa4003a9b811252e7 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Tue, 4 Feb 2025 14:52:35 +0100 Subject: [PATCH 18/69] Change OtherChem's structures --- core/datainput.gms | 5 +-- core/sets.gms | 15 +++---- modules/37_industry/subsectors/datainput.gms | 25 ++++++------ modules/37_industry/subsectors/sets.gms | 41 ++++++++------------ 4 files changed, 37 insertions(+), 49 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index a355e334b8..691aae2257 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -726,9 +726,8 @@ pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; *** eternal short-term fix for process-based industry $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -pm_cf(ttot,regi,"ChemSol") = 0.8; -pm_cf(ttot,regi,"ChemNG") = 0.8; -pm_cf(ttot,regi,"ChemLiq") = 0.8; +pm_cf(ttot,regi,"ChemOld") = 0.8; +pm_cf(ttot,regi,"ChemELec") = 0.8; pm_cf(ttot,regi,"ChemH2") = 0.8; pm_cf(ttot,regi,"StCrNG") = 0.8; diff --git a/core/sets.gms b/core/sets.gms index c457f449fe..b3f9b601a6 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -313,13 +313,11 @@ all_te "all energy technologies, including from modules" *** TOCHECK: Qianzhi *** PCV: technologies related to chemical - ChemSol - ChemNG - ChemLiq + ChemOld + ChemELec ChemH2 - ChemRo_Sol - ChemRo_NG - ChemRo_Liq + ChemRo_Old + ChemRo_Elec ChemRo_H2 StCrNG @@ -1312,9 +1310,8 @@ te(all_te) "energy technologies" termM_lng "Import terminals for LNG (regasification)" vess_lng "Vessels transporting LNG" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemSol - ChemNG - ChemLiq + ChemOld + ChemELec ChemH2 StCrNG StCrLiq diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index a5975d181c..c12884aa93 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -679,16 +679,21 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","ChemSol","standard") = 10./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemSol","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemOld","standard") = 10./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemOld","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemNG","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemNG","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemLiq","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemLiq","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemELec","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemElec","standard") = 2. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("feh2s","ChemH2","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fesos","ChemH2","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("feels","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 p37_specFeDemTarget("fegas","StCrNG","standard") = 22.0 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -841,12 +846,6 @@ $include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2020.c $offdelim / ; -!!TODO: This is a hotfix!! -loop(regi, - p37_demFePrcHist("2020",regi,"ChemNG","standard","feels") = p37_demFePrcHist("2020",regi,"ChemNG","standard","feels") /3.; - p37_demFePrcHist("2020",regi,"ChemLiq","standard","feels") = p37_demFePrcHist("2020",regi,"ChemLiq","standard","feels") /3.; - p37_demFePrcHist("2020",regi,"ChemSol","standard","feels") = p37_demFePrcHist("2020",regi,"ChemSol","standard","feels") /3.; -); pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; loop((t, diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 06c21627b7..c1cd7d8e10 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -382,9 +382,8 @@ $endif.cm_subsec_model_steel tePrc(all_te) "Technologies used in process-based model (including CCS)" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemSol - ChemNG - ChemLiq + ChemOld + ChemELec ChemH2 StCrNG @@ -558,9 +557,8 @@ $endif.cm_subsec_model_steel route(all_te) "Process routes; Currently only used for reporting" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemRo_Sol - ChemRo_NG - ChemRo_Liq + ChemRo_Old + ChemRo_Elec ChemRo_H2 StCrNG_Ro @@ -627,9 +625,8 @@ $endif.cm_subsec_model_steel tePrc2opmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operation modes" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemSol . standard - ChemNG . standard - ChemLiq . standard + ChemOld . standard + ChemELec . standard ChemH2 . standard StCrNG . standard @@ -690,9 +687,8 @@ $endif.cm_subsec_model_steel tePrc2matOut(all_te,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemSol . standard . OtherChem - ChemNG . standard . OtherChem - ChemLiq . standard . OtherChem + ChemOld . standard . OtherChem + ChemElec . standard . OtherChem ChemH2 . standard . OtherChem StCrNG . standard . HVC @@ -727,9 +723,8 @@ $endif.cm_subsec_model_steel tePrc2ue(all_te,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemSol . standard . ue_chemicals - ChemNG . standard . ue_chemicals - ChemLiq . standard . ue_chemicals + ChemOld . standard . ue_chemicals + ChemElec . standard . ue_chemicals ChemH2 . standard . ue_chemicals StCrNG . standard . ue_chemicals @@ -784,9 +779,9 @@ $endif.cm_subsec_model_steel tePrc2route(all_te,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemSol . standard . ChemRo_Sol - ChemNG . standard . ChemRo_NG - ChemLiq . standard . ChemRo_Liq + ChemOld . standard . ChemRo_Old + ChemElec . standard . ChemRo_Elec + ChemH2 . standard . ChemRo_H2 StCrNG . standard . StCrNG_Ro StCrLiq . standard . StCrLiq_Ro @@ -856,9 +851,8 @@ $endif.cm_subsec_model_steel fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included in en2en, which connects capex and opex to budget" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - entydummy.entydummy.ChemSol - entydummy.entydummy.ChemNG - entydummy.entydummy.ChemLiq + entydummy.entydummy.ChemOld + entydummy.entydummy.ChemELec entydummy.entydummy.ChemH2 entydummy.entydummy.StCrNG @@ -900,9 +894,8 @@ $endif.cm_subsec_model_steel secInd37_tePrc(secInd37,all_te) "Mapping of technologies onto industry subsectors" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemicals . ChemSol - chemicals . ChemNG - chemicals . ChemLiq + chemicals . ChemOld + chemicals . ChemElec chemicals . ChemH2 chemicals . StCrNG From 6d2bcabe6c4f4ded0428c197f7cee428593d054a Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Tue, 4 Feb 2025 17:33:05 +0100 Subject: [PATCH 19/69] bugfix --- core/input/generisdata_tech.prn | 8 ++++---- core/input/generisdata_vintages.prn | 18 +++++++++--------- 2 files changed, 13 insertions(+), 13 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index cf30d2fc0a..e91d4736fa 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -167,11 +167,11 @@ ccap0 0.0008 learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -+ ChemSol ChemNG ChemLiq ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 ++ ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 1100 1100 1100 2000 3200 2100 900 1200 750 750 300 300 625 -omf 0.06 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.04 -lifetime 20 20 20 20 25 25 25 25 25 25 25 25 25 25 +inco0 1100 1100 1100 2000 3200 2100 900 1200 750 750 300 300 625 +omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.04 +lifetime 20 20 20 25 25 25 25 25 25 25 25 25 25 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below diff --git a/core/input/generisdata_vintages.prn b/core/input/generisdata_vintages.prn index 529e1a6bd2..3f7368ecd3 100644 --- a/core/input/generisdata_vintages.prn +++ b/core/input/generisdata_vintages.prn @@ -163,15 +163,15 @@ $offtext $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -+ ChemSol ChemNG ChemLiq StCrNG StCrLiq MeSySol MeSyNG MeSyLiq AmSyCoal AmSyNG AmSyLiq MtOMtA FertProd -1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -11 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -16 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -21 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -26 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -31 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -36 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ++ ChemOld StCrNG StCrLiq MeSySol MeSyNG MeSyLiq AmSyCoal AmSyNG AmSyLiq MtOMtA FertProd +1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +11 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +16 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +21 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +26 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +31 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 +36 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 $endif.cm_subsec_model_chemicals From f41b72562824b0a672695ffc6b8b4bf252ae986e Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 5 Feb 2025 17:54:50 +0100 Subject: [PATCH 20/69] bugfix in chemicals data input --- modules/37_industry/subsectors/datainput.gms | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index c12884aa93..fbb909a037 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -853,11 +853,11 @@ loop((t, tePrc2opmoPrc(tePrc,opmoPrc), entyFe)$( t.val ge 2005 AND t.val le 2015 AND secInd37_tePrc("chemicals",tePrc) - AND sum(in2,fe2ppfen_no_ces_use(entyFe,in2) AND ue2ppfenPrc("ue_chemicals",in2))), + AND sum(ppfen_no_ces_use,fe2ppfen_no_ces_use(entyFe,ppfen_no_ces_use) AND ue2ppfenPrc("ue_chemicals",ppfen_no_ces_use))), p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) = p37_demFePrcHist("2020",regi,tePrc,opmoPrc,entyFe) - * sum(fe2ppfen_no_ces_use(entyFe,in), pm_fedemand(t,regi,in)) - / max(sm_eps, sum(fe2ppfen_no_ces_use(entyFe,in), pm_fedemand("2020",regi,in))); + * sum(fe2ppfen_no_ces_use(entyFe,ppfen_no_ces_use), pm_fedemand(t,regi,ppfen_no_ces_use)) + / max(sm_eps, sum(fe2ppfen_no_ces_use(entyFe,ppfen_no_ces_use), pm_fedemand("2020",regi,ppfen_no_ces_use))); if(pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt sm_eps, pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) / pm_outflowPrcHist(t,regi,tePrc,opmoPrc); From 0eb156609ece104173963501cdb91994cfa49260 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 6 Feb 2025 13:27:52 +0100 Subject: [PATCH 21/69] bugifx in ccu module --- modules/39_CCU/on/sets.gms | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/modules/39_CCU/on/sets.gms b/modules/39_CCU/on/sets.gms index 1d31a3a5d9..6c1f4c2f3f 100644 --- a/modules/39_CCU/on/sets.gms +++ b/modules/39_CCU/on/sets.gms @@ -52,13 +52,6 @@ teSeCCU2rlf(all_te,rlf) "mapping for secondary energy CCU technologies to gr *** add module specific sets and mappings to the global sets and mappings ***------------------------------------------------------------------------- -<<<<<<< HEAD -enty(enty_ccu39) = YES; -te(te_ccu39) = YES; -se2se(se2se_ccu39) = YES; -teSe2rlf(teCCU2rlf) = YES; -teAdj(te_ccu39) = YES; -======= teCCU2rlf(teSeCCU2rlf) = YES; teCCU2rlf(teCUPrc,"1") = YES; @@ -66,7 +59,7 @@ enty(enty_ccu39) = YES; te(te_ccu39) = YES; se2se(se2se_ccu39) = YES; teSe2rlf(teCCU2rlf) = YES; ->>>>>>> 48492eac (industry ccu first empty implementation) +teAdj(te_ccu39) = YES; *** EOF ./modules/39_CCU/on/sets.gms From c619b6a362e6f85638d8fc64807c1dbcb2ebb3f1 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 6 Feb 2025 14:34:12 +0100 Subject: [PATCH 22/69] bugfix --- core/sets.gms | 2 +- modules/37_industry/subsectors/datainput.gms | 5 +---- modules/37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 15 --------------- modules/37_industry/subsectors/sets.gms | 1 + 5 files changed, 4 insertions(+), 21 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index b3f9b601a6..c2d10541d3 100644 --- a/core/sets.gms +++ b/core/sets.gms @@ -936,7 +936,7 @@ iso_regi "all iso countries and EU and greater China region" / EUR,CHA, UGA,UKR,UMI,URY,USA,UZB,VAT,VCT,VEN,VGB, VIR,VNM,VUT,WLF,WSM,YEM,ZAF,ZMB,ZWE / - map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" + map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" / EUR . EUR CHA . CHA diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index fbb909a037..3c0a192a88 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -868,7 +868,7 @@ loop((t, $endif.cm_subsec_model_chemicals p37_mat2ue(all_enty,all_in) = 0.; -p37_ue_share(all_enty,all_in) = 0.; +!! p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! ue_chemicals is measured in value_added (trn$2005), whilst olandar is measured in Gt !! So this is the price of olandar in trn$2005/Gt = $2005/kg @@ -884,8 +884,6 @@ p37_mat2ue("AmmoFinal","ue_chemicals") = 0.55; !!2005$/kg Source: https://busine p37_mat2ue("OtherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_ue_share("sesteel","ue_steel_secondary") = 1.; -p37_ue_share("prsteel","ue_steel_primary") = 1.; p37_mat2ue("sesteel","ue_steel_secondary") = 1.; p37_mat2ue("prsteel","ue_steel_primary") = 1.; @@ -1026,7 +1024,6 @@ if (cm_startyear eq 2005, ); ); -$endif.cm_subsec_model_steel !! loop over other years and blend loop((entyFeStat(all_enty), tePrc(all_te), opmoPrc), diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 8f20b616cc..de5a8de858 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -146,7 +146,7 @@ $endif.no_calibration q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" - q37_ue_share(tall,all_regi,mat,all_in) "Fix share of material contribution to ue !! ammonia tech QIANZHI" + q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" q37_emiCCPrc(tall,all_regi,emiInd37) "Captured emissions from CCS" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 751938801c..2539a083a9 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -456,21 +456,6 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. !!TODOQZ:: Seems like vm_cesIO(t,r ) ; -***------------------------------------------------------ -*' Fixed share of final materials in ue !! ammonia tech QIANZHI -***------------------------------------------------------ -q37_ue_share(t,regi,mat,in)$( ppfUePrc(in) ) .. - (vm_cesIO(t,regi,in) - + pm_cesdata(t,regi,in,"offset_quantity")) - * p37_ue_share(mat,in) - =e= - sum(mat2ue(mat,in), - p37_mat2ue(mat,in) - * - v37_matFlow(t,regi,mat) - ) -; - ***------------------------------------------------------ *' Definition of capacity constraints diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index c1cd7d8e10..bc5e16b14f 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -480,6 +480,7 @@ matIn(all_enty) "Materials which serve as input to a process" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" methanol ammonia + ammoniaH2 co2f $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" From 1b46bd068f2a5a61b61981e635b7f08039f78eee Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 6 Feb 2025 15:38:11 +0100 Subject: [PATCH 23/69] change the datainput to 2005-2020 --- modules/37_industry/subsectors/datainput.gms | 42 ++++---------------- 1 file changed, 7 insertions(+), 35 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 3c0a192a88..c72f52f13e 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -800,32 +800,22 @@ Parameter p37_matFlowHist(tall,all_regi,all_enty) "TODO" / $ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Flow_Value_2020.cs4r"; +$include "./modules/37_industry/subsectors/input/p37_AllChem_Flow_Value_2005_2020.cs4r"; $offdelim / ; -!! scale 2005 to 2015 with ue_chemicals -loop(t$(t.val ge 2005 AND t.val le 2015), - p37_matFlowHist(t,regi,mat) - = p37_matFlowHist("2020",regi,mat) - * pm_fedemand(t,regi,"ue_chemicals") - / pm_fedemand("2020",regi,"ue_chemicals"); -); + Parameter pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "TODO" / $ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2020.cs4r"; +$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2005_2020.cs4r"; $offdelim / ; -!! scale 2005 to 2015 with ue_chemicals -loop(t$(t.val ge 2005 AND t.val le 2015), - pm_outflowPrcHist(t,regi,tePrc,opmoPrc) - = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) - * pm_fedemand(t,regi,"ue_chemicals") - / pm_fedemand("2020",regi,"ue_chemicals"); -); + +pm_outflowPrcHist(tall,regi,"ChemOld","standard") = p37_matFlowHist(tall,regi,"OtherChem"); + Parameter p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" / @@ -842,29 +832,11 @@ Parameter p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "TODO" / $ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2020.cs4r"; +$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2005_2020.cs4r"; $offdelim / ; -pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; -loop((t, - regi, - tePrc2opmoPrc(tePrc,opmoPrc), - entyFe)$( t.val ge 2005 AND t.val le 2015 - AND secInd37_tePrc("chemicals",tePrc) - AND sum(ppfen_no_ces_use,fe2ppfen_no_ces_use(entyFe,ppfen_no_ces_use) AND ue2ppfenPrc("ue_chemicals",ppfen_no_ces_use))), - p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) - = p37_demFePrcHist("2020",regi,tePrc,opmoPrc,entyFe) - * sum(fe2ppfen_no_ces_use(entyFe,ppfen_no_ces_use), pm_fedemand(t,regi,ppfen_no_ces_use)) - / max(sm_eps, sum(fe2ppfen_no_ces_use(entyFe,ppfen_no_ces_use), pm_fedemand("2020",regi,ppfen_no_ces_use))); - - if(pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt sm_eps, - pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) / pm_outflowPrcHist(t,regi,tePrc,opmoPrc); - else - pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) = p37_specFeDemTarget(entyFe,tePrc,opmoPrc); - ); -); $endif.cm_subsec_model_chemicals p37_mat2ue(all_enty,all_in) = 0.; From 68d6e241b9b15b7a7ca69e99155e734c8c1a2791 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Fri, 7 Feb 2025 13:08:14 +0100 Subject: [PATCH 24/69] Fix bug on ue_share calculation --- modules/37_industry/subsectors/datainput.gms | 170 ++++++++++-------- .../37_industry/subsectors/declarations.gms | 5 +- 2 files changed, 97 insertions(+), 78 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index c72f52f13e..764cdc4fe3 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -792,63 +792,74 @@ p37_specFeDemTarget("feels","idrcc","ng") = 0.11 * sm_c_2_co2 / (sm_TWa_ p37_specFeDemTarget("fegas","idrcc","ng") = 0.92 * sm_c_2_co2 / (sm_TWa_2_MWh/sm_giga_2_non); !! Copy from bfcc, but seems to be quite universal. See e.g. Rochelle 2016, who has slightly lower values. $endif.cm_subsec_model_steel -*** -------------------------------- +p37_captureRate(all_te) = 0.; +p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -* Load secondary steel share limits -Parameter - p37_matFlowHist(tall,all_regi,all_enty) "TODO" - / -$ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Flow_Value_2005_2020.cs4r"; -$offdelim - / -; +p37_captureRate("MeSySolcc") = 0.9; !! methanol tech QIANZHI +p37_captureRate("MeSyNGcc") = 0.9; +p37_captureRate("MeSyLiqcc") = 0.9; +p37_selfCaptureRate("MeSySolcc") = 0.9; +p37_selfCaptureRate("MeSyNGcc") = 0.9; +p37_selfCaptureRate("MeSyLiqcc") = 0.9; -Parameter - pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "TODO" - / -$ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2005_2020.cs4r"; -$offdelim - / -; +p37_captureRate("AmSyCoalcc") = 0.9; !! ammonia tech QIANZHI +p37_captureRate("AmSyNGcc") = 0.9; +p37_captureRate("AmSyLiqcc") = 0.9; +p37_selfCaptureRate("AmSyCoalcc") = 0.9; +p37_selfCaptureRate("AmSyNGcc") = 0.9; +p37_selfCaptureRate("AmSyLiqcc") = 0.9; +$endif.cm_subsec_model_chemicals -pm_outflowPrcHist(tall,regi,"ChemOld","standard") = p37_matFlowHist(tall,regi,"OtherChem"); +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" +p37_captureRate("bfcc") = 0.73; !! Source: Witecka 2023, Figure 18 +p37_captureRate("idrcc") = 0.85; !! Source: IEA Steel Roadmap Fig. 2.11 +p37_selfCaptureRate("bfcc") = 0.9; +p37_selfCaptureRate("idrcc") = 0.9; +$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, unit 2020$US +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") = sm_EURO2023_2_D2017 * 0.114; +!! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) +p37_priceMat("dripell") = sm_EURO2023_2_D2017 * 0.154; +$endif.cm_subsec_model_steel + + + + +*** -------------------------------- +*** Plastics Production volumes +*** -------------------------------- -Parameter - p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" - / -$ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Ueshare_Value_2020.cs4r"; -$offdelim - / -; -loop(t, - p37_ue_share(t,regi,all_enty,all_in) = p37_ue_share("2020",regi,all_enty,all_in); -); +!! 0. Data input +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter - p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "TODO" + pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "TODO" / $ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2005_2020.cs4r"; +$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2020.cs4r"; $offdelim / ; - $endif.cm_subsec_model_chemicals p37_mat2ue(all_enty,all_in) = 0.; -!! p37_ue_share(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! ue_chemicals is measured in value_added (trn$2005), whilst olandar is measured in Gt -!! So this is the price of olandar in trn$2005/Gt = $2005/kg -!! In this first dummy step, the process replaces all of chemistry, so olandar is only a dummy product reprenting the whole chemicals sector. It chould be much more expensive than olefines, since lots of the chemicals sector is much less energy intensive but has higher value added than olefines production -!! quick back-of-the envelope calculation: globall 5 trn value added, 2.4 bln tonnes petrochemicals --> maybe 3.3 bn tonnes total chemicals --> ratio is 1.5 +!! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt +!! So this is the price of material in trn$2005/Gt = $2017/kg !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. +!!TODO QIanzhi: Change to 2017$ p37_mat2ue("HVC","ue_chemicals") = 1.1; !!2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/propylene-price-index/ 2020 Global Average of Ethylene, Propylene and BTX p37_mat2ue("Fertilizer","ue_chemicals") = 0.58; !!2005$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average p37_mat2ue("MethFinal","ue_chemicals") = 0.3; !!2005$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average @@ -861,8 +872,41 @@ p37_mat2ue("sesteel","ue_steel_secondary") = 1.; p37_mat2ue("prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel -*** -------------------------------- +!! 1. Correct pm_outflowPrcHist, such that sum is consistent with UE +p37_ueHistTmp("2020",regi) + = sum((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in))$(sameas("ue_chemicals",in)), + pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) + * p37_mat2ue(mat,in) + ); + +pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)) + = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) + * pm_fedemand("2020",regi,"ue_chemicals") + / p37_ueHistTmp("2020",regi); + +!! 2. scale 2005 to 2015 with ue_chemicals +loop(t$(t.val ge 2005 AND t.val le 2015), + pm_outflowPrcHist(t,regi,tePrc,opmoPrc) + = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) + * pm_fedemand(t,regi,"ue_chemicals") + / pm_fedemand("2020",regi,"ue_chemicals"); +); + +!! 3. Calc MatflowHist +p37_matFlowHist(t,regi,mat) = +sum(tePrc2matOut(tePrc,opmoPrc,mat), + pm_outflowPrcHist(t,regi,tePrc,opmoPrc) + ) +; +!! 4. Calc ue_share +p37_ue_share(t,regi,mat,in)$(mat2ue(mat,in) AND sameas(in,"ue_chemicals") AND t.val le 2020) = + (p37_mat2ue(mat,in) * p37_matFlowHist(t,regi,mat)) + / pm_cesdata(t,regi,in,"quantity"); +; +p37_ue_share(t,regi,mat,in)$(t.val gt 2020) = p37_ue_share("2020",regi,mat,in); + +*** -------------------------------- $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share(t,regi,"sesteel","ue_steel_secondary") = 1.; p37_ue_share(t,regi,"prsteel","ue_steel_primary") = 1.; @@ -897,49 +941,23 @@ loop((regi,matFin(mat))$(NOT mat2ue(mat,"ue_chemicals")), !! display p37_teMatShareHist; !! abort "p37_teMatShareHist must only be non-zero for matFin"; !!\); -*** -------------------------------- -s37_shareHistFeDemPenalty = 0.6; -*** -------------------------------- -p37_captureRate(all_te) = 0.; -p37_selfCaptureRate(all_te) = 0.; + +*** -------------------------------- $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_captureRate("MeSySolcc") = 0.9; !! methanol tech QIANZHI -p37_captureRate("MeSyNGcc") = 0.9; -p37_captureRate("MeSyLiqcc") = 0.9; -p37_selfCaptureRate("MeSySolcc") = 0.9; -p37_selfCaptureRate("MeSyNGcc") = 0.9; -p37_selfCaptureRate("MeSyLiqcc") = 0.9; +Parameter + p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2005_2020.cs4r"; +$offdelim + / +; -p37_captureRate("AmSyCoalcc") = 0.9; !! ammonia tech QIANZHI -p37_captureRate("AmSyNGcc") = 0.9; -p37_captureRate("AmSyLiqcc") = 0.9; -p37_selfCaptureRate("AmSyCoalcc") = 0.9; -p37_selfCaptureRate("AmSyNGcc") = 0.9; -p37_selfCaptureRate("AmSyLiqcc") = 0.9; $endif.cm_subsec_model_chemicals -$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_captureRate("bfcc") = 0.73; !! Source: Witecka 2023, Figure 18 -p37_captureRate("idrcc") = 0.85; !! Source: IEA Steel Roadmap Fig. 2.11 -p37_selfCaptureRate("bfcc") = 0.9; -p37_selfCaptureRate("idrcc") = 0.9; -$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, unit 2020$US -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") = sm_EURO2023_2_D2017 * 0.114; -!! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) -p37_priceMat("dripell") = sm_EURO2023_2_D2017 * 0.154; -$endif.cm_subsec_model_steel +s37_shareHistFeDemPenalty = 0.6; *** -------------------------------- diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index de5a8de858..d98482e59b 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -30,9 +30,10 @@ Parameters p37_demFeTarget(tall,all_regi,all_enty,all_in) "Total Fe demand that would be have been consumed historically for production of a UE if all tech had BAT efficiency" p37_demFeActual(tall,all_regi,all_enty,all_in) "Total historic Fe demand consumed for production of a UE" p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" - !!pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" - !!p37_matFlowHist(tall,all_regi,all_enty) "Historic material flows" + p37_matFlowHist(tall,all_regi,all_enty) "TODO" + p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" + p37_ueHistTmp(tall,all_regi) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" From e78403e2252148df51e6e9bc1a7a13256275ac80 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Thu, 13 Feb 2025 12:24:12 +0100 Subject: [PATCH 25/69] Fix bug on chemical_inputdata --- modules/37_industry/subsectors/datainput.gms | 50 ++++++++++++++++++-- modules/37_industry/subsectors/equations.gms | 2 +- modules/37_industry/subsectors/sets.gms | 10 +++- 3 files changed, 56 insertions(+), 6 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 764cdc4fe3..c02e08f930 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -846,7 +846,7 @@ Parameter pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "TODO" / $ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2020.cs4r"; +$include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2020noCCS.cs4r"; $offdelim / ; @@ -872,6 +872,20 @@ p37_mat2ue("sesteel","ue_steel_secondary") = 1.; p37_mat2ue("prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel +!! HOT FIX +pm_outflowPrcHist("2020",regi,"AmToFinal","standard") + = sum((tePrc2matOut(tePrc,opmoPrc,mat))$(sameas("ammonia",mat)), + pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)) + - (pm_outflowPrcHist("2020",regi,"FertProd","standard") + * p37_specMatDem("ammonia","FertProd","standard")) + ; + +pm_outflowPrcHist("2020",regi,"MeToFinal","standard") + = sum((tePrc2matOut(tePrc,opmoPrc,mat))$(sameas("methanol",mat)), + pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)) + - (pm_outflowPrcHist("2020",regi,"MTOMTA","standard") + * p37_specMatDem("methanol","MtOMtA","standard")) + ; !! 1. Correct pm_outflowPrcHist, such that sum is consistent with UE p37_ueHistTmp("2020",regi) @@ -893,6 +907,7 @@ loop(t$(t.val ge 2005 AND t.val le 2015), / pm_fedemand("2020",regi,"ue_chemicals"); ); + !! 3. Calc MatflowHist p37_matFlowHist(t,regi,mat) = sum(tePrc2matOut(tePrc,opmoPrc,mat), @@ -950,11 +965,40 @@ Parameter p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "TODO" / $ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2005_2020.cs4r"; +$include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2005_2020noCCS.cs4r"; $offdelim / ; - +!! HOT FIX +p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) = sm_EJ_2_TWa * p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe); +loop(t$(t.val ge 2005 AND t.val le 2020), + p37_demFePrcHist(t,regi,"ChemOld","standard","fesos") + = pm_fedemand(t,regi,"feso_chemicals") * sm_EJ_2_TWa + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fesos")); + + p37_demFePrcHist(t,regi,"ChemOld","standard","fehos") + = pm_fedemand(t,regi,"feli_chemicals") * sm_EJ_2_TWa + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fehos")); + + p37_demFePrcHist(t,regi,"ChemOld","standard","fegas") + = (pm_fedemand(t,regi,"fega_chemicals") + + pm_fedemand(t,regi,"feh2_chemicals")) * sm_EJ_2_TWa + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fegas")); + + p37_demFePrcHist(t,regi,"ChemOld","standard","feels") + = (pm_fedemand(t,regi,"feelhth_chemicals") + + pm_fedemand(t,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"feels")); +); +loop((t,regi,tePrc,opmoPrc)$(t.val ge 2005 AND t.val le 2020), + IF(pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt EPS, + loop(entyFe, + pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) + = p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) + / pm_outflowPrcHist(t,regi,tePrc,opmoPrc); + ); + ); +); $endif.cm_subsec_model_chemicals s37_shareHistFeDemPenalty = 0.6; diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 2539a083a9..1e3640b09e 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -444,7 +444,7 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. ***------------------------------------------------------ *' Hand-over to CES ***------------------------------------------------------ -q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. !!TODOQZ:: Seems like vm_cesIO(t,regi,in) is read from BAU run and can not get from outside? +q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) * p37_ue_share(t,regi,mat,in) diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index bc5e16b14f..f44dc7406c 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -695,12 +695,12 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard . HVC StCrLiq . standard . HVC - MeSySol . (greyh2,greenh2) . methanol !! methanol tech QIANZHI + MeSySol . (greyh2,greenh2) . methanol MeSyNG . standard . methanol MeSyLiq . standard . methanol MeSyH2 . standard . methanol - AmSyCoal . standard . ammonia !! ammonia tech QIANZHI + AmSyCoal . standard . ammonia AmSyNG . standard . ammonia AmSyLiq . standard . ammonia AmSyH2 . standard . ammoniaH2 @@ -938,6 +938,12 @@ $endif.cm_subsec_model_steel fe2ppfen_no_ces_use(all_enty,all_in) "Match ESM entyFe to ppfen that are not used in the CES tree, but for datainput for process-bases industry" / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + fesos . feso_chemicals + fehos . feli_chemicals + fegas . fega_chemicals + feels . (feelhth_chemicals, feelwlth_chemicals) +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" fesos . feso_steel fehos . feli_steel From aecef6c755b26a6063e1ab0de8dc8e117d1d0a0b Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sun, 16 Feb 2025 10:22:01 +0100 Subject: [PATCH 26/69] Fix Tech-Econ data for Chemical Process --- core/datainput.gms | 2 + core/input/generisdata_tech.prn | 16 +- core/sets.gms | 3 +- modules/37_industry/subsectors/datainput.gms | 150 ++++++++++++------- 4 files changed, 111 insertions(+), 60 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index f1b2c1e33a..04c9d6d688 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1217,6 +1217,7 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_seed_te(ttot,regi,"ChemELec") = 0.05; p_adj_seed_te(ttot,regi,"ChemH2") = 0.05; p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; @@ -1261,6 +1262,7 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_coeff(ttot,regi,"ChemELec") = 1.0; p_adj_coeff(ttot,regi,"ChemH2") = 1.0; p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index e91d4736fa..7fdea08f45 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -169,21 +169,21 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 1100 1100 2000 3200 2100 900 1200 750 750 300 300 625 -omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.04 -lifetime 20 20 20 25 25 25 25 25 25 25 25 25 25 +inco0 1100 1600 2100 1500 2000 2000 875 1200 1200 700 310 300 800 +omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 +lifetime 20 20 20 30 30 30 30 30 30 30 30 30 30 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 2500 1200 1600 1100 700 700 -omf 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 20 +inco0 300 200 300 300 200 300 +omf 0.05 0.05 0.05 0.05 0.05 0.05 +lifetime 25 25 25 25 25 25 + MtOMtA FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal !! documentation & sources: see below -inco0 500 500 500 500 500 500 +inco0 1000 500 500 500 500 500 omf 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 20 +lifetime 30 30 30 30 30 30 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index e132d2258f..3391592ea9 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -1383,6 +1383,7 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemELec "Other chemicals by Electricity" ChemH2 "Other chemicals by Hydrogen" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" @@ -1390,7 +1391,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyH2 "Methanol by Hydrogen" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" - AmSyLiqcc "Ammonia by Liquids CCS" + AmSyLiqcc "Ammonia by Liquids CCS" AmSyH2 "Ammonia by Hydrogen" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 623c504808..82fc2bdaa5 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -679,78 +679,73 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","ChemOld","standard") = 10./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemOld","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemOld","standard") = 1.5 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemOld","standard") = 3.0 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemOld","standard") = 3.9 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemELec","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemElec","standard") = 2. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fesos","ChemELec","standard") = 1.2 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemElec","standard") = 2.7 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemElec","standard") = 3.3 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemElec","standard") = 3.6/ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemH2","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("feels","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fesos","ChemH2","standard") = 1.2 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemH2","standard") = 2.7 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemH2","standard") = 3.3 * 3/ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","ChemH2","standard") = 2.1/ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","StCrNG","standard") = 22.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","StCrNG","standard") = 0.15 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","StCrNG","standard") = 16.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 +p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 -p37_specFeDemTarget("fehos","StCrLiq","standard") = 41.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","StCrLiq","standard") = 0.04 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","StCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 +p37_specFeDemTarget("feels","StCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 -p37_specFeDemTarget("fesos","MeSySol","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI -p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greyh2") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 +p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 +p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MetSySol -p37_specFeDemTarget("fegas","MeSyNG","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNG","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","MeSyNG","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","MeSyLiq","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiq","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","MeSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh +p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 2.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fegas","MeSyNGcc","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNGcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","MeSyLiqcc","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as MeSyNGcc -p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feels","MeSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI -p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fegas","AmSyNG","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","AmSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 +p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("fehos","AmSyLiq","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiq","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","AmSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","AmSyLiqcc","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as AmSyNGcc -p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5.9 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyH2","standard") = 0.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia +p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 -p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","FertProd","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","FertProdH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -854,6 +849,10 @@ $endif.cm_subsec_model_chemicals p37_mat2ue(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + +pm_data("CHA","inco0","AmSyCoal") = 0.5* pm_data("CHA","inco0","AmSyCoal"); +pm_data("CHA","inco0","MeSySol") = 0.5* pm_data("CHA","inco0","MeSySol"); + !! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt !! So this is the price of material in trn$2005/Gt = $2017/kg @@ -1072,6 +1071,55 @@ if (cm_startyear eq 2005, ); ); ); +!! Hot fix on regional OtherChem Energy Demand +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" + + loop((entyFeStat(all_enty), opmoPrc), + if( (p37_specFeDemTarget(all_enty,"ChemOld",opmoPrc) gt 0.), + loop(t$(t.val > 2020), + + !! Calc ChemOld + pm_specFeDem(t,regi,all_enty,"ChemOld",opmoPrc) = + pm_specFeDem("2020",regi,all_enty,"ChemOld",opmoPrc); + + !! Calc ChemElec + loop(entyFe$(NOT sameas(entyFe, "feels")), + pm_specFeDem(t, regi, entyFe, "ChemElec", opmoPrc) = + pm_specFeDem("2020", regi, entyFe, "ChemOld", opmoPrc) + * 0.65 + * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) + / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) + ); + + !! Calc feels for ChemElec + pm_specFeDem(t, regi, "feels", "ChemElec", opmoPrc) = + pm_specFeDem("2020", regi, "feels", "ChemElec", opmoPrc) + + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) + - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemElec", opmoPrc)) ); + + !! Calc ChemH2 + loop(entyFe$(NOT sameas(entyFe, "feels")), + pm_specFeDem(t, regi, entyFe, "ChemH2", opmoPrc) = + pm_specFeDem("2020", regi, entyFe, "ChemOld", opmoPrc) + * 0.65 + * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) + / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) + ); + + !! Calc feels for ChemH2 + pm_specFeDem(t, regi, "feels", "ChemH2", opmoPrc) = + pm_specFeDem("2020", regi, "feels", "ChemOld", opmoPrc); + + !! Calc feh2s for ChemH2 + pm_specFeDem(t, regi, "feh2s", "ChemH2", opmoPrc) = + sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) + - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemH2", opmoPrc)); + + ); + ); + ); + +$endif.cm_subsec_model_chemicals ); From f4121fa2840dbbc730a3306732f6231e1c266d87 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sun, 16 Feb 2025 10:28:24 +0100 Subject: [PATCH 27/69] Revert "Fix Tech-Econ data for Chemical Process" This reverts commit aecef6c755b26a6063e1ab0de8dc8e117d1d0a0b. --- core/datainput.gms | 2 - core/input/generisdata_tech.prn | 16 +- core/sets.gms | 3 +- modules/37_industry/subsectors/datainput.gms | 150 +++++++------------ 4 files changed, 60 insertions(+), 111 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 04c9d6d688..f1b2c1e33a 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1217,7 +1217,6 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_seed_te(ttot,regi,"ChemELec") = 0.05; p_adj_seed_te(ttot,regi,"ChemH2") = 0.05; p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; @@ -1262,7 +1261,6 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_coeff(ttot,regi,"ChemELec") = 1.0; p_adj_coeff(ttot,regi,"ChemH2") = 1.0; p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 7fdea08f45..e91d4736fa 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -169,21 +169,21 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 1600 2100 1500 2000 2000 875 1200 1200 700 310 300 800 -omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 -lifetime 20 20 20 30 30 30 30 30 30 30 30 30 30 +inco0 1100 1100 1100 2000 3200 2100 900 1200 750 750 300 300 625 +omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.04 +lifetime 20 20 20 25 25 25 25 25 25 25 25 25 25 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 300 200 300 300 200 300 -omf 0.05 0.05 0.05 0.05 0.05 0.05 -lifetime 25 25 25 25 25 25 +inco0 2500 1200 1600 1100 700 700 +omf 0.06 0.06 0.06 0.06 0.06 0.06 +lifetime 20 20 20 20 20 20 + MtOMtA FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal !! documentation & sources: see below -inco0 1000 500 500 500 500 500 +inco0 500 500 500 500 500 500 omf 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 30 30 30 30 30 30 +lifetime 20 20 20 20 20 20 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 3391592ea9..e132d2258f 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -1383,7 +1383,6 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemELec "Other chemicals by Electricity" ChemH2 "Other chemicals by Hydrogen" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" @@ -1391,7 +1390,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyH2 "Methanol by Hydrogen" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" - AmSyLiqcc "Ammonia by Liquids CCS" + AmSyLiqcc "Ammonia by Liquids CCS" AmSyH2 "Ammonia by Hydrogen" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 82fc2bdaa5..623c504808 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -679,73 +679,78 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","ChemOld","standard") = 1.5 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemOld","standard") = 3.0 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemOld","standard") = 3.9 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemOld","standard") = 10./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemOld","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemELec","standard") = 1.2 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemElec","standard") = 2.7 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemElec","standard") = 3.3 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemElec","standard") = 3.6/ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemELec","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemElec","standard") = 2. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("fesos","ChemH2","standard") = 1.2 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemH2","standard") = 2.7 * 3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemH2","standard") = 3.3 * 3/ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","ChemH2","standard") = 2.1/ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemH2","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("feels","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("fegas","StCrNG","standard") = 16.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 -p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 +p37_specFeDemTarget("fegas","StCrNG","standard") = 22.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","StCrNG","standard") = 0.15 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","StCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 -p37_specFeDemTarget("feels","StCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 +p37_specFeDemTarget("fehos","StCrLiq","standard") = 41.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","StCrLiq","standard") = 0.04 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySol","greyh2") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","MeSySol","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI +p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MetSySol +p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","MeSyNG","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fegas","MeSyNG","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNG","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","MeSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh -p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("fehos","MeSyLiq","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiq","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 2.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fegas","MeSyNGcc","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNGcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as MeSyNGcc +p37_specFeDemTarget("fehos","MeSyLiqcc","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("feels","MeSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI +p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","AmSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 +p37_specFeDemTarget("fegas","AmSyNG","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","AmSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("fehos","AmSyLiq","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiq","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as AmSyNGcc +p37_specFeDemTarget("fehos","AmSyLiqcc","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia -p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 +p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5.9 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyH2","standard") = 0.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 -p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 -p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","FertProd","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","FertProdH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -849,10 +854,6 @@ $endif.cm_subsec_model_chemicals p37_mat2ue(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - -pm_data("CHA","inco0","AmSyCoal") = 0.5* pm_data("CHA","inco0","AmSyCoal"); -pm_data("CHA","inco0","MeSySol") = 0.5* pm_data("CHA","inco0","MeSySol"); - !! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt !! So this is the price of material in trn$2005/Gt = $2017/kg @@ -1071,55 +1072,6 @@ if (cm_startyear eq 2005, ); ); ); -!! Hot fix on regional OtherChem Energy Demand -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" - - loop((entyFeStat(all_enty), opmoPrc), - if( (p37_specFeDemTarget(all_enty,"ChemOld",opmoPrc) gt 0.), - loop(t$(t.val > 2020), - - !! Calc ChemOld - pm_specFeDem(t,regi,all_enty,"ChemOld",opmoPrc) = - pm_specFeDem("2020",regi,all_enty,"ChemOld",opmoPrc); - - !! Calc ChemElec - loop(entyFe$(NOT sameas(entyFe, "feels")), - pm_specFeDem(t, regi, entyFe, "ChemElec", opmoPrc) = - pm_specFeDem("2020", regi, entyFe, "ChemOld", opmoPrc) - * 0.65 - * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) - / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) - ); - - !! Calc feels for ChemElec - pm_specFeDem(t, regi, "feels", "ChemElec", opmoPrc) = - pm_specFeDem("2020", regi, "feels", "ChemElec", opmoPrc) - + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) - - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemElec", opmoPrc)) ); - - !! Calc ChemH2 - loop(entyFe$(NOT sameas(entyFe, "feels")), - pm_specFeDem(t, regi, entyFe, "ChemH2", opmoPrc) = - pm_specFeDem("2020", regi, entyFe, "ChemOld", opmoPrc) - * 0.65 - * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) - / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) - ); - - !! Calc feels for ChemH2 - pm_specFeDem(t, regi, "feels", "ChemH2", opmoPrc) = - pm_specFeDem("2020", regi, "feels", "ChemOld", opmoPrc); - - !! Calc feh2s for ChemH2 - pm_specFeDem(t, regi, "feh2s", "ChemH2", opmoPrc) = - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", opmoPrc)) - - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemH2", opmoPrc)); - - ); - ); - ); - -$endif.cm_subsec_model_chemicals ); From 7231ede6b322eaecba6069f07dba7d9521ef7db6 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sun, 16 Feb 2025 10:35:44 +0100 Subject: [PATCH 28/69] fix ChemELec to ChemElec --- core/datainput.gms | 4 +++- core/sets.gms | 5 +++-- modules/37_industry/subsectors/sets.gms | 6 +++--- 3 files changed, 9 insertions(+), 6 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index f1b2c1e33a..d1991c3981 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -727,7 +727,7 @@ pm_cf(ttot,regi,"tdsyndie") = 0.7; *** eternal short-term fix for process-based industry $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_cf(ttot,regi,"ChemOld") = 0.8; -pm_cf(ttot,regi,"ChemELec") = 0.8; +pm_cf(ttot,regi,"ChemElec") = 0.8; pm_cf(ttot,regi,"ChemH2") = 0.8; pm_cf(ttot,regi,"StCrNG") = 0.8; @@ -1217,6 +1217,7 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_seed_te(ttot,regi,"ChemElec") = 0.05; p_adj_seed_te(ttot,regi,"ChemH2") = 0.05; p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; @@ -1261,6 +1262,7 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + p_adj_coeff(ttot,regi,"ChemElec") = 1.0; p_adj_coeff(ttot,regi,"ChemH2") = 1.0; p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; diff --git a/core/sets.gms b/core/sets.gms index e132d2258f..b5325e2d82 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -278,7 +278,7 @@ all_te "all energy technologies, including from modules" *** TOCHECK: Qianzhi *** PCV: technologies related to chemical ChemOld - ChemELec + ChemElec ChemH2 ChemRo_Old ChemRo_Elec @@ -1275,7 +1275,7 @@ te(all_te) "energy technologies" vess_lng "Vessels transporting LNG" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemOld - ChemELec + ChemElec ChemH2 StCrNG StCrLiq @@ -1383,6 +1383,7 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemElec "Other chemicals by Hydrogen" ChemH2 "Other chemicals by Hydrogen" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index f44dc7406c..f45aaa3b00 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -383,7 +383,7 @@ tePrc(all_te) "Technologies used in process-based model (including CCS)" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemOld - ChemELec + ChemElec ChemH2 StCrNG @@ -627,7 +627,7 @@ tePrc2opmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operatio / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ChemOld . standard - ChemELec . standard + ChemElec . standard ChemH2 . standard StCrNG . standard @@ -853,7 +853,7 @@ fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.ChemOld - entydummy.entydummy.ChemELec + entydummy.entydummy.ChemElec entydummy.entydummy.ChemH2 entydummy.entydummy.StCrNG From dd12afaf9073dae6b29a21d01817202eedf380ae Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Tue, 18 Feb 2025 15:06:51 +0100 Subject: [PATCH 29/69] fix bug on Feedstock and Otherchem energy demand and Tech econ data --- core/datainput.gms | 4 + core/input/generisdata_tech.prn | 14 +- core/sets.gms | 6 +- modules/37_industry/subsectors/datainput.gms | 147 ++++++++++++------- modules/37_industry/subsectors/equations.gms | 24 ++- 5 files changed, 128 insertions(+), 67 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index d1991c3981..533c028e64 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1227,6 +1227,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.05; p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.05; p_adj_seed_te(ttot,regi,"AmSyH2") = 0.05; + p_adj_seed_te(ttot,regi,"MTOMTA") = 0.05; + p_adj_seed_te(ttot,regi,"FertProdH2") = 0.05; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1272,6 +1274,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; p_adj_coeff(ttot,regi,"AmSyLiqcc") = 1.0; p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; + p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; + p_adj_coeff(ttot,regi,"FertProdH2") = 1.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index e91d4736fa..9ca2f11072 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -169,19 +169,19 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 1100 1100 2000 3200 2100 900 1200 750 750 300 300 625 -omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.04 -lifetime 20 20 20 25 25 25 25 25 25 25 25 25 25 +inco0 1100 1600 2100 1500 1200 2000 875 1200 1200 700 310 300 800 +omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 +lifetime 20 20 20 30 30 30 30 30 30 30 30 30 30 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 2500 1200 1600 1100 700 700 -omf 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 20 +inco0 300 200 300 300 200 300 +omf 0.05 0.05 0.05 0.05 0.05 0.05 +lifetime 25 25 25 25 25 25 + MtOMtA FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal !! documentation & sources: see below -inco0 500 500 500 500 500 500 +inco0 1000 500 500 500 500 500 omf 0.06 0.06 0.06 0.06 0.06 0.06 lifetime 20 20 20 20 20 20 $endif.cm_subsec_model_chemicals diff --git a/core/sets.gms b/core/sets.gms index b5325e2d82..249f40c530 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -1383,7 +1383,7 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemElec "Other chemicals by Hydrogen" + ChemElec "Other chemicals by Hydrogen" ChemH2 "Other chemicals by Hydrogen" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" @@ -1391,8 +1391,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSyH2 "Methanol by Hydrogen" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" - AmSyLiqcc "Ammonia by Liquids CCS" + AmSyLiqcc "Ammonia by Liquids CCS" AmSyH2 "Ammonia by Hydrogen" + MTOMTA "Methanol to Olefins and Aromatics" + FertProdH2 "Green Ammonia to Urea" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 623c504808..30b99ef9a2 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -650,7 +650,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; -p37_specMatDem("methanol","MtOMtA","standard") = 2.28; +p37_specMatDem("methanol","MtOMtA","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 p37_specMatDem("ammonia","AmToFinal","standard") = 1; p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; @@ -679,78 +679,73 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","ChemOld","standard") = 10./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemOld","standard") = 10. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemOld","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","ChemOld","standard") = 1.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemOld","standard") = 3.9 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemELec","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemElec","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemElec","standard") = 2. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fesos","ChemElec","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemElec","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemElec","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemElec","standard") = 3.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemH2","standard") = 9./ (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemH2","standard") = 9. / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 -p37_specFeDemTarget("feels","ChemH2","standard") = 1. / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021 +p37_specFeDemTarget("fesos","ChemH2","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","ChemH2","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","ChemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","ChemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","ChemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","StCrNG","standard") = 22.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","StCrNG","standard") = 0.15 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","StCrNG","standard") = 16.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 +p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 -p37_specFeDemTarget("fehos","StCrLiq","standard") = 41.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","StCrLiq","standard") = 0.04 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","StCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 +p37_specFeDemTarget("feels","StCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 -p37_specFeDemTarget("fesos","MeSySol","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! methanol tech QIANZHI -p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greyh2") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 +p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 +p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MetSySol -p37_specFeDemTarget("fegas","MeSyNG","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNG","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","MeSyNG","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","MeSyLiq","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiq","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","MeSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh +p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 13.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 2.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fegas","MeSyNGcc","standard") = 9.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyNGcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","MeSyLiqcc","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as MeSyNGcc -p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","MeSyH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feels","MeSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! ammonia tech QIANZHI -p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fegas","AmSyNG","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","AmSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 +p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("fehos","AmSyLiq","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiq","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","AmSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","AmSyCoalcc","standard") = 10.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fegas","AmSyNGcc","standard") = 7.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","AmSyLiqcc","standard") = 11.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as AmSyNGcc -p37_specFeDemTarget("feh2s","AmSyH2","standard") = 5.9 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","AmSyH2","standard") = 0.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia +p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 -p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","FertProd","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","FertProdH2","standard") = 0.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1073,6 +1068,54 @@ if (cm_startyear eq 2005, ); ); +!! Hot fix on regional OtherChem Energy Demand +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + + loop((entyFeStat(all_enty)), + loop(t$(t.val > 2020), + + !! Calc ChemOld + pm_specFeDem(t,regi,all_enty,"ChemOld","standard") = + pm_specFeDem("2020",regi,all_enty,"ChemOld","standard"); + + !! Calc ChemElec + loop(entyFe$(NOT sameas(entyFe, "feels")), + pm_specFeDem(t, regi, entyFe, "ChemElec", "standard") = + pm_specFeDem("2020", regi, entyFe, "ChemOld", "standard") + * 0.65 + * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) + / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) + ); + + !! Calc feels for ChemElec + pm_specFeDem(t, regi, "feels", "ChemElec", "standard") = + pm_specFeDem("2020", regi, "feels", "ChemElec", "standard") + + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) + - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemElec", "standard")) ); + + !! Calc ChemH2 + loop(entyFe$(NOT sameas(entyFe, "feels")), + pm_specFeDem(t, regi, entyFe, "ChemH2", "standard") = + pm_specFeDem("2020", regi, entyFe, "ChemOld", "standard") + * 0.65 + * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) + / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) + ); + + !! Calc feels for ChemH2 + pm_specFeDem(t, regi, "feels", "ChemH2", "standard") = + pm_specFeDem("2020", regi, "feels", "ChemOld", "standard"); + + !! Calc feh2s for ChemH2 + pm_specFeDem(t, regi, "feh2s", "ChemH2", "standard") = + sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) + - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemH2", "standard")); + + ); + ); + +$endif.cm_subsec_model_chemicals + ); if (cm_startyear gt 2005, diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 1e3640b09e..3dff99cd0a 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -222,13 +222,25 @@ q37_demFeFeedstockChemIndst(t,regi,entyFe,emiMkt) .. vm_demFeNonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) ) =e= - sum((fe2ppfEn(entyFe,ppfen_industry_dyn37(in)), - secInd37_emiMkt(secInd37,emiMkt), - secInd37_2_pf(secInd37,in_chemicals_feedstock_37(in))), - ( vm_cesIO(t,regi,in) - + pm_cesdata(t,regi,in,"offset_quantity") + ( sum(secInd37$(not secInd37Prc(secInd37)), + sum((fe2ppfEn(entyFe,ppfen_industry_dyn37(in)), + secInd37_emiMkt(secInd37,emiMkt), + secInd37_2_pf(secInd37,in_chemicals_feedstock_37(in))), + ( vm_cesIO(t,regi,in) + + pm_cesdata(t,regi,in,"offset_quantity") + ) + ) ) - * p37_chemicals_feedstock_share(t,regi) + + + sum(secInd37Prc$(sameas(secInd37Prc,"chemicals")), + sum((secInd37_emiMkt(secInd37Prc,emiMkt), + secInd37_tePrc(secInd37Prc,tePrc), + tePrc2opmoPrc(tePrc,opmoPrc)), + pm_specFeDem(t,regi,entyFe,tePrc,opmoPrc) + * vm_outflowPrc(t,regi,tePrc,opmoPrc) + ) + ) + * p37_chemicals_feedstock_share(t,regi) )$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) ; From 908a67393e6bb1b04df66d34d52d1763cb915317 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Wed, 19 Feb 2025 14:58:38 +0100 Subject: [PATCH 30/69] Fix bug on Otherchem Energy Instensity and add cost_adj on All chemical processes --- core/datainput.gms | 50 ++++++++++++-------- core/input/generisdata_tech.prn | 6 +-- core/input/generisdata_vintages.prn | 6 +-- core/sets.gms | 8 +++- modules/37_industry/subsectors/datainput.gms | 35 +++++++------- 5 files changed, 61 insertions(+), 44 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 533c028e64..2f83cddc83 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1217,18 +1217,24 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_seed_te(ttot,regi,"ChemElec") = 0.05; - p_adj_seed_te(ttot,regi,"ChemH2") = 0.05; - p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.05; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.05; - p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.05; - p_adj_seed_te(ttot,regi,"MeSyH2") = 0.05; - p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.05; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.05; - p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.05; - p_adj_seed_te(ttot,regi,"AmSyH2") = 0.05; - p_adj_seed_te(ttot,regi,"MTOMTA") = 0.05; - p_adj_seed_te(ttot,regi,"FertProdH2") = 0.05; + p_adj_seed_te(ttot,regi,"ChemElec") = 0.10; + p_adj_seed_te(ttot,regi,"ChemH2") = 0.03; + p_adj_seed_te(ttot,regi,"MeSySol") = 0.25; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNG") = 0.25; + p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.25; + p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; + p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; + p_adj_seed_te(ttot,regi,"MeSyH2") = 0.03; + p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.25; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNG") = 0.25; + p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.25; + p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; + p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; + p_adj_seed_te(ttot,regi,"AmSyH2") = 0.03; + p_adj_seed_te(ttot,regi,"MTOMTA") = 0.03; + p_adj_seed_te(ttot,regi,"FertProdH2") = 0.03; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1264,15 +1270,21 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_coeff(ttot,regi,"ChemElec") = 1.0; + p_adj_coeff(ttot,regi,"ChemElec") = 0.25; p_adj_coeff(ttot,regi,"ChemH2") = 1.0; - p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI - p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; - p_adj_coeff(ttot,regi,"MeSyLiqcc") = 1.0; + p_adj_coeff(ttot,regi,"MeSySol") = 0.25; !! methanol tech QIANZHI + p_adj_coeff(ttot,regi,"MeSyNG") = 0.25; + p_adj_coeff(ttot,regi,"MeSyLiq") = 0.25; + p_adj_coeff(ttot,regi,"MeSySolcc") = 0.5; !! methanol tech QIANZHI + p_adj_coeff(ttot,regi,"MeSyNGcc") = 0.5; + p_adj_coeff(ttot,regi,"MeSyLiqcc") = 0.5; p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; - p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI - p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; - p_adj_coeff(ttot,regi,"AmSyLiqcc") = 1.0; + p_adj_coeff(ttot,regi,"AmSyCoal") = 0.25; !! ammonia tech QIANZHI + p_adj_coeff(ttot,regi,"AmSyNG") = 0.25; + p_adj_coeff(ttot,regi,"AmSyLiq") = 0.25; + p_adj_coeff(ttot,regi,"AmSyCoalcc") = 0.5; !! ammonia tech QIANZHI + p_adj_coeff(ttot,regi,"AmSyNGcc") = 0.5; + p_adj_coeff(ttot,regi,"AmSyLiqcc") = 0.5; p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; p_adj_coeff(ttot,regi,"FertProdH2") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 9ca2f11072..bfbb9d80d2 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -169,9 +169,9 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 1100 1600 2100 1500 1200 2000 875 1200 1200 700 310 300 800 -omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 -lifetime 20 20 20 30 30 30 30 30 30 30 30 30 30 +inco0 500 500 500 1500 2000 2000 875 1200 1200 700 310 300 800 +omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 +lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below diff --git a/core/input/generisdata_vintages.prn b/core/input/generisdata_vintages.prn index 3f7368ecd3..02fb75990f 100644 --- a/core/input/generisdata_vintages.prn +++ b/core/input/generisdata_vintages.prn @@ -163,9 +163,9 @@ $offtext $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -+ ChemOld StCrNG StCrLiq MeSySol MeSyNG MeSyLiq AmSyCoal AmSyNG AmSyLiq MtOMtA FertProd -1 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 -6 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 ++ ChemOld StCrNG StCrLiq MeSySol MeSyNG MeSyLiq AmSyCoal AmSyNG AmSyLiq MtOMtA FertProd +1 1.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0 10.0 +6 1.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 5.0 11 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 16 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 21 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 1.0 diff --git a/core/sets.gms b/core/sets.gms index 249f40c530..e8378acff0 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -1383,12 +1383,18 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemElec "Other chemicals by Hydrogen" + ChemElec "Other chemicals by Electricity" ChemH2 "Other chemicals by Hydrogen" + MeSySol "Methanol by Soilds" !! methanol tech QIANZHI + MeSyNG "Methanol by Gas" + MeSyLiq "Methanol by Liquids" MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI MeSyNGcc "Methanol by Gas CCS" MeSyLiqcc "Methanol by Liquids CCS" MeSyH2 "Methanol by Hydrogen" + AmSyCoal "Ammonia by Coal" !! ammonia tech QIANZHI + AmSyNG "Ammonia by Gas" + AmSyLiq "Ammonia by Liquids" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" AmSyLiqcc "Ammonia by Liquids CCS" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 30b99ef9a2..65ff862cc4 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -850,15 +850,15 @@ $endif.cm_subsec_model_chemicals p37_mat2ue(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt -!! So this is the price of material in trn$2005/Gt = $2017/kg +!! So this is the price of material in trn$2017/Gt = $2017/kg !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. !!TODO QIanzhi: Change to 2017$ -p37_mat2ue("HVC","ue_chemicals") = 1.1; !!2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/propylene-price-index/ 2020 Global Average of Ethylene, Propylene and BTX -p37_mat2ue("Fertilizer","ue_chemicals") = 0.58; !!2005$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average -p37_mat2ue("MethFinal","ue_chemicals") = 0.3; !!2005$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average -p37_mat2ue("AmmoFinal","ue_chemicals") = 0.55; !!2005$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue("HVC","ue_chemicals") = 1.38; !!2017$/kg Source: See new calculation value added +p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average p37_mat2ue("OtherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1055,18 +1055,21 @@ if (cm_startyear eq 2005, ); !! loop over other years and blend - loop((entyFeStat(all_enty), tePrc(all_te), opmoPrc), - if( (p37_specFeDemTarget(all_enty,all_te,opmoPrc) gt 0.), + loop((regi(all_regi),entyFeStat(all_enty), tePrc(all_te), opmoPrc), + if( pm_specFeDem("2020",all_regi,all_enty,all_te,opmoPrc) gt 0., loop(t$(t.val > 2020), - !! fedemand in excess of BAT halves until 2055 - !! gams cannot handle float exponents, so pre-compute 0.5^(1/(2055-2020)) = 0.9804 + !! fedemand in excess of BAT halves until 2055 + !! gams cannot handle float exponents, so pre-compute 0.5^(1/(2055-2020)) = 0.9804 pm_specFeDem(t,regi,all_enty,all_te,opmoPrc) - = p37_specFeDemTarget(all_enty,all_te,opmoPrc) - + (pm_specFeDem("2020",regi,all_enty,all_te,opmoPrc) - p37_specFeDemTarget(all_enty,all_te,opmoPrc)) - * power(0.9804, t.val - 2020) ; + = p37_specFeDemTarget(all_enty,all_te,opmoPrc) + + (pm_specFeDem("2020",regi,all_enty,all_te,opmoPrc) - p37_specFeDemTarget(all_enty,all_te,opmoPrc)) + * power(0.9804, t.val - 2020) + ); + else + pm_specFeDem(t,regi,all_enty,all_te,opmoPrc) = p37_specFeDemTarget(all_enty,all_te,opmoPrc) ); ); - ); + !! Hot fix on regional OtherChem Energy Demand $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" @@ -1083,13 +1086,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_specFeDem(t, regi, entyFe, "ChemElec", "standard") = pm_specFeDem("2020", regi, entyFe, "ChemOld", "standard") * 0.65 - * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) - / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) ); !! Calc feels for ChemElec pm_specFeDem(t, regi, "feels", "ChemElec", "standard") = - pm_specFeDem("2020", regi, "feels", "ChemElec", "standard") + pm_specFeDem("2020", regi, "feels", "ChemOld", "standard") + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemElec", "standard")) ); @@ -1098,8 +1099,6 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" pm_specFeDem(t, regi, entyFe, "ChemH2", "standard") = pm_specFeDem("2020", regi, entyFe, "ChemOld", "standard") * 0.65 - * sum(entyFe2, pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) - / sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) ); !! Calc feels for ChemH2 From 55c11db42d60827e846ea88ba6aae0a37d0b2606 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sat, 22 Feb 2025 19:30:22 +0100 Subject: [PATCH 31/69] Adjust cost for All ChemTech and Regional subsidies for Naphata --- core/datainput.gms | 28 +++++++------ core/input/generisdata_tech.prn | 7 +++- core/sets.gms | 5 ++- modules/37_industry/subsectors/datainput.gms | 39 ++++++++++++++----- .../37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 2 +- modules/37_industry/subsectors/sets.gms | 6 +++ 7 files changed, 62 insertions(+), 27 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 2f83cddc83..5fd15dc757 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1217,24 +1217,26 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_seed_te(ttot,regi,"ChemElec") = 0.10; - p_adj_seed_te(ttot,regi,"ChemH2") = 0.03; + p_adj_seed_te(ttot,regi,"ChemElec") = 0.50; + p_adj_seed_te(ttot,regi,"ChemH2") = 0.25; p_adj_seed_te(ttot,regi,"MeSySol") = 0.25; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNG") = 0.25; p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.25; p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; - p_adj_seed_te(ttot,regi,"MeSyH2") = 0.03; + p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.25; !! ammonia tech QIANZHI p_adj_seed_te(ttot,regi,"AmSyNG") = 0.25; p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.25; p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyH2") = 0.03; - p_adj_seed_te(ttot,regi,"MTOMTA") = 0.03; - p_adj_seed_te(ttot,regi,"FertProdH2") = 0.03; + p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; + p_adj_seed_te(ttot,regi,"StCrLiq") = 0.25; + p_adj_seed_te(ttot,regi,"StCrNG") = 0.25; + p_adj_seed_te(ttot,regi,"MTOMTA") = 0.10; + p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1272,20 +1274,22 @@ $endif.cm_subsec_model_steel $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_coeff(ttot,regi,"ChemElec") = 0.25; p_adj_coeff(ttot,regi,"ChemH2") = 1.0; - p_adj_coeff(ttot,regi,"MeSySol") = 0.25; !! methanol tech QIANZHI - p_adj_coeff(ttot,regi,"MeSyNG") = 0.25; - p_adj_coeff(ttot,regi,"MeSyLiq") = 0.25; + p_adj_coeff(ttot,regi,"MeSySol") = 3.0; !! methanol tech QIANZHI + p_adj_coeff(ttot,regi,"MeSyNG") = 3.0; + p_adj_coeff(ttot,regi,"MeSyLiq") = 3.0; p_adj_coeff(ttot,regi,"MeSySolcc") = 0.5; !! methanol tech QIANZHI p_adj_coeff(ttot,regi,"MeSyNGcc") = 0.5; p_adj_coeff(ttot,regi,"MeSyLiqcc") = 0.5; p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; - p_adj_coeff(ttot,regi,"AmSyCoal") = 0.25; !! ammonia tech QIANZHI - p_adj_coeff(ttot,regi,"AmSyNG") = 0.25; - p_adj_coeff(ttot,regi,"AmSyLiq") = 0.25; + p_adj_coeff(ttot,regi,"AmSyCoal") = 3.0; !! ammonia tech QIANZHI + p_adj_coeff(ttot,regi,"AmSyNG") = 3.0; + p_adj_coeff(ttot,regi,"AmSyLiq") = 3.0; p_adj_coeff(ttot,regi,"AmSyCoalcc") = 0.5; !! ammonia tech QIANZHI p_adj_coeff(ttot,regi,"AmSyNGcc") = 0.5; p_adj_coeff(ttot,regi,"AmSyLiqcc") = 0.5; p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; + p_adj_coeff(ttot,regi,"StCrLiq") = 3.0; + p_adj_coeff(ttot,regi,"StCrNG") = 3.0; p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; p_adj_coeff(ttot,regi,"FertProdH2") = 1.0; $endif.cm_subsec_model_chemicals diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index bfbb9d80d2..cc260c657e 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -169,21 +169,24 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 !! documentation & sources: see below -inco0 500 500 500 1500 2000 2000 875 1200 1200 700 310 300 800 +inco0 500 500 500 1500 1000 2000 875 1200 1200 700 310 300 800 omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 +constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below inco0 300 200 300 300 200 300 omf 0.05 0.05 0.05 0.05 0.05 0.05 +constrTme 1 1 1 1 1 1 lifetime 25 25 25 25 25 25 + MtOMtA FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal !! documentation & sources: see below inco0 1000 500 500 500 500 500 omf 0.06 0.06 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 20 20 +constrTme 3 3 3 3 3 3 +lifetime 30 30 30 30 30 30 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index e8378acff0..8ffafdee7a 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -447,6 +447,7 @@ all_enty "all types of quantities" MethFinal AmmoFinal + naphtha !! emissions co2 "carbon dioxide emissions" ch4 "methane emissions" @@ -1398,7 +1399,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI AmSyNGcc "Ammonia by Gas CCS" AmSyLiqcc "Ammonia by Liquids CCS" - AmSyH2 "Ammonia by Hydrogen" + AmSyH2 "Ammonia by Hydrogen" + StCrLiq "Steam cracking by Naphtha" + StCrNG "Steam cracking by Natural Gas" MTOMTA "Methanol to Olefins and Aromatics" FertProdH2 "Green Ammonia to Urea" $endif.cm_subsec_model_chemicals diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 65ff862cc4..1a080a7bd8 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -655,6 +655,8 @@ p37_specMatDem("ammonia","AmToFinal","standard") = 1; p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; +p37_specMatDem("naphtha","StCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock + p37_specMatDem("co2f","FertProdH2","standard") = 1.52; p37_specMatDem("co2f","MeSyH2","standard") = 1.373; $endif.cm_subsec_model_chemicals @@ -684,7 +686,6 @@ p37_specFeDemTarget("fegas","ChemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga p37_specFeDemTarget("fehos","ChemOld","standard") = 3.9 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","ChemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); - p37_specFeDemTarget("fesos","ChemElec","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fegas","ChemElec","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fehos","ChemElec","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -697,9 +698,10 @@ p37_specFeDemTarget("feh2s","ChemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_ p37_specFeDemTarget("feels","ChemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fegas","StCrNG","standard") = 16.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 +p37_specFeDemTarget("fehos","StCrNG","standard") = 5.83 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 -p37_specFeDemTarget("fehos","StCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 +p37_specFeDemTarget("fehos","StCrLiq","standard") = 19.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 95%feedstock p37_specFeDemTarget("feels","StCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 p37_specFeDemTarget("fesos","MeSySol","greyh2") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 @@ -815,16 +817,28 @@ $endif.cm_subsec_model_steel *** -------------------------------- -p37_priceMat(all_enty) = 0.; +p37_priceMat(ttot,all_regi,all_enty) = 0.; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; + +loop(t$(t.val > 2020), + loop(all_regi, + p37_priceMat(t,all_regi,"naphtha") = -0.5 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); + ); +); +$endif.cm_subsec_model_chemicals + $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") = 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") = sm_EURO2023_2_D2017 * 0.114; -!! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) -p37_priceMat("dripell") = sm_EURO2023_2_D2017 * 0.154; +loop(t$(t.val ge 2005), + p37_priceMat(t,all_regi,"eafscrap") = sm_D2020_2_D2017 * 0.250 ; + p37_priceMat(t,all_regi,"bofscrap") = sm_D2020_2_D2017 * 0.250; + !! Agora KSV-Rechner: 114 €2023/tSteel / (tn$ /bn t) + p37_priceMat(t,all_regi,"ironore") = sm_EURO2023_2_D2017 * 0.114; + !! Agora KSV-Rechner: 154 €2023/tSteel / (tn$ /bn t) + p37_priceMat(t,all_regi,"dripell") = sm_EURO2023_2_D2017 * 0.154; +); $endif.cm_subsec_model_steel @@ -855,7 +869,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. !!TODO QIanzhi: Change to 2017$ -p37_mat2ue("HVC","ue_chemicals") = 1.38; !!2017$/kg Source: See new calculation value added +p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average @@ -921,6 +935,11 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share(t,regi,"sesteel","ue_steel_secondary") = 1.; p37_ue_share(t,regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel + +if (cm_startyear gt 2005, + Execute_Loadpoint "input_ref" p37_ue_share = p37_ue_share; +); + loop((t,regi,ppfUePrc(in)), if(abs(sum(mat,p37_ue_share(t,regi,mat,in))-1.) gt sm_eps, display p37_ue_share; diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index f9e6b1e71c..4656b71fb2 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -38,7 +38,7 @@ Parameters p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" 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 [US$/kg] = [trn$US/Gt]" + p37_priceMat(tall,all_regi,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]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 3dff99cd0a..310a702660 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -437,7 +437,7 @@ q37_costMat(t,regi) .. vm_costMatPrc(t,regi) =e= sum(mat, - p37_priceMat(mat) + p37_priceMat(t,regi,mat) * v37_matFlow(t,regi,mat)) ; diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index f45aaa3b00..3a5694cb75 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -462,6 +462,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MethFinal AmmoFinal co2f + + naphtha $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -482,6 +484,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ammonia ammoniaH2 co2f + + naphtha $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eafscrap "Steel scrap used in EAF" @@ -675,6 +679,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeToFinal . standard . methanol AmToFinal . standard . ammonia AmToFinalH2 . standard . ammoniaH2 + + StCrLiq . standard . naphtha $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (h2,ng) . dripell From 18c1aced757937c6273019d765bfe3f15633a416 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Mon, 24 Feb 2025 22:26:00 +0100 Subject: [PATCH 32/69] Fix Chemical Feedstock Routes --- modules/37_industry/subsectors/datainput.gms | 22 ++++++--- .../37_industry/subsectors/declarations.gms | 4 ++ modules/37_industry/subsectors/equations.gms | 22 +++++++++ modules/37_industry/subsectors/sets.gms | 45 +++++++++++++++++++ 4 files changed, 88 insertions(+), 5 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 1a080a7bd8..118f45a153 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -949,11 +949,23 @@ loop((t,regi,ppfUePrc(in)), *** -------------------------------- p37_teMatShareHist(all_regi,tePrc,opmoPrc,mat) = 0.; -!!$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!!loop(tePrc$(secInd37_tePrc("chemicals",tePrc)), -!! p37_teMatShareHist(regi,tePrc,opmoPrc,mat) = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) / p37_matFlowHist("2020",regi,mat); -!!); -!!$endif.cm_subsec_model_chemicals +p37_teMatShareFOHist(all_regi,mat) = 0.; + +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +loop(all_regi(regi), + loop(tePrc2matOut(tePrc, opmoPrc, mat), + if (p37_matFlowHist("2020", regi, mat) gt 0, + p37_teMatShareHist(regi, tePrc, opmoPrc, mat) = + pm_outflowPrcHist("2020", regi, tePrc, opmoPrc) + / p37_matFlowHist("2020", regi, mat); + else + p37_teMatShareHist(regi, tePrc, opmoPrc, mat) = 0; + ); + ); + ); +p37_teMatShareFOHist(regi,mat) = sum(tePrcFOopmoPrc(tePrc,opmoPrc),p37_teMatShareHist(regi,tePrc,opmoPrc,mat)); +$endif.cm_subsec_model_chemicals + $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_teMatShareHist(regi,"bof","unheated","prsteel") = 1.; p37_teMatShareHist(regi,"eaf","sec","sesteel") = 1.; diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 4656b71fb2..3cb4c60b3a 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -36,6 +36,7 @@ Parameters p37_ueHistTmp(tall,all_regi) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" + p37_teMatShareFOHist(all_regi,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a Fossil mat" 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(tall,all_regi,all_enty) "Prices of external material input [US$/kg] = [trn$US/Gt]" @@ -102,6 +103,7 @@ Positive Variables !! process-based implementation vm_outflowPrc(tall,all_regi,all_te,opmoPrc) "Production volume of processes in process-based model [Gt/a]" v37_matFlow(tall,all_regi,all_enty) "Production of materials [Gt/a]" + v37_matFlowPrim(tall,all_regi,all_enty) "Production of Primary materials [Gt/a]" v37_emiPrc(tall,all_regi,all_enty,all_te,opmoPrc) "Emissions per process and operation mode [GtC/a]" v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" @@ -146,7 +148,9 @@ $endif.no_calibration !! process-based implementation q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" + q37_prodMatPrim(tall,all_regi,mat) "Production volume of processes equals Primary material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" + q37_teMatShare(tall,all_regi,all_te,opmoPrc,mat) "Constraining the share of chemical fossil fuel technologies based on historical data" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 310a702660..d7ad2b2d59 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -453,6 +453,28 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. ) ; +***------------------------------------------------------ +*' Output material production +***------------------------------------------------------ + +q37_prodMatPrim(t,regi,mat)$(matPrimChem(mat)) .. + v37_matFlowPrim(t,regi,mat) + =e= + sum((tePrc, opmoPrc)$(tePrcPrim(tePrc, opmoPrc, mat)), vm_outflowPrc(t,regi,tePrc,opmoPrc)); +; + +***------------------------------------------------------ +*' Output material production +***------------------------------------------------------ + +q37_teMatShare(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcPrim(tePrc,opmoPrc,mat)) .. + vm_outflowPrc(t,regi,tePrc,opmoPrc) + * p37_teMatShareFOHist(regi,mat) + =e= + p37_teMatShareHist(regi,tePrc,opmoPrc,mat) + * v37_matFlowPrim(t,regi,mat) +; + ***------------------------------------------------------ *' Hand-over to CES ***------------------------------------------------------ diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 3a5694cb75..b2b29cf824 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -517,6 +517,16 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / +matPrimChem(all_enty) "Materials which serve as output of a process" + / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + HVC + methanol + ammonia !! ammonia tech +$endif.cm_subsec_model_chemicals + + / + matFin(mat) "Final products of a process-based production route" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" @@ -670,6 +680,22 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / +tePrcFOopmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operation modes" + / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + StCrNG . standard + StCrLiq . standard + + MeSySol . greyh2 !! methanol tech QIANZHI + MeSyNG . standard + MeSyLiq . standard + + AmSyCoal . standard !! ammonia tech QIANZHI + AmSyNG . standard + AmSyLiq . standard +$endif.cm_subsec_model_chemicals + / + tePrc2matIn(all_te,opmoPrc,mat) "Mapping of technologies onto input materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" @@ -727,6 +753,25 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / +tePrcPrim(all_te,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" + / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + + StCrNG . standard . HVC + StCrLiq . standard . HVC + + MeSySol . greyh2 . methanol + MeSyNG . standard . methanol + MeSyLiq . standard . methanol + + + AmSyCoal . standard . ammonia + AmSyNG . standard . ammonia + AmSyLiq . standard . ammonia + +$endif.cm_subsec_model_chemicals + / + tePrc2ue(all_te,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" From 73ed8ddf2d0505efb935ff12d77a8baec4daf3c3 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Thu, 27 Feb 2025 09:04:35 +0100 Subject: [PATCH 33/69] Setting upper and lower bounds on the percentage change for fossil fuel technologies in the chemical sector --- core/datainput.gms | 82 ++++++++++--------- core/input/generisdata_tech.prn | 10 +-- core/sets.gms | 13 ++- modules/37_industry/subsectors/datainput.gms | 11 ++- .../37_industry/subsectors/declarations.gms | 3 +- modules/37_industry/subsectors/equations.gms | 14 +++- modules/37_industry/subsectors/sets.gms | 45 +++++++--- 7 files changed, 111 insertions(+), 67 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 5fd15dc757..9a3ad34637 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -749,9 +749,11 @@ pm_cf(ttot,regi,"AmSyLiqcc") = 0.8; pm_cf(ttot,regi,"AmSyH2") = 0.8; pm_cf(ttot,regi,"MtOMtA") = 0.8; +pm_cf(ttot,regi,"MtOMtAH2") = 0.8; pm_cf(ttot,regi,"FertProd") = 0.8; pm_cf(ttot,regi,"FertProdH2") = 0.8; pm_cf(ttot,regi,"MeToFinal") = 0.8; +pm_cf(ttot,regi,"MeToFinalH2") = 0.8; pm_cf(ttot,regi,"AmToFinal") = 0.8; pm_cf(ttot,regi,"AmToFinalH2") = 0.8; @@ -1217,26 +1219,26 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_seed_te(ttot,regi,"ChemElec") = 0.50; - p_adj_seed_te(ttot,regi,"ChemH2") = 0.25; - p_adj_seed_te(ttot,regi,"MeSySol") = 0.25; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNG") = 0.25; - p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.25; - p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; - p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; - p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.25; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNG") = 0.25; - p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.25; - p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; - p_adj_seed_te(ttot,regi,"StCrLiq") = 0.25; - p_adj_seed_te(ttot,regi,"StCrNG") = 0.25; - p_adj_seed_te(ttot,regi,"MTOMTA") = 0.10; - p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; +!! p_adj_seed_te(ttot,regi,"ChemElec") = 0.50; +!! p_adj_seed_te(ttot,regi,"ChemH2") = 0.25; + p_adj_seed_te(ttot,regi,"MeSySol") = 0.05; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNG") = 0.05; + p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.05; +!! p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI +!! p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; +!! p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; +!! p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; + p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.05; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNG") = 0.05; + p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.05; +!! p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI +!! p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; +!! p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; +!! p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; + p_adj_seed_te(ttot,regi,"StCrLiq") = 0.05; + p_adj_seed_te(ttot,regi,"StCrNG") = 0.05; +!! p_adj_seed_te(ttot,regi,"MTOMTA") = 0.10; +!! p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1272,26 +1274,26 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - p_adj_coeff(ttot,regi,"ChemElec") = 0.25; - p_adj_coeff(ttot,regi,"ChemH2") = 1.0; - p_adj_coeff(ttot,regi,"MeSySol") = 3.0; !! methanol tech QIANZHI - p_adj_coeff(ttot,regi,"MeSyNG") = 3.0; - p_adj_coeff(ttot,regi,"MeSyLiq") = 3.0; - p_adj_coeff(ttot,regi,"MeSySolcc") = 0.5; !! methanol tech QIANZHI - p_adj_coeff(ttot,regi,"MeSyNGcc") = 0.5; - p_adj_coeff(ttot,regi,"MeSyLiqcc") = 0.5; - p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; - p_adj_coeff(ttot,regi,"AmSyCoal") = 3.0; !! ammonia tech QIANZHI - p_adj_coeff(ttot,regi,"AmSyNG") = 3.0; - p_adj_coeff(ttot,regi,"AmSyLiq") = 3.0; - p_adj_coeff(ttot,regi,"AmSyCoalcc") = 0.5; !! ammonia tech QIANZHI - p_adj_coeff(ttot,regi,"AmSyNGcc") = 0.5; - p_adj_coeff(ttot,regi,"AmSyLiqcc") = 0.5; - p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; - p_adj_coeff(ttot,regi,"StCrLiq") = 3.0; - p_adj_coeff(ttot,regi,"StCrNG") = 3.0; - p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; - p_adj_coeff(ttot,regi,"FertProdH2") = 1.0; + !!p_adj_coeff(ttot,regi,"ChemElec") = 0.25; + !!p_adj_coeff(ttot,regi,"ChemH2") = 1.0; + !!p_adj_coeff(ttot,regi,"MeSySol") = 3.0; !! methanol tech QIANZHI + !!p_adj_coeff(ttot,regi,"MeSyNG") = 3.0; + !!p_adj_coeff(ttot,regi,"MeSyLiq") = 3.0; + !!p_adj_coeff(ttot,regi,"MeSySolcc") = 0.5; !! methanol tech QIANZHI + !!p_adj_coeff(ttot,regi,"MeSyNGcc") = 0.5; + !!p_adj_coeff(ttot,regi,"MeSyLiqcc") = 0.5; + !!p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; + !!p_adj_coeff(ttot,regi,"AmSyCoal") = 3.0; !! ammonia tech QIANZHI + !!p_adj_coeff(ttot,regi,"AmSyNG") = 3.0; + !!p_adj_coeff(ttot,regi,"AmSyLiq") = 3.0; + !!p_adj_coeff(ttot,regi,"AmSyCoalcc") = 0.5; !! ammonia tech QIANZHI + !!p_adj_coeff(ttot,regi,"AmSyNGcc") = 0.5; + !!p_adj_coeff(ttot,regi,"AmSyLiqcc") = 0.5; + !!p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; + !!p_adj_coeff(ttot,regi,"StCrLiq") = 3.0; + !!p_adj_coeff(ttot,regi,"StCrNG") = 3.0; + !!p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; + !!p_adj_coeff(ttot,regi,"FertProdH2") = 1.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index cc260c657e..f88a2f8e76 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -181,12 +181,12 @@ omf 0.05 0.05 0.05 0.05 0.05 constrTme 1 1 1 1 1 1 lifetime 25 25 25 25 25 25 -+ MtOMtA FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal ++ MtOMtA MtOMtAH2 FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal MeToFinalH2 !! documentation & sources: see below -inco0 1000 500 500 500 500 500 -omf 0.06 0.06 0.06 0.06 0.06 0.06 -constrTme 3 3 3 3 3 3 -lifetime 30 30 30 30 30 30 +inco0 1000 1000 500 500 500 500 500 500 +omf 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 +constrTme 3 3 3 3 3 3 3 3 +lifetime 30 30 30 30 30 30 30 30 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 8ffafdee7a..0ff6c55cc4 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -296,7 +296,7 @@ all_te "all energy technologies, including from modules" MeSyNGcc MeSyLiqcc MeSyH2 - MeSyRo_Sol_greyh2 + MeSyRo_Sol MeSyRo_Sol_greenh2 MeSyRo_Sol_ccs MeSyRo_NG @@ -321,16 +321,20 @@ all_te "all energy technologies, including from modules" AmSyRo_H2 MtOMtA + MtOMtAH2 MtOMtA_Ro + MtOMtAH2_Ro FertProd FertProdH2 FertProd_Ro FertProdH2_Ro MeToFinal + MeToFinalH2 MeToFinal_Ro + MeToFinalH2_Ro AmToFinal - AmToFinal_Ro AmToFinalH2 + AmToFinal_Ro AmToFinalH2_Ro *** PCV: technologies related to steel ironMine "Mining of iron ore" @@ -442,6 +446,7 @@ all_enty "all types of quantities" HVC Fertilizer methanol + methanolH2 ammonia ammoniaH2 MethFinal @@ -1296,11 +1301,13 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 MtOMtA + MtOMtAH2 FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal + MeToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1403,7 +1410,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrLiq "Steam cracking by Naphtha" StCrNG "Steam cracking by Natural Gas" MTOMTA "Methanol to Olefins and Aromatics" - FertProdH2 "Green Ammonia to Urea" + MTOMTAH2 "Methanol to Olefins and Aromatics with Green hydrogen" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 118f45a153..b7b209c113 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -651,9 +651,11 @@ p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; p37_specMatDem("methanol","MtOMtA","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 +p37_specMatDem("methanolH2","MtOMtAH2","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 p37_specMatDem("ammonia","AmToFinal","standard") = 1; p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; +p37_specMatDem("methanolH2","MeToFinalH2","standard") = 1; p37_specMatDem("naphtha","StCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock @@ -704,8 +706,8 @@ p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga p37_specFeDemTarget("fehos","StCrLiq","standard") = 19.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 95%feedstock p37_specFeDemTarget("feels","StCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 -p37_specFeDemTarget("fesos","MeSySol","greyh2") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSySol","greyh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","MeSySol","standard") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSySol","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 @@ -717,8 +719,8 @@ p37_specFeDemTarget("feels","MeSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fehos","MeSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","MeSySolcc","greyh2") = 2.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSySolcc","greyh2") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","MeSySolcc","standard") = 2.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSySolcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 @@ -746,6 +748,7 @@ p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","MtOMtAH2","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 3cb4c60b3a..7fdc0fd87b 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -150,7 +150,8 @@ $endif.no_calibration q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_prodMatPrim(tall,all_regi,mat) "Production volume of processes equals Primary material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" - q37_teMatShare(tall,all_regi,all_te,opmoPrc,mat) "Constraining the share of chemical fossil fuel technologies based on historical data" + q37_teMatShareLow(tall,all_regi,all_te,opmoPrc,mat) "Low Constraining the share of chemical fossil fuel technologies based on historical data" + q37_teMatShareUp(tall,all_regi,all_te,opmoPrc,mat) "Up Constraining the share of chemical fossil fuel technologies based on historical data" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index d7ad2b2d59..f81725b867 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -467,11 +467,19 @@ q37_prodMatPrim(t,regi,mat)$(matPrimChem(mat)) .. *' Output material production ***------------------------------------------------------ -q37_teMatShare(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcPrim(tePrc,opmoPrc,mat)) .. +q37_teMatShareLow(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcPrim(tePrc,opmoPrc,mat)) .. vm_outflowPrc(t,regi,tePrc,opmoPrc) * p37_teMatShareFOHist(regi,mat) - =e= - p37_teMatShareHist(regi,tePrc,opmoPrc,mat) + =g= + (p37_teMatShareHist(regi,tePrc,opmoPrc,mat)-0.3) + * v37_matFlowPrim(t,regi,mat) +; + +q37_teMatShareUp(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcPrim(tePrc,opmoPrc,mat)) .. + vm_outflowPrc(t,regi,tePrc,opmoPrc) + * p37_teMatShareFOHist(regi,mat) + =l= + (p37_teMatShareHist(regi,tePrc,opmoPrc,mat)+0.3) * v37_matFlowPrim(t,regi,mat) ; diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index b2b29cf824..81019d6b1d 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -406,9 +406,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 MtOMtA + MtOMtAH2 FertProd FertProdH2 MeToFinal + MeToFinalH2 AmToFinal AmToFinalH2 @@ -457,6 +459,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" HVC Fertilizer methanol + methanolH2 ammonia !! ammonia tech QIANZHI ammoniaH2 MethFinal @@ -481,6 +484,7 @@ matIn(all_enty) "Materials which serve as input to a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" methanol + methanolH2 ammonia ammoniaH2 co2f @@ -504,6 +508,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" HVC Fertilizer methanol + methanolH2 ammonia !! ammonia tech ammoniaH2 MethFinal @@ -546,7 +551,7 @@ opmoPrc "Operation modes for technologies in process-based model" / standard "Only one operation mode implemented" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - greyh2 !! methanol tech QIANZHI + greyh2 "Input of green hydrogen to adjust the C-H ratio" greenh2 "Input of green hydrogen to adjust the C-H ratio" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -579,7 +584,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG_Ro StCrLiq_Ro - MeSyRo_Sol_greyh2 !! methanol tech QIANZHI + MeSyRo_Sol !! methanol tech QIANZHI MeSyRo_Sol_greenh2 MeSyRo_NG MeSyRo_Liq @@ -597,9 +602,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyRo_H2 MtOMtA_Ro + MtOMtAH2_Ro FertProd_Ro FertProdH2_Ro MeToFinal_Ro + MeToFinalH2_Ro AmToFinal_Ro AmToFinalH2_Ro $endif.cm_subsec_model_chemicals @@ -650,7 +657,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" MeSySol . (greyh2,greenh2) !! methanol tech QIANZHI MeSyNG . standard MeSyLiq . standard - MeSySolcc . (greyh2) + MeSySolcc . standard MeSyNGcc . standard MeSyLiqcc . standard MeSyH2 . standard @@ -664,9 +671,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 . standard MtOMtA . standard + MtOMtAH2 . standard FertProd . standard FertProdH2 . standard MeToFinal . standard + MeToFinalH2 . standard AmToFinal . standard AmToFinalH2 . standard $endif.cm_subsec_model_chemicals @@ -685,6 +694,7 @@ tePrcFOopmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operati $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard StCrLiq . standard + MtOMtA . standard MeSySol . greyh2 !! methanol tech QIANZHI MeSyNG . standard @@ -702,7 +712,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ammonia FertProdH2 . standard . ammoniaH2 MtOMtA . standard . methanol + MtOMtAH2 . standard . methanolH2 MeToFinal . standard . methanol + MeToFinalH2 . standard . methanolH2 AmToFinal . standard . ammonia AmToFinalH2 . standard . ammoniaH2 @@ -738,9 +750,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 . standard . ammoniaH2 MtOMtA . standard . HVC + MtOMtAH2 . standard . HVC FertProd . standard . Fertilizer FertProdH2 . standard . Fertilizer MeToFinal . standard . MethFinal + MeToFinalH2 . standard . MethFinal AmToFinal . standard . AmmoFinal AmToFinalH2 . standard . AmmoFinal $endif.cm_subsec_model_chemicals @@ -759,12 +773,12 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard . HVC StCrLiq . standard . HVC + MTOMTA . standard . HVC - MeSySol . greyh2 . methanol + MeSySol . standard . methanol MeSyNG . standard . methanol MeSyLiq . standard . methanol - AmSyCoal . standard . ammonia AmSyNG . standard . ammonia AmSyLiq . standard . ammonia @@ -783,7 +797,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrLiq . standard . ue_chemicals MeSySol . (greyh2,greenh2) . ue_chemicals !! methanol tech QIANZHI - MeSySolcc . greyh2 . ue_chemicals + MeSySolcc . standard . ue_chemicals MeSyNG . standard . ue_chemicals (MeSyLiq,MeSyLiqcc) . standard . ue_chemicals MeSyH2 . standard . ue_chemicals @@ -794,9 +808,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 . standard . ue_chemicals MtOMtA . standard . ue_chemicals + MtOMtAH2 . standard . ue_chemicals FertProd . standard . ue_chemicals FertProdH2 . standard . ue_chemicals MeToFinal . standard . ue_chemicals + MeToFinalH2 . standard . ue_chemicals AmToFinal . standard . ue_chemicals AmToFinalH2 . standard . ue_chemicals @@ -814,7 +830,7 @@ $endif.cm_subsec_model_steel tePrc2teCCPrc(all_te,opmoPrc,all_te,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - MeSySol . greyh2 . MeSySolcc . greyh2 !! methanol tech QIANZHI + MeSySol . standard . MeSySolcc . standard !! methanol tech QIANZHI MeSyNG . standard . MeSyNGcc . standard MeSyLiq . standard . MeSyLiqcc . standard @@ -838,14 +854,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard . StCrNG_Ro StCrLiq . standard . StCrLiq_Ro - MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI - MeSySol . greyh2 . MeSyRo_Sol_greyh2 - MeSySol . greyh2 . MeSyRo_Sol_ccs + MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI + MeSySol . greyh2 . MeSyRo_Sol + MeSySol . greyh2 . MeSyRo_Sol_ccs MeSyNG . standard . MeSyRo_NG MeSyNG . standard . MeSyRo_NG_ccs MeSyLiq . standard . MeSyRo_Liq MeSyLiq . standard . MeSyRo_Liq_ccs - MeSySolcc . greyh2 . MeSyRo_Sol_ccs + MeSySolcc . standard . MeSyRo_Sol_ccs MeSyNGcc . standard . MeSyRo_NG_ccs MeSyLiqcc . standard . MeSyRo_Liq_ccs MeSyH2 . standard . MeSyRo_H2 @@ -862,9 +878,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 . standard . AmSyRo_H2 MtOMtA . standard . MtOMtA_Ro + MtOMtAH2 . standard . MtOMtAH2_Ro FertProd . standard . FertProd_Ro FertProdH2 . standard . FertProdH2_Ro MeToFinal . standard . MeToFinal_Ro + MeToFinalH2 . standard . MeToFinal_Ro AmToFinal . standard . AmToFinal_Ro AmToFinalH2 . standard . AmToFinalH2_Ro $endif.cm_subsec_model_chemicals @@ -927,11 +945,14 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.AmSyH2 entydummy.entydummy.MtOMtA + entydummy.entydummy.MtOMtAH2 entydummy.entydummy.FertProd entydummy.entydummy.FertProdH2 entydummy.entydummy.MeToFinal + entydummy.entydummy.MeToFinalH2 entydummy.entydummy.AmToFinal entydummy.entydummy.AmToFinalH2 + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" entydummy.entydummy.bf @@ -970,9 +991,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . AmSyH2 chemicals . MtOMtA + chemicals . MtOMtAH2 chemicals . FertProd chemicals . FertProdH2 chemicals . MeToFinal + chemicals . MeToFinalH2 chemicals . AmToFinal chemicals . AmToFinalH2 $endif.cm_subsec_model_chemicals From e6d716ce737bf6a21bd57e61c7430494e563473f Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Fri, 28 Feb 2025 13:54:09 +0100 Subject: [PATCH 34/69] Attempts to add growth rate constraints to fossil energy-based chemical processes --- core/datainput.gms | 19 ++++---- core/input/generisdata_tech.prn | 10 ++-- core/sets.gms | 7 --- modules/37_industry/subsectors/datainput.gms | 8 ++-- modules/37_industry/subsectors/equations.gms | 30 ++++++------ modules/37_industry/subsectors/sets.gms | 49 +++++++------------- 6 files changed, 48 insertions(+), 75 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 9a3ad34637..ddf62b0823 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -749,13 +749,10 @@ pm_cf(ttot,regi,"AmSyLiqcc") = 0.8; pm_cf(ttot,regi,"AmSyH2") = 0.8; pm_cf(ttot,regi,"MtOMtA") = 0.8; -pm_cf(ttot,regi,"MtOMtAH2") = 0.8; pm_cf(ttot,regi,"FertProd") = 0.8; pm_cf(ttot,regi,"FertProdH2") = 0.8; pm_cf(ttot,regi,"MeToFinal") = 0.8; -pm_cf(ttot,regi,"MeToFinalH2") = 0.8; pm_cf(ttot,regi,"AmToFinal") = 0.8; -pm_cf(ttot,regi,"AmToFinalH2") = 0.8; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1221,22 +1218,22 @@ loop(ttot$(ttot.val ge 2005), $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! p_adj_seed_te(ttot,regi,"ChemElec") = 0.50; !! p_adj_seed_te(ttot,regi,"ChemH2") = 0.25; - p_adj_seed_te(ttot,regi,"MeSySol") = 0.05; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNG") = 0.05; - p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.05; + p_adj_seed_te(ttot,regi,"MeSySol") = 0.001; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNG") = 0.001; + p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.001; !! p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI !! p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; !! p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; !! p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.05; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNG") = 0.05; - p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.05; + p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.001; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNG") = 0.001; + p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.001; !! p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI !! p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; !! p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; !! p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; - p_adj_seed_te(ttot,regi,"StCrLiq") = 0.05; - p_adj_seed_te(ttot,regi,"StCrNG") = 0.05; + p_adj_seed_te(ttot,regi,"StCrLiq") = 0.001; + p_adj_seed_te(ttot,regi,"StCrNG") = 0.001; !! p_adj_seed_te(ttot,regi,"MTOMTA") = 0.10; !! p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; $endif.cm_subsec_model_chemicals diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index f88a2f8e76..815129e34f 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -181,12 +181,12 @@ omf 0.05 0.05 0.05 0.05 0.05 constrTme 1 1 1 1 1 1 lifetime 25 25 25 25 25 25 -+ MtOMtA MtOMtAH2 FertProd FertProdH2 AmToFinal AmToFinalH2 MeToFinal MeToFinalH2 ++ MtOMtA FertProd FertProdH2 AmToFinal MeToFinal !! documentation & sources: see below -inco0 1000 1000 500 500 500 500 500 500 -omf 0.06 0.06 0.06 0.06 0.06 0.06 0.06 0.06 -constrTme 3 3 3 3 3 3 3 3 -lifetime 30 30 30 30 30 30 30 30 +inco0 1000 500 500 500 500 +omf 0.06 0.06 0.06 0.06 0.06 +constrTme 3 3 3 3 3 +lifetime 30 30 30 30 30 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 0ff6c55cc4..081e998b64 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -321,7 +321,6 @@ all_te "all energy technologies, including from modules" AmSyRo_H2 MtOMtA - MtOMtAH2 MtOMtA_Ro MtOMtAH2_Ro FertProd @@ -329,11 +328,9 @@ all_te "all energy technologies, including from modules" FertProd_Ro FertProdH2_Ro MeToFinal - MeToFinalH2 MeToFinal_Ro MeToFinalH2_Ro AmToFinal - AmToFinalH2 AmToFinal_Ro AmToFinalH2_Ro *** PCV: technologies related to steel @@ -1301,13 +1298,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 MtOMtA - MtOMtAH2 FertProd FertProdH2 AmToFinal - AmToFinalH2 MeToFinal - MeToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1410,7 +1404,6 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrLiq "Steam cracking by Naphtha" StCrNG "Steam cracking by Natural Gas" MTOMTA "Methanol to Olefins and Aromatics" - MTOMTAH2 "Methanol to Olefins and Aromatics with Green hydrogen" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index b7b209c113..e97009da07 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -651,11 +651,11 @@ p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; p37_specMatDem("methanol","MtOMtA","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 -p37_specMatDem("methanolH2","MtOMtAH2","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 +p37_specMatDem("methanolH2","MtOMtA","greenh2") = 2.624; !!Dutta2019 Figure 2, Page 196 p37_specMatDem("ammonia","AmToFinal","standard") = 1; -p37_specMatDem("ammoniaH2","AmToFinalH2","standard") = 1; +p37_specMatDem("ammoniaH2","AmToFinal","greenh2") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; -p37_specMatDem("methanolH2","MeToFinalH2","standard") = 1; +p37_specMatDem("methanolH2","MeToFinal","greenh2") = 1; p37_specMatDem("naphtha","StCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock @@ -748,7 +748,7 @@ p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 -p37_specFeDemTarget("feels","MtOMtAH2","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","MtOMtA","greenh2") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index f81725b867..f080744e91 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -457,30 +457,30 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' Output material production ***------------------------------------------------------ -q37_prodMatPrim(t,regi,mat)$(matPrimChem(mat)) .. - v37_matFlowPrim(t,regi,mat) +q37_prodMatPrim(ttot,regi,mat)$(matPrimChem(mat)) .. + v37_matFlowPrim(ttot,regi,mat) =e= - sum((tePrc, opmoPrc)$(tePrcPrim(tePrc, opmoPrc, mat)), vm_outflowPrc(t,regi,tePrc,opmoPrc)); + sum((tePrc, opmoPrc)$(tePrcPrim(tePrc, opmoPrc, mat)), vm_outflowPrc(ttot,regi,tePrc,opmoPrc)); ; ***------------------------------------------------------ *' Output material production ***------------------------------------------------------ -q37_teMatShareLow(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcPrim(tePrc,opmoPrc,mat)) .. - vm_outflowPrc(t,regi,tePrc,opmoPrc) - * p37_teMatShareFOHist(regi,mat) - =g= - (p37_teMatShareHist(regi,tePrc,opmoPrc,mat)-0.3) - * v37_matFlowPrim(t,regi,mat) +q37_teMatShareLow(ttot,regi,tePrc,opmoPrc,mat)$(ttot.val gt 2020 + AND tePrcPrim(tePrc,opmoPrc,mat)) .. + sum(rlf,vm_deltaCap(ttot,regi,tePrc,rlf)) * v37_matFlowPrim(ttot-1,regi,mat) + =g= + -0.3 + * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) ; -q37_teMatShareUp(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcPrim(tePrc,opmoPrc,mat)) .. - vm_outflowPrc(t,regi,tePrc,opmoPrc) - * p37_teMatShareFOHist(regi,mat) - =l= - (p37_teMatShareHist(regi,tePrc,opmoPrc,mat)+0.3) - * v37_matFlowPrim(t,regi,mat) +q37_teMatShareUp(ttot,regi,tePrc,opmoPrc,mat)$(ttot.val gt 2020 + AND tePrcPrim(tePrc,opmoPrc,mat)) .. + sum(rlf,vm_deltaCap(ttot,regi,tePrc,rlf)) * v37_matFlowPrim(ttot-1,regi,mat) + =l= + 0.3 + * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc); ; ***------------------------------------------------------ diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 81019d6b1d..be142c0474 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -406,13 +406,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 MtOMtA - MtOMtAH2 FertProd FertProdH2 MeToFinal - MeToFinalH2 AmToFinal - AmToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -670,14 +667,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyLiqcc . standard AmSyH2 . standard - MtOMtA . standard - MtOMtAH2 . standard + MtOMtA . (standard,greenh2) FertProd . standard FertProdH2 . standard - MeToFinal . standard - MeToFinalH2 . standard - AmToFinal . standard - AmToFinalH2 . standard + MeToFinal . (standard,greenh2) + AmToFinal . (standard,greenh2) $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) @@ -712,11 +706,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ammonia FertProdH2 . standard . ammoniaH2 MtOMtA . standard . methanol - MtOMtAH2 . standard . methanolH2 + MtOMtA . greenh2 . methanolH2 MeToFinal . standard . methanol - MeToFinalH2 . standard . methanolH2 + MeToFinal . greenh2 . methanolH2 AmToFinal . standard . ammonia - AmToFinalH2 . standard . ammoniaH2 + AmToFinal . greenh2 . ammoniaH2 StCrLiq . standard . naphtha $endif.cm_subsec_model_chemicals @@ -749,14 +743,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyLiq . standard . ammonia AmSyH2 . standard . ammoniaH2 - MtOMtA . standard . HVC - MtOMtAH2 . standard . HVC + MtOMtA . (standard,greenh2) . HVC FertProd . standard . Fertilizer FertProdH2 . standard . Fertilizer - MeToFinal . standard . MethFinal - MeToFinalH2 . standard . MethFinal - AmToFinal . standard . AmmoFinal - AmToFinalH2 . standard . AmmoFinal + MeToFinal . (standard,greenh2) . MethFinal + AmToFinal . (standard,greenh2) . AmmoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron @@ -807,14 +798,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" (AmSyLiq,AmSyLiqcc) . standard . ue_chemicals AmSyH2 . standard . ue_chemicals - MtOMtA . standard . ue_chemicals - MtOMtAH2 . standard . ue_chemicals + MtOMtA . (standard,greenh2) . ue_chemicals FertProd . standard . ue_chemicals FertProdH2 . standard . ue_chemicals - MeToFinal . standard . ue_chemicals - MeToFinalH2 . standard . ue_chemicals - AmToFinal . standard . ue_chemicals - AmToFinalH2 . standard . ue_chemicals + MeToFinal . (standard,greenh2) . ue_chemicals + AmToFinal . (standard,greenh2) . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -878,13 +866,13 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 . standard . AmSyRo_H2 MtOMtA . standard . MtOMtA_Ro - MtOMtAH2 . standard . MtOMtAH2_Ro + MtOMtA . greenh2 . MtOMtAH2_Ro FertProd . standard . FertProd_Ro FertProdH2 . standard . FertProdH2_Ro MeToFinal . standard . MeToFinal_Ro - MeToFinalH2 . standard . MeToFinal_Ro + MeToFinal . greenh2 . MeToFinal_Ro AmToFinal . standard . AmToFinal_Ro - AmToFinalH2 . standard . AmToFinalH2_Ro + AmToFinal . greenh2 . AmToFinalH2_Ro $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -945,13 +933,10 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.AmSyH2 entydummy.entydummy.MtOMtA - entydummy.entydummy.MtOMtAH2 entydummy.entydummy.FertProd entydummy.entydummy.FertProdH2 entydummy.entydummy.MeToFinal - entydummy.entydummy.MeToFinalH2 entydummy.entydummy.AmToFinal - entydummy.entydummy.AmToFinalH2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -991,13 +976,11 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . AmSyH2 chemicals . MtOMtA - chemicals . MtOMtAH2 chemicals . FertProd chemicals . FertProdH2 chemicals . MeToFinal - chemicals . MeToFinalH2 chemicals . AmToFinal - chemicals . AmToFinalH2 + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr From 1012eed8b8e9d11eb7fa361c022ac88a74a826ca Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Wed, 5 Mar 2025 13:32:02 +0100 Subject: [PATCH 35/69] new constrain test on outflowPrc --- core/datainput.gms | 3 +- core/input/generisdata_tech.prn | 10 +-- core/sets.gms | 2 + modules/37_industry/subsectors/datainput.gms | 10 +-- .../37_industry/subsectors/declarations.gms | 6 +- modules/37_industry/subsectors/equations.gms | 30 +++------ modules/37_industry/subsectors/sets.gms | 65 ++++++++----------- 7 files changed, 53 insertions(+), 73 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index ddf62b0823..aa6dbf4411 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -749,6 +749,7 @@ pm_cf(ttot,regi,"AmSyLiqcc") = 0.8; pm_cf(ttot,regi,"AmSyH2") = 0.8; pm_cf(ttot,regi,"MtOMtA") = 0.8; +pm_cf(ttot,regi,"MtOMtAH2") = 0.8; pm_cf(ttot,regi,"FertProd") = 0.8; pm_cf(ttot,regi,"FertProdH2") = 0.8; pm_cf(ttot,regi,"MeToFinal") = 0.8; @@ -1234,7 +1235,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; p_adj_seed_te(ttot,regi,"StCrLiq") = 0.001; p_adj_seed_te(ttot,regi,"StCrNG") = 0.001; -!! p_adj_seed_te(ttot,regi,"MTOMTA") = 0.10; + p_adj_seed_te(ttot,regi,"MTOMTA") = 0.001; !! p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 815129e34f..314c7b0425 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -181,12 +181,12 @@ omf 0.05 0.05 0.05 0.05 0.05 constrTme 1 1 1 1 1 1 lifetime 25 25 25 25 25 25 -+ MtOMtA FertProd FertProdH2 AmToFinal MeToFinal ++ MtOMtA MtOMtAH2 FertProd FertProdH2 AmToFinal MeToFinal !! documentation & sources: see below -inco0 1000 500 500 500 500 -omf 0.06 0.06 0.06 0.06 0.06 -constrTme 3 3 3 3 3 -lifetime 30 30 30 30 30 +inco0 500 500 500 500 500 500 +omf 0.025 0.025 0.06 0.06 0.06 0.06 +constrTme 3 3 3 3 3 3 +lifetime 30 30 30 30 30 30 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + bf bof idr eaf diff --git a/core/sets.gms b/core/sets.gms index 081e998b64..116b1b5900 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -321,6 +321,7 @@ all_te "all energy technologies, including from modules" AmSyRo_H2 MtOMtA + MtOMtAH2 MtOMtA_Ro MtOMtAH2_Ro FertProd @@ -1298,6 +1299,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 MtOMtA + MtOMtAH2 FertProd FertProdH2 AmToFinal diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index e97009da07..6b93b3ea7d 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -651,7 +651,7 @@ p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; p37_specMatDem("methanol","MtOMtA","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 -p37_specMatDem("methanolH2","MtOMtA","greenh2") = 2.624; !!Dutta2019 Figure 2, Page 196 +p37_specMatDem("methanolH2","MtOMtAH2","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 p37_specMatDem("ammonia","AmToFinal","standard") = 1; p37_specMatDem("ammoniaH2","AmToFinal","greenh2") = 1; p37_specMatDem("methanol","MeToFinal","standard") = 1; @@ -748,7 +748,7 @@ p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 -p37_specFeDemTarget("feels","MtOMtA","greenh2") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","MtOMtAH2","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 @@ -826,7 +826,8 @@ Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; loop(t$(t.val > 2020), loop(all_regi, - p37_priceMat(t,all_regi,"naphtha") = -0.5 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); + p37_priceMat(t,all_regi,"naphtha") = -0.4 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); + p37_priceMat(t,all_regi,"co2f") = 10 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 ); ); $endif.cm_subsec_model_chemicals @@ -952,7 +953,6 @@ loop((t,regi,ppfUePrc(in)), *** -------------------------------- p37_teMatShareHist(all_regi,tePrc,opmoPrc,mat) = 0.; -p37_teMatShareFOHist(all_regi,mat) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" loop(all_regi(regi), @@ -966,7 +966,7 @@ loop(all_regi(regi), ); ); ); -p37_teMatShareFOHist(regi,mat) = sum(tePrcFOopmoPrc(tePrc,opmoPrc),p37_teMatShareHist(regi,tePrc,opmoPrc,mat)); + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 7fdc0fd87b..78eceef825 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -36,7 +36,6 @@ Parameters p37_ueHistTmp(tall,all_regi) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" - p37_teMatShareFOHist(all_regi,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a Fossil mat" 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(tall,all_regi,all_enty) "Prices of external material input [US$/kg] = [trn$US/Gt]" @@ -148,10 +147,9 @@ $endif.no_calibration !! process-based implementation q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" - q37_prodMatPrim(tall,all_regi,mat) "Production volume of processes equals Primary material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" - q37_teMatShareLow(tall,all_regi,all_te,opmoPrc,mat) "Low Constraining the share of chemical fossil fuel technologies based on historical data" - q37_teMatShareUp(tall,all_regi,all_te,opmoPrc,mat) "Up Constraining the share of chemical fossil fuel technologies based on historical data" + q37_teMatShareLow(tall,all_regi,all_te,opmoPrc) "Low Constraining the share of chemical fossil fuel technologies based on historical data" + q37_teMatShareUp(tall,all_regi,all_te,opmoPrc) "Up Constraining the share of chemical fossil fuel technologies based on historical data" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index f080744e91..def3e134fd 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -457,30 +457,20 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' Output material production ***------------------------------------------------------ -q37_prodMatPrim(ttot,regi,mat)$(matPrimChem(mat)) .. - v37_matFlowPrim(ttot,regi,mat) - =e= - sum((tePrc, opmoPrc)$(tePrcPrim(tePrc, opmoPrc, mat)), vm_outflowPrc(ttot,regi,tePrc,opmoPrc)); -; - -***------------------------------------------------------ -*' Output material production -***------------------------------------------------------ - -q37_teMatShareLow(ttot,regi,tePrc,opmoPrc,mat)$(ttot.val gt 2020 - AND tePrcPrim(tePrc,opmoPrc,mat)) .. - sum(rlf,vm_deltaCap(ttot,regi,tePrc,rlf)) * v37_matFlowPrim(ttot-1,regi,mat) +q37_teMatShareLow(ttot,regi,tePrc,opmoPrc)$(ttot.val gt 2020 + AND tePrcPrim(tePrc,opmoPrc)) .. + vm_outflowPrc(ttot,regi,tePrc,opmoPrc) =g= - -0.3 - * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) + 0.7 + * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) ; -q37_teMatShareUp(ttot,regi,tePrc,opmoPrc,mat)$(ttot.val gt 2020 - AND tePrcPrim(tePrc,opmoPrc,mat)) .. - sum(rlf,vm_deltaCap(ttot,regi,tePrc,rlf)) * v37_matFlowPrim(ttot-1,regi,mat) +q37_teMatShareUp(ttot,regi,tePrc,opmoPrc)$(ttot.val gt 2020 + AND tePrcPrim(tePrc,opmoPrc)) .. + vm_outflowPrc(ttot,regi,tePrc,opmoPrc) =l= - 0.3 - * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc); + 1.3 + * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) ; ***------------------------------------------------------ diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index be142c0474..ea735ccabb 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -406,6 +406,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 MtOMtA + MtOMtAH2 FertProd FertProdH2 MeToFinal @@ -651,7 +652,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard StCrLiq . standard - MeSySol . (greyh2,greenh2) !! methanol tech QIANZHI + MeSySol . (standard,greenh2) !! methanol tech QIANZHI MeSyNG . standard MeSyLiq . standard MeSySolcc . standard @@ -667,7 +668,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyLiqcc . standard AmSyH2 . standard - MtOMtA . (standard,greenh2) + MtOMtA . standard + MtOMtAH2 . standard FertProd . standard FertProdH2 . standard MeToFinal . (standard,greenh2) @@ -683,30 +685,13 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrcFOopmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operation modes" - / -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - StCrNG . standard - StCrLiq . standard - MtOMtA . standard - - MeSySol . greyh2 !! methanol tech QIANZHI - MeSyNG . standard - MeSyLiq . standard - - AmSyCoal . standard !! ammonia tech QIANZHI - AmSyNG . standard - AmSyLiq . standard -$endif.cm_subsec_model_chemicals - / - tePrc2matIn(all_te,opmoPrc,mat) "Mapping of technologies onto input materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" FertProd . standard . ammonia FertProdH2 . standard . ammoniaH2 MtOMtA . standard . methanol - MtOMtA . greenh2 . methanolH2 + MtOMtAH2 . standard . methanolH2 MeToFinal . standard . methanol MeToFinal . greenh2 . methanolH2 AmToFinal . standard . ammonia @@ -733,17 +718,18 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard . HVC StCrLiq . standard . HVC - MeSySol . (greyh2,greenh2) . methanol + MeSySol . (standard,greenh2) . methanol MeSyNG . standard . methanol MeSyLiq . standard . methanol - MeSyH2 . standard . methanol + MeSyH2 . standard . methanolH2 AmSyCoal . standard . ammonia AmSyNG . standard . ammonia AmSyLiq . standard . ammonia AmSyH2 . standard . ammoniaH2 - MtOMtA . (standard,greenh2) . HVC + MtOMtA . standard . HVC + MtOMtAH2 . standard . HVC FertProd . standard . Fertilizer FertProdH2 . standard . Fertilizer MeToFinal . (standard,greenh2) . MethFinal @@ -758,21 +744,21 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrcPrim(all_te,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" +tePrcPrim(all_te,opmoPrc) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - StCrNG . standard . HVC - StCrLiq . standard . HVC - MTOMTA . standard . HVC + StCrNG . standard + StCrLiq . standard + MTOMTA . standard - MeSySol . standard . methanol - MeSyNG . standard . methanol - MeSyLiq . standard . methanol + MeSySol . standard + MeSyNG . standard + MeSyLiq . standard - AmSyCoal . standard . ammonia - AmSyNG . standard . ammonia - AmSyLiq . standard . ammonia + AmSyCoal . standard + AmSyNG . standard + AmSyLiq . standard $endif.cm_subsec_model_chemicals / @@ -787,7 +773,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrNG . standard . ue_chemicals StCrLiq . standard . ue_chemicals - MeSySol . (greyh2,greenh2) . ue_chemicals !! methanol tech QIANZHI + MeSySol . (standard,greenh2) . ue_chemicals !! methanol tech QIANZHI MeSySolcc . standard . ue_chemicals MeSyNG . standard . ue_chemicals (MeSyLiq,MeSyLiqcc) . standard . ue_chemicals @@ -798,7 +784,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" (AmSyLiq,AmSyLiqcc) . standard . ue_chemicals AmSyH2 . standard . ue_chemicals - MtOMtA . (standard,greenh2) . ue_chemicals + MtOMtA . standard . ue_chemicals + MtOMtAH2 . standard . ue_chemicals FertProd . standard . ue_chemicals FertProdH2 . standard . ue_chemicals MeToFinal . (standard,greenh2) . ue_chemicals @@ -843,8 +830,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" StCrLiq . standard . StCrLiq_Ro MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI - MeSySol . greyh2 . MeSyRo_Sol - MeSySol . greyh2 . MeSyRo_Sol_ccs + MeSySol . standard . MeSyRo_Sol + MeSySol . standard . MeSyRo_Sol_ccs MeSyNG . standard . MeSyRo_NG MeSyNG . standard . MeSyRo_NG_ccs MeSyLiq . standard . MeSyRo_Liq @@ -866,7 +853,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmSyH2 . standard . AmSyRo_H2 MtOMtA . standard . MtOMtA_Ro - MtOMtA . greenh2 . MtOMtAH2_Ro + MtOMtAH2 . standard . MtOMtAH2_Ro FertProd . standard . FertProd_Ro FertProdH2 . standard . FertProdH2_Ro MeToFinal . standard . MeToFinal_Ro @@ -933,6 +920,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" entydummy.entydummy.AmSyH2 entydummy.entydummy.MtOMtA + entydummy.entydummy.MtOMtAH2 entydummy.entydummy.FertProd entydummy.entydummy.FertProdH2 entydummy.entydummy.MeToFinal @@ -976,6 +964,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . AmSyH2 chemicals . MtOMtA + chemicals . MtOMtAH2 chemicals . FertProd chemicals . FertProdH2 chemicals . MeToFinal From a734c25af9c7b05d30e3c80a72763a3d3055e8d1 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 6 Mar 2025 10:28:35 +0100 Subject: [PATCH 36/69] implement restricted share changes --- main.gms | 5 +++ modules/37_industry/subsectors/bounds.gms | 3 ++ .../37_industry/subsectors/declarations.gms | 4 +- modules/37_industry/subsectors/equations.gms | 42 ++++++++++++------- modules/37_industry/subsectors/sets.gms | 22 +++++----- 5 files changed, 47 insertions(+), 29 deletions(-) diff --git a/main.gms b/main.gms index 6447b70e3a..ea3a0c4b3e 100755 --- a/main.gms +++ b/main.gms @@ -1177,6 +1177,11 @@ parameter cm_wastelag "switch to decide whether waste from plastics lags ten years behind plastics production" ; cm_wastelag = 0; !! def = 0 no waste lag !! regexp = 1|0 +parameter + cm_maxIndPrcShareChange "Max change of share of certain industry processes between time steps" +; + cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between timem steps +*' *' *' *' diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 033a5aa01b..97a207835e 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -170,4 +170,7 @@ loop ((ue_industry_dyn37(in),regi_groupExt(regi_fxDem37(ext_regi),regi)), ); $endif.fixedUE_scenario +v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcFixedShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; +v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcFixedShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; + *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 78eceef825..562dd9c34a 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -106,6 +106,7 @@ Positive Variables v37_emiPrc(tall,all_regi,all_enty,all_te,opmoPrc) "Emissions per process and operation mode [GtC/a]" v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" + v37_matShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Change of share of processes with rectricted relative share change" ; Variables @@ -148,8 +149,7 @@ $endif.no_calibration q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" - q37_teMatShareLow(tall,all_regi,all_te,opmoPrc) "Low Constraining the share of chemical fossil fuel technologies based on historical data" - q37_teMatShareUp(tall,all_regi,all_te,opmoPrc) "Up Constraining the share of chemical fossil fuel technologies based on historical data" + q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc) "Low Constraining the share of chemical fossil fuel technologies based on historical data" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index def3e134fd..be7d194fc3 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -240,7 +240,7 @@ q37_demFeFeedstockChemIndst(t,regi,entyFe,emiMkt) .. * vm_outflowPrc(t,regi,tePrc,opmoPrc) ) ) - * p37_chemicals_feedstock_share(t,regi) + * p37_chemicals_feedstock_share(t,regi) )$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) ; @@ -454,29 +454,39 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. ; ***------------------------------------------------------ -*' Output material production +*' Restrict share change of certain technology paths +*' Structure of the equation: +*' - define share s_i(t) = a_i(t) / sum_i a_i(t) +*' - abs( s_i(t) - s_i(t-1) ) < max_change +*' Changes to avoid division by zero: +*' 1. replace by +*' s_i(t) - s_i(t-1) = change, with +*' change.low = -max_change and change.up = max_change +*' 2. multiply both sides with sum_i a_i(t) * sum_i a_i(t-1) ***------------------------------------------------------ -q37_teMatShareLow(ttot,regi,tePrc,opmoPrc)$(ttot.val gt 2020 - AND tePrcPrim(tePrc,opmoPrc)) .. - vm_outflowPrc(ttot,regi,tePrc,opmoPrc) - =g= - 0.7 - * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) +q37_restrictMatShareChange(t,regi,tePrc,opmoPrc,mat)$( t.val gt 2020 + AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. + vm_outflowPrc(t,regi,tePrc,opmoPrc) + * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), + vm_outflowPrc(t-1,regi,tePrc2,opmoPrc2)) + - + vm_outflowPrc(t-1,regi,tePrc,opmoPrc) + * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), + vm_outflowPrc(t,regi,tePrc2,opmoPrc2)) +=e= + v37_matShareChange(t,regi,tePrc,opmoPrc,mat) + * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), + vm_outflowPrc(t,regi,tePrc2,opmoPrc2)) + * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), + vm_outflowPrc(t-1,regi,tePrc2,opmoPrc2)) ; -q37_teMatShareUp(ttot,regi,tePrc,opmoPrc)$(ttot.val gt 2020 - AND tePrcPrim(tePrc,opmoPrc)) .. - vm_outflowPrc(ttot,regi,tePrc,opmoPrc) - =l= - 1.3 - * vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) -; ***------------------------------------------------------ *' Hand-over to CES ***------------------------------------------------------ -q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. +q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) * p37_ue_share(t,regi,mat,in) diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index ea735ccabb..f1171065a2 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -744,21 +744,21 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -tePrcPrim(all_te,opmoPrc) "Mapping of industry process technologies onto their output materials" +tePrcStiffShare(all_te,opmoPrc,all_enty) "Industry process technologies with restricted change of relative shares" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - StCrNG . standard - StCrLiq . standard - MTOMTA . standard + StCrNG . standard . HVC + StCrLiq . standard . HVC + MTOMTA . standard . HVC - MeSySol . standard - MeSyNG . standard - MeSyLiq . standard + MeSySol . standard . methanol + MeSyNG . standard . methanol + MeSyLiq . standard . methanol - AmSyCoal . standard - AmSyNG . standard - AmSyLiq . standard + AmSyCoal . standard . ammonia + AmSyNG . standard . ammonia + AmSyLiq . standard . ammonia $endif.cm_subsec_model_chemicals / @@ -969,7 +969,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" chemicals . FertProdH2 chemicals . MeToFinal chemicals . AmToFinal - + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" steel . idr From bf8f8dcdfa463aa0273957e1653ad2cd518ec0ea Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Fri, 7 Mar 2025 13:42:28 +0100 Subject: [PATCH 37/69] fix bugs --- modules/37_industry/subsectors/bounds.gms | 4 ++-- .../37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 18 +++++++++--------- 3 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 97a207835e..93e942d907 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -170,7 +170,7 @@ loop ((ue_industry_dyn37(in),regi_groupExt(regi_fxDem37(ext_regi),regi)), ); $endif.fixedUE_scenario -v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcFixedShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; -v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcFixedShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; +v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; +v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 562dd9c34a..87542d0c4a 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -149,7 +149,7 @@ $endif.no_calibration q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" - q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc) "Low Constraining the share of chemical fossil fuel technologies based on historical data" + q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Low Constraining the share of chemical fossil fuel technologies based on historical data" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index be7d194fc3..f932c04a7d 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -465,21 +465,21 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' 2. multiply both sides with sum_i a_i(t) * sum_i a_i(t-1) ***------------------------------------------------------ -q37_restrictMatShareChange(t,regi,tePrc,opmoPrc,mat)$( t.val gt 2020 - AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. - vm_outflowPrc(t,regi,tePrc,opmoPrc) +q37_restrictMatShareChange(ttot,regi,tePrc,opmoPrc,mat)$( ttot.val gt 2020 + AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. + vm_outflowPrc(ttot,regi,tePrc,opmoPrc) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t-1,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot-1,regi,tePrc2,opmoPrc2)) - - vm_outflowPrc(t-1,regi,tePrc,opmoPrc) + vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot,regi,tePrc2,opmoPrc2)) =e= - v37_matShareChange(t,regi,tePrc,opmoPrc,mat) + v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot,regi,tePrc2,opmoPrc2)) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t-1,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot-1,regi,tePrc2,opmoPrc2)) ; From 42d428b769abbea5d7991143b878420f4f5b26e5 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sat, 8 Mar 2025 21:50:34 +0100 Subject: [PATCH 38/69] fix bug for the merge --- modules/37_industry/subsectors/bounds.gms | 4 ++-- modules/37_industry/subsectors/datainput.gms | 2 +- modules/37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 16 ++++++++-------- 4 files changed, 12 insertions(+), 12 deletions(-) diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 97a207835e..93e942d907 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -170,7 +170,7 @@ loop ((ue_industry_dyn37(in),regi_groupExt(regi_fxDem37(ext_regi),regi)), ); $endif.fixedUE_scenario -v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcFixedShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; -v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcFixedShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; +v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; +v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 6b93b3ea7d..577a32aeae 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -699,7 +699,7 @@ p37_specFeDemTarget("fehos","ChemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_ p37_specFeDemTarget("feh2s","ChemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","ChemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","StCrNG","standard") = 16.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 +p37_specFeDemTarget("fegas","StCrNG","standard") = 17.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 p37_specFeDemTarget("fehos","StCrNG","standard") = 5.83 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 562dd9c34a..bdd4ae6a5e 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -149,7 +149,7 @@ $endif.no_calibration q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" - q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc) "Low Constraining the share of chemical fossil fuel technologies based on historical data" + q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc,mat) "Low Constraining the share of chemical fossil fuel technologies based on historical data" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index be7d194fc3..33291fc0ca 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -465,21 +465,21 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' 2. multiply both sides with sum_i a_i(t) * sum_i a_i(t-1) ***------------------------------------------------------ -q37_restrictMatShareChange(t,regi,tePrc,opmoPrc,mat)$( t.val gt 2020 +q37_restrictMatShareChange(ttot,regi,tePrc,opmoPrc,mat)$( ttot.val gt 2020 AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. - vm_outflowPrc(t,regi,tePrc,opmoPrc) + vm_outflowPrc(ttot,regi,tePrc,opmoPrc) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t-1,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot-1,regi,tePrc2,opmoPrc2)) - - vm_outflowPrc(t-1,regi,tePrc,opmoPrc) + vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot,regi,tePrc2,opmoPrc2)) =e= - v37_matShareChange(t,regi,tePrc,opmoPrc,mat) + v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot,regi,tePrc2,opmoPrc2)) * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(t-1,regi,tePrc2,opmoPrc2)) + vm_outflowPrc(ttot-1,regi,tePrc2,opmoPrc2)) ; From 24b07166872a965db98322d995e7e1288f145e5d Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 10 Mar 2025 14:16:00 +0100 Subject: [PATCH 39/69] fix merge bug --- core/sets.gms | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/core/sets.gms b/core/sets.gms index 24b931a721..ffb0629002 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -433,6 +433,9 @@ all_enty "all types of quantities" entydummy "dummy FE for process based industry implementation" *** materials, feedstock, and industrial goods + + co2f "feedstock CO2" + *** chemicals OtherChem HVC @@ -908,7 +911,7 @@ iso_regi "all iso countries and EU and greater China region" / EUR,CHA, UGA,UKR,UMI,URY,USA,UZB,VAT,VCT,VEN,VGB, VIR,VNM,VUT,WLF,WSM,YEM,ZAF,ZMB,ZWE / - map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" + map_iso_regi(iso_regi,all_regi) "mapping from iso countries to regions that represent country" / EUR . EUR CHA . CHA From 1567235386b2409d1f505795405039ba0eb6aba9 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 10 Mar 2025 14:39:03 +0100 Subject: [PATCH 40/69] lower bounds to avoid zero Jacobians; not tested yet --- modules/37_industry/subsectors/bounds.gms | 1 + .../37_industry/subsectors/declarations.gms | 2 ++ modules/37_industry/subsectors/equations.gms | 26 ++++++++++--------- modules/37_industry/subsectors/sets.gms | 9 +++++++ 4 files changed, 26 insertions(+), 12 deletions(-) diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 869bd2e5c1..93169385a3 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -175,5 +175,6 @@ vm_demFeSector_afterTax.lo(t,regi,entySe,"fesos","indst",emiMkt)$(NOT sameAs(emi v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; +v37_sumOutflowPrcStiffShare.lo(t,regi,mat)$(t.val gt 2020 and matStiffShare(mat)) = sm_eps *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index c13e23d07f..3be3c463b7 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -110,6 +110,7 @@ Positive Variables v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" v37_matShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Change of share of processes with rectricted relative share change" + v37_sumOutflowPrcStiffShare(tall,all_regi,all_enty) "TODO" ; Variables @@ -156,6 +157,7 @@ $endif.no_calibration q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Low Constraining the share of chemical fossil fuel technologies based on historical data" + q37_sumMatShareChange(tall,all_regi,all_enty) "TODO" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 962a8b161c..bc4fe7945a 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -341,8 +341,8 @@ q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( ; *' sum non-fossil carbon from plastics that get incinerated with carbon capture -q37_nonFosPlastic_incinCC(t,regi,emiMkt).. - vm_nonFosPlastic_incinCC(t,regi,emiMkt) +q37_nonFosPlastic_incinCC(t,regi,emiMkt).. + vm_nonFosPlastic_incinCC(t,regi,emiMkt) =e= sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), @@ -368,7 +368,7 @@ q37_emiNonFosNonIncineratedPlastics(t,regi,emi,emiMkt).. *' calculate non-fossil carbon in non-plastic waste that does not get emitted to the atmosphere (i.e. is stored permanently) q37_nonFosNonPlasticNonEmitted(t,regi).. - vm_nonFosNonPlasticNonEmitted(t,regi) + vm_nonFosNonPlasticNonEmitted(t,regi) =e= sum((entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), se2fe(entySe,entyFe,te))$( entySeBio(entySe) OR entySeSyn(entySe) ), @@ -388,7 +388,7 @@ q37_emiNonPlasticWaste(t,regi,emi,emiMkt).. *' fossil carbon in non-plastic waste that gets emitted to the atmosphere v37_feedstocksCarbon(t,regi,entySe,entyFe,emiMkt2) * (1 - s37_plasticsShare) * cm_nonPlasticFeedstockEmiShare) *' non-fossil carbon in non-plastic waste that does not get emitted to the atmosphere (i.e. is stored permanently) - - vm_nonFosNonPlasticNonEmitted(t,regi) + - vm_nonFosNonPlasticNonEmitted(t,regi) )$( sameas(emi,"co2") AND sameas(emiMkt,"ES") ) ; @@ -482,20 +482,22 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. q37_restrictMatShareChange(ttot,regi,tePrc,opmoPrc,mat)$( ttot.val gt 2020 AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. vm_outflowPrc(ttot,regi,tePrc,opmoPrc) - * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(ttot-1,regi,tePrc2,opmoPrc2)) + * v37_sumOutflowPrcStiffShare(ttot-1,regi,mat) - vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) - * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(ttot,regi,tePrc2,opmoPrc2)) + * v37_sumOutflowPrcStiffShare(ttot,regi,mat) =e= v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat) - * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(ttot,regi,tePrc2,opmoPrc2)) - * sum((tePrc2,opmoPrc2)$(tePrcStiffShare(tePrc2,opmoPrc2,mat)), - vm_outflowPrc(ttot-1,regi,tePrc2,opmoPrc2)) + * v37_sumOutflowPrcStiffShare(ttot,regi,mat) + * v37_sumOutflowPrcStiffShare(ttot-1,regi,mat) ; +q37_sumMatShareChange(t,regi,mat)$(t.val gt 2020 and matStiffShare(mat)) .. + v37_sumOutflowPrcStiffShare(t,regi,mat) +=e= + sum((tePrc,opmoPrc)$(tePrcStiffShare(tePrc,opmoPrc,mat)), + vm_outflowPrc(t,regi,tePrc,opmoPrc)) +; ***------------------------------------------------------ *' Hand-over to CES diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index f1171065a2..b19eb1f96c 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -744,6 +744,15 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / +matStiffShare(all_enty) "Materials with restricted change of relative process volume shares" + / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + HVC + methanol + ammonia +$endif.cm_subsec_model_chemicals + / + tePrcStiffShare(all_te,opmoPrc,all_enty) "Industry process technologies with restricted change of relative shares" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" From 7f47d1df15ac459e0b8507fa1eb7fde85f9247d6 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Tue, 11 Mar 2025 21:56:32 +0100 Subject: [PATCH 41/69] Still have error, saved for fix --- modules/37_industry/subsectors/bounds.gms | 2 +- modules/37_industry/subsectors/datainput.gms | 30 ++++++++++++------- .../37_industry/subsectors/declarations.gms | 3 +- modules/37_industry/subsectors/equations.gms | 20 +++---------- 4 files changed, 25 insertions(+), 30 deletions(-) diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 93169385a3..00501759ef 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -175,6 +175,6 @@ vm_demFeSector_afterTax.lo(t,regi,entySe,"fesos","indst",emiMkt)$(NOT sameAs(emi v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; -v37_sumOutflowPrcStiffShare.lo(t,regi,mat)$(t.val gt 2020 and matStiffShare(mat)) = sm_eps +v37_sumOutflowPrcStiffShare.lo(t,regi,mat)$(t.val gt 2020 and matStiffShare(mat)) = sm_eps; *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 577a32aeae..85c45c9020 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -865,24 +865,32 @@ $offdelim ; $endif.cm_subsec_model_chemicals -p37_mat2ue(all_enty,all_in) = 0.; +!!p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +Parameter + p37_mat2ue(tall,all_regi,all_enty,all_in) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChemical_Mat2Ue.cs4r"; +$offdelim + / +; !! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt !! So this is the price of material in trn$2017/Gt = $2017/kg !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. !!TODO QIanzhi: Change to 2017$ -p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ -p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average -p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average -p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average -p37_mat2ue("OtherChem","ue_chemicals") = 1.; +!!p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ +!!p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +!!p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +!!p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue(t,all_regi,"OtherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_mat2ue("sesteel","ue_steel_secondary") = 1.; -p37_mat2ue("prsteel","ue_steel_primary") = 1.; +p37_mat2ue(t,all_regi,"sesteel","ue_steel_secondary") = 1.; +p37_mat2ue(t,all_regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel !! HOT FIX @@ -904,7 +912,7 @@ pm_outflowPrcHist("2020",regi,"MeToFinal","standard") p37_ueHistTmp("2020",regi) = sum((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in))$(sameas("ue_chemicals",in)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) - * p37_mat2ue(mat,in) + * p37_mat2ue("2020",regi,mat,in) ); pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)) @@ -929,7 +937,7 @@ sum(tePrc2matOut(tePrc,opmoPrc,mat), ; !! 4. Calc ue_share p37_ue_share(t,regi,mat,in)$(mat2ue(mat,in) AND sameas(in,"ue_chemicals") AND t.val le 2020) = - (p37_mat2ue(mat,in) * p37_matFlowHist(t,regi,mat)) + (p37_mat2ue(t,regi,mat,in) * p37_matFlowHist(t,regi,mat)) / pm_cesdata(t,regi,in,"quantity"); ; p37_ue_share(t,regi,mat,in)$(t.val gt 2020) = p37_ue_share("2020",regi,mat,in); @@ -1041,7 +1049,7 @@ if (cm_startyear eq 2005, !! 2nd stage tech loop(mat2ue(mat,in)$(NOT sameas(in,"ue_chemicals")), - p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(t,regi,mat,in); + p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(t,regi,mat,in) * p37_ue_share(t,regi,mat,in); loop(tePrc2matOut(tePrc,opmoPrc,mat), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) = p37_matFlowHist(t,regi,mat) * p37_teMatShareHist(regi,tePrc,opmoPrc,mat); ); diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 3be3c463b7..3b1b98d9b8 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -33,7 +33,7 @@ Parameters p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" p37_matFlowHist(tall,all_regi,all_enty) "TODO" p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" - p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" + p37_mat2ue(tall,all_regi,all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ueHistTmp(tall,all_regi) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" @@ -157,7 +157,6 @@ $endif.no_calibration q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Low Constraining the share of chemical fossil fuel technologies based on historical data" - q37_sumMatShareChange(tall,all_regi,all_enty) "TODO" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index bc4fe7945a..8ab296924c 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -481,22 +481,10 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. q37_restrictMatShareChange(ttot,regi,tePrc,opmoPrc,mat)$( ttot.val gt 2020 AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. - vm_outflowPrc(ttot,regi,tePrc,opmoPrc) - * v37_sumOutflowPrcStiffShare(ttot-1,regi,mat) - - - vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) - * v37_sumOutflowPrcStiffShare(ttot,regi,mat) + (vm_outflowPrc(ttot,regi,tePrc,opmoPrc)+p_adj_seed_te(ttot,regi,tePrc)) =e= - v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat) - * v37_sumOutflowPrcStiffShare(ttot,regi,mat) - * v37_sumOutflowPrcStiffShare(ttot-1,regi,mat) -; - -q37_sumMatShareChange(t,regi,mat)$(t.val gt 2020 and matStiffShare(mat)) .. - v37_sumOutflowPrcStiffShare(t,regi,mat) -=e= - sum((tePrc,opmoPrc)$(tePrcStiffShare(tePrc,opmoPrc,mat)), - vm_outflowPrc(t,regi,tePrc,opmoPrc)) + (1 + v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat)) + * (vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc)+p_adj_seed_te(ttot-1,regi,tePrc)) ; ***------------------------------------------------------ @@ -508,7 +496,7 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. * p37_ue_share(t,regi,mat,in) =e= sum(mat2ue(mat,in), - p37_mat2ue(mat,in) + p37_mat2ue(t,regi,mat,in) * v37_matFlow(t,regi,mat) ) From a2727d4de78cad73cba81928650caef1bc90c613 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Wed, 12 Mar 2025 08:31:38 +0100 Subject: [PATCH 42/69] delete time and region depended mat2ue --- modules/37_industry/subsectors/datainput.gms | 31 +++++++------------ .../37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 2 +- 3 files changed, 14 insertions(+), 21 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 85c45c9020..f15dc39111 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -865,32 +865,25 @@ $offdelim ; $endif.cm_subsec_model_chemicals -!!p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; +p37_mat2ue(all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -Parameter - p37_mat2ue(tall,all_regi,all_enty,all_in) "TODO" - / -$ondelim -$include "./modules/37_industry/subsectors/input/p37_AllChemical_Mat2Ue.cs4r"; -$offdelim - / -; + !! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt !! So this is the price of material in trn$2017/Gt = $2017/kg !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. !!TODO QIanzhi: Change to 2017$ -!!p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ -!!p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average -!!p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average -!!p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average -p37_mat2ue(t,all_regi,"OtherChem","ue_chemicals") = 1.; +p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ +p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue("OtherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_mat2ue(t,all_regi,"sesteel","ue_steel_secondary") = 1.; -p37_mat2ue(t,all_regi,"prsteel","ue_steel_primary") = 1.; +p37_mat2ue("sesteel","ue_steel_secondary") = 1.; +p37_mat2ue("prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel !! HOT FIX @@ -912,7 +905,7 @@ pm_outflowPrcHist("2020",regi,"MeToFinal","standard") p37_ueHistTmp("2020",regi) = sum((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in))$(sameas("ue_chemicals",in)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) - * p37_mat2ue("2020",regi,mat,in) + * p37_mat2ue(mat,in) ); pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)) @@ -937,7 +930,7 @@ sum(tePrc2matOut(tePrc,opmoPrc,mat), ; !! 4. Calc ue_share p37_ue_share(t,regi,mat,in)$(mat2ue(mat,in) AND sameas(in,"ue_chemicals") AND t.val le 2020) = - (p37_mat2ue(t,regi,mat,in) * p37_matFlowHist(t,regi,mat)) + (p37_mat2ue(mat,in) * p37_matFlowHist(t,regi,mat)) / pm_cesdata(t,regi,in,"quantity"); ; p37_ue_share(t,regi,mat,in)$(t.val gt 2020) = p37_ue_share("2020",regi,mat,in); @@ -1049,7 +1042,7 @@ if (cm_startyear eq 2005, !! 2nd stage tech loop(mat2ue(mat,in)$(NOT sameas(in,"ue_chemicals")), - p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(t,regi,mat,in) * p37_ue_share(t,regi,mat,in); + p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(t,regi,mat,in); loop(tePrc2matOut(tePrc,opmoPrc,mat), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) = p37_matFlowHist(t,regi,mat) * p37_teMatShareHist(regi,tePrc,opmoPrc,mat); ); diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 3b1b98d9b8..a2eb0e08da 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -33,7 +33,7 @@ Parameters p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" p37_matFlowHist(tall,all_regi,all_enty) "TODO" p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" - p37_mat2ue(tall,all_regi,all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" + p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ueHistTmp(tall,all_regi) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 8ab296924c..a1596219a2 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -496,7 +496,7 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. * p37_ue_share(t,regi,mat,in) =e= sum(mat2ue(mat,in), - p37_mat2ue(t,regi,mat,in) + p37_mat2ue(mat,in) * v37_matFlow(t,regi,mat) ) From a2e94332121d326bc4ed8475e421aaec0624bb5f Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sat, 15 Mar 2025 22:39:16 +0100 Subject: [PATCH 43/69] fix bug on co2f input and implement p37_mat2ue(t,regi,mat,in) --- core/datainput.gms | 18 +++++----- main.gms | 2 +- modules/37_industry/subsectors/datainput.gms | 35 ++++++++++++------- .../37_industry/subsectors/declarations.gms | 2 +- modules/37_industry/subsectors/equations.gms | 2 +- modules/37_industry/subsectors/sets.gms | 2 ++ 6 files changed, 37 insertions(+), 24 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index e4a1e3f985..93c836cd28 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1304,23 +1304,23 @@ loop(ttot$(ttot.val ge 2005), $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! p_adj_seed_te(ttot,regi,"ChemElec") = 0.50; !! p_adj_seed_te(ttot,regi,"ChemH2") = 0.25; - p_adj_seed_te(ttot,regi,"MeSySol") = 0.001; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNG") = 0.001; - p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.001; + p_adj_seed_te(ttot,regi,"MeSySol") = 0.0001; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNG") = 0.0001; + p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.0001; !! p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI !! p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; !! p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; !! p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.001; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNG") = 0.001; - p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.001; + p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.0001; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNG") = 0.0001; + p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.0001; !! p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI !! p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; !! p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; !! p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; - p_adj_seed_te(ttot,regi,"StCrLiq") = 0.001; - p_adj_seed_te(ttot,regi,"StCrNG") = 0.001; - p_adj_seed_te(ttot,regi,"MTOMTA") = 0.001; + p_adj_seed_te(ttot,regi,"StCrLiq") = 0.0001; + p_adj_seed_te(ttot,regi,"StCrNG") = 0.0001; + p_adj_seed_te(ttot,regi,"MTOMTA") = 0.0001; !! p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/main.gms b/main.gms index 4c87ca1340..868aeb3b33 100755 --- a/main.gms +++ b/main.gms @@ -1185,7 +1185,7 @@ parameter parameter cm_maxIndPrcShareChange "Max change of share of certain industry processes between time steps" ; - cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between timem steps + cm_maxIndPrcShareChange = 0.3; !! def 0.05 = 5 percent points change between timem steps *' *' *' diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index f15dc39111..65f620e546 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -827,7 +827,7 @@ Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; loop(t$(t.val > 2020), loop(all_regi, p37_priceMat(t,all_regi,"naphtha") = -0.4 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); - p37_priceMat(t,all_regi,"co2f") = 10 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 + !!p37_priceMat(t,all_regi,"co2f") = 10 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 ); ); $endif.cm_subsec_model_chemicals @@ -865,8 +865,19 @@ $offdelim ; $endif.cm_subsec_model_chemicals -p37_mat2ue(all_enty,all_in) = 0.; +!!p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +Parameter + p37_mat2ue(tall,all_regi,all_enty,all_in) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_AllChemical_Mat2Ue.cs4r"; +$offdelim + / +; + +p37_mat2ue(t,regi,mat,in)$(t.val lt 2020) = p37_mat2ue("2020",regi,mat,in); +p37_mat2ue(t,regi,mat,in)$(t.val gt 2050) = p37_mat2ue("2050",regi,mat,in); !! ue_chemicals is measured in value_added (trn$2017), whilst material is measured in Gt !! So this is the price of material in trn$2017/Gt = $2017/kg @@ -874,16 +885,16 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. !!TODO QIanzhi: Change to 2017$ -p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ -p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average -p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average -p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average -p37_mat2ue("OtherChem","ue_chemicals") = 1.; +!!p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ +!!p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +!!p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +!!p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue(t,all_regi,"OtherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p37_mat2ue("sesteel","ue_steel_secondary") = 1.; -p37_mat2ue("prsteel","ue_steel_primary") = 1.; +p37_mat2ue(t,all_regi,"sesteel","ue_steel_secondary") = 1.; +p37_mat2ue(t,all_regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel !! HOT FIX @@ -905,7 +916,7 @@ pm_outflowPrcHist("2020",regi,"MeToFinal","standard") p37_ueHistTmp("2020",regi) = sum((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in))$(sameas("ue_chemicals",in)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) - * p37_mat2ue(mat,in) + * p37_mat2ue("2020",regi,mat,in) ); pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)) @@ -930,7 +941,7 @@ sum(tePrc2matOut(tePrc,opmoPrc,mat), ; !! 4. Calc ue_share p37_ue_share(t,regi,mat,in)$(mat2ue(mat,in) AND sameas(in,"ue_chemicals") AND t.val le 2020) = - (p37_mat2ue(mat,in) * p37_matFlowHist(t,regi,mat)) + (p37_mat2ue(t,regi,mat,in) * p37_matFlowHist(t,regi,mat)) / pm_cesdata(t,regi,in,"quantity"); ; p37_ue_share(t,regi,mat,in)$(t.val gt 2020) = p37_ue_share("2020",regi,mat,in); @@ -1042,7 +1053,7 @@ if (cm_startyear eq 2005, !! 2nd stage tech loop(mat2ue(mat,in)$(NOT sameas(in,"ue_chemicals")), - p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(t,regi,mat,in); + p37_matFlowHist(t,regi,mat) = pm_fedemand(t,regi,in) / p37_mat2ue(t,regi,mat,in) * p37_ue_share(t,regi,mat,in); loop(tePrc2matOut(tePrc,opmoPrc,mat), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) = p37_matFlowHist(t,regi,mat) * p37_teMatShareHist(regi,tePrc,opmoPrc,mat); ); diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index a2eb0e08da..3b1b98d9b8 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -33,7 +33,7 @@ Parameters p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" p37_matFlowHist(tall,all_regi,all_enty) "TODO" p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" - p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" + p37_mat2ue(tall,all_regi,all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ueHistTmp(tall,all_regi) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index a1596219a2..8ab296924c 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -496,7 +496,7 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. * p37_ue_share(t,regi,mat,in) =e= sum(mat2ue(mat,in), - p37_mat2ue(mat,in) + p37_mat2ue(t,regi,mat,in) * v37_matFlow(t,regi,mat) ) diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index b19eb1f96c..064c276473 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -697,6 +697,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" AmToFinal . standard . ammonia AmToFinal . greenh2 . ammoniaH2 + MeSyH2 . standard . co2f + FertProdH2 . standard . co2f StCrLiq . standard . naphtha $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" From 3de9332f5720d44b10ea6a1aa5e57c788000dc35 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sat, 15 Mar 2025 22:44:18 +0100 Subject: [PATCH 44/69] The constraints of share change --- modules/37_industry/subsectors/declarations.gms | 1 + modules/37_industry/subsectors/equations.gms | 14 +++++++++++--- 2 files changed, 12 insertions(+), 3 deletions(-) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 3b1b98d9b8..f2d7cbe065 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -35,6 +35,7 @@ Parameters p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" p37_mat2ue(tall,all_regi,all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ueHistTmp(tall,all_regi) "TODO" + p37_chemflow(tall,all_regi,all_enty) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 8ab296924c..32174f78a3 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -479,12 +479,20 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' 2. multiply both sides with sum_i a_i(t) * sum_i a_i(t-1) ***------------------------------------------------------ +p37_chemflow(t,regi,mat)$(sum((tePrc,opmoPrc), tePrcStiffShare(tePrc,opmoPrc,mat))) + = pm_cesdata(t,regi,"ue_chemicals","quantity") + * p37_ue_share(t,regi,mat,"ue_chemicals") + / (p37_mat2ue(t,regi,mat,"ue_chemicals") + sm_eps); + q37_restrictMatShareChange(ttot,regi,tePrc,opmoPrc,mat)$( ttot.val gt 2020 AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. - (vm_outflowPrc(ttot,regi,tePrc,opmoPrc)+p_adj_seed_te(ttot,regi,tePrc)) + vm_outflowPrc(ttot,regi,tePrc,opmoPrc) * p37_chemflow(ttot-1,regi,mat) + - + vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) * p37_chemflow(ttot,regi,mat) =e= - (1 + v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat)) - * (vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc)+p_adj_seed_te(ttot-1,regi,tePrc)) + v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat) + * p37_chemflow(ttot,regi,mat) + * p37_chemflow(ttot-1,regi,mat) ; ***------------------------------------------------------ From ac6bf201cb45fb83eb953e5653bb9214c4822ff8 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Mon, 17 Mar 2025 14:52:31 +0100 Subject: [PATCH 45/69] fix or small change of Chemcials Process Historical Share --- main.gms | 2 +- modules/37_industry/subsectors/bounds.gms | 1 - .../37_industry/subsectors/declarations.gms | 5 +++-- modules/37_industry/subsectors/equations.gms | 21 ++++++++----------- 4 files changed, 13 insertions(+), 16 deletions(-) diff --git a/main.gms b/main.gms index 868aeb3b33..4c87ca1340 100755 --- a/main.gms +++ b/main.gms @@ -1185,7 +1185,7 @@ parameter parameter cm_maxIndPrcShareChange "Max change of share of certain industry processes between time steps" ; - cm_maxIndPrcShareChange = 0.3; !! def 0.05 = 5 percent points change between timem steps + cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between timem steps *' *' *' diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 00501759ef..869bd2e5c1 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -175,6 +175,5 @@ vm_demFeSector_afterTax.lo(t,regi,entySe,"fesos","indst",emiMkt)$(NOT sameAs(emi v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; -v37_sumOutflowPrcStiffShare.lo(t,regi,mat)$(t.val gt 2020 and matStiffShare(mat)) = sm_eps; *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index f2d7cbe065..a8dbee1c9f 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -35,7 +35,6 @@ Parameters p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" p37_mat2ue(tall,all_regi,all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ueHistTmp(tall,all_regi) "TODO" - p37_chemflow(tall,all_regi,all_enty) "TODO" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" @@ -111,7 +110,8 @@ Positive Variables v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" v37_matShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Change of share of processes with rectricted relative share change" - v37_sumOutflowPrcStiffShare(tall,all_regi,all_enty) "TODO" + v37_chemflow(tall,all_regi,all_enty) "TODO" + ; Variables @@ -158,6 +158,7 @@ $endif.no_calibration q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Low Constraining the share of chemical fossil fuel technologies based on historical data" + q37_chemflow(tall,all_regi,all_enty) "TODO" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 32174f78a3..9449cbd413 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -478,21 +478,18 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' change.low = -max_change and change.up = max_change *' 2. multiply both sides with sum_i a_i(t) * sum_i a_i(t-1) ***------------------------------------------------------ +q37_chemflow(t,regi,mat)$(sum((tePrc,opmoPrc), tePrcStiffShare(tePrc,opmoPrc,mat))) .. + v37_chemflow(t,regi,mat) +=e= + sum((tePrc, opmoPrc)$(tePrcStiffShare(tePrc, opmoPrc, mat)), vm_outflowPrc(t,regi,tePrc,opmoPrc)) +; -p37_chemflow(t,regi,mat)$(sum((tePrc,opmoPrc), tePrcStiffShare(tePrc,opmoPrc,mat))) - = pm_cesdata(t,regi,"ue_chemicals","quantity") - * p37_ue_share(t,regi,mat,"ue_chemicals") - / (p37_mat2ue(t,regi,mat,"ue_chemicals") + sm_eps); - -q37_restrictMatShareChange(ttot,regi,tePrc,opmoPrc,mat)$( ttot.val gt 2020 +q37_restrictMatShareChange(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 AND tePrcStiffShare(tePrc,opmoPrc,mat)) .. - vm_outflowPrc(ttot,regi,tePrc,opmoPrc) * p37_chemflow(ttot-1,regi,mat) - - - vm_outflowPrc(ttot-1,regi,tePrc,opmoPrc) * p37_chemflow(ttot,regi,mat) + vm_outflowPrc(t,regi,tePrc,opmoPrc) =e= - v37_matShareChange(ttot,regi,tePrc,opmoPrc,mat) - * p37_chemflow(ttot,regi,mat) - * p37_chemflow(ttot-1,regi,mat) + (p37_teMatShareHist(regi,tePrc,opmoPrc,mat)+ v37_matShareChange(t,regi,tePrc,opmoPrc,mat)) + * v37_chemflow(t,regi,mat) !! Try to use different opmoPrc ; ***------------------------------------------------------ From 969ba95f387bbacc77e7d2adb2927746b39167ab Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Tue, 18 Mar 2025 10:31:16 +0100 Subject: [PATCH 46/69] add new scenario in config file --- config/scenario_config.csv | 3 ++- main.gms | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/config/scenario_config.csv b/config/scenario_config.csv index 27e597aacd..3c5d5dc996 100644 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -6,7 +6,8 @@ SSP2-NDCsy2025;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;203 SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-PkBudg500;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-16_19.19.18_03_FixShare/fulldata.gdx;;output/SSP2-NPi2025_2025-03-16_19.19.18_03_FixShare/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650_005;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-17_09.06.46_03_FixShare_0.05/fulldata.gdx;;output/SSP2-NPi2025_2025-03-17_09.06.46_03_FixShare_0.05/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. SSP2-EcBudg400;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;300;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. SSP2-rollBack;1,AMT,2;;;;;;;;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. diff --git a/main.gms b/main.gms index 4c87ca1340..8446ba2223 100755 --- a/main.gms +++ b/main.gms @@ -1185,7 +1185,7 @@ parameter parameter cm_maxIndPrcShareChange "Max change of share of certain industry processes between time steps" ; - cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between timem steps + cm_maxIndPrcShareChange = 0.00; !! def 0.05 = 5 percent points change between timem steps *' *' *' From 775f90620f26824038c175b3d3050e247bf7683b Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Fri, 21 Mar 2025 08:28:07 +0100 Subject: [PATCH 47/69] fix tech-echo data on CCS tech --- config/scenario_config.csv | 2 +- core/datainput.gms | 34 ++++++++++---------- core/input/generisdata_tech.prn | 2 +- main.gms | 2 +- modules/37_industry/subsectors/datainput.gms | 13 ++++---- modules/37_industry/subsectors/postsolve.gms | 2 +- 6 files changed, 28 insertions(+), 27 deletions(-) diff --git a/config/scenario_config.csv b/config/scenario_config.csv index 3c5d5dc996..6a4fbae268 100644 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -6,7 +6,7 @@ SSP2-NDCsy2025;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;203 SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-PkBudg500;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-16_19.19.18_03_FixShare/fulldata.gdx;;output/SSP2-NPi2025_2025-03-16_19.19.18_03_FixShare/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2-PkBudg650_005;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-17_09.06.46_03_FixShare_0.05/fulldata.gdx;;output/SSP2-NPi2025_2025-03-17_09.06.46_03_FixShare_0.05/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. SSP2-EcBudg400;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;300;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. diff --git a/core/datainput.gms b/core/datainput.gms index 93c836cd28..f1a6e29042 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1307,21 +1307,21 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_seed_te(ttot,regi,"MeSySol") = 0.0001; !! methanol tech QIANZHI p_adj_seed_te(ttot,regi,"MeSyNG") = 0.0001; p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.0001; -!! p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI -!! p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; -!! p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; -!! p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; + p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI + p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; + p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; + p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.0001; !! ammonia tech QIANZHI p_adj_seed_te(ttot,regi,"AmSyNG") = 0.0001; p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.0001; -!! p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI -!! p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; -!! p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; -!! p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; + p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI + p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; + p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; + p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; p_adj_seed_te(ttot,regi,"StCrLiq") = 0.0001; p_adj_seed_te(ttot,regi,"StCrNG") = 0.0001; p_adj_seed_te(ttot,regi,"MTOMTA") = 0.0001; -!! p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; + p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1362,17 +1362,17 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !!p_adj_coeff(ttot,regi,"MeSySol") = 3.0; !! methanol tech QIANZHI !!p_adj_coeff(ttot,regi,"MeSyNG") = 3.0; !!p_adj_coeff(ttot,regi,"MeSyLiq") = 3.0; - !!p_adj_coeff(ttot,regi,"MeSySolcc") = 0.5; !! methanol tech QIANZHI - !!p_adj_coeff(ttot,regi,"MeSyNGcc") = 0.5; - !!p_adj_coeff(ttot,regi,"MeSyLiqcc") = 0.5; - !!p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; + p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI + p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; + p_adj_coeff(ttot,regi,"MeSyLiqcc") = 1.0; + p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; !!p_adj_coeff(ttot,regi,"AmSyCoal") = 3.0; !! ammonia tech QIANZHI !!p_adj_coeff(ttot,regi,"AmSyNG") = 3.0; !!p_adj_coeff(ttot,regi,"AmSyLiq") = 3.0; - !!p_adj_coeff(ttot,regi,"AmSyCoalcc") = 0.5; !! ammonia tech QIANZHI - !!p_adj_coeff(ttot,regi,"AmSyNGcc") = 0.5; - !!p_adj_coeff(ttot,regi,"AmSyLiqcc") = 0.5; - !!p_adj_coeff(ttot,regi,"AmSyH2") = 1.0; + p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI + p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; + p_adj_coeff(ttot,regi,"AmSyLiqcc") = 1.0; + p_adj_coeff(ttot,regi,"AmSyH2") = 0.5; !!p_adj_coeff(ttot,regi,"StCrLiq") = 3.0; !!p_adj_coeff(ttot,regi,"StCrNG") = 3.0; !!p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index d9b1d930d3..753f1ecc47 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -166,7 +166,7 @@ lifetime 30 30 30 30 30 + AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc !! documentation & sources: see below -inco0 300 200 300 300 200 300 +inco0 600 650 650 850 1000 850 omf 0.05 0.05 0.05 0.05 0.05 0.05 constrTme 1 1 1 1 1 1 lifetime 25 25 25 25 25 25 diff --git a/main.gms b/main.gms index 8446ba2223..4c87ca1340 100755 --- a/main.gms +++ b/main.gms @@ -1185,7 +1185,7 @@ parameter parameter cm_maxIndPrcShareChange "Max change of share of certain industry processes between time steps" ; - cm_maxIndPrcShareChange = 0.00; !! def 0.05 = 5 percent points change between timem steps + cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between timem steps *' *' *' diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 65f620e546..3a66c7e21f 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -719,12 +719,12 @@ p37_specFeDemTarget("feels","MeSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fehos","MeSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","MeSySolcc","standard") = 2.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","MeSySolcc","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("feels","MeSySolcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as MeSyNGcc +p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as MeSyNGcc p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen p37_specFeDemTarget("feels","MeSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen @@ -738,11 +738,11 @@ p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fehos","AmSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as AmSyNGcc +p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as AmSyNGcc p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 @@ -1165,6 +1165,7 @@ $endif.cm_subsec_model_chemicals if (cm_startyear gt 2005, Execute_Loadpoint "input_ref" pm_specFeDem = pm_specFeDem; + Execute_Loadpoint "input_ref" p37_teMatShareHist = p37_teMatShareHist; ); if (cm_startyear gt 2005, diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 2caa266400..f99de4c6ef 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -187,7 +187,7 @@ loop((tePrc1,opmoPrc1,tePrc2,opmoPrc2,mat,route)$( *** determine production and FE demand by route *** --------------------------------------------------------------------------- -loop((mat,route)$(matFin(mat)), +loop((mat,route)$(matOut(mat)), o37_ProdIndRoute(ttot,regi,mat,route) = sum((tePrc,opmoPrc)$( tePrc2matOut(tePrc,opmoPrc,mat) AND tePrc2route(tePrc,opmoPrc,route)), From c97ebaa0649ab9121184dd17d4d4ecaf8e3c5e9c Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sat, 22 Mar 2025 08:59:10 +0100 Subject: [PATCH 48/69] add early retire constrain --- config/scenario_config.csv | 3 +- .../37_industry/subsectors/declarations.gms | 1 + modules/37_industry/subsectors/equations.gms | 31 +++++++++++++------ 3 files changed, 24 insertions(+), 11 deletions(-) diff --git a/config/scenario_config.csv b/config/scenario_config.csv index 6a4fbae268..abf5c8770b 100644 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -7,8 +7,9 @@ SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;; SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-PkBudg500;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650_005;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-17_09.06.46_03_FixShare_0.05/fulldata.gdx;;output/SSP2-NPi2025_2025-03-17_09.06.46_03_FixShare_0.05/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650_005;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2-PkBudg1000_005;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. SSP2-EcBudg400;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;300;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. SSP2-rollBack;1,AMT,2;;;;;;;;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. # EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index a8dbee1c9f..e812c90a13 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -161,6 +161,7 @@ $endif.no_calibration q37_chemflow(tall,all_regi,all_enty) "TODO" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" + q37_limitCapMatHist(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" q37_emiCCPrc(tall,all_regi,emiInd37) "Captured emissions from CCS" q37_limitOutflowCCPrc(tall,all_regi,all_te) "Carbon capture processes can only capture as much co2 as the base process emits" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 9449cbd413..89aa1e7303 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -511,16 +511,27 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. ***------------------------------------------------------ *' Definition of capacity constraints ***------------------------------------------------------ -q37_limitCapMat(t,regi,tePrc) .. - sum(tePrc2opmoPrc(tePrc,opmoPrc), - vm_outflowPrc(t,regi,tePrc,opmoPrc) - ) - =l= - sum(teMat2rlf(tePrc,rlf), - vm_capFac(t,regi,tePrc) - * vm_cap(t,regi,tePrc,rlf) - ) -; +q37_limitCapMatHist(t,regi,tePrc)$(t.val le 2020) .. + sum(tePrc2opmoPrc(tePrc,opmoPrc), + vm_outflowPrc(t,regi,tePrc,opmoPrc) + ) + =l= + sum(teMat2rlf(tePrc,rlf), + vm_capFac(t,regi,tePrc) + * vm_cap(t,regi,tePrc,rlf) + ) + ; + + q37_limitCapMat(t,regi,tePrc)$(t.val gt 2020) .. + sum(tePrc2opmoPrc(tePrc,opmoPrc), + vm_outflowPrc(t,regi,tePrc,opmoPrc) + ) + =e= + sum(teMat2rlf(tePrc,rlf), + vm_capFac(t,regi,tePrc) + * vm_cap(t,regi,tePrc,rlf) + ) + ; ***------------------------------------------------------ *' Emission from process based industry sector (pre CC) From 6ccf02fa1fab7d9e55d0652dd4c5f03fd95aa346 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Tue, 1 Apr 2025 11:42:32 +0200 Subject: [PATCH 49/69] Manual merge with routeReport branch --- core/sets.gms | 68 ++++--- modules/37_industry/subsectors/datainput.gms | 4 +- modules/37_industry/subsectors/postsolve.gms | 50 ++++- modules/37_industry/subsectors/sets.gms | 195 ++++++++++++------- 4 files changed, 207 insertions(+), 110 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index 7bca089dce..611d5ba527 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -282,14 +282,9 @@ all_te "all energy technologies, including from modules" ChemOld ChemElec ChemH2 - ChemRo_Old - ChemRo_Elec - ChemRo_H2 StCrNG StCrLiq - StCrNG_Ro - StCrLiq_Ro MeSySol !! methanol tech QIANZHI MeSyNG @@ -298,14 +293,6 @@ all_te "all energy technologies, including from modules" MeSyNGcc MeSyLiqcc MeSyH2 - MeSyRo_Sol - MeSyRo_Sol_greenh2 - MeSyRo_Sol_ccs - MeSyRo_NG - MeSyRo_NG_ccs - MeSyRo_Liq - MeSyRo_Liq_ccs - MeSyRo_H2 AmSyCoal !! ammonia tech QIANZHI AmSyNG @@ -314,28 +301,53 @@ all_te "all energy technologies, including from modules" AmSyNGcc AmSyLiqcc AmSyH2 - AmSyRo_Coal - AmSyRo_NG - AmSyRo_Liq - AmSyRo_Coal_ccs - AmSyRo_NG_ccs - AmSyRo_Liq_ccs - AmSyRo_H2 MtOMtA MtOMtAH2 - MtOMtA_Ro - MtOMtAH2_Ro FertProd FertProdH2 - FertProd_Ro - FertProdH2_Ro MeToFinal - MeToFinal_Ro - MeToFinalH2_Ro AmToFinal - AmToFinal_Ro - AmToFinalH2_Ro + + otherChem_old + otherChem_elec + otherChem_h2 + + HVC_stCrLiq + HVC_stCrNg + HVC_meSol + HVC_meNg + HVC_meLiq + HVC_meSol_gh2 + HVC_meSol_cc + HVC_meNg_cc + HVC_meLiq_cc + HVC_meh2 + + fertilizer_amSol + fertilizer_amNg + fertilizer_amLiq + fertilizer_amLiq_cc + fertilizer_amNg_cc + fertilizer_amSol_cc + fertilizer_amh2 + + meFinal_sol + meFinal_ng + meFinal_liq + meFinal_sol_gh2 + meFinal_sol_cc + meFinal_ng_cc + meFinal_liq_cc + meFinal_h2 + + amFinal_sol + amFinal_ng + amFinal_liq + amFinal_sol_cc + amFinal_ng_cc + amFinal_liq_cc + amFinal_h2 *** technologies related to steel industry ironMine "Mining of iron ore" diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 3a66c7e21f..e521fe1c75 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -659,8 +659,8 @@ p37_specMatDem("methanolH2","MeToFinal","greenh2") = 1; p37_specMatDem("naphtha","StCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock -p37_specMatDem("co2f","FertProdH2","standard") = 1.52; -p37_specMatDem("co2f","MeSyH2","standard") = 1.373; +p37_specMatDem("co2f","FertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ +p37_specMatDem("co2f","MeSyH2","standard") = 0.375; !! 12/32 for CH₃OH $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index f99de4c6ef..4155e3c0cd 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -89,11 +89,11 @@ pm_IndstCO2Captured(ttot,regi,entySe,entyFe(entyFeCC37),secInd37,emiMkt)$( pm_NonFos_IndCC_fraction0(ttot,regi,emiInd37)$( sum(secInd37$secInd37_2_emiInd37(secInd37,emiInd37), (sum((entySe,entyFe,emiMkt), - pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt))))) - = sum(secInd37$secInd37_2_emiInd37(secInd37,emiInd37), - sum( (entySe,entyFe, emiMkt)$(NOT (entySeFos(entySe))), - pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt)) - / (sum((entySe,entyFe,emiMkt), + pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt))))) + = sum(secInd37$secInd37_2_emiInd37(secInd37,emiInd37), + sum( (entySe,entyFe, emiMkt)$(NOT (entySeFos(entySe))), + pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt)) + / (sum((entySe,entyFe,emiMkt), pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt)))) ; @@ -151,19 +151,51 @@ loop((tePrc,opmoPrc,teCCPrc,opmoCCPrc)$( !! init all to 1 o37_shareRoute(ttot,regi,tePrc,opmoPrc,route)$tePrc2route(tePrc,opmoPrc,route) = 1.; + + !! 1st stage with two second-stage processes + !! share = methanol * MtoMtA*specDem / (MtOMtA*specDem + MeToFinal*specDem) + !! - loop over first stage techs + !! - loop over second stage techs sharing a route + !! - for each route, share_route is outflowPrc of 2nd stage tech of that route divided by sum_routes(outflowPrc of 2nd stage tech of route) + !! (outFlowPrc always multiplied by specMatDem) + loop((tePrc1,opmoPrc1,tePrc2,opmoPrc2,mat,route)$( + tePrc2matIn(tePrc2,opmoPrc2,mat) + AND tePrc2matOut(tePrc1,opmoPrc1,mat) + AND tePrc2route(tePrc1,opmoPrc1,route) + AND tePrc2route(tePrc2,opmoPrc2,route)), + o37_shareRoute(ttot,regi,tePrc1,opmoPrc1,route) + = vm_outflowPrc.l(ttot,regi,tePrc2,opmoPrc2) + * p37_specMatDem(mat,tePrc2,opmoPrc2) + / max( + sum((route2,tePrc3,opmoPrc3)$( + tePrc2matIn(tePrc3,opmoPrc3,mat) + AND tePrc2matOut(tePrc1,opmoPrc1,mat) + AND tePrc2route(tePrc1,opmoPrc1,route2) + AND tePrc2route(tePrc3,opmoPrc3,route2) + AND (NOT routeCC(route2))), + vm_outflowPrc.l(ttot,regi,tePrc3,opmoPrc3) + * p37_specMatDem(mat,tePrc3,opmoPrc3) + ), + sm_eps + ) + ; + ); + + loop((tePrc,opmoPrc,teCCPrc,opmoCCPrc,route)$( tePrc2teCCPrc(tePrc,opmoPrc,teCCPrc,opmoCCPrc) AND tePrc2route(teCCPrc,opmoCCPrc,route)), !! share of first-stage tech with CCS o37_shareRoute(ttot,regi,tePrc,opmoPrc,route)$(sum(entyFe,v37_emiPrc.l(ttot,regi,entyFe,tePrc,opmoPrc)) gt 0.) - = v37_shareWithCC.l(ttot,regi,tePrc,opmoPrc); + = o37_shareRoute(ttot,regi,tePrc,opmoPrc,route) + * v37_shareWithCC.l(ttot,regi,tePrc,opmoPrc); !! share of first-stage tech without CCS - loop(route2$( tePrc2route(tePrc,opmoPrc,route2) - AND NOT tePrc2route(teCCPrc,opmoCCPrc,route2)), + loop(routeCC2baseRoute(route,route2), o37_shareRoute(ttot,regi,tePrc,opmoPrc,route2) - = 1. - v37_shareWithCC.l(ttot,regi,tePrc,opmoPrc); + = o37_shareRoute(ttot,regi,tePrc,opmoPrc,route2) + * (1. - v37_shareWithCC.l(ttot,regi,tePrc,opmoPrc)); ); ); diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 064c276473..087c90570d 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -575,38 +575,46 @@ $endif.cm_subsec_model_steel route(all_te) "Process routes; Currently only used for reporting" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemRo_Old - ChemRo_Elec - ChemRo_H2 - - StCrNG_Ro - StCrLiq_Ro - - MeSyRo_Sol !! methanol tech QIANZHI - MeSyRo_Sol_greenh2 - MeSyRo_NG - MeSyRo_Liq - MeSyRo_Sol_ccs - MeSyRo_NG_ccs - MeSyRo_Liq_ccs - MeSyRo_H2 - - AmSyRo_Coal !! ammonia tech QIANZHI - AmSyRo_NG - AmSyRo_Liq - AmSyRo_Coal_ccs - AmSyRo_NG_ccs - AmSyRo_Liq_ccs - AmSyRo_H2 - - MtOMtA_Ro - MtOMtAH2_Ro - FertProd_Ro - FertProdH2_Ro - MeToFinal_Ro - MeToFinalH2_Ro - AmToFinal_Ro - AmToFinalH2_Ro + + otherChem_old + otherChem_elec + otherChem_h2 + + HVC_stCrLiq + HVC_stCrNg + HVC_meSol + HVC_meNg + HVC_meLiq + HVC_meSol_gh2 + HVC_meSol_cc + HVC_meNg_cc + HVC_meLiq_cc + HVC_meh2 + + fertilizer_amSol + fertilizer_amNg + fertilizer_amLiq + fertilizer_amLiq_cc + fertilizer_amNg_cc + fertilizer_amSol_cc + fertilizer_amh2 + + meFinal_sol + meFinal_ng + meFinal_liq + meFinal_sol_gh2 + meFinal_sol_cc + meFinal_ng_cc + meFinal_liq_cc + meFinal_h2 + + amFinal_sol + amFinal_ng + amFinal_liq + amFinal_sol_cc + amFinal_ng_cc + amFinal_liq_cc + amFinal_h2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idreaf_ng @@ -833,44 +841,43 @@ $endif.cm_subsec_model_steel tePrc2route(all_te,opmoPrc,route) "Mapping of technologies onto the production routes they belong to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . ChemRo_Old - ChemElec . standard . ChemRo_Elec - ChemH2 . standard . ChemRo_H2 - - StCrNG . standard . StCrNG_Ro - StCrLiq . standard . StCrLiq_Ro - - MeSySol . greenh2 . MeSyRo_Sol_greenh2 !! methanol tech QIANZHI - MeSySol . standard . MeSyRo_Sol - MeSySol . standard . MeSyRo_Sol_ccs - MeSyNG . standard . MeSyRo_NG - MeSyNG . standard . MeSyRo_NG_ccs - MeSyLiq . standard . MeSyRo_Liq - MeSyLiq . standard . MeSyRo_Liq_ccs - MeSySolcc . standard . MeSyRo_Sol_ccs - MeSyNGcc . standard . MeSyRo_NG_ccs - MeSyLiqcc . standard . MeSyRo_Liq_ccs - MeSyH2 . standard . MeSyRo_H2 - - AmSyCoal . standard . AmSyRo_Coal !! ammonia tech QIANZHI - AmSyCoal . standard . AmSyRo_Coal_ccs - AmSyNG . standard . AmSyRo_NG - AmSyNG . standard . AmSyRo_NG_ccs - AmSyLiq . standard . AmSyRo_Liq - AmSyLiq . standard . AmSyRo_Liq_ccs - AmSyCoalcc . standard . AmSyRo_Coal_ccs - AmSyNGcc . standard . AmSyRo_NG_ccs - AmSyLiqcc . standard . AmSyRo_Liq_ccs - AmSyH2 . standard . AmSyRo_H2 - - MtOMtA . standard . MtOMtA_Ro - MtOMtAH2 . standard . MtOMtAH2_Ro - FertProd . standard . FertProd_Ro - FertProdH2 . standard . FertProdH2_Ro - MeToFinal . standard . MeToFinal_Ro - MeToFinal . greenh2 . MeToFinal_Ro - AmToFinal . standard . AmToFinal_Ro - AmToFinal . greenh2 . AmToFinalH2_Ro + + ChemOld . standard . otherChem_old + ChemElec . standard . otherChem_elec + ChemH2 . standard . otherChem_h2 + + StCrNG . standard . HVC_stCrLiq + StCrLiq . standard . HVC_stCrNg + + MeSySol . standard . (HVC_meSol, meFinal_sol, HVC_meSol_cc, meFinal_sol_cc) + MeSyNG . standard . (HVC_meNg, meFinal_ng, HVC_meNg_cc, meFinal_ng_cc) + MeSyLiq . standard . (HVC_meLiq, meFinal_liq, HVC_meLiq_cc, meFinal_liq_cc) + MeSySol . greenh2 . (HVC_meSol_gh2, meFinal_sol_gh2) + MeSySolcc . standard . (HVC_meSol_cc, meFinal_sol_cc) + MeSyNGcc . standard . (HVC_meNg_cc, meFinal_ng_cc) + MeSyLiqcc . standard . (HVC_meLiq_cc, meFinal_liq_cc) + MeSyH2 . standard . (HVC_meh2, meFinal_h2) + + AmSyCoal . standard . (fertilizer_amSol, amFinal_sol, fertilizer_amSol_cc, amFinal_sol_cc) + AmSyNG . standard . (fertilizer_amNg, amFinal_ng, fertilizer_amNg_cc, amFinal_ng_cc) + AmSyLiq . standard . (fertilizer_amLiq, amFinal_liq, fertilizer_amLiq_cc, amFinal_liq_cc) + AmSyCoalcc . standard . (fertilizer_amSol_cc, amFinal_sol_cc) + AmSyNGcc . standard . (fertilizer_amNg_cc, amFinal_ng_cc) + AmSyLiqcc . standard . (fertilizer_amLiq_cc, amFinal_liq_cc) + AmSyH2 . standard . (fertilizer_amh2, amFinal_h2) + + MtOMtA . standard . (HVC_meSol, HVC_meSol_gh2, HVC_meNg, HVC_meLiq, + HVC_meSol_cc, HVC_meNg_cc, HVC_meLiq_cc) + MtOMtAH2 . standard . HVC_meh2 + FertProd . standard . (fertilizer_amSol, fertilizer_amNg, fertilizer_amLiq, + fertilizer_amSol_cc, fertilizer_amNg_cc, fertilizer_amLiq_cc) + FertProdH2 . standard . fertilizer_amh2 + MeToFinal . standard . (meFinal_sol, meFinal_sol_gh2, meFinal_ng, meFinal_liq, + meFinal_sol_cc, meFinal_ng_cc, meFinal_liq_cc) + MeToFinal . greenh2 . meFinal_h2 + AmToFinal . standard . (amFinal_sol, amFinal_ng, amFinal_liq, + amFinal_sol_cc, amFinal_ng_cc, amFinal_liq_cc) + AmToFinal . greenh2 . amFinal_h2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -889,6 +896,51 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / +routeCC(route) "TODO" + / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + HVC_meSol_cc + HVC_meNg_cc + HVC_meLiq_cc + fertilizer_amLiq_cc + fertilizer_amNg_cc + fertilizer_amSol_cc + meFinal_sol_cc + meFinal_ng_cc + meFinal_liq_cc + amFinal_sol_cc + amFinal_ng_cc + amFinal_liq_cc + +$endif.cm_subsec_model_chemicals +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + idreaf_ng_ccs + bfbof_ccs +$endif.cm_subsec_model_steel + / + +routeCC2baseRoute(route,route) "TODO" + / +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + HVC_meSol_cc . HVC_meSol + HVC_meNg_cc . HVC_meNg + HVC_meLiq_cc . HVC_meLiq + fertilizer_amLiq_cc . fertilizer_amLiq + fertilizer_amNg_cc . fertilizer_amNg + fertilizer_amSol_cc . fertilizer_amSol + meFinal_sol_cc . meFinal_sol + meFinal_ng_cc . meFinal_ng + meFinal_liq_cc . meFinal_liq + amFinal_sol_cc . amFinal_sol + amFinal_ng_cc . amFinal_ng + amFinal_liq_cc . amFinal_liq +$endif.cm_subsec_model_chemicals +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + idreaf_ng_ccs . idreaf_ng + bfbof_ccs . bfbof +$endif.cm_subsec_model_steel + / + mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ces tree node the model is connected to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" @@ -1054,7 +1106,8 @@ $endif.calibrate teMat2rlf(tePrc,"1") = YES; alias(tePrc,tePrc1,tePrc2); -alias(opmoPrc,opmoCCPrc,opmoPrc1,opmoPrc2); +alias(tePrc,tePrc1,tePrc2,tePrc3); +alias(opmoPrc,opmoCCPrc,opmoPrc1,opmoPrc2,opmoPrc3); alias(route,route2); alias(entyFeCC37,entyFeCC37_2); alias(secInd37_2_pf,secInd37_2_pf2); From a8d69824b44e1e88487a7f7b9aa3a698d8a8f33f Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Mon, 14 Apr 2025 10:16:37 +0200 Subject: [PATCH 50/69] Switch to camelCase and add Recycling tech --- core/datainput.gms | 141 ++--- core/input/generisdata_tech.prn | 96 ++- core/sets.gms | 198 ++++--- modules/37_industry/subsectors/bounds.gms | 4 + modules/37_industry/subsectors/datainput.gms | 246 ++++---- modules/37_industry/subsectors/postsolve.gms | 2 +- modules/37_industry/subsectors/sets.gms | 591 ++++++++++--------- scripts/start/getReportData.R | 6 +- 8 files changed, 718 insertions(+), 566 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index f1a6e29042..f9f4c2d0db 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -774,34 +774,39 @@ pm_cf(ttot,regi,"tdsynpet") = 0.7; pm_cf(ttot,regi,"tdsyndie") = 0.7; *** eternal short-term fix for process-based industry $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -pm_cf(ttot,regi,"ChemOld") = 0.8; -pm_cf(ttot,regi,"ChemElec") = 0.8; -pm_cf(ttot,regi,"ChemH2") = 0.8; - -pm_cf(ttot,regi,"StCrNG") = 0.8; -pm_cf(ttot,regi,"StCrLiq") = 0.8; - -pm_cf(ttot,regi,"MeSySol") = 0.8; !! methanol tech QIANZHI -pm_cf(ttot,regi,"MeSyNG") = 0.8; -pm_cf(ttot,regi,"MeSyLiq") = 0.8; -pm_cf(ttot,regi,"MeSySolcc") = 0.8; -pm_cf(ttot,regi,"MeSyNGcc") = 0.8; -pm_cf(ttot,regi,"MeSyLiqcc") = 0.8; -pm_cf(ttot,regi,"MeSyH2") = 0.8; -pm_cf(ttot,regi,"AmSyCoal") = 0.8; !! ammonia tech QIANZHI -pm_cf(ttot,regi,"AmSyNG") = 0.8; -pm_cf(ttot,regi,"AmSyLiq") = 0.8; -pm_cf(ttot,regi,"AmSyCoalcc") = 0.8; -pm_cf(ttot,regi,"AmSyNGcc") = 0.8; -pm_cf(ttot,regi,"AmSyLiqcc") = 0.8; -pm_cf(ttot,regi,"AmSyH2") = 0.8; - -pm_cf(ttot,regi,"MtOMtA") = 0.8; -pm_cf(ttot,regi,"MtOMtAH2") = 0.8; -pm_cf(ttot,regi,"FertProd") = 0.8; -pm_cf(ttot,regi,"FertProdH2") = 0.8; -pm_cf(ttot,regi,"MeToFinal") = 0.8; -pm_cf(ttot,regi,"AmToFinal") = 0.8; +pm_cf(ttot,regi,"chemOld") = 0.8; +pm_cf(ttot,regi,"chemElec") = 0.8; +pm_cf(ttot,regi,"chemH2") = 0.8; + +pm_cf(ttot,regi,"stCrNg") = 0.8; +pm_cf(ttot,regi,"stCrLiq") = 0.8; +pm_cf(ttot,regi,"stCrChemRe") = 0.8; + +pm_cf(ttot,regi,"mechRe") = 0.8; + +pm_cf(ttot,regi,"meSySol") = 0.8; +pm_cf(ttot,regi,"meSyNg") = 0.8; +pm_cf(ttot,regi,"meSyLiq") = 0.8; +pm_cf(ttot,regi,"meSySol_cc") = 0.8; +pm_cf(ttot,regi,"meSyNg_cc") = 0.8; +pm_cf(ttot,regi,"meSyLiq_cc") = 0.8; +pm_cf(ttot,regi,"meSyH2") = 0.8; +pm_cf(ttot,regi,"meSyChemRe") = 0.8; + +pm_cf(ttot,regi,"amSyCoal") = 0.8; +pm_cf(ttot,regi,"amSyNG") = 0.8; +pm_cf(ttot,regi,"amSyLiq") = 0.8; +pm_cf(ttot,regi,"amSyCoal_cc") = 0.8; +pm_cf(ttot,regi,"amSyNG_cc") = 0.8; +pm_cf(ttot,regi,"amSyLiq_cc") = 0.8; +pm_cf(ttot,regi,"amSyH2") = 0.8; + +pm_cf(ttot,regi,"mtoMta") = 0.8; +pm_cf(ttot,regi,"mtoMtaH2") = 0.8; +pm_cf(ttot,regi,"fertProd") = 0.8; +pm_cf(ttot,regi,"fertProdH2") = 0.8; +pm_cf(ttot,regi,"meToFinal") = 0.8; +pm_cf(ttot,regi,"amToFinal") = 0.8; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1302,26 +1307,26 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! p_adj_seed_te(ttot,regi,"ChemElec") = 0.50; -!! p_adj_seed_te(ttot,regi,"ChemH2") = 0.25; - p_adj_seed_te(ttot,regi,"MeSySol") = 0.0001; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNG") = 0.0001; - p_adj_seed_te(ttot,regi,"MeSyLiq") = 0.0001; - p_adj_seed_te(ttot,regi,"MeSySolcc") = 0.10; !! methanol tech QIANZHI - p_adj_seed_te(ttot,regi,"MeSyNGcc") = 0.10; - p_adj_seed_te(ttot,regi,"MeSyLiqcc") = 0.10; - p_adj_seed_te(ttot,regi,"MeSyH2") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyCoal") = 0.0001; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNG") = 0.0001; - p_adj_seed_te(ttot,regi,"AmSyLiq") = 0.0001; - p_adj_seed_te(ttot,regi,"AmSyCoalcc") = 0.10; !! ammonia tech QIANZHI - p_adj_seed_te(ttot,regi,"AmSyNGcc") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyLiqcc") = 0.10; - p_adj_seed_te(ttot,regi,"AmSyH2") = 0.25; - p_adj_seed_te(ttot,regi,"StCrLiq") = 0.0001; - p_adj_seed_te(ttot,regi,"StCrNG") = 0.0001; - p_adj_seed_te(ttot,regi,"MTOMTA") = 0.0001; - p_adj_seed_te(ttot,regi,"FertProdH2") = 0.10; +!! p_adj_seed_te(ttot,regi,"chemElec") = 0.50; +!! p_adj_seed_te(ttot,regi,"chemH2") = 0.25; + p_adj_seed_te(ttot,regi,"meSySol") = 0.0001; + p_adj_seed_te(ttot,regi,"meSyNg") = 0.0001; + p_adj_seed_te(ttot,regi,"meSyLiq") = 0.0001; + p_adj_seed_te(ttot,regi,"meSySol_cc") = 0.10; + p_adj_seed_te(ttot,regi,"meSyNg_cc") = 0.10; + p_adj_seed_te(ttot,regi,"meSyLiq_cc") = 0.10; + p_adj_seed_te(ttot,regi,"meSyH2") = 0.10; + p_adj_seed_te(ttot,regi,"amSyCoal") = 0.0001; + p_adj_seed_te(ttot,regi,"amSyNG") = 0.0001; + p_adj_seed_te(ttot,regi,"amSyLiq") = 0.0001; + p_adj_seed_te(ttot,regi,"amSyCoal_cc") = 0.10; + p_adj_seed_te(ttot,regi,"amSyNG_cc") = 0.10; + p_adj_seed_te(ttot,regi,"amSyLiq_cc") = 0.10; + p_adj_seed_te(ttot,regi,"amSyH2") = 0.25; + p_adj_seed_te(ttot,regi,"stCrLiq") = 0.0001; + p_adj_seed_te(ttot,regi,"stCrNg") = 0.0001; + p_adj_seed_te(ttot,regi,"mtoMta") = 0.0001; + p_adj_seed_te(ttot,regi,"fertProdH2") = 0.10; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1357,26 +1362,26 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - !!p_adj_coeff(ttot,regi,"ChemElec") = 0.25; - !!p_adj_coeff(ttot,regi,"ChemH2") = 1.0; - !!p_adj_coeff(ttot,regi,"MeSySol") = 3.0; !! methanol tech QIANZHI - !!p_adj_coeff(ttot,regi,"MeSyNG") = 3.0; - !!p_adj_coeff(ttot,regi,"MeSyLiq") = 3.0; - p_adj_coeff(ttot,regi,"MeSySolcc") = 1.0; !! methanol tech QIANZHI - p_adj_coeff(ttot,regi,"MeSyNGcc") = 1.0; - p_adj_coeff(ttot,regi,"MeSyLiqcc") = 1.0; - p_adj_coeff(ttot,regi,"MeSyH2") = 1.0; - !!p_adj_coeff(ttot,regi,"AmSyCoal") = 3.0; !! ammonia tech QIANZHI - !!p_adj_coeff(ttot,regi,"AmSyNG") = 3.0; - !!p_adj_coeff(ttot,regi,"AmSyLiq") = 3.0; - p_adj_coeff(ttot,regi,"AmSyCoalcc") = 1.0; !! ammonia tech QIANZHI - p_adj_coeff(ttot,regi,"AmSyNGcc") = 1.0; - p_adj_coeff(ttot,regi,"AmSyLiqcc") = 1.0; - p_adj_coeff(ttot,regi,"AmSyH2") = 0.5; - !!p_adj_coeff(ttot,regi,"StCrLiq") = 3.0; - !!p_adj_coeff(ttot,regi,"StCrNG") = 3.0; - !!p_adj_coeff(ttot,regi,"MTOMTA") = 1.0; - !!p_adj_coeff(ttot,regi,"FertProdH2") = 1.0; + !!p_adj_coeff(ttot,regi,"chemElec") = 0.25; + !!p_adj_coeff(ttot,regi,"chemH2") = 1.0; + !!p_adj_coeff(ttot,regi,"meSySol") = 3.0; + !!p_adj_coeff(ttot,regi,"meSyNg") = 3.0; + !!p_adj_coeff(ttot,regi,"meSyLiq") = 3.0; + p_adj_coeff(ttot,regi,"meSySol_cc") = 1.0; + p_adj_coeff(ttot,regi,"meSyNg_cc") = 1.0; + p_adj_coeff(ttot,regi,"meSyLiq_cc") = 1.0; + p_adj_coeff(ttot,regi,"meSyH2") = 1.0; + !!p_adj_coeff(ttot,regi,"amSyCoal") = 3.0; + !!p_adj_coeff(ttot,regi,"amSyNG") = 3.0; + !!p_adj_coeff(ttot,regi,"amSyLiq") = 3.0; + p_adj_coeff(ttot,regi,"amSyCoal_cc") = 1.0; + p_adj_coeff(ttot,regi,"amSyNG_cc") = 1.0; + p_adj_coeff(ttot,regi,"amSyLiq_cc") = 1.0; + p_adj_coeff(ttot,regi,"amSyH2") = 0.5; + !!p_adj_coeff(ttot,regi,"stCrLiq") = 3.0; + !!p_adj_coeff(ttot,regi,"stCrNg") = 3.0; + !!p_adj_coeff(ttot,regi,"mtoMta") = 1.0; + !!p_adj_coeff(ttot,regi,"fertProdH2") = 1.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 753f1ecc47..cb2b864dcf 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -157,26 +157,34 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -+ ChemOld ChemElec ChemH2 StCrNG StCrLiq AmSyCoal AmSyNG AmSyLiq AmSyH2 MeSySol MeSyNG MeSyLiq MeSyH2 ++ chemOld chemElec chemH2 stCrNg stCrLiq amSyCoal amSyNG amSyLiq amSyH2 meSySol meSyNG meSyLiq meSyH2 !! documentation & sources: see below inco0 500 500 500 1500 1000 2000 875 1200 1200 700 310 300 800 omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 -+ AmSyCoalcc AmSyNGcc AmSyLiqcc MeSySolcc MeSyNGcc MeSyLiqcc ++ amSyCoal_cc amSyNg_cc amSyLiq_cc meSySol_cc meSyNg_cc meSyLiq_cc !! documentation & sources: see below -inco0 600 650 650 850 1000 850 -omf 0.05 0.05 0.05 0.05 0.05 0.05 -constrTme 1 1 1 1 1 1 -lifetime 25 25 25 25 25 25 +inco0 600 650 650 850 1000 850 +omf 0.05 0.05 0.05 0.05 0.05 0.05 +constrTme 1 1 1 1 1 1 +lifetime 25 25 25 25 25 25 -+ MtOMtA MtOMtAH2 FertProd FertProdH2 AmToFinal MeToFinal ++ mtoMta mtoMtaH2 fertProd fertProdH2 amToFinal meToFinal !! documentation & sources: see below -inco0 500 500 500 500 500 500 +inco0 500 500 500 500 500 500 omf 0.025 0.025 0.06 0.06 0.06 0.06 -constrTme 3 3 3 3 3 3 +constrTme 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 + ++ mechRe stCrChemRe meSyChemRe +!! documentation & sources: see below +inco0 400 2200 55 +omf 0.05 0.03 0.055 +constrTme 3 3 3 +lifetime 30 30 30 + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" *** industry processes @@ -337,6 +345,76 @@ bfcc: idrcc: make slightly cheaper than bfcc as there is only one point source +chemOld chemElec and chemH2: + + +stCrNg and stCrLiq: + + for Naphtha Steam Cracking + CAPEX ~ 2057 $/t Ethylene + (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) + + Output ratio: 97.2 Naphtha → 31.86 Ethylene + 13.01 Propylene + 17.48 BTX + 3.78 Others + (Sources: Spallina17 Table 5.) + + for NG Steam Cracking + CAPEX ~ 369.4(gas porcessing) + 912.6(co-Cracking) = 1282 Million $ + (Sources: Minbo Yang 2017. Table 3) + + Output ratio: 197.3 Ethane-propane → 125.0 Ethylene + 28.4 Propylene + 1.6 BTX + 19.2 Others + (Sources: Spallina17 Table 5.) + + + +amSyCoal amSyNG amSyLiq and amSyH2: + + +amSyCoal_cc amSyNG_cc amSyLiq_cc: + + +meSySol meSyNG meSyLiq and meSyH2: + + +meSyChemRe: + + +meSySol_cc meSyNg_cc meSyLiq_cc: + + +mtoMta mtoMtaH2: + + +fertProd fertProdH2: + + +amToFinal meToFinal: + + +mechRe meSyChemRe and stCrChemRe: + + for Mechanical Recycling + CAPEX ~ 400 $/t + (Rough average of sources: Taylor Uekert 2023 Table S28.) + + for Chemical Recycling: Pyrolysis + CAPEX ~ 2200 $/t + omf = 0.03 + (Rough average of sources: Geetanjali Yadav 2023 Table1, Table S9.) + + for Chemical Recycling: Gasification + CAPEX ~ 55 $/t + omf = 0.055 + (Rough average of sources: Shaik Afzal 2023 Table S3. Table S4.) + + inco0 for mechRe = 400$/t + omf for mechRe = 0.05 + + inco0 for stCrChemRe = 2200$/t + omf for stCrChemRe = 0.03 + + inco0 for meSyChemRe = 55$/t + omf for meSyChemRe = 0.055 + $offtext *** EOF ./core/input/generisdata_tech.prn diff --git a/core/sets.gms b/core/sets.gms index 611d5ba527..7a685d3de9 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -279,50 +279,58 @@ all_te "all energy technologies, including from modules" vess_nh3 "Vessels transporting liquid ammonia" *** technologies related to chemicals industry - ChemOld - ChemElec - ChemH2 - - StCrNG - StCrLiq - - MeSySol !! methanol tech QIANZHI - MeSyNG - MeSyLiq - MeSySolcc - MeSyNGcc - MeSyLiqcc - MeSyH2 - - AmSyCoal !! ammonia tech QIANZHI - AmSyNG - AmSyLiq - AmSyCoalcc - AmSyNGcc - AmSyLiqcc - AmSyH2 - - MtOMtA - MtOMtAH2 - FertProd - FertProdH2 - MeToFinal - AmToFinal + chemOld + chemElec + chemH2 + + stCrNg + stCrLiq + stCrChemRe + + mechRe + + meSySol + meSyNg + meSyLiq + meSySol_cc + meSyNg_cc + meSyLiq_cc + meSyH2 + meSyChemRe + + amSyCoal + amSyNG + amSyLiq + amSyCoal_cc + amSyNG_cc + amSyLiq_cc + amSyH2 + + mtoMta + mtoMtaH2 + fertProd + fertProdH2 + meToFinal + amToFinal otherChem_old otherChem_elec otherChem_h2 - HVC_stCrLiq - HVC_stCrNg - HVC_meSol - HVC_meNg - HVC_meLiq - HVC_meSol_gh2 - HVC_meSol_cc - HVC_meNg_cc - HVC_meLiq_cc - HVC_meh2 + mech_recycle + + hvc_stCrLiq + hvc_stCrNg + hvc_stCrChemRe + hvc_meSol + hvc_meNg + hvc_meLiq + hvc_meSol_gh2 + hvc_meSol_cc + hvc_meNg_cc + hvc_meLiq_cc + hvc_meh2 + hvc_mechemRe fertilizer_amSol fertilizer_amNg @@ -340,6 +348,7 @@ all_te "all energy technologies, including from modules" meFinal_ng_cc meFinal_liq_cc meFinal_h2 + meFinal_chemRe amFinal_sol amFinal_ng @@ -448,16 +457,17 @@ all_enty "all types of quantities" co2f "feedstock CO2" *** chemicals - OtherChem - HVC - Fertilizer + otherChem + hvc + fertilizer methanol methanolH2 ammonia ammoniaH2 - MethFinal - AmmoFinal + methFinal + ammoFinal naphtha + plasticWaste *** steel prsteel "Primary steel" @@ -1297,32 +1307,39 @@ te(all_te) "energy technologies" termM_lng "Import terminals for LNG (regasification)" vess_lng "Vessels transporting LNG" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld - ChemElec - ChemH2 - StCrNG - StCrLiq - MeSySol !! methanol tech QIANZHI - MeSyNG - MeSyLiq - MeSySolcc - MeSyNGcc - MeSyLiqcc - MeSyH2 - AmSyCoal !! ammonia tech QIANZHI - AmSyNG - AmSyLiq - AmSyCoalcc - AmSyNGcc - AmSyLiqcc - AmSyH2 - - MtOMtA - MtOMtAH2 - FertProd - FertProdH2 - AmToFinal - MeToFinal + chemOld + chemElec + chemH2 + + stCrNg + stCrLiq + stCrChemRe + + mechRe + + meSySol + meSyNg + meSyLiq + meSySol_cc + meSyNg_cc + meSyLiq_cc + meSyH2 + meSyChemRe + + amSyCoal + amSyNG + amSyLiq + amSyCoal_cc + amSyNG_cc + amSyLiq_cc + amSyH2 + + mtoMta + mtoMtaH2 + fertProd + fertProdH2 + amToFinal + meToFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr "Iron direct reduction" @@ -1402,25 +1419,28 @@ teAdj(all_te) "technologies with adjustment costs on capacity addition gridwindon "grid between areas with high wind onshore production and the rest" gridwindoff "grid between areas with high wind offshore production and the rest" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemElec "Other chemicals by Electricity" - ChemH2 "Other chemicals by Hydrogen" - MeSySol "Methanol by Soilds" !! methanol tech QIANZHI - MeSyNG "Methanol by Gas" - MeSyLiq "Methanol by Liquids" - MeSySolcc "Methanol by Soilds CCS" !! methanol tech QIANZHI - MeSyNGcc "Methanol by Gas CCS" - MeSyLiqcc "Methanol by Liquids CCS" - MeSyH2 "Methanol by Hydrogen" - AmSyCoal "Ammonia by Coal" !! ammonia tech QIANZHI - AmSyNG "Ammonia by Gas" - AmSyLiq "Ammonia by Liquids" - AmSyCoalcc "Ammonia by Coal CCS" !! ammonia tech QIANZHI - AmSyNGcc "Ammonia by Gas CCS" - AmSyLiqcc "Ammonia by Liquids CCS" - AmSyH2 "Ammonia by Hydrogen" - StCrLiq "Steam cracking by Naphtha" - StCrNG "Steam cracking by Natural Gas" - MTOMTA "Methanol to Olefins and Aromatics" + chemElec "Other chemicals by Electricity" + chemH2 "Other chemicals by Hydrogen" + meSySol "Methanol by Soilds" + meSyNg "Methanol by Gas" + meSyLiq "Methanol by Liquids" + meSySol_cc "Methanol by Soilds CCS" + meSyNg_cc "Methanol by Gas CCS" + meSyLiq_cc "Methanol by Liquids CCS" + meSyH2 "Methanol by Hydrogen" + meSyChemRe "Methanol by Chemical Recycling" + amSyCoal "Ammonia by Coal" + amSyNG "Ammonia by Gas" + amSyLiq "Ammonia by Liquids" + amSyCoal_cc "Ammonia by Coal CCS" + amSyNG_cc "Ammonia by Gas CCS" + amSyLiq_cc "Ammonia by Liquids CCS" + amSyH2 "Ammonia by Hydrogen" + stCrLiq "Steam cracking by Naphtha" + stCrNg "Steam cracking by Natural Gas" + stCrChemRe "Steam cracking by Chemical Recycling" + mechRe "Mechanical Recycling" + mtoMta "Methanol to Olefins and Aromatics" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc "Blast furnace CCS" diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 869bd2e5c1..bc3b775758 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -176,4 +176,8 @@ vm_demFeSector_afterTax.lo(t,regi,entySe,"fesos","indst",emiMkt)$(NOT sameAs(emi v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; +vm_outflowPrc.up(t,regi,"mechRe","standard") = 0.01; !! Due to downgraded recycling and pure feedstock limitations +!!vm_outflowPrc.up(t,regi,"stCrChemRe","standard") = 0.01; +!!vm_outflowPrc.up(t,regi,"meSyChemRe","standard") = 0.01; +v37_matFlow.up(t,regi,"plasticWaste") = 0.03; !! Due to the limitations of the collection *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index e521fe1c75..5e6c2c71c5 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,20 +647,24 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_specMatDem("ammonia","FertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal -p37_specMatDem("ammoniaH2","FertProdH2","standard") = 17/14; +p37_specMatDem("ammonia","fertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal +p37_specMatDem("ammoniaH2","fertProdH2","standard") = 17/14; -p37_specMatDem("methanol","MtOMtA","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 -p37_specMatDem("methanolH2","MtOMtAH2","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 -p37_specMatDem("ammonia","AmToFinal","standard") = 1; -p37_specMatDem("ammoniaH2","AmToFinal","greenh2") = 1; -p37_specMatDem("methanol","MeToFinal","standard") = 1; -p37_specMatDem("methanolH2","MeToFinal","greenh2") = 1; +p37_specMatDem("methanol","mtoMta","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 +p37_specMatDem("methanolH2","mtoMtaH2","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 +p37_specMatDem("ammonia","amToFinal","standard") = 1; +p37_specMatDem("ammoniaH2","amToFinal","greenh2") = 1; +p37_specMatDem("methanol","meToFinal","standard") = 1; +p37_specMatDem("methanolH2","meToFinal","greenh2") = 1; -p37_specMatDem("naphtha","StCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock +p37_specMatDem("naphtha","stCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock -p37_specMatDem("co2f","FertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ -p37_specMatDem("co2f","MeSyH2","standard") = 0.375; !! 12/32 for CH₃OH +p37_specMatDem("plasticWaste","mechRe","standard") = 1/0.79; !! Source: Taylor Uekert 2023 Table S1 - S4. +p37_specMatDem("plasticWaste","meSyChemRe","standard") = 1/0.68; !! Source: Shaik Afzal 2023 Table S9. +p37_specMatDem("plasticWaste","stCrChemRe","standard") = 1/0.62; !! Source: Geetanjali Yadav 2023 Table 3. + +p37_specMatDem("co2f","fertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ +p37_specMatDem("co2f","meSyH2","standard") = 0.375; !! 12/32 for CH₃OH $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -683,74 +687,83 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","ChemOld","standard") = 1.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemOld","standard") = 3.9 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fesos","chemOld","standard") = 1.5 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","chemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","chemOld","standard") = 3.9 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","chemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fesos","chemElec","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","chemElec","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","chemElec","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","chemElec","standard") = 3.6 / (sm_TWa_2_MWh/sm_giga_2_non); + +p37_specFeDemTarget("fesos","chemH2","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","chemH2","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","chemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feh2s","chemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("feels","chemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","ChemElec","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemElec","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemElec","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemElec","standard") = 3.6 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fegas","stCrNg","standard") = 17.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 +p37_specFeDemTarget("fehos","stCrNg","standard") = 5.83 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 +p37_specFeDemTarget("feels","stCrNg","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 -p37_specFeDemTarget("fesos","ChemH2","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","ChemH2","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","ChemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","ChemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","ChemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); +p37_specFeDemTarget("fehos","stCrLiq","standard") = 19.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 95%feedstock +p37_specFeDemTarget("feels","stCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 -p37_specFeDemTarget("fegas","StCrNG","standard") = 17.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 -p37_specFeDemTarget("fehos","StCrNG","standard") = 5.83 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 -p37_specFeDemTarget("feels","StCrNG","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 +p37_specFeDemTarget("fegas","stCrChemRe","standard") = 2.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel +p37_specFeDemTarget("feels","stCrChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 -p37_specFeDemTarget("fehos","StCrLiq","standard") = 19.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 95%feedstock -p37_specFeDemTarget("feels","StCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 +p37_specFeDemTarget("fegas","mechRe","standard") = 0.29 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1 - S4 Weighted average of PE PP and PET +p37_specFeDemTarget("feels","mechRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1 - S4 Weighted average of PE PP and PET -p37_specFeDemTarget("fesos","MeSySol","standard") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSySol","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","meSySol","standard") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","meSySol","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fesos","MeSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feh2s","MeSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feels","MeSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MetSySol +p37_specFeDemTarget("fesos","meSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 +p37_specFeDemTarget("feh2s","meSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 +p37_specFeDemTarget("feels","meSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MeSySol -p37_specFeDemTarget("fegas","MeSyNG","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fegas","meSyNg","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","meSyNg","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","MeSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh -p37_specFeDemTarget("feels","MeSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("fehos","meSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh +p37_specFeDemTarget("feels","meSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","MeSySolcc","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSySolcc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","meSySol_cc","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO:Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","meSySol_cc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSyNGcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","MeSyLiqcc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as MeSyNGcc +p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as meSyNg_cc -p37_specFeDemTarget("feh2s","MeSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("feels","MeSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feh2s","meSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feels","meSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("fesos","AmSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","AmSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fegas","meSyChemRe","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S5 +p37_specFeDemTarget("feels","meSyChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S5 -p37_specFeDemTarget("fegas","AmSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("feels","AmSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 +p37_specFeDemTarget("fesos","amSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","amSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("fehos","AmSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","AmSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("fegas","amSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 +p37_specFeDemTarget("feels","amSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("feels","AmSyCoalcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fehos","amSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("feels","amSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","AmSyNGcc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","amSyCoal_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","AmSyLiqcc","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as AmSyNGcc +p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feh2s","AmSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia -p37_specFeDemTarget("feels","AmSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 +p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc -p37_specFeDemTarget("feels","MtOMtA","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 -p37_specFeDemTarget("feels","MtOMtAH2","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 -p37_specFeDemTarget("feels","FertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 -p37_specFeDemTarget("feels","FertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feh2s","amSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia +p37_specFeDemTarget("feels","amSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 + +p37_specFeDemTarget("feels","mtoMta","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","mtoMtaH2","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 +p37_specFeDemTarget("feels","fertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feels","fertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -796,19 +809,19 @@ $endif.cm_subsec_model_steel p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_captureRate("MeSySolcc") = 0.9; !! methanol tech QIANZHI -p37_captureRate("MeSyNGcc") = 0.9; -p37_captureRate("MeSyLiqcc") = 0.9; -p37_selfCaptureRate("MeSySolcc") = 0.9; -p37_selfCaptureRate("MeSyNGcc") = 0.9; -p37_selfCaptureRate("MeSyLiqcc") = 0.9; - -p37_captureRate("AmSyCoalcc") = 0.9; !! ammonia tech QIANZHI -p37_captureRate("AmSyNGcc") = 0.9; -p37_captureRate("AmSyLiqcc") = 0.9; -p37_selfCaptureRate("AmSyCoalcc") = 0.9; -p37_selfCaptureRate("AmSyNGcc") = 0.9; -p37_selfCaptureRate("AmSyLiqcc") = 0.9; +p37_captureRate("meSySol_cc") = 0.9; +p37_captureRate("meSyNg_cc") = 0.9; +p37_captureRate("meSyLiq_cc") = 0.9; +p37_selfCaptureRate("meSySol_cc") = 0.9; +p37_selfCaptureRate("meSyNg_cc") = 0.9; +p37_selfCaptureRate("meSyLiq_cc") = 0.9; + +p37_captureRate("amSyCoal_cc") = 0.9; +p37_captureRate("amSyNG_cc") = 0.9; +p37_captureRate("amSyLiq_cc") = 0.9; +p37_selfCaptureRate("amSyCoal_cc") = 0.9; +p37_selfCaptureRate("amSyNG_cc") = 0.9; +p37_selfCaptureRate("amSyLiq_cc") = 0.9; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -830,13 +843,18 @@ loop(t$(t.val > 2020), !!p37_priceMat(t,all_regi,"co2f") = 10 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 ); ); +!! Source: Geetanjali Yadav 2023 Table S12 → 0.6 $/kg +!! Source: Taylor Uekert 2023 Table Table S23 → 0.2-0.4 $/kg +!! Source: Shaik Afzal 2023 Table Table S6 → 0.4-0.8 $/kg +p37_priceMat(t,all_regi,"plasticWaste") = 0.3; + $endif.cm_subsec_model_chemicals $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 loop(t$(t.val ge 2005), - p37_priceMat(t,all_regi,"eafscrap") = sm_D2020_2_D2017 * 0.250 ; + p37_priceMat(t,all_regi,"eafscrap") = sm_D2020_2_D2017 * 0.250; p37_priceMat(t,all_regi,"bofscrap") = sm_D2020_2_D2017 * 0.250; !! Agora KSV-Rechner: 114 €2023/tSteel / (tn$ /bn t) p37_priceMat(t,all_regi,"ironore") = sm_EURO2023_2_D2017 * 0.114; @@ -885,11 +903,11 @@ p37_mat2ue(t,regi,mat,in)$(t.val gt 2050) = p37_mat2ue("2050",regi,mat,in); !! new calculation value added: Global plastic production volume 400.3 Mt Global plastic market size 712bn USD in 2022 https://www.statista.com/topics/5266/plastics-industry/#:~:text=Since%20the%20mass%20production%20of%20plastic%20products%20began,to%20experience%20considerable%20growth%20over%20the%20next%20decade. !!TODO QIanzhi: Change to 2017$ -!!p37_mat2ue("HVC","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ -!!p37_mat2ue("Fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average -!!p37_mat2ue("MethFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average -!!p37_mat2ue("AmmoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average -p37_mat2ue(t,all_regi,"OtherChem","ue_chemicals") = 1.; +!!p37_mat2ue(t,all_regi,"hvc","ue_chemicals") = 0.66; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ethylene-price-index/ +!!p37_mat2ue("fertilizer","ue_chemicals") = 0.73; !!2017$/kgN Source: https://farmdocdaily,illinois,edu/wp-content/uploads/2023/06/06132023_fig1,png 2020 Global Average +!!p37_mat2ue("methFinal","ue_chemicals") = 0.37; !!2017$/kg Source: https://www,methanex,com/about-methanol/pricing/ 2020 Global Average +!!p37_mat2ue("ammoFinal","ue_chemicals") = 0.69; !!2017$/kg Source: https://businessanalytiq,com/procurementanalytics/index/ammonia-price-index/ 2020 Global Average +p37_mat2ue(t,all_regi,"otherChem","ue_chemicals") = 1.; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -898,18 +916,18 @@ p37_mat2ue(t,all_regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel !! HOT FIX -pm_outflowPrcHist("2020",regi,"AmToFinal","standard") +pm_outflowPrcHist("2020",regi,"amToFinal","standard") = sum((tePrc2matOut(tePrc,opmoPrc,mat))$(sameas("ammonia",mat)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)) - - (pm_outflowPrcHist("2020",regi,"FertProd","standard") - * p37_specMatDem("ammonia","FertProd","standard")) + - (pm_outflowPrcHist("2020",regi,"fertProd","standard") + * p37_specMatDem("ammonia","fertProd","standard")) ; -pm_outflowPrcHist("2020",regi,"MeToFinal","standard") +pm_outflowPrcHist("2020",regi,"meToFinal","standard") = sum((tePrc2matOut(tePrc,opmoPrc,mat))$(sameas("methanol",mat)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)) - - (pm_outflowPrcHist("2020",regi,"MTOMTA","standard") - * p37_specMatDem("methanol","MtOMtA","standard")) + - (pm_outflowPrcHist("2020",regi,"mtoMta","standard") + * p37_specMatDem("methanol","mtoMta","standard")) ; !! 1. Correct pm_outflowPrcHist, such that sum is consistent with UE @@ -1013,23 +1031,23 @@ $offdelim !! HOT FIX p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) = sm_EJ_2_TWa * p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe); loop(t$(t.val ge 2005 AND t.val le 2020), - p37_demFePrcHist(t,regi,"ChemOld","standard","fesos") + p37_demFePrcHist(t,regi,"chemOld","standard","fesos") = pm_fedemand(t,regi,"feso_chemicals") * sm_EJ_2_TWa - - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fesos")); + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"chemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fesos")); - p37_demFePrcHist(t,regi,"ChemOld","standard","fehos") + p37_demFePrcHist(t,regi,"chemOld","standard","fehos") = pm_fedemand(t,regi,"feli_chemicals") * sm_EJ_2_TWa - - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fehos")); + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"chemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fehos")); - p37_demFePrcHist(t,regi,"ChemOld","standard","fegas") + p37_demFePrcHist(t,regi,"chemOld","standard","fegas") = (pm_fedemand(t,regi,"fega_chemicals") + pm_fedemand(t,regi,"feh2_chemicals")) * sm_EJ_2_TWa - - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fegas")); + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"chemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"fegas")); - p37_demFePrcHist(t,regi,"ChemOld","standard","feels") + p37_demFePrcHist(t,regi,"chemOld","standard","feels") = (pm_fedemand(t,regi,"feelhth_chemicals") + pm_fedemand(t,regi,"feelwlth_chemicals")) * sm_EJ_2_TWa - - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"ChemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"feels")); + - sum((tePrc, opmoPrc)$(NOT sameas(tePrc,"chemOld")), p37_demFePrcHist(t,regi,tePrc,opmoPrc,"feels")); ); loop((t,regi,tePrc,opmoPrc)$(t.val ge 2005 AND t.val le 2020), IF(pm_outflowPrcHist(t,regi,tePrc,opmoPrc) gt EPS, @@ -1117,44 +1135,44 @@ if (cm_startyear eq 2005, ); -!! Hot fix on regional OtherChem Energy Demand +!! Hot fix on regional otherChem Energy Demand $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" loop((entyFeStat(all_enty)), loop(t$(t.val > 2020), - !! Calc ChemOld - pm_specFeDem(t,regi,all_enty,"ChemOld","standard") = - pm_specFeDem("2020",regi,all_enty,"ChemOld","standard"); + !! Calc chemOld + pm_specFeDem(t,regi,all_enty,"chemOld","standard") = + pm_specFeDem("2020",regi,all_enty,"chemOld","standard"); - !! Calc ChemElec + !! Calc chemElec loop(entyFe$(NOT sameas(entyFe, "feels")), - pm_specFeDem(t, regi, entyFe, "ChemElec", "standard") = - pm_specFeDem("2020", regi, entyFe, "ChemOld", "standard") + pm_specFeDem(t, regi, entyFe, "chemElec", "standard") = + pm_specFeDem("2020", regi, entyFe, "chemOld", "standard") * 0.65 ); - !! Calc feels for ChemElec - pm_specFeDem(t, regi, "feels", "ChemElec", "standard") = - pm_specFeDem("2020", regi, "feels", "ChemOld", "standard") - + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) - - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemElec", "standard")) ); + !! Calc feels for chemElec + pm_specFeDem(t, regi, "feels", "chemElec", "standard") = + pm_specFeDem("2020", regi, "feels", "chemOld", "standard") + + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "chemOld", "standard")) + - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "chemElec", "standard")) ); - !! Calc ChemH2 + !! Calc chemH2 loop(entyFe$(NOT sameas(entyFe, "feels")), - pm_specFeDem(t, regi, entyFe, "ChemH2", "standard") = - pm_specFeDem("2020", regi, entyFe, "ChemOld", "standard") + pm_specFeDem(t, regi, entyFe, "chemH2", "standard") = + pm_specFeDem("2020", regi, entyFe, "chemOld", "standard") * 0.65 ); - !! Calc feels for ChemH2 - pm_specFeDem(t, regi, "feels", "ChemH2", "standard") = - pm_specFeDem("2020", regi, "feels", "ChemOld", "standard"); + !! Calc feels for chemH2 + pm_specFeDem(t, regi, "feels", "chemH2", "standard") = + pm_specFeDem("2020", regi, "feels", "chemOld", "standard"); - !! Calc feh2s for ChemH2 - pm_specFeDem(t, regi, "feh2s", "ChemH2", "standard") = - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "ChemOld", "standard")) - - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "ChemH2", "standard")); + !! Calc feh2s for chemH2 + pm_specFeDem(t, regi, "feh2s", "chemH2", "standard") = + sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "chemOld", "standard")) + - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "chemH2", "standard")); ); ); diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 4155e3c0cd..8b35f8becf 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -153,7 +153,7 @@ o37_shareRoute(ttot,regi,tePrc,opmoPrc,route)$tePrc2route(tePrc,opmoPrc,route) = !! 1st stage with two second-stage processes - !! share = methanol * MtoMtA*specDem / (MtOMtA*specDem + MeToFinal*specDem) + !! share = methanol * mtoMta*specDem / (mtoMta*specDem + meToFinal*specDem) !! - loop over first stage techs !! - loop over second stage techs sharing a route !! - for each route, share_route is outflowPrc of 2nd stage tech of that route divided by sum_routes(outflowPrc of 2nd stage tech of route) diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 087c90570d..482d3204ca 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -382,35 +382,39 @@ $endif.cm_subsec_model_steel tePrc(all_te) "Technologies used in process-based model (including CCS)" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld - ChemElec - ChemH2 - - StCrNG - StCrLiq - - MeSySol !! methanol tech QIANZHI - MeSyNG - MeSyLiq - MeSySolcc - MeSyNGcc - MeSyLiqcc - MeSyH2 - - AmSyCoal !! ammonia tech QIANZHI - AmSyNG - AmSyLiq - AmSyCoalcc - AmSyNGcc - AmSyLiqcc - AmSyH2 - - MtOMtA - MtOMtAH2 - FertProd - FertProdH2 - MeToFinal - AmToFinal + chemOld + chemElec + chemH2 + + stCrNg + stCrLiq + stCrChemRe + + mechRe + + meSySol + meSyNg + meSyLiq + meSySol_cc + meSyNg_cc + meSyLiq_cc + meSyH2 + meSyChemRe + + amSyCoal + amSyNG + amSyLiq + amSyCoal_cc + amSyNG_cc + amSyLiq_cc + amSyH2 + + mtoMta + mtoMtaH2 + fertProd + fertProdH2 + meToFinal + amToFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -432,39 +436,40 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - MeSySolcc - MeSyNGcc - MeSyLiqcc + meSySol_cc + meSyNg_cc + meSyLiq_cc - AmSyCoalcc - AmSyNGcc - AmSyLiqcc + amSyCoal_cc + amSyNG_cc + amSyLiq_cc $endif.cm_subsec_model_chemicals / teCUPrc(all_te) "Technologies using CO2 as a feedstock" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - MeSyH2 - FertProdH2 + meSyH2 + fertProdH2 $endif.cm_subsec_model_chemicals / mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - OtherChem - HVC - Fertilizer + otherChem + hvc + fertilizer methanol methanolH2 - ammonia !! ammonia tech QIANZHI + ammonia ammoniaH2 - MethFinal - AmmoFinal + methFinal + ammoFinal co2f naphtha + plasticWaste $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -488,6 +493,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" co2f naphtha + plasticWaste $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eafscrap "Steel scrap used in EAF" @@ -502,15 +508,15 @@ $endif.cm_subsec_model_steel matOut(all_enty) "Materials which serve as output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - OtherChem - HVC - Fertilizer + otherChem + hvc + fertilizer methanol methanolH2 ammonia !! ammonia tech ammoniaH2 - MethFinal - AmmoFinal + methFinal + ammoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -520,24 +526,14 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / -matPrimChem(all_enty) "Materials which serve as output of a process" - / -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - HVC - methanol - ammonia !! ammonia tech -$endif.cm_subsec_model_chemicals - - / - matFin(mat) "Final products of a process-based production route" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - OtherChem - HVC - Fertilizer !! ammonia tech QIANZHI - MethFinal - AmmoFinal + otherChem + hvc + fertilizer + methFinal + ammoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel @@ -549,8 +545,7 @@ opmoPrc "Operation modes for technologies in process-based model" / standard "Only one operation mode implemented" $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - greyh2 "Input of green hydrogen to adjust the C-H ratio" - greenh2 "Input of green hydrogen to adjust the C-H ratio" + greenh2 "Input of green hydrogen to adjust the C-H ratio" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" ng "Direct reduction using natural gas" @@ -579,17 +574,21 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" otherChem_old otherChem_elec otherChem_h2 - - HVC_stCrLiq - HVC_stCrNg - HVC_meSol - HVC_meNg - HVC_meLiq - HVC_meSol_gh2 - HVC_meSol_cc - HVC_meNg_cc - HVC_meLiq_cc - HVC_meh2 + + mech_recycle + + hvc_stCrLiq + hvc_stCrNg + hvc_stCrChemRe + hvc_meSol + hvc_meNg + hvc_meLiq + hvc_meSol_gh2 + hvc_meSol_cc + hvc_meNg_cc + hvc_meLiq_cc + hvc_meh2 + hvc_mechemRe fertilizer_amSol fertilizer_amNg @@ -607,6 +606,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" meFinal_ng_cc meFinal_liq_cc meFinal_h2 + meFinal_chemRe amFinal_sol amFinal_ng @@ -653,35 +653,39 @@ $endif.cm_subsec_model_steel tePrc2opmoPrc(all_te,opmoPrc) "Mapping of technologies onto available operation modes" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard - ChemElec . standard - ChemH2 . standard - - StCrNG . standard - StCrLiq . standard - - MeSySol . (standard,greenh2) !! methanol tech QIANZHI - MeSyNG . standard - MeSyLiq . standard - MeSySolcc . standard - MeSyNGcc . standard - MeSyLiqcc . standard - MeSyH2 . standard - - AmSyCoal . standard !! ammonia tech QIANZHI - AmSyNG . standard - AmSyLiq . standard - AmSyCoalcc . standard - AmSyNGcc . standard - AmSyLiqcc . standard - AmSyH2 . standard - - MtOMtA . standard - MtOMtAH2 . standard - FertProd . standard - FertProdH2 . standard - MeToFinal . (standard,greenh2) - AmToFinal . (standard,greenh2) + chemOld . standard + chemElec . standard + chemH2 . standard + + stCrNg . standard + stCrLiq . standard + stCrChemRe . standard + + mechRe . standard + + meSySol . (standard,greenh2) + meSyNg . standard + meSyLiq . standard + meSySol_cc . standard + meSyNg_cc . standard + meSyLiq_cc . standard + meSyH2 . standard + meSyChemRe . standard + + amSyCoal . standard + amSyNG . standard + amSyLiq . standard + amSyCoal_cc . standard + amSyNG_cc . standard + amSyLiq_cc . standard + amSyH2 . standard + + mtoMta . standard + mtoMtaH2 . standard + fertProd . standard + fertProdH2 . standard + meToFinal . (standard,greenh2) + amToFinal . (standard,greenh2) $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (ng,h2) @@ -696,18 +700,23 @@ $endif.cm_subsec_model_steel tePrc2matIn(all_te,opmoPrc,mat) "Mapping of technologies onto input materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - FertProd . standard . ammonia - FertProdH2 . standard . ammoniaH2 - MtOMtA . standard . methanol - MtOMtAH2 . standard . methanolH2 - MeToFinal . standard . methanol - MeToFinal . greenh2 . methanolH2 - AmToFinal . standard . ammonia - AmToFinal . greenh2 . ammoniaH2 - - MeSyH2 . standard . co2f - FertProdH2 . standard . co2f - StCrLiq . standard . naphtha + fertProd . standard . ammonia + fertProdH2 . standard . ammoniaH2 + mtoMta . standard . methanol + mtoMtaH2 . standard . methanolH2 + meToFinal . standard . methanol + meToFinal . greenh2 . methanolH2 + amToFinal . standard . ammonia + amToFinal . greenh2 . ammoniaH2 + + meSyH2 . standard . co2f + fertProdH2 . standard . co2f + stCrLiq . standard . naphtha + + mechRe . standard . plasticWaste + stCrChemRe . standard . plasticWaste + meSyChemRe . standard . plasticWaste + $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" idr . (h2,ng) . dripell @@ -721,29 +730,32 @@ $endif.cm_subsec_model_steel tePrc2matOut(all_te,opmoPrc,mat) "Mapping of industry process technologies onto their output materials" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . OtherChem - ChemElec . standard . OtherChem - ChemH2 . standard . OtherChem - - StCrNG . standard . HVC - StCrLiq . standard . HVC - - MeSySol . (standard,greenh2) . methanol - MeSyNG . standard . methanol - MeSyLiq . standard . methanol - MeSyH2 . standard . methanolH2 - - AmSyCoal . standard . ammonia - AmSyNG . standard . ammonia - AmSyLiq . standard . ammonia - AmSyH2 . standard . ammoniaH2 - - MtOMtA . standard . HVC - MtOMtAH2 . standard . HVC - FertProd . standard . Fertilizer - FertProdH2 . standard . Fertilizer - MeToFinal . (standard,greenh2) . MethFinal - AmToFinal . (standard,greenh2) . AmmoFinal + chemOld . standard . otherChem + chemElec . standard . otherChem + chemH2 . standard . otherChem + + stCrNg . standard . hvc + stCrLiq . standard . hvc + stCrChemRe . standard . hvc + mechRe . standard . hvc + + meSySol . (standard,greenh2) . methanol + meSyNg . standard . methanol + meSyLiq . standard . methanol + meSyH2 . standard . methanolH2 + meSyChemRe . standard . methanolH2 + + amSyCoal . standard . ammonia + amSyNG . standard . ammonia + amSyLiq . standard . ammonia + amSyH2 . standard . ammoniaH2 + + mtoMta . standard . hvc + mtoMtaH2 . standard . hvc + fertProd . standard . fertilizer + fertProdH2 . standard . fertilizer + meToFinal . (standard,greenh2) . methFinal + amToFinal . (standard,greenh2) . ammoFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . pigiron @@ -757,7 +769,7 @@ $endif.cm_subsec_model_steel matStiffShare(all_enty) "Materials with restricted change of relative process volume shares" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - HVC + hvc methanol ammonia $endif.cm_subsec_model_chemicals @@ -767,17 +779,17 @@ tePrcStiffShare(all_te,opmoPrc,all_enty) "Industry process technologies with r / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - StCrNG . standard . HVC - StCrLiq . standard . HVC - MTOMTA . standard . HVC + stCrNg . standard . hvc + stCrLiq . standard . hvc + mtoMta . standard . hvc - MeSySol . standard . methanol - MeSyNG . standard . methanol - MeSyLiq . standard . methanol + meSySol . standard . methanol + meSyNg . standard . methanol + meSyLiq . standard . methanol - AmSyCoal . standard . ammonia - AmSyNG . standard . ammonia - AmSyLiq . standard . ammonia + amSyCoal . standard . ammonia + amSyNG . standard . ammonia + amSyLiq . standard . ammonia $endif.cm_subsec_model_chemicals / @@ -785,30 +797,33 @@ $endif.cm_subsec_model_chemicals tePrc2ue(all_te,opmoPrc,all_in) "Mapping of industry process technologies to the UE ces nodes they directly or indirectly feed into" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . ue_chemicals - ChemElec . standard . ue_chemicals - ChemH2 . standard . ue_chemicals - - StCrNG . standard . ue_chemicals - StCrLiq . standard . ue_chemicals - - MeSySol . (standard,greenh2) . ue_chemicals !! methanol tech QIANZHI - MeSySolcc . standard . ue_chemicals - MeSyNG . standard . ue_chemicals - (MeSyLiq,MeSyLiqcc) . standard . ue_chemicals - MeSyH2 . standard . ue_chemicals - - (AmSyCoal,AmSyCoalcc) . standard . ue_chemicals - (AmSyNG,AmSyNGcc) . standard . ue_chemicals !! ammonia tech QIANZHI - (AmSyLiq,AmSyLiqcc) . standard . ue_chemicals - AmSyH2 . standard . ue_chemicals - - MtOMtA . standard . ue_chemicals - MtOMtAH2 . standard . ue_chemicals - FertProd . standard . ue_chemicals - FertProdH2 . standard . ue_chemicals - MeToFinal . (standard,greenh2) . ue_chemicals - AmToFinal . (standard,greenh2) . ue_chemicals + chemOld . standard . ue_chemicals + chemElec . standard . ue_chemicals + chemH2 . standard . ue_chemicals + + stCrNg . standard . ue_chemicals + stCrLiq . standard . ue_chemicals + stCrChemRe . standard . ue_chemicals + mechRe . standard . ue_chemicals + + meSySol . (standard,greenh2) . ue_chemicals + meSySol_cc . standard . ue_chemicals + meSyNg . standard . ue_chemicals + (meSyLiq,meSyLiq_cc) . standard . ue_chemicals + meSyH2 . standard . ue_chemicals + meSyChemRe . standard . ue_chemicals + + (amSyCoal,amSyCoal_cc) . standard . ue_chemicals + (amSyNG,amSyNG_cc) . standard . ue_chemicals + (amSyLiq,amSyLiq_cc) . standard . ue_chemicals + amSyH2 . standard . ue_chemicals + + mtoMta . standard . ue_chemicals + mtoMtaH2 . standard . ue_chemicals + fertProd . standard . ue_chemicals + fertProdH2 . standard . ue_chemicals + meToFinal . (standard,greenh2) . ue_chemicals + amToFinal . (standard,greenh2) . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -824,13 +839,13 @@ $endif.cm_subsec_model_steel tePrc2teCCPrc(all_te,opmoPrc,all_te,opmoPrc) "Mapping of base technologies to CCS technologies" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - MeSySol . standard . MeSySolcc . standard !! methanol tech QIANZHI - MeSyNG . standard . MeSyNGcc . standard - MeSyLiq . standard . MeSyLiqcc . standard + meSySol . standard . meSySol_cc . standard + meSyNg . standard . meSyNg_cc . standard + meSyLiq . standard . meSyLiq_cc . standard - AmSyCoal . standard . AmSyCoalcc . standard !! ammonia tech QIANZHI - AmSyNG . standard . AmSyNGcc . standard - AmSyLiq . standard . AmSyLiqcc . standard + amSyCoal . standard . amSyCoal_cc . standard + amSyNG . standard . amSyNG_cc . standard + amSyLiq . standard . amSyLiq_cc . standard $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bf . standard . bfcc . standard @@ -842,42 +857,46 @@ tePrc2route(all_te,opmoPrc,route) "Mapping of technologies onto the production / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - ChemOld . standard . otherChem_old - ChemElec . standard . otherChem_elec - ChemH2 . standard . otherChem_h2 - - StCrNG . standard . HVC_stCrLiq - StCrLiq . standard . HVC_stCrNg - - MeSySol . standard . (HVC_meSol, meFinal_sol, HVC_meSol_cc, meFinal_sol_cc) - MeSyNG . standard . (HVC_meNg, meFinal_ng, HVC_meNg_cc, meFinal_ng_cc) - MeSyLiq . standard . (HVC_meLiq, meFinal_liq, HVC_meLiq_cc, meFinal_liq_cc) - MeSySol . greenh2 . (HVC_meSol_gh2, meFinal_sol_gh2) - MeSySolcc . standard . (HVC_meSol_cc, meFinal_sol_cc) - MeSyNGcc . standard . (HVC_meNg_cc, meFinal_ng_cc) - MeSyLiqcc . standard . (HVC_meLiq_cc, meFinal_liq_cc) - MeSyH2 . standard . (HVC_meh2, meFinal_h2) - - AmSyCoal . standard . (fertilizer_amSol, amFinal_sol, fertilizer_amSol_cc, amFinal_sol_cc) - AmSyNG . standard . (fertilizer_amNg, amFinal_ng, fertilizer_amNg_cc, amFinal_ng_cc) - AmSyLiq . standard . (fertilizer_amLiq, amFinal_liq, fertilizer_amLiq_cc, amFinal_liq_cc) - AmSyCoalcc . standard . (fertilizer_amSol_cc, amFinal_sol_cc) - AmSyNGcc . standard . (fertilizer_amNg_cc, amFinal_ng_cc) - AmSyLiqcc . standard . (fertilizer_amLiq_cc, amFinal_liq_cc) - AmSyH2 . standard . (fertilizer_amh2, amFinal_h2) - - MtOMtA . standard . (HVC_meSol, HVC_meSol_gh2, HVC_meNg, HVC_meLiq, - HVC_meSol_cc, HVC_meNg_cc, HVC_meLiq_cc) - MtOMtAH2 . standard . HVC_meh2 - FertProd . standard . (fertilizer_amSol, fertilizer_amNg, fertilizer_amLiq, + chemOld . standard . otherChem_old + chemElec . standard . otherChem_elec + chemH2 . standard . otherChem_h2 + + stCrNg . standard . hvc_stCrLiq + stCrLiq . standard . hvc_stCrNg + stCrChemRe. standard . hvc_stCrChemRe + + mechRe . standard . mech_recycle + + meSySol . standard . (hvc_meSol, meFinal_sol, hvc_meSol_cc, meFinal_sol_cc) + meSyNg . standard . (hvc_meNg, meFinal_ng, hvc_meNg_cc, meFinal_ng_cc) + meSyLiq . standard . (hvc_meLiq, meFinal_liq, hvc_meLiq_cc, meFinal_liq_cc) + meSySol . greenh2 . (hvc_meSol_gh2, meFinal_sol_gh2) + meSySol_cc . standard . (hvc_meSol_cc, meFinal_sol_cc) + meSyNg_cc . standard . (hvc_meNg_cc, meFinal_ng_cc) + meSyLiq_cc . standard . (hvc_meLiq_cc, meFinal_liq_cc) + meSyH2 . standard . (hvc_meh2, meFinal_h2) + meSyChemRe . standard . (hvc_mechemRe, meFinal_chemRe) + + amSyCoal . standard . (fertilizer_amSol, amFinal_sol, fertilizer_amSol_cc, amFinal_sol_cc) + amSyNG . standard . (fertilizer_amNg, amFinal_ng, fertilizer_amNg_cc, amFinal_ng_cc) + amSyLiq . standard . (fertilizer_amLiq, amFinal_liq, fertilizer_amLiq_cc, amFinal_liq_cc) + amSyCoal_cc . standard . (fertilizer_amSol_cc, amFinal_sol_cc) + amSyNG_cc . standard . (fertilizer_amNg_cc, amFinal_ng_cc) + amSyLiq_cc . standard . (fertilizer_amLiq_cc, amFinal_liq_cc) + amSyH2 . standard . (fertilizer_amh2, amFinal_h2) + + mtoMta . standard . (hvc_meSol, hvc_meSol_gh2, hvc_meNg, hvc_meLiq, + hvc_meSol_cc, hvc_meNg_cc, hvc_meLiq_cc) + mtoMtaH2 . standard . hvc_meh2 + fertProd . standard . (fertilizer_amSol, fertilizer_amNg, fertilizer_amLiq, fertilizer_amSol_cc, fertilizer_amNg_cc, fertilizer_amLiq_cc) - FertProdH2 . standard . fertilizer_amh2 - MeToFinal . standard . (meFinal_sol, meFinal_sol_gh2, meFinal_ng, meFinal_liq, + fertProdH2 . standard . fertilizer_amh2 + meToFinal . standard . (meFinal_sol, meFinal_sol_gh2, meFinal_ng, meFinal_liq, meFinal_sol_cc, meFinal_ng_cc, meFinal_liq_cc) - MeToFinal . greenh2 . meFinal_h2 - AmToFinal . standard . (amFinal_sol, amFinal_ng, amFinal_liq, + meToFinal . greenh2 . meFinal_h2 + amToFinal . standard . (amFinal_sol, amFinal_ng, amFinal_liq, amFinal_sol_cc, amFinal_ng_cc, amFinal_liq_cc) - AmToFinal . greenh2 . amFinal_h2 + amToFinal . greenh2 . amFinal_h2 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" eaf . sec . seceaf @@ -899,9 +918,9 @@ $endif.cm_subsec_model_steel routeCC(route) "TODO" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - HVC_meSol_cc - HVC_meNg_cc - HVC_meLiq_cc + hvc_meSol_cc + hvc_meNg_cc + hvc_meLiq_cc fertilizer_amLiq_cc fertilizer_amNg_cc fertilizer_amSol_cc @@ -922,9 +941,9 @@ $endif.cm_subsec_model_steel routeCC2baseRoute(route,route) "TODO" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - HVC_meSol_cc . HVC_meSol - HVC_meNg_cc . HVC_meNg - HVC_meLiq_cc . HVC_meLiq + hvc_meSol_cc . hvc_meSol + hvc_meNg_cc . hvc_meNg + hvc_meLiq_cc . hvc_meLiq fertilizer_amLiq_cc . fertilizer_amLiq fertilizer_amNg_cc . fertilizer_amNg fertilizer_amSol_cc . fertilizer_amSol @@ -944,11 +963,11 @@ $endif.cm_subsec_model_steel mat2ue(mat,all_in) "Mapping of materials (final route products) onto the UE ces tree node the model is connected to" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - OtherChem . ue_chemicals - HVC . ue_chemicals - Fertilizer . ue_chemicals !! ammonia tech QIANZHI - MethFinal . ue_chemicals - AmmoFinal . ue_chemicals + otherChem . ue_chemicals + hvc . ue_chemicals + fertilizer . ue_chemicals + methFinal . ue_chemicals + ammoFinal . ue_chemicals $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel . ue_steel_primary @@ -959,35 +978,39 @@ $endif.cm_subsec_model_steel fe2mat(all_enty,all_enty,all_te) "Set of industry technologies to be included in en2en, which connects capex and opex to budget" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - entydummy.entydummy.ChemOld - entydummy.entydummy.ChemElec - entydummy.entydummy.ChemH2 - - entydummy.entydummy.StCrNG - entydummy.entydummy.StCrLiq - - entydummy.entydummy.MeSySol !! methanol tech QIANZHI - entydummy.entydummy.MeSyNG - entydummy.entydummy.MeSyLiq - entydummy.entydummy.MeSySolcc - entydummy.entydummy.MeSyNGcc - entydummy.entydummy.MeSyLiqcc - entydummy.entydummy.MeSyH2 - - entydummy.entydummy.AmSyCoal !! ammonia tech QIANZHI - entydummy.entydummy.AmSyNG - entydummy.entydummy.AmSyLiq - entydummy.entydummy.AmSyCoalcc - entydummy.entydummy.AmSyNGcc - entydummy.entydummy.AmSyLiqcc - entydummy.entydummy.AmSyH2 - - entydummy.entydummy.MtOMtA - entydummy.entydummy.MtOMtAH2 - entydummy.entydummy.FertProd - entydummy.entydummy.FertProdH2 - entydummy.entydummy.MeToFinal - entydummy.entydummy.AmToFinal + entydummy.entydummy.chemOld + entydummy.entydummy.chemElec + entydummy.entydummy.chemH2 + + entydummy.entydummy.stCrNg + entydummy.entydummy.stCrLiq + entydummy.entydummy.stCrChemRe + + entydummy.entydummy.mechRe + + entydummy.entydummy.meSySol + entydummy.entydummy.meSyNg + entydummy.entydummy.meSyLiq + entydummy.entydummy.meSySol_cc + entydummy.entydummy.meSyNg_cc + entydummy.entydummy.meSyLiq_cc + entydummy.entydummy.meSyH2 + entydummy.entydummy.meSyChemRe + + entydummy.entydummy.amSyCoal + entydummy.entydummy.amSyNG + entydummy.entydummy.amSyLiq + entydummy.entydummy.amSyCoal_cc + entydummy.entydummy.amSyNG_cc + entydummy.entydummy.amSyLiq_cc + entydummy.entydummy.amSyH2 + + entydummy.entydummy.mtoMta + entydummy.entydummy.mtoMtaH2 + entydummy.entydummy.fertProd + entydummy.entydummy.fertProdH2 + entydummy.entydummy.meToFinal + entydummy.entydummy.amToFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1003,35 +1026,39 @@ $endif.cm_subsec_model_steel secInd37_tePrc(secInd37,all_te) "Mapping of technologies onto industry subsectors" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemicals . ChemOld - chemicals . ChemElec - chemicals . ChemH2 - - chemicals . StCrNG - chemicals . StCrLiq - - chemicals . MeSySol !! methanol tech QIANZHI - chemicals . MeSyNG - chemicals . MeSyLiq - chemicals . MeSySolcc - chemicals . MeSyNGcc - chemicals . MeSyLiqcc - chemicals . MeSyH2 - - chemicals . AmSyCoal !! ammonia tech QIANZHI - chemicals . AmSyNG - chemicals . AmSyLiq - chemicals . AmSyCoalcc - chemicals . AmSyNGcc - chemicals . AmSyLiqcc - chemicals . AmSyH2 - - chemicals . MtOMtA - chemicals . MtOMtAH2 - chemicals . FertProd - chemicals . FertProdH2 - chemicals . MeToFinal - chemicals . AmToFinal + chemicals . chemOld + chemicals . chemElec + chemicals . chemH2 + + chemicals . stCrNg + chemicals . stCrLiq + chemicals . stCrChemRe + + chemicals . mechRe + + chemicals . meSySol + chemicals . meSyNg + chemicals . meSyLiq + chemicals . meSySol_cc + chemicals . meSyNg_cc + chemicals . meSyLiq_cc + chemicals . meSyH2 + chemicals . meSyChemRe + + chemicals . amSyCoal + chemicals . amSyNG + chemicals . amSyLiq + chemicals . amSyCoal_cc + chemicals . amSyNG_cc + chemicals . amSyLiq_cc + chemicals . amSyH2 + + chemicals . mtoMta + chemicals . mtoMtaH2 + chemicals . fertProd + chemicals . fertProdH2 + chemicals . meToFinal + chemicals . amToFinal $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/scripts/start/getReportData.R b/scripts/start/getReportData.R index 70e7ced5aa..ba371ca3a0 100644 --- a/scripts/start/getReportData.R +++ b/scripts/start/getReportData.R @@ -64,7 +64,7 @@ getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc # MAgPIE 4 (up to date) map <- rbind(map,data.frame(emimag=emi_co2_luc, emirem="co2luc", factor_mag2rem=1/1000*12/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land|Agriculture|+|Animal Waste Management (Mt N2O/yr)", emirem="n2oanwstm", factor_mag2rem=28/44,stringsAsFactors=FALSE)) - map <- rbind(map,data.frame(emimag="Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Inorganic Fertilizers (Mt N2O/yr)", emirem="n2ofertin", factor_mag2rem=28/44,stringsAsFactors=FALSE)) + map <- rbind(map,data.frame(emimag="Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Inorganic fertilizers (Mt N2O/yr)", emirem="n2ofertin", factor_mag2rem=28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Manure applied to Croplands (Mt N2O/yr)", emirem="n2oanwstc", factor_mag2rem=28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Decay of Crop Residues (Mt N2O/yr)", emirem="n2ofertcr", factor_mag2rem=28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land|Agriculture|Agricultural Soils|+|Soil Organic Matter Loss (Mt N2O/yr)", emirem="n2ofertsom",factor_mag2rem=28/44,stringsAsFactors=FALSE)) @@ -78,7 +78,7 @@ getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc # MAgPIE 4 (intermediate - wrong units) map <- rbind(map,data.frame(emimag="Emissions|CO2|Land|+|Land-use Change (Mt CO2/yr)", emirem="co2luc", factor_mag2rem=1/1000*12/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O-N|Land|Agriculture|+|Animal Waste Management (Mt N2O-N/yr)", emirem="n2oanwstm", factor_mag2rem=28/44,stringsAsFactors=FALSE)) - map <- rbind(map,data.frame(emimag="Emissions|N2O-N|Land|Agriculture|Agricultural Soils|+|Inorganic Fertilizers (Mt N2O-N/yr)", emirem="n2ofertin", factor_mag2rem=28/44,stringsAsFactors=FALSE)) + map <- rbind(map,data.frame(emimag="Emissions|N2O-N|Land|Agriculture|Agricultural Soils|+|Inorganic fertilizers (Mt N2O-N/yr)", emirem="n2ofertin", factor_mag2rem=28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O-N|Land|Agriculture|Agricultural Soils|+|Manure applied to Croplands (Mt N2O-N/yr)",emirem="n2oanwstc", factor_mag2rem=28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O-N|Land|Agriculture|Agricultural Soils|+|Decay of Crop Residues (Mt N2O-N/yr)", emirem="n2ofertcr", factor_mag2rem=28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O-N|Land|Agriculture|Agricultural Soils|+|Soil Organic Matter Loss (Mt N2O-N/yr)", emirem="n2ofertsom",factor_mag2rem=28/44,stringsAsFactors=FALSE)) @@ -90,7 +90,7 @@ getReportData <- function(path_to_report,inputpath_mag="magpie_40",inputpath_acc # MAgPIE 3 map <- rbind(map,data.frame(emimag="Emissions|CO2|Land Use (Mt CO2/yr)", emirem="co2luc", factor_mag2rem=1/1000*12/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land Use|Agriculture|AWM (kt N2O/yr)", emirem="n2oanwstm", factor_mag2rem=1/1000*28/44,stringsAsFactors=FALSE)) - map <- rbind(map,data.frame(emimag="Emissions|N2O|Land Use|Agriculture|Cropland Soils|Inorganic Fertilizers (kt N2O/yr)", emirem="n2ofertin", factor_mag2rem=1/1000*28/44,stringsAsFactors=FALSE)) + map <- rbind(map,data.frame(emimag="Emissions|N2O|Land Use|Agriculture|Cropland Soils|Inorganic fertilizers (kt N2O/yr)", emirem="n2ofertin", factor_mag2rem=1/1000*28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land Use|Agriculture|Cropland Soils|Manure applied to Croplands (kt N2O/yr)", emirem="n2oanwstc", factor_mag2rem=1/1000*28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land Use|Agriculture|Cropland Soils|Decay of crop residues (kt N2O/yr)", emirem="n2ofertcr", factor_mag2rem=1/1000*28/44,stringsAsFactors=FALSE)) map <- rbind(map,data.frame(emimag="Emissions|N2O|Land Use|Agriculture|Cropland Soils|Soil organic matter loss (kt N2O/yr)", emirem="n2ofertsom",factor_mag2rem=1/1000*28/44,stringsAsFactors=FALSE)) From 7114fce20bce98b2be10338e8d4e26b34828beb4 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Wed, 7 May 2025 08:41:31 +0200 Subject: [PATCH 51/69] first couple with MFA --- config/scenario_config.csv | 96 ++++++++++---------- core/datainput.gms | 76 +++++++++------- core/input/generisdata_tech.prn | 14 ++- main.gms | 1 + modules/37_industry/subsectors/bounds.gms | 17 +++- modules/37_industry/subsectors/datainput.gms | 90 +++++++++++------- 6 files changed, 179 insertions(+), 115 deletions(-) diff --git a/config/scenario_config.csv b/config/scenario_config.csv index abf5c8770b..470b324896 100644 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -1,53 +1,57 @@ -title;start;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_endYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +title;start;cm_PlasticMFA;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_endYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description # H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-NDC;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-NDCsy2025;1,AMT,2;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-NPi;SSP2-NPi;SSP2-NPi2025;SSP2-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025.The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-NPi2025;1,AMT,2;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-PkBudg500;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650_005;1,AMT,2;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg1000;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP2-PkBudg1000_005;1,AMT,2;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP2-EcBudg400;1,AMT,2;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;300;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. -SSP2-rollBack;1,AMT,2;;;;;;;;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. +SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;off;calibrate;;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NPi-calibrate_MFA;calibrate,AMT,compileInTests,calibrateSSP2;on;calibrate;;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NDC;1,AMT,2;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NDCsy2025;1,AMT,2;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-NPi;SSP2-NPi;SSP2-NPi2025;SSP2-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025.The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NPi2025;1,AMT,2;off;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-NPi2025_MFA;1,AMT,2;on;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-PkBudg500;1,AMT,2;;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650;1,AMT,2;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650_noMFA;1,AMT,2;off;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-05-05_22.51.41/fulldata.gdx;;output/SSP2-NPi2025_2025-05-05_22.51.41/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650_MFA;1,AMT,2;on;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_MFA_2025-05-05_22.52.21/fulldata.gdx;;output/SSP2-NPi2025_MFA_2025-05-05_22.52.21/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650_005;1,AMT,2;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg1000;1,AMT,2;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2-PkBudg1000_005;1,AMT,2;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2-EcBudg400;1,AMT,2;;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;300;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. +SSP2-rollBack;1,AMT,2;;;;;;;;;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. # EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-EU21-NPi-calibrate;calibrate,calibrateSSP2;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-EU21-NDC;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-EU21-NPi2025;SSP2-EU21-NPi;SSP2-EU21-NPi2025;SSP2-EU21-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-EU21-NDCsy2025;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-NPi2025;SSP2-EU21-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2-EU21-NPi;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-EU21-NPi2025;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-EU21-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2-EU21-PkBudg500;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg500: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-EU21-PkBudg650;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg650: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-EU21-PkBudg1000;1,AMT,2;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg1050: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2-EU21-NPi-calibrate;calibrate,calibrateSSP2;;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-EU21-NDC;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-EU21-NPi2025;SSP2-EU21-NPi;SSP2-EU21-NPi2025;SSP2-EU21-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-EU21-NDCsy2025;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-EU21-NPi;SSP2-EU21-NPi;SSP2-EU21-NPi2025;SSP2-EU21-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2-EU21-NPi;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-EU21-NPi2025;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-EU21-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2-EU21-PkBudg500;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg500: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-EU21-PkBudg650;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg650: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-EU21-PkBudg1000;1,AMT,2;;;;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-EU21-NPi2025;;SSP2-EU21-NPi2025;SSP2-EU21-PkBudg1050: This climate policy scenario follows the SSP2. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP3;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP3-NPi-calibrate;calibrate;calibrate;14;;;;;3;;;;;NPi;;;;;;;;;1;;;;;;;;;;NPi2018;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;;2005;;;;;SSP3-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. -SSP3-NPi_impCM-calibrate;calibrate;calibrate;14;;;;;3;imperfect;;;;NPi;;;;;;;;;1;;;;;;;;;;NPi2018;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;;2005;;;;;SSP3-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. -SSP3-NDC;1;;;;;;;3;;3;;;NDC;;;;;;;;;1;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP3-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 3 called High. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP3-NPi2025;1,AMT;;;;;;;3;;0;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;;1;2030;;SSP2-NPi2025;;;SSP3-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 3 called High. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP3-PkBudg1000;1,AMT;;;;;rcp26;;3;;9;1000;;functionalForm;;75;2080;;GLO 2100;;;;1;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;2;SSP3;1.5;;;forcing_SSP3;CLE;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP3-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP3-rollBack;1,AMT;;;;;;;3;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;1;2030;;SSP2-NPi2025;;;SSP3-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. +SSP3-NPi-calibrate;calibrate;;calibrate;14;;;;;3;;;;;NPi;;;;;;;;;1;;;;;;;;;;NPi2018;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;;2005;;;;;SSP3-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. +SSP3-NPi_impCM-calibrate;calibrate;;calibrate;14;;;;;3;imperfect;;;;NPi;;;;;;;;;1;;;;;;;;;;NPi2018;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;;2005;;;;;SSP3-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 3 called High. +SSP3-NDC;1;;;;;;;;3;;3;;;NDC;;;;;;;;;1;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP3-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 3 called High. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP3-NPi2025;1,AMT;;;;;;;;3;;0;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;;1;2030;;SSP2-NPi2025;;;SSP3-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 3 called High. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP3-PkBudg1000;1,AMT;;;;;;rcp26;;3;;9;1000;;functionalForm;;75;2080;;GLO 2100;;;;1;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;2;SSP3;1.5;;;forcing_SSP3;CLE;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP3-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP3-rollBack;1,AMT;;;;;;;;3;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;1;2030;;SSP2-NPi2025;;;SSP3-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. # H12 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP1-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. -SSP1-NDC;1,compileInTests;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP1-NPi2025;1,AMT;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP1-PkBudg650;1,AMT;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;1;forcing_SSP1;MFR;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP1-PkBudg1000;1,AMT;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;1;forcing_SSP1;MFR;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP1-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-NDC;1,compileInTests;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP1-NPi2025;1,AMT;;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP1-PkBudg650;1,AMT;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;1;forcing_SSP1;MFR;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP1-PkBudg1000;1,AMT;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;1;forcing_SSP1;MFR;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP2 lowEnergy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2_lowEn-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;Mix1;;2005;;;;;SSP2_lowEn-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. -SSP2_lowEn-NDC;0;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. This scenario also assumes low energy demand trajectories. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP2_lowEn-NPi2025;0;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2_lowEn-PkBudg650;0;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2_lowEn-PkBudg1000;0;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2_lowEn-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;Mix1;;2005;;;;;SSP2_lowEn-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. +SSP2_lowEn-NDC;0;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. This scenario also assumes low energy demand trajectories. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP2_lowEn-NPi2025;0;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2_lowEn-PkBudg650;0;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2_lowEn-PkBudg1000;0;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP5-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;1;1.75;;;;;3;2;;;NPi2018;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix1;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. -SSP5-NDC;1;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP5-NPi2025;1;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP5-PkBudg650;1;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP5-PkBudg1000;1,compileInTests;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP5-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;1;1.75;;;;;3;2;;;NPi2018;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix1;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. +SSP5-NDC;1;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP5-NPi2025;1;;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP5-PkBudg650;1;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP5-PkBudg1000;1,compileInTests;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP2IndiaHigh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2IndiaHigh-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2IndiaHigh-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2IndiaHigh-NPi2025;1;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;;;;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP2IndiaHigh-PkBudg650;1;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2IndiaHigh-PkBudg1000;1;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. +SSP2IndiaHigh-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2IndiaHigh-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2IndiaHigh-NPi2025;1;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;;;;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP2IndiaHigh-PkBudg650;1;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2IndiaHigh-PkBudg1000;1;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. diff --git a/core/datainput.gms b/core/datainput.gms index f9f4c2d0db..645d365028 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1307,26 +1307,27 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! p_adj_seed_te(ttot,regi,"chemElec") = 0.50; -!! p_adj_seed_te(ttot,regi,"chemH2") = 0.25; + !!p_adj_seed_te(ttot,regi,"chemElec") = 0.50; + !!p_adj_seed_te(ttot,regi,"chemH2") = 0.50; p_adj_seed_te(ttot,regi,"meSySol") = 0.0001; p_adj_seed_te(ttot,regi,"meSyNg") = 0.0001; p_adj_seed_te(ttot,regi,"meSyLiq") = 0.0001; - p_adj_seed_te(ttot,regi,"meSySol_cc") = 0.10; - p_adj_seed_te(ttot,regi,"meSyNg_cc") = 0.10; - p_adj_seed_te(ttot,regi,"meSyLiq_cc") = 0.10; - p_adj_seed_te(ttot,regi,"meSyH2") = 0.10; + p_adj_seed_te(ttot,regi,"meSySol_cc") = 0.0001; + p_adj_seed_te(ttot,regi,"meSyNg_cc") = 0.0001; + p_adj_seed_te(ttot,regi,"meSyLiq_cc") = 0.0001; + p_adj_seed_te(ttot,regi,"meSyH2") = 2.0; p_adj_seed_te(ttot,regi,"amSyCoal") = 0.0001; p_adj_seed_te(ttot,regi,"amSyNG") = 0.0001; p_adj_seed_te(ttot,regi,"amSyLiq") = 0.0001; - p_adj_seed_te(ttot,regi,"amSyCoal_cc") = 0.10; - p_adj_seed_te(ttot,regi,"amSyNG_cc") = 0.10; - p_adj_seed_te(ttot,regi,"amSyLiq_cc") = 0.10; - p_adj_seed_te(ttot,regi,"amSyH2") = 0.25; + p_adj_seed_te(ttot,regi,"amSyCoal_cc") = 0.0001; + p_adj_seed_te(ttot,regi,"amSyNG_cc") = 0.0001; + p_adj_seed_te(ttot,regi,"amSyLiq_cc") = 0.0001; + p_adj_seed_te(ttot,regi,"amSyH2") = 2.0; p_adj_seed_te(ttot,regi,"stCrLiq") = 0.0001; p_adj_seed_te(ttot,regi,"stCrNg") = 0.0001; p_adj_seed_te(ttot,regi,"mtoMta") = 0.0001; - p_adj_seed_te(ttot,regi,"fertProdH2") = 0.10; + p_adj_seed_te(ttot,regi,"mtoMtaH2") = 2.0; + p_adj_seed_te(ttot,regi,"fertProdH2") = 2.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_seed_te(ttot,regi,"bfcc") = 0.05; @@ -1364,24 +1365,25 @@ $endif.cm_subsec_model_steel $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !!p_adj_coeff(ttot,regi,"chemElec") = 0.25; !!p_adj_coeff(ttot,regi,"chemH2") = 1.0; - !!p_adj_coeff(ttot,regi,"meSySol") = 3.0; - !!p_adj_coeff(ttot,regi,"meSyNg") = 3.0; - !!p_adj_coeff(ttot,regi,"meSyLiq") = 3.0; - p_adj_coeff(ttot,regi,"meSySol_cc") = 1.0; - p_adj_coeff(ttot,regi,"meSyNg_cc") = 1.0; - p_adj_coeff(ttot,regi,"meSyLiq_cc") = 1.0; - p_adj_coeff(ttot,regi,"meSyH2") = 1.0; - !!p_adj_coeff(ttot,regi,"amSyCoal") = 3.0; - !!p_adj_coeff(ttot,regi,"amSyNG") = 3.0; - !!p_adj_coeff(ttot,regi,"amSyLiq") = 3.0; - p_adj_coeff(ttot,regi,"amSyCoal_cc") = 1.0; - p_adj_coeff(ttot,regi,"amSyNG_cc") = 1.0; - p_adj_coeff(ttot,regi,"amSyLiq_cc") = 1.0; - p_adj_coeff(ttot,regi,"amSyH2") = 0.5; - !!p_adj_coeff(ttot,regi,"stCrLiq") = 3.0; - !!p_adj_coeff(ttot,regi,"stCrNg") = 3.0; - !!p_adj_coeff(ttot,regi,"mtoMta") = 1.0; - !!p_adj_coeff(ttot,regi,"fertProdH2") = 1.0; + p_adj_coeff(ttot,regi,"meSySol") = 3.0; + p_adj_coeff(ttot,regi,"meSyNg") = 3.0; + p_adj_coeff(ttot,regi,"meSyLiq") = 3.0; + p_adj_coeff(ttot,regi,"meSySol_cc") = 3.0; + p_adj_coeff(ttot,regi,"meSyNg_cc") = 3.0; + p_adj_coeff(ttot,regi,"meSyLiq_cc") = 3.0; + p_adj_coeff(ttot,regi,"meSyH2") = 0.1; + p_adj_coeff(ttot,regi,"amSyCoal") = 3.0; + p_adj_coeff(ttot,regi,"amSyNG") = 3.0; + p_adj_coeff(ttot,regi,"amSyLiq") = 3.0; + p_adj_coeff(ttot,regi,"amSyCoal_cc") = 3.0; + p_adj_coeff(ttot,regi,"amSyNG_cc") = 3.0; + p_adj_coeff(ttot,regi,"amSyLiq_cc") = 3.0; + p_adj_coeff(ttot,regi,"amSyH2") = 0.1; + p_adj_coeff(ttot,regi,"stCrLiq") = 3.0; + p_adj_coeff(ttot,regi,"stCrNg") = 3.0; + p_adj_coeff(ttot,regi,"mtoMta") = 1.0; + p_adj_coeff(ttot,regi,"mtoMtaH2") = 0.1; + p_adj_coeff(ttot,regi,"fertProdH2") = 0.1; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p_adj_coeff(ttot,regi,"bfcc") = 1.0; @@ -1665,13 +1667,25 @@ pm_emifacNonEnergy(ttot,regi,"segafos", "fegas","indst","co2") = f_nechem_emissi ***------ Read in projections for incineration rates of plastic waste--- *** "incineration rates [fraction]" + parameter f_incinerationShares(ttot,all_regi) "incineration rate of plastic waste" + +$ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" / $ondelim -$include "./core/input/f_incinerationShares.cs4r" +$include "./core/input/f_incinerationSharesMFA.cs4r" $offdelim +/; +$endif.PlasticMFA + +$ifthen.PlasticMFA "%cm_PlasticMFA%" == "off" / -; +$ondelim +$include "./core/input/f_incinerationShares.cs4r" +$offdelim +/; +$endif.PlasticMFA + pm_incinerationRate(ttot,all_regi)=f_incinerationShares(ttot,all_regi); *** some balances are not matching by small amounts; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index cb2b864dcf..3f054068f7 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -159,7 +159,7 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld chemElec chemH2 stCrNg stCrLiq amSyCoal amSyNG amSyLiq amSyH2 meSySol meSyNG meSyLiq meSyH2 !! documentation & sources: see below -inco0 500 500 500 1500 1000 2000 875 1200 1200 700 310 300 800 +inco0 500 500 500 1100 1000 2000 875 1200 1200 700 310 300 800 omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 @@ -180,7 +180,7 @@ lifetime 30 30 30 30 30 + mechRe stCrChemRe meSyChemRe !! documentation & sources: see below -inco0 400 2200 55 +inco0 0 2200 55 omf 0.05 0.03 0.055 constrTme 3 3 3 lifetime 30 30 30 @@ -350,6 +350,8 @@ chemOld chemElec and chemH2: stCrNg and stCrLiq: + Note: As a general principle, carbon-containing products are included in the calculation, and hydrogen is used directly as an energy input. + for Naphtha Steam Cracking CAPEX ~ 2057 $/t Ethylene (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) @@ -357,12 +359,16 @@ stCrNg and stCrLiq: Output ratio: 97.2 Naphtha → 31.86 Ethylene + 13.01 Propylene + 17.48 BTX + 3.78 Others (Sources: Spallina17 Table 5.) + inco0 ~ 2057 $/t * (31.86/(31.86+13.01+17.48)) ~ 1000 $/t + for NG Steam Cracking CAPEX ~ 369.4(gas porcessing) + 912.6(co-Cracking) = 1282 Million $ (Sources: Minbo Yang 2017. Table 3) - Output ratio: 197.3 Ethane-propane → 125.0 Ethylene + 28.4 Propylene + 1.6 BTX + 19.2 Others - (Sources: Spallina17 Table 5.) + Output ratio: 197.3 Ethane-propane → 125.0 Ethylene + 28.4 Propylene + 1.6 BTX + 10.8 Others + (Sources: Minbo Yang 2017. Table 1) + + inco0 ~ 1282 Million $ * (125.0/(125.0+28.4+1.6)) /8760/0.8*1000*1000 ~ 1100 $/t diff --git a/main.gms b/main.gms index 4c87ca1340..8a86dc5cd6 100755 --- a/main.gms +++ b/main.gms @@ -1884,6 +1884,7 @@ $setGlobal c_nonco2_macc_scenario Default !! def = Default *' * (on): also non-optimal regions are solved again, up to cm_solver_try_max $setglobal cm_repeatNonOpt off !! def = off !! regexp = off|on +$setglobal cm_PlasticMFA !! def = off !! regexp = ^(off|on)$ *' @stop *------------------------------------------------------------------------------------- diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index bc3b775758..5ee287f27b 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -176,8 +176,21 @@ vm_demFeSector_afterTax.lo(t,regi,entySe,"fesos","indst",emiMkt)$(NOT sameAs(emi v37_matShareChange.lo(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = -cm_maxIndPrcShareChange; v37_matShareChange.up(t,regi,tePrc,opmoPrc,mat)$(tePrcStiffShare(tePrc,opmoPrc,mat)) = cm_maxIndPrcShareChange; -vm_outflowPrc.up(t,regi,"mechRe","standard") = 0.01; !! Due to downgraded recycling and pure feedstock limitations +vm_outflowPrc.up(t,regi,"mechRe","standard") = 0.; !! Due to downgraded recycling and pure feedstock limitations + + +$ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" +vm_outflowPrc.up(t,regi,"mechRe","standard") = p37_recycleMech(t,regi); +vm_outflowPrc.up(t,"SSA","mechRe","standard") = p37_recycleMech(t,"SSA") * 0.2; +$endif.PlasticMFA + !!vm_outflowPrc.up(t,regi,"stCrChemRe","standard") = 0.01; !!vm_outflowPrc.up(t,regi,"meSyChemRe","standard") = 0.01; -v37_matFlow.up(t,regi,"plasticWaste") = 0.03; !! Due to the limitations of the collection +v37_matFlow.up(t,regi,"plasticWaste") = 0.; !! Due to the limitations of the collection + +$ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" +v37_matFlow.up(t,regi,"plasticWaste") = p37_plastcWaste(t,regi); +v37_matFlow.up(t,"SSA","plasticWaste") = p37_plastcWaste(t,"SSA") * 0.2; +$endif.PlasticMFA + *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 5e6c2c71c5..2971208c32 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -657,7 +657,7 @@ p37_specMatDem("ammoniaH2","amToFinal","greenh2") = 1; p37_specMatDem("methanol","meToFinal","standard") = 1; p37_specMatDem("methanolH2","meToFinal","greenh2") = 1; -p37_specMatDem("naphtha","stCrLiq","standard") = 0.95 * 20.56 / (sm_TWa_2_MWh/sm_giga_2_non); !!Assume 95% is feedstock +p37_specMatDem("naphtha","stCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specMatDem("plasticWaste","mechRe","standard") = 1/0.79; !! Source: Taylor Uekert 2023 Table S1 - S4. p37_specMatDem("plasticWaste","meSyChemRe","standard") = 1/0.68; !! Source: Shaik Afzal 2023 Table S9. @@ -703,12 +703,14 @@ p37_specFeDemTarget("fehos","chemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_ p37_specFeDemTarget("feh2s","chemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("feels","chemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","stCrNg","standard") = 17.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 -p37_specFeDemTarget("fehos","stCrNg","standard") = 5.83 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 -p37_specFeDemTarget("feels","stCrNg","standard") = 0.16 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: A. Boulamanti and J. A. Moya, Renew. Sustain. Energy Rev., 2017, 68, 1205–1212. Table2 Ethane is 0.14 and Propane & Butane is 0.18 +p37_specFeDemTarget("fehos","stCrNg","standard") = 15.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 NGL input/(Ethylene + By Products) +!!p37_specFeDemTarget("fegas","stCrNg","standard") = 2.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 External Energy input/(Ethylene + By Products) +p37_specFeDemTarget("fegas","stCrNg","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 (External Energy input - Hydrogen Output)/(Ethylene + By Products) +p37_specFeDemTarget("feels","stCrNg","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 Electricity input/(Ethylene + By Products) -p37_specFeDemTarget("fehos","stCrLiq","standard") = 19.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 95%feedstock -p37_specFeDemTarget("feels","stCrLiq","standard") = 0.26 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Spallina17 Table 5 +p37_specFeDemTarget("fehos","stCrLiq","standard") = 14.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Naphtha input/(Ethylene + By Products) +!!p37_specFeDemTarget("fegas","stCrLiq","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Naphtha input/(Ethylene + By Products) +p37_specFeDemTarget("feels","stCrLiq","standard") = 0.07 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Electricity input/(Ethylene + By Products) p37_specFeDemTarget("fegas","stCrChemRe","standard") = 2.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel p37_specFeDemTarget("feels","stCrChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 @@ -729,12 +731,12 @@ p37_specFeDemTarget("feels","meSyNg","standard") = 0.1 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fehos","meSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh p37_specFeDemTarget("feels","meSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","meSySol_cc","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO:Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","meSySol_cc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","meSySol_cc","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO:Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("feels","meSySol_cc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as meSyNg_cc +p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as meSyNg_cc Mwh/tC p37_specFeDemTarget("feh2s","meSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen p37_specFeDemTarget("feels","meSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen @@ -751,11 +753,11 @@ p37_specFeDemTarget("feels","amSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fehos","amSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 p37_specFeDemTarget("feels","amSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","amSyCoal_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","amSyCoal_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc +p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc Mwh/tC p37_specFeDemTarget("feh2s","amSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia p37_specFeDemTarget("feels","amSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 @@ -808,20 +810,21 @@ $endif.cm_subsec_model_steel p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; -$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_captureRate("meSySol_cc") = 0.9; -p37_captureRate("meSyNg_cc") = 0.9; -p37_captureRate("meSyLiq_cc") = 0.9; +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!!Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_captureRate("meSySol_cc") = 0.95 * 0.71; !! Considering the carbon content in MeOH +p37_captureRate("meSyNg_cc") = 0.95 * 0.22; +p37_captureRate("meSyLiq_cc") = 0.95 * 0.5; p37_selfCaptureRate("meSySol_cc") = 0.9; -p37_selfCaptureRate("meSyNg_cc") = 0.9; -p37_selfCaptureRate("meSyLiq_cc") = 0.9; - -p37_captureRate("amSyCoal_cc") = 0.9; -p37_captureRate("amSyNG_cc") = 0.9; -p37_captureRate("amSyLiq_cc") = 0.9; -p37_selfCaptureRate("amSyCoal_cc") = 0.9; -p37_selfCaptureRate("amSyNG_cc") = 0.9; -p37_selfCaptureRate("amSyLiq_cc") = 0.9; +p37_selfCaptureRate("meSyNg_cc") = 0.95; +p37_selfCaptureRate("meSyLiq_cc") = 0.95; + +p37_captureRate("amSyCoal_cc") = 0.95; +p37_captureRate("amSyNG_cc") = 0.95; +p37_captureRate("amSyLiq_cc") = 0.95; +p37_selfCaptureRate("amSyCoal_cc") = 0.95; +p37_selfCaptureRate("amSyNG_cc") = 0.95; +p37_selfCaptureRate("amSyLiq_cc") = 0.95; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -835,14 +838,14 @@ $endif.cm_subsec_model_steel p37_priceMat(ttot,all_regi,all_enty) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; +!!Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; -loop(t$(t.val > 2020), - loop(all_regi, - p37_priceMat(t,all_regi,"naphtha") = -0.4 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); +!!loop(t$(t.val > 2020), +!! loop(all_regi, +!! p37_priceMat(t,all_regi,"naphtha") = -0.4 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); !!p37_priceMat(t,all_regi,"co2f") = 10 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 - ); -); +!! ); +!!); !! Source: Geetanjali Yadav 2023 Table S12 → 0.6 $/kg !! Source: Taylor Uekert 2023 Table Table S23 → 0.2-0.4 $/kg !! Source: Shaik Afzal 2023 Table Table S6 → 0.4-0.8 $/kg @@ -1190,4 +1193,27 @@ if (cm_startyear gt 2005, execute_load "input_ref.gdx" v37_plasticWaste.l = v37_plasticWaste.l; ); + +$ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" +Parameter + p37_recycleMech(tall,all_regi) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_RecycleMech.cs4r"; +$offdelim + / +; +$endif.PlasticMFA + +$ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" +Parameter + p37_plastcWaste(tall,all_regi) "TODO" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_PlasticWaste.cs4r"; +$offdelim + / +; +$endif.PlasticMFA + *** EOF ./modules/37_industry/subsectors/datainput.gms From 580144b8e6e68b8c1b9a72634a0badd173762360 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Wed, 21 May 2025 09:43:43 +0200 Subject: [PATCH 52/69] add co2 dummy for quick fix --- config/scenario_config.csv | 48 +++------- core/datainput.gms | 8 +- core/sets.gms | 1 + modules/37_industry/subsectors/datainput.gms | 26 ++--- modules/37_industry/subsectors/sets.gms | 6 +- .../coupled/realization.gms | 2 +- modules/52_internalizeLCAimpacts/module.gms | 2 +- renv/activate.R | 95 ++++++++----------- 8 files changed, 75 insertions(+), 113 deletions(-) diff --git a/config/scenario_config.csv b/config/scenario_config.csv index 6b1a9bd3d9..496c6c130f 100644 --- a/config/scenario_config.csv +++ b/config/scenario_config.csv @@ -1,20 +1,16 @@ title;start;cm_PlasticMFA;CES_parameters;slurmConfig;regionmapping;extramappings_historic;cm_rcp_scen;subsidizeLearning;cm_prtpScen;capitalMarket;cm_iterative_target_adj;cm_budgetCO2from2020;cm_budgetCO2_absDevTol;carbonprice;cm_taxCO2_functionalForm;cm_taxCO2_startyear;cm_peakBudgYr;cm_taxCO2_regiDiff;cm_taxCO2_regiDiff_endYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_bioenergy_SustTax;cm_33EW;cm_33OAE;cm_33_OAE_limit_EEZ;cm_frac_NetNegEmi;c_ccsinjecratescen;c_ccscapratescen;cm_CESMkup_build;cm_wasteIncinerationCCSshare;techpol;regipol;cm_implicitQttyTarget;cm_emiMktTarget;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_GDPpopScen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_LU_emi_scen;cm_tradecostBio;cm_maxProdBiolc;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;cm_EDGEtr_scen;c_changeProdCost;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description # H12 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;off;calibrate;;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. -SSP2-NPi-calibrate_MFA;calibrate,AMT,compileInTests,calibrateSSP2;on;calibrate;;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2-NPi-calibrate;calibrate,AMT,compileInTests,calibrateSSP2;off;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2-NDC;1,AMT,2;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;SSP2-NPi2025;SSP2-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. SSP2-NDCsy2025;1,AMT,2;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;;;;;;;;;;;;;;;;5;2025;;SSP2-NPi;SSP2-NPi;SSP2-NPi2025;SSP2-NDCsy2025: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi until 2020 and has start year 2025.The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. SSP2-NPi;1,AMT,compileInTests,2;;;;;;;;;;0;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-NPi: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-NPi2025;1,AMT,2;off;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-NPi2025_MFA;1,AMT,2;on;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2005;;;;;SSP2-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. SSP2-PkBudg500;1,AMT,2;;;;;;rcp20;globallyOptimal;;;9;500;;functionalForm;;200;2045;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 500 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be well below 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650;1,AMT,2;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650_noMFA;1,AMT,2;off;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-05-05_22.51.41/fulldata.gdx;;output/SSP2-NPi2025_2025-05-05_22.51.41/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650_MFA;1,AMT,2;on;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_MFA_2025-05-05_22.52.21/fulldata.gdx;;output/SSP2-NPi2025_MFA_2025-05-05_22.52.21/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP2-PkBudg650_005;1,AMT,2;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650;1,AMT,2;off;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP2-PkBudg650_MFA;1,AMT,2;on;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025_MFA;;SSP2-NPi2025_MFA;SSP2-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2-PkBudg1000;1,AMT,2;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP2-PkBudg1000_005;1,AMT,2;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;;;;;;;;2;;;;;;;Mix3ICEban;1;2030;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;;output/SSP2-NPi2025_2025-03-21_08.42.28/fulldata.gdx;SSP2-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -SSP2-EcBudg400;1,AMT,2;;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;300;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. +SSP2-EcBudg400;1,AMT,2;;;;;;rcp26;globallyOptimal;;;5;400;5;functionalForm;exponential;70;;initialSpread20;GLO 2070;;;;;;1;1;5000;0;;;;2060.GLO 0.9;NDC;;;;;;;;;;;;;;;2;;;200;;;;Mix3ICEban;1;2035;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-EcBudg400: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The stylized climate policy scenario assumes an end-of-century budget of 400 Gt CO2 on total CO2 emissions from 2020 to 2100. This is a high overshoot scenario with delayed climate policy. SSP2-rollBack;1,AMT,2;;;;;;;;;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;;;;;;;;;;;;;;;;Mix1;1;2030;;SSP2-NPi2025;;SSP2-NPi2025;SSP2-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called Middle of the Road. # EU21 SSP2;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SSP2-EU21-NPi-calibrate;calibrate,calibrateSSP2;;calibrate;14;./config/regionmapping_21_EU11.csv;./config/extramapping_EU27.csv;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2-EU21-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. @@ -33,19 +29,11 @@ SSP3-NPi2025;1,AMT;;;;;;;;3;;0;;;;;;;;;;;;1;;;;;;;;;;;;;;;;;SSP3;SSP3;;;highCoal SSP3-PkBudg1000;1,AMT;;;;;;rcp26;;3;;9;1000;;functionalForm;;75;2080;;GLO 2100;;;;1;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;2;SSP3;1.5;;;forcing_SSP3;CLE;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP3-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. The stylized climate policy scenario assumes a peak budget of 1150 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. SSP3-rollBack;1,AMT;;;;;;;;3;;0;;;none;;;;;;0;;;5;;;;;;;;;;none;;;;;;;SSP3;SSP3;;;highCoal;SSP3;;0;;SSP3;1.5;;;forcing_SSP3;CLE;Mix1;1;2030;;SSP2-NPi2025;;;SSP3-rollBack: This rollback of climate policy scenario follows the Shared Socioeconomic Pathways 3 called High. # H12 SSP1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -<<<<<<< HEAD -SSP1-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. -SSP1-NDC;1,compileInTests;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP1-NPi2025;1,AMT;;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;1;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP1-PkBudg650;1,AMT;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;1;forcing_SSP1;MFR;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP1-PkBudg1000;1,AMT;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;1;forcing_SSP1;MFR;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -======= -SSP1-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;MFR;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. -SSP1-NDC;1,compileInTests;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP1-NPi2025;1,AMT;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP1-PkBudg650;1,AMT;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;MFR;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP1-PkBudg1000;1,AMT;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;MFR;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. ->>>>>>> upstream/develop +SSP1-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NPi2018;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;MFR;Mix1;;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-NDC;1,compileInTests;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP1-NPi2025;1,AMT;;;;;;;;;;0;;;;;;;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;;;;;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;;SSP1;;100;;forcing_SSP1;MFR;;1;2030;;SSP2-NPi2025;;;SSP1-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP1-PkBudg650;1,AMT;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;feelhpb 1.4, fehob 0.8, feheb 0.15;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;MFR;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP1-PkBudg1000;1,AMT;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;GLO 0.12, EUR_regi 0.15;;2;;;;;;5;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP1;SSP1;lowOil;lowGas;lowCoal;SSP1;;4;2;SSP1;;100;;forcing_SSP1;MFR;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP1-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP2 lowEnergy;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SSP2_lowEn-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;Mix1;;2005;;;;;SSP2_lowEn-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. SSP2_lowEn-NDC;0;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;;;;;;;;;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;;SSP2_lowEn;;;;;;;;SSP2_lowEn;;;;;;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP2_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. It assumes NPi2025 until 2025 and has start year 2030. This scenario also assumes low energy demand trajectories. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. @@ -53,19 +41,11 @@ SSP2_lowEn-NPi2025;0;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2_lowEn;;;;;;;;S SSP2_lowEn-PkBudg650;0;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;;;;;;;;;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. SSP2_lowEn-PkBudg1000;0;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;;;;;;;;;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;;SSP2_lowEn;;;;;;;2;SSP2_lowEn;;;;;;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP2_lowEn-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP5;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -<<<<<<< HEAD -SSP5-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;1;1.75;;;;;3;2;;;NPi2018;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix1;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. -SSP5-NDC;1;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP5-NPi2025;1;;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;1;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP5-PkBudg650;1;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP5-PkBudg1000;1,compileInTests;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;1;forcing_SSP5;SSP5;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. -======= -SSP5-NPi-calibrate;calibrate;calibrate;14;;;;;;;;;;NPi;;;;;;;;;1;1.75;;;;;3;2;;;NPi2018;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;SSP5;Mix1;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. -SSP5-NDC;1;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. -SSP5-NPi2025;1;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. -SSP5-PkBudg650;1;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;SSP5;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. -SSP5-PkBudg1000;1,compileInTests;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;SSP5;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. ->>>>>>> upstream/develop +SSP5-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;1;1.75;;;;;3;2;;;NPi2018;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;SSP5;Mix1;;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. +SSP5-NDC;1;;;;;;;globallyOptimal;;;3;;;NDC;;;;;;;;;1;1.75;;;;;3;2;;;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;2020.2030.EUR_regi.all.year.netGHG_LULUCFGrassi 2.450;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;SSP2-NPi;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. It assumes NPi2025 until 2025 and has start year 2030. The NDC includes all pledged policies even if not yet implemented. It assumes that the moderate and heterogeneous climate ambition reflected in the NDCs at the begining of 2021 continues over the 21st century. +SSP5-NPi2025;1;;;;;;;;;;0;;;;;;;;;;;;1;1.75;;;;;3;2;;;;;;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;;SSP5;0.5;;;forcing_SSP5;SSP5;;1;2030;;SSP2-NPi2025;;;SSP5-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. +SSP5-PkBudg650;1;;;;;;rcp20;globallyOptimal;;;9;650;;functionalForm;;100;2055;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.9;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;SSP5;Mix4ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg650: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 650 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5C scenario, peak warming is allowed to be at or slightly above 1.5C at median climate sensitivity but returns to values below 1.5C in at least 67 % of scenarios by the end of the century. +SSP5-PkBudg1000;1,compileInTests;;;;;;rcp26;globallyOptimal;;;9;1000;;functionalForm;;75;2080;;;;;;1;1.75;;;;;3;2;;2050.GLO 0.5;NDC;;2030.EUR_regi.tax.t.FE_wo_b_wo_n_e.all 1.2809;;;;;SSP5;SSP5;highOil;highGas;highCoal;SSP5;6;4;2;SSP5;0.5;;;forcing_SSP5;SSP5;Mix3ICEban;1;2030;;SSP2-NPi2025;;;SSP5-PkBudg1050: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1050 Gt CO2 on total CO2 emissions from 2015 to 2100. This is a well below 2C scenario at median climate sensitivity but returns to values below 2C in at least 67 % of scenarios during the whole century. # H12 SSP2IndiaHigh;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; SSP2IndiaHigh-NPi-calibrate;calibrate;;calibrate;14;;;;;;;;;;NPi;;;;;;;;;;;;;;;;;;;NPi2018;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;;Mix1;;2005;;;;;SSP2IndiaHigh-NPi-calibrate: This reference policy/baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. SSP2IndiaHigh-NPi2025;1;;;;;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;SSP2IndiaHigh;SSP2IndiaHigh;;;;;;;;;;;;;;;;2030;;SSP2-NPi2025;;;SSP2IndiaHigh-NPi2025: This National Policies Implemented (NPi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi assumes that policies fail to achieve NDC targets in 2030. Instead, carbon prices are assumed to grow and converge more slowly, leading to emissions trajectories in line with bottom-up studies on the effect of currently implemented policies. diff --git a/core/datainput.gms b/core/datainput.gms index 88585eed40..1dbb26c36b 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1238,7 +1238,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_seed_te(ttot,regi,"meSySol_cc") = 0.0001; p_adj_seed_te(ttot,regi,"meSyNg_cc") = 0.0001; p_adj_seed_te(ttot,regi,"meSyLiq_cc") = 0.0001; - p_adj_seed_te(ttot,regi,"meSyH2") = 2.0; + p_adj_seed_te(ttot,regi,"meSyH2") = 0.25; p_adj_seed_te(ttot,regi,"amSyCoal") = 0.0001; p_adj_seed_te(ttot,regi,"amSyNG") = 0.0001; p_adj_seed_te(ttot,regi,"amSyLiq") = 0.0001; @@ -1249,7 +1249,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_seed_te(ttot,regi,"stCrLiq") = 0.0001; p_adj_seed_te(ttot,regi,"stCrNg") = 0.0001; p_adj_seed_te(ttot,regi,"mtoMta") = 0.0001; - p_adj_seed_te(ttot,regi,"mtoMtaH2") = 2.0; + p_adj_seed_te(ttot,regi,"mtoMtaH2") = 0.25; p_adj_seed_te(ttot,regi,"fertProdH2") = 2.0; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -1294,7 +1294,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_coeff(ttot,regi,"meSySol_cc") = 3.0; p_adj_coeff(ttot,regi,"meSyNg_cc") = 3.0; p_adj_coeff(ttot,regi,"meSyLiq_cc") = 3.0; - p_adj_coeff(ttot,regi,"meSyH2") = 0.1; + p_adj_coeff(ttot,regi,"meSyH2") = 0.8; p_adj_coeff(ttot,regi,"amSyCoal") = 3.0; p_adj_coeff(ttot,regi,"amSyNG") = 3.0; p_adj_coeff(ttot,regi,"amSyLiq") = 3.0; @@ -1305,7 +1305,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p_adj_coeff(ttot,regi,"stCrLiq") = 3.0; p_adj_coeff(ttot,regi,"stCrNg") = 3.0; p_adj_coeff(ttot,regi,"mtoMta") = 1.0; - p_adj_coeff(ttot,regi,"mtoMtaH2") = 0.1; + p_adj_coeff(ttot,regi,"mtoMtaH2") = 0.8; p_adj_coeff(ttot,regi,"fertProdH2") = 0.1; $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/core/sets.gms b/core/sets.gms index 6c53f1e5c4..cb471afd73 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -455,6 +455,7 @@ all_enty "all types of quantities" *** materials, feedstock, and industrial goods co2f "feedstock CO2" + co2fdummy "feedstock CO2 deummy" *** chemicals otherChem diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 69246ce9bb..dab2dcdb66 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,7 +647,7 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -p37_specMatDem("ammonia","fertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal +p37_specMatDem("ammonia","fertProd","standard") = 17/14; !!Here the units of urea are based on nitrogen p37_specMatDem("ammoniaH2","fertProdH2","standard") = 17/14; p37_specMatDem("methanol","mtoMta","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 @@ -663,8 +663,8 @@ p37_specMatDem("plasticWaste","mechRe","standard") = 1/0.79; !! Source: T p37_specMatDem("plasticWaste","meSyChemRe","standard") = 1/0.68; !! Source: Shaik Afzal 2023 Table S9. p37_specMatDem("plasticWaste","stCrChemRe","standard") = 1/0.62; !! Source: Geetanjali Yadav 2023 Table 3. -p37_specMatDem("co2f","fertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ -p37_specMatDem("co2f","meSyH2","standard") = 0.375; !! 12/32 for CH₃OH +p37_specMatDem("co2fdummy","fertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ +p37_specMatDem("co2fdummy","meSyH2","standard") = 0.375; !! 12/32 for CH₃OH $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_specMatDem("dripell","idr","ng") = 1.44; !! Source: POSTED / Average of Devlin2022, Otto2017, Volg2018, Rechberge2020 @@ -815,13 +815,13 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_captureRate("meSySol_cc") = 0.95 * 0.71; !! Considering the carbon content in MeOH p37_captureRate("meSyNg_cc") = 0.95 * 0.22; p37_captureRate("meSyLiq_cc") = 0.95 * 0.5; -p37_selfCaptureRate("meSySol_cc") = 0.9; +p37_selfCaptureRate("meSySol_cc") = 0.95; p37_selfCaptureRate("meSyNg_cc") = 0.95; p37_selfCaptureRate("meSyLiq_cc") = 0.95; -p37_captureRate("amSyCoal_cc") = 0.95; -p37_captureRate("amSyNG_cc") = 0.95; -p37_captureRate("amSyLiq_cc") = 0.95; +p37_captureRate("amSyCoal_cc") = 0.95 * 0.66; !! Considering the carbon content in Urea +p37_captureRate("amSyNG_cc") = 0.95 * 0.28; +p37_captureRate("amSyLiq_cc") = 0.95 * 0.5; p37_selfCaptureRate("amSyCoal_cc") = 0.95; p37_selfCaptureRate("amSyNG_cc") = 0.95; p37_selfCaptureRate("amSyLiq_cc") = 0.95; @@ -840,16 +840,16 @@ p37_priceMat(ttot,all_regi,all_enty) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !!Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; -!!loop(t$(t.val > 2020), -!! loop(all_regi, +loop(t$(t.val > 2020), + loop(all_regi, !! p37_priceMat(t,all_regi,"naphtha") = -0.4 * pm_FEPrice(t,all_regi,"fehos","indst","ETS"); - !!p37_priceMat(t,all_regi,"co2f") = 10 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 -!! ); -!!); + p37_priceMat(t,all_regi,"co2fdummy") = 3 * 44/12 * 0.3048 * (t.val-2024) ** (-0.623) ; !! Mahdi Fasihi 2024 + ); +); !! Source: Geetanjali Yadav 2023 Table S12 → 0.6 $/kg !! Source: Taylor Uekert 2023 Table Table S23 → 0.2-0.4 $/kg !! Source: Shaik Afzal 2023 Table Table S6 → 0.4-0.8 $/kg -p37_priceMat(t,all_regi,"plasticWaste") = 0.3; +p37_priceMat(t,all_regi,"plasticWaste") = 0.1; $endif.cm_subsec_model_chemicals diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 482d3204ca..a76f514ebd 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -467,6 +467,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" methFinal ammoFinal co2f + co2fdummy naphtha plasticWaste @@ -491,6 +492,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ammonia ammoniaH2 co2f + co2fdummy naphtha plasticWaste @@ -709,8 +711,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" amToFinal . standard . ammonia amToFinal . greenh2 . ammoniaH2 - meSyH2 . standard . co2f - fertProdH2 . standard . co2f + meSyH2 . standard . co2fdummy + fertProdH2 . standard . co2fdummy stCrLiq . standard . naphtha mechRe . standard . plasticWaste diff --git a/modules/52_internalizeLCAimpacts/coupled/realization.gms b/modules/52_internalizeLCAimpacts/coupled/realization.gms index 2ab615259a..d1b8390c7f 100644 --- a/modules/52_internalizeLCAimpacts/coupled/realization.gms +++ b/modules/52_internalizeLCAimpacts/coupled/realization.gms @@ -12,4 +12,4 @@ $Ifi "%phase%" == "preloop" $include "./modules/52_internalizeLCAimpacts/coupled/preloop.gms" $Ifi "%phase%" == "presolve" $include "./modules/52_internalizeLCAimpacts/coupled/presolve.gms" *######################## R SECTION END (PHASES) ############################### -*** EOF ./modules/52_internalizeLCAimpacts/coupled/realization.gms \ No newline at end of file +*** EOF ./modules/52_internalizeLCAimpacts/coupled/realization.gms diff --git a/modules/52_internalizeLCAimpacts/module.gms b/modules/52_internalizeLCAimpacts/module.gms index f567960395..706022a47d 100644 --- a/modules/52_internalizeLCAimpacts/module.gms +++ b/modules/52_internalizeLCAimpacts/module.gms @@ -16,4 +16,4 @@ $Ifi "%internalizeLCAimpacts%" == "coupled" $include "./modules/52_internalizeLCAimpacts/coupled/realization.gms" $Ifi "%internalizeLCAimpacts%" == "off" $include "./modules/52_internalizeLCAimpacts/off/realization.gms" *###################### R SECTION END (MODULETYPES) ############################ -*** EOF ./modules/52_internalizeLCAimpacts/module.gms \ No newline at end of file +*** EOF ./modules/52_internalizeLCAimpacts/module.gms diff --git a/renv/activate.R b/renv/activate.R index 90b251ca6b..e4d691b329 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -695,19 +695,11 @@ local({ } - renv_bootstrap_platform_prefix_default <- function() { - - # read version component - version <- Sys.getenv("RENV_PATHS_VERSION", unset = "R-%v") - - # expand placeholders - placeholders <- list( - list("%v", format(getRversion()[1, 1:2])), - list("%V", format(getRversion()[1, 1:3])) - ) + renv_bootstrap_platform_prefix <- function() { - for (placeholder in placeholders) - version <- gsub(placeholder[[1L]], placeholder[[2L]], version, fixed = TRUE) + # construct version prefix + version <- paste(R.version$major, R.version$minor, sep = ".") + prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") # include SVN revision for development versions of R # (to avoid sharing platform-specific artefacts with released versions of R) @@ -716,19 +708,10 @@ local({ identical(R.version[["nickname"]], "Unsuffered Consequences") if (devel) - version <- paste(version, R.version[["svn rev"]], sep = "-r") - - version - - } - - renv_bootstrap_platform_prefix <- function() { - - # construct version prefix - version <- renv_bootstrap_platform_prefix_default() + prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") # build list of path components - components <- c(version, R.version$platform) + components <- c(prefix, R.version$platform) # include prefix if provided by user prefix <- renv_bootstrap_platform_prefix_impl() @@ -967,14 +950,14 @@ local({ } renv_bootstrap_validate_version_dev <- function(version, description) { - + expected <- description[["RemoteSha"]] if (!is.character(expected)) return(FALSE) - + pattern <- sprintf("^\\Q%s\\E", version) grepl(pattern, expected, perl = TRUE) - + } renv_bootstrap_validate_version_release <- function(version, description) { @@ -1215,89 +1198,86 @@ local({ } renv_json_read_patterns <- function() { - + list( - + # objects - list("{", "\t\n\tobject(\t\n\t", TRUE), - list("}", "\t\n\t)\t\n\t", TRUE), - + list("{", "\t\n\tobject(\t\n\t"), + list("}", "\t\n\t)\t\n\t"), + # arrays - list("[", "\t\n\tarray(\t\n\t", TRUE), - list("]", "\n\t\n)\n\t\n", TRUE), - + list("[", "\t\n\tarray(\t\n\t"), + list("]", "\n\t\n)\n\t\n"), + # maps - list(":", "\t\n\t=\t\n\t", TRUE), - - # newlines - list("\\u000a", "\n", FALSE) - + list(":", "\t\n\t=\t\n\t") + ) - + } renv_json_read_envir <- function() { envir <- new.env(parent = emptyenv()) - + envir[["+"]] <- `+` envir[["-"]] <- `-` - + envir[["object"]] <- function(...) { result <- list(...) names(result) <- as.character(names(result)) result } - + envir[["array"]] <- list - + envir[["true"]] <- TRUE envir[["false"]] <- FALSE envir[["null"]] <- NULL - + envir - + } renv_json_read_remap <- function(object, patterns) { - + # repair names if necessary if (!is.null(names(object))) { - + nms <- names(object) for (pattern in patterns) nms <- gsub(pattern[[2L]], pattern[[1L]], nms, fixed = TRUE) names(object) <- nms - + } - + # repair strings if necessary if (is.character(object)) { for (pattern in patterns) object <- gsub(pattern[[2L]], pattern[[1L]], object, fixed = TRUE) } - + # recurse for other objects if (is.recursive(object)) for (i in seq_along(object)) object[i] <- list(renv_json_read_remap(object[[i]], patterns)) - + # return remapped object object - + } renv_json_read_default <- function(file = NULL, text = NULL) { # read json text text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") - + # convert into something the R parser will understand patterns <- renv_json_read_patterns() transformed <- text for (pattern in patterns) transformed <- gsub(pattern[[1L]], pattern[[2L]], transformed, fixed = TRUE) - + # parse it rfile <- tempfile("renv-json-", fileext = ".R") on.exit(unlink(rfile), add = TRUE) @@ -1307,10 +1287,9 @@ local({ # evaluate in safe environment result <- eval(json, envir = renv_json_read_envir()) - # fix up strings if necessary -- do so only with reversible patterns - patterns <- Filter(function(pattern) pattern[[3L]], patterns) + # fix up strings if necessary renv_json_read_remap(result, patterns) - + } From c242899bd620e1eac6074b93c9d7de8def135182 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Fri, 4 Jul 2025 10:40:21 +0200 Subject: [PATCH 53/69] update documentation from joint sessions (Jakob,Leonie,Qianzhi) --- core/datainput.gms | 7 ++ core/input/generisdata_tech.prn | 9 ++- main.gms | 6 +- modules/37_industry/subsectors/bounds.gms | 4 +- modules/37_industry/subsectors/datainput.gms | 67 +++++++++++++------ .../37_industry/subsectors/declarations.gms | 4 +- modules/37_industry/subsectors/equations.gms | 6 +- modules/37_industry/subsectors/sets.gms | 15 +++-- 8 files changed, 82 insertions(+), 36 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 88585eed40..6222f4150a 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1230,6 +1230,10 @@ loop(ttot$(ttot.val ge 2005), p_adj_seed_te(ttot,regi,'oae_ng') = 0.25; p_adj_seed_te(ttot,regi,'oae_el') = 0.25; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + !! not all existing tech are used in all regions + !! Low seeds for these prevent switching between exisitng tech + !! High seeds for new tech like H2 makes ist easy to switch to that. + !! Seeds have little/no effect on tech with large exisitng cap in a region !!p_adj_seed_te(ttot,regi,"chemElec") = 0.50; !!p_adj_seed_te(ttot,regi,"chemH2") = 0.50; p_adj_seed_te(ttot,regi,"meSySol") = 0.0001; @@ -1286,6 +1290,9 @@ $endif.cm_subsec_model_steel p_adj_coeff(ttot,regi,"windon") = 0.25; p_adj_coeff(ttot,regi,"windoff") = 0.35; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + !! scaling factor for adjustment costs + !! old technologies have high costs, new technologies have low costs + !! default = 0.25 !!p_adj_coeff(ttot,regi,"chemElec") = 0.25; !!p_adj_coeff(ttot,regi,"chemH2") = 1.0; p_adj_coeff(ttot,regi,"meSySol") = 3.0; diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 30665ab8df..0d2d9f27a4 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -355,11 +355,13 @@ idrcc: make slightly cheaper than bfcc as there is only one point source chemOld chemElec and chemH2: - + arbitraray value, as long as it's the same between all three. + 500 is commonly used in other tech stCrNg and stCrLiq: - Note: As a general principle, carbon-containing products are included in the calculation, and hydrogen is used directly as an energy input. + Note: Steam crackers create a range of different products. + As a general principle, all carbon-containing products are included in the calculation as a reference for specific CAPEX etc, and produced hydrogen is used directly as an energy input. for Naphtha Steam Cracking CAPEX ~ 2057 $/t Ethylene @@ -404,6 +406,7 @@ fertProd fertProdH2: amToFinal meToFinal: + dummy tech, zero cost mechRe meSyChemRe and stCrChemRe: @@ -413,7 +416,7 @@ mechRe meSyChemRe and stCrChemRe: for Chemical Recycling: Pyrolysis CAPEX ~ 2200 $/t - omf = 0.03 + omf = 0.03 (Rough average of sources: Geetanjali Yadav 2023 Table1, Table S9.) for Chemical Recycling: Gasification diff --git a/main.gms b/main.gms index 2c94129167..9e04d6ed4e 100755 --- a/main.gms +++ b/main.gms @@ -1199,9 +1199,9 @@ parameter ; cm_wastelag = 0; !! def = 0 no waste lag !! regexp = 1|0 parameter - cm_maxIndPrcShareChange "Max change of share of certain industry processes between time steps" + cm_maxIndPrcShareChange "Max change of share of historically used chemicals industry processes between time steps" ; - cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between timem steps + cm_maxIndPrcShareChange = 0.05; !! def 0.05 = 5 percent points change between time steps *' *' *' @@ -1906,7 +1906,7 @@ $setGlobal c_nonco2_macc_scenario Default !! def = Default *' * (on): also non-optimal regions are solved again, up to cm_solver_try_max $setglobal cm_repeatNonOpt off !! def = off !! regexp = off|on -$setglobal cm_PlasticMFA !! def = off !! regexp = ^(off|on)$ +$setglobal cm_PlasticMFA off !! def = off !! regexp = ^(off|on)$ *' @stop *------------------------------------------------------------------------------------- diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 5ee287f27b..0cba440a55 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -180,8 +180,9 @@ vm_outflowPrc.up(t,regi,"mechRe","standard") = 0.; !! Due to downgraded recyclin $ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" +!! not all plastic is suitable for mechanical recycling, so this bound exists apart from the bound imposed +!! by total availability of plastic scrap vm_outflowPrc.up(t,regi,"mechRe","standard") = p37_recycleMech(t,regi); -vm_outflowPrc.up(t,"SSA","mechRe","standard") = p37_recycleMech(t,"SSA") * 0.2; $endif.PlasticMFA !!vm_outflowPrc.up(t,regi,"stCrChemRe","standard") = 0.01; @@ -190,7 +191,6 @@ v37_matFlow.up(t,regi,"plasticWaste") = 0.; !! Due to the limitations of the col $ifthen.PlasticMFA "%cm_PlasticMFA%" == "on" v37_matFlow.up(t,regi,"plasticWaste") = p37_plastcWaste(t,regi); -v37_matFlow.up(t,"SSA","plasticWaste") = p37_plastcWaste(t,"SSA") * 0.2; $endif.PlasticMFA *** EOF ./modules/37_industry/subsectors/bounds.gms diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 69246ce9bb..3c71229205 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,6 +647,7 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!! stochiemetric unit change from t NH3 to t N p37_specMatDem("ammonia","fertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal p37_specMatDem("ammoniaH2","fertProdH2","standard") = 17/14; @@ -687,21 +688,22 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons -p37_specFeDemTarget("fesos","chemOld","standard") = 1.5 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","chemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","chemOld","standard") = 3.9 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","chemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); +!! should not be needed anymore +!!p37_specFeDemTarget("fesos","chemOld","standard") = 1.5 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fegas","chemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fehos","chemOld","standard") = 3.9 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("feels","chemOld","standard") = 2.4 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","chemElec","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","chemElec","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","chemElec","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","chemElec","standard") = 3.6 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fesos","chemElec","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fegas","chemElec","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fehos","chemElec","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("feels","chemElec","standard") = 3.6 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fesos","chemH2","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fegas","chemH2","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("fehos","chemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feh2s","chemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); -p37_specFeDemTarget("feels","chemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fesos","chemH2","standard") = 1.2 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fegas","chemH2","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("fehos","chemH2","standard") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("feh2s","chemH2","standard") = 2.1 / (sm_TWa_2_MWh/sm_giga_2_non); +!!p37_specFeDemTarget("feels","chemH2","standard") = 1.8 / (sm_TWa_2_MWh/sm_giga_2_non); p37_specFeDemTarget("fehos","stCrNg","standard") = 15.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 NGL input/(Ethylene + By Products) !!p37_specFeDemTarget("fegas","stCrNg","standard") = 2.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 External Energy input/(Ethylene + By Products) @@ -811,11 +813,21 @@ $endif.cm_subsec_model_steel p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" +!! 95 % for everything !!Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_captureRate("meSySol_cc") = 0.95 * 0.71; !! Considering the carbon content in MeOH + +!! Methanol synthesis has some feedstock carbon, which reduces the capture rate +!! For Coal (NG and Liq analogous): +!! total coal input: 47.8 GJ/t; emission factor of coal: 0.027 tC/GJ +!! total carbon input: (47.8 GJ/t * 0.027 tC/GJ) = 1.29 tC/tMeOH +!! carbon content of methanol: 12/32 = 0.375 tC/tMeOH +!! ==> feedstock share is 0.375/1.29 = 0.29 ==> energy share is 0.71 + +p37_captureRate("meSySol_cc") = 0.95 * 0.71; p37_captureRate("meSyNg_cc") = 0.95 * 0.22; p37_captureRate("meSyLiq_cc") = 0.95 * 0.5; -p37_selfCaptureRate("meSySol_cc") = 0.9; + +p37_selfCaptureRate("meSySol_cc") = 0.95; p37_selfCaptureRate("meSyNg_cc") = 0.95; p37_selfCaptureRate("meSyLiq_cc") = 0.95; @@ -835,7 +847,7 @@ p37_selfCaptureRate("idrcc") = 0.9; $endif.cm_subsec_model_steel *** -------------------------------- - +!!can be deleted in the long run p37_priceMat(ttot,all_regi,all_enty) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !!Execute_Loadpoint "input" pm_FEPrice = pm_FEPrice; @@ -896,7 +908,7 @@ $include "./modules/37_industry/subsectors/input/p37_AllChemical_Mat2Ue.cs4r"; $offdelim / ; - +!! constant before and after IEA report temporal scope p37_mat2ue(t,regi,mat,in)$(t.val lt 2020) = p37_mat2ue("2020",regi,mat,in); p37_mat2ue(t,regi,mat,in)$(t.val gt 2050) = p37_mat2ue("2050",regi,mat,in); @@ -919,13 +931,15 @@ p37_mat2ue(t,all_regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel !! HOT FIX +!! AmmoniaFinal equals total ammonia minus fertilizer ammonia +!! can this be deleted? (recalculated from mrindustry to avoid rounding errors) pm_outflowPrcHist("2020",regi,"amToFinal","standard") = sum((tePrc2matOut(tePrc,opmoPrc,mat))$(sameas("ammonia",mat)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)) - (pm_outflowPrcHist("2020",regi,"fertProd","standard") * p37_specMatDem("ammonia","fertProd","standard")) ; - +!! same for methanol pm_outflowPrcHist("2020",regi,"meToFinal","standard") = sum((tePrc2matOut(tePrc,opmoPrc,mat))$(sameas("methanol",mat)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)) @@ -934,6 +948,7 @@ pm_outflowPrcHist("2020",regi,"meToFinal","standard") ; !! 1. Correct pm_outflowPrcHist, such that sum is consistent with UE +!! can this be deleted? p37_ueHistTmp("2020",regi) = sum((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in))$(sameas("ue_chemicals",in)), pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) @@ -946,6 +961,7 @@ pm_outflowPrcHist("2020",regi,tePrc,opmoPrc)$(secInd37_tePrc("chemicals",tePrc)) / p37_ueHistTmp("2020",regi); !! 2. scale 2005 to 2015 with ue_chemicals +!! can this be deleted? loop(t$(t.val ge 2005 AND t.val le 2015), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) = pm_outflowPrcHist("2020",regi,tePrc,opmoPrc) @@ -955,12 +971,14 @@ loop(t$(t.val ge 2005 AND t.val le 2015), !! 3. Calc MatflowHist +!! can this be deleted? p37_matFlowHist(t,regi,mat) = sum(tePrc2matOut(tePrc,opmoPrc,mat), pm_outflowPrcHist(t,regi,tePrc,opmoPrc) ) ; !! 4. Calc ue_share +!! can this be deleted? p37_ue_share(t,regi,mat,in)$(mat2ue(mat,in) AND sameas(in,"ue_chemicals") AND t.val le 2020) = (p37_mat2ue(t,regi,mat,in) * p37_matFlowHist(t,regi,mat)) / pm_cesdata(t,regi,in,"quantity"); @@ -986,7 +1004,7 @@ loop((t,regi,ppfUePrc(in)), *** -------------------------------- p37_teMatShareHist(all_regi,tePrc,opmoPrc,mat) = 0.; - +!! this can be deleted in the future $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" loop(all_regi(regi), loop(tePrc2matOut(tePrc, opmoPrc, mat), @@ -1032,6 +1050,8 @@ $offdelim / ; !! HOT FIX +!! OtherChem is totalChemicals-sum(all other processes) +!! is duplicate with mrindustry, could maybe be deleted p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe) = sm_EJ_2_TWa * p37_demFePrcHist(t,regi,tePrc,opmoPrc,entyFe); loop(t$(t.val ge 2005 AND t.val le 2020), p37_demFePrcHist(t,regi,"chemOld","standard","fesos") @@ -1139,16 +1159,20 @@ if (cm_startyear eq 2005, !! Hot fix on regional otherChem Energy Demand +!! calculate electricity and H2 demand for otherChem $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" loop((entyFeStat(all_enty)), loop(t$(t.val > 2020), !! Calc chemOld + !! stays constant after 2020 pm_specFeDem(t,regi,all_enty,"chemOld","standard") = pm_specFeDem("2020",regi,all_enty,"chemOld","standard"); !! Calc chemElec + !! all non-electricity scaled down to feedstock share + !! assumption: future otherChem sector has 65% feedstock (from Michajas or Simons data) loop(entyFe$(NOT sameas(entyFe, "feels")), pm_specFeDem(t, regi, entyFe, "chemElec", "standard") = pm_specFeDem("2020", regi, entyFe, "chemOld", "standard") @@ -1156,12 +1180,15 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ); !! Calc feels for chemElec + !! all non-feedstock non-electricity energy of ChemOld with 15% efficiency improvement + !! source: Danish Energy Agency https://ens.dk/en/analyses-and-statistics/technology-data-industrial-process-heat pm_specFeDem(t, regi, "feels", "chemElec", "standard") = pm_specFeDem("2020", regi, "feels", "chemOld", "standard") + 0.85 * ( sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "chemOld", "standard")) - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "chemElec", "standard")) ); !! Calc chemH2 + !! see above loop(entyFe$(NOT sameas(entyFe, "feels")), pm_specFeDem(t, regi, entyFe, "chemH2", "standard") = pm_specFeDem("2020", regi, entyFe, "chemOld", "standard") @@ -1169,10 +1196,12 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ); !! Calc feels for chemH2 + !! see above pm_specFeDem(t, regi, "feels", "chemH2", "standard") = pm_specFeDem("2020", regi, "feels", "chemOld", "standard"); !! Calc feh2s for chemH2 + !! see above but without efficiency improvement, assumption: hydrogen and gas have the same efficiency pm_specFeDem(t, regi, "feh2s", "chemH2", "standard") = sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem("2020", regi, entyFe2, "chemOld", "standard")) - sum(entyFe2$(NOT sameas(entyFe2, "feels")), pm_specFeDem(t, regi, entyFe2, "chemH2", "standard")); diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index e812c90a13..006990579c 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -110,7 +110,7 @@ Positive Variables v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" v37_matShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Change of share of processes with rectricted relative share change" - v37_chemflow(tall,all_regi,all_enty) "TODO" + v37_chemFlow(tall,all_regi,all_enty) "Summed material outflow of historic processes with future restricted shares" ; @@ -158,7 +158,7 @@ $endif.no_calibration q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" q37_restrictMatShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Low Constraining the share of chemical fossil fuel technologies based on historical data" - q37_chemflow(tall,all_regi,all_enty) "TODO" + q37_chemFlow(tall,all_regi,all_enty) "Restrict future share of processes where several historical processes exist for same material, e.g. Coal-MeOH-HVC vs steam cracker" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_limitCapMatHist(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 89aa1e7303..88befdaefd 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -478,8 +478,8 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. *' change.low = -max_change and change.up = max_change *' 2. multiply both sides with sum_i a_i(t) * sum_i a_i(t-1) ***------------------------------------------------------ -q37_chemflow(t,regi,mat)$(sum((tePrc,opmoPrc), tePrcStiffShare(tePrc,opmoPrc,mat))) .. - v37_chemflow(t,regi,mat) +q37_chemFlow(t,regi,mat)$(sum((tePrc,opmoPrc), tePrcStiffShare(tePrc,opmoPrc,mat))) .. + v37_chemFlow(t,regi,mat) =e= sum((tePrc, opmoPrc)$(tePrcStiffShare(tePrc, opmoPrc, mat)), vm_outflowPrc(t,regi,tePrc,opmoPrc)) ; @@ -489,7 +489,7 @@ q37_restrictMatShareChange(t,regi,tePrc,opmoPrc,mat)$(t.val gt 2020 vm_outflowPrc(t,regi,tePrc,opmoPrc) =e= (p37_teMatShareHist(regi,tePrc,opmoPrc,mat)+ v37_matShareChange(t,regi,tePrc,opmoPrc,mat)) - * v37_chemflow(t,regi,mat) !! Try to use different opmoPrc + * v37_chemFlow(t,regi,mat) !! Try to use different opmoPrc ; ***------------------------------------------------------ diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 482d3204ca..c3014ab4b4 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -409,6 +409,9 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" amSyLiq_cc amSyH2 + !! differentiate between mtoMta and mtoMtaH2 such that the share of mtoMta (the old technology) can be constrained + !! after liquids disaggregation by Robert there can be a more specific set differentiating between coal and biomass + !! same for fertilizer prod; fertProdH2 needs carbon feedstock mtoMta mtoMtaH2 fertProd @@ -436,6 +439,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + !! maybe add cc for heat generation part of steam cracker, but may not be worth it because we switch to H2 or electricity for heat generation meSySol_cc meSyNg_cc meSyLiq_cc @@ -466,7 +470,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" ammoniaH2 methFinal ammoFinal - co2f + !! REMINDER: once we co2f from the CCU module, make sure that it isn't subtracted twice (once by taking it from CCU, once by subtracting feedstock carbon) + co2f naphtha plasticWaste @@ -663,7 +668,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" mechRe . standard - meSySol . (standard,greenh2) + meSySol . (standard,greenh2) !! methanol synthesis needs hydrogen apart from coal, can be from green hydrogen or coal gasification meSyNg . standard meSyLiq . standard meSySol_cc . standard @@ -684,7 +689,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" mtoMtaH2 . standard fertProd . standard fertProdH2 . standard - meToFinal . (standard,greenh2) + meToFinal . (standard,greenh2) amToFinal . (standard,greenh2) $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -914,7 +919,9 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" bfcc . standard . bfbof_ccs $endif.cm_subsec_model_steel / - + + +!! for reporting routeCC(route) "TODO" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" From ecbdebba52eea587db9a8231c125676f52f06d82 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sun, 13 Jul 2025 14:34:03 +0200 Subject: [PATCH 54/69] fix merge conflict and get new source for meSySo --- core/datainput.gms | 1 + main.gms | 2 +- modules/37_industry/subsectors/datainput.gms | 10 +++++----- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 2ba34ceb70..7d947174d3 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -796,6 +796,7 @@ pm_cf(ttot,regi,"bof") = 0.8; pm_cf(ttot,regi,"idr") = 0.8; pm_cf(ttot,regi,"idrcc") = 1.0; !! capex is derived from numbers per ton of CO2, where cf = 1 is assumed in conversion pm_cf(ttot,regi,"bfcc") = 1.0; !! capex is derived from numbers per ton of CO2, where cf = 1 is assumed in conversion +$endif.cm_subsec_model_steel *RP* phasing down the ngt cf to "peak load" cf of 5% pm_cf(ttot,regi,"ngt")$(ttot.val eq 2025) = 0.9 * pm_cf(ttot,regi,"ngt"); diff --git a/main.gms b/main.gms index f4ce0805a2..2178442a94 100755 --- a/main.gms +++ b/main.gms @@ -1963,7 +1963,7 @@ $setGlobal cm_chaCoalBounds off !! def = off *' * (on): also non-optimal regions are solved again, up to cm_solver_try_max $setglobal cm_repeatNonOpt off !! def = off !! regexp = off|on -$setglobal cm_PlasticMFA !! def = off !! regexp = ^(off|on)$ +$setglobal cm_PlasticMFA off !! def = off !! regexp = ^(off|on)$ *' @stop *------------------------------------------------------------------------------------- diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index df9991a37d..439620f4f3 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -757,12 +757,12 @@ p37_specFeDemTarget("feels","stCrChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_g p37_specFeDemTarget("fegas","mechRe","standard") = 0.29 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1 - S4 Weighted average of PE PP and PET p37_specFeDemTarget("feels","mechRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1 - S4 Weighted average of PE PP and PET -p37_specFeDemTarget("fesos","meSySol","standard") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","meSySol","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","meSySol","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 +p37_specFeDemTarget("feels","meSySol","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 -p37_specFeDemTarget("fesos","meSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feh2s","meSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feels","meSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MeSySol +p37_specFeDemTarget("fesos","meSySol","greenh2") = 4.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 +p37_specFeDemTarget("feh2s","meSySol","greenh2") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 +p37_specFeDemTarget("feels","meSySol","greenh2") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 p37_specFeDemTarget("fegas","meSyNg","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("feels","meSyNg","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 From e121e774f07c4221512f4a411a03552f6ea18120 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Mon, 14 Jul 2025 10:26:05 +0200 Subject: [PATCH 55/69] add documentation, fix numbers in datainput for specFeDemTarget --- core/input/generisdata_tech.prn | 12 +-- modules/37_industry/subsectors/datainput.gms | 35 ++++--- .../37_industry/subsectors/declarations.gms | 14 +-- modules/37_industry/subsectors/sets.gms | 98 +++++++++---------- 4 files changed, 81 insertions(+), 78 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 0d2d9f27a4..0e1407fa62 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -355,7 +355,7 @@ idrcc: make slightly cheaper than bfcc as there is only one point source chemOld chemElec and chemH2: - arbitraray value, as long as it's the same between all three. + arbitrary value, as long as it's the same between all three. 500 is commonly used in other tech stCrNg and stCrLiq: @@ -376,10 +376,10 @@ stCrNg and stCrLiq: CAPEX ~ 369.4(gas porcessing) + 912.6(co-Cracking) = 1282 Million $ (Sources: Minbo Yang 2017. Table 3) - Output ratio: 197.3 Ethane-propane → 125.0 Ethylene + 28.4 Propylene + 1.6 BTX + 10.8 Others + Output ratio: 197.3 Ethane-propane → 125.0 Ethylene + 28.4 Propylene + 1.6 BTX + 10.8 Others [t/h] (Sources: Minbo Yang 2017. Table 1) - inco0 ~ 1282 Million $ * (125.0/(125.0+28.4+1.6)) /8760/0.8*1000*1000 ~ 1100 $/t + inco0 ~ 1282 Million $ * (1/(125.0+28.4+1.6)) /8760/0.8*1000*1000 ~ 1100 $/t @@ -412,17 +412,17 @@ mechRe meSyChemRe and stCrChemRe: for Mechanical Recycling CAPEX ~ 400 $/t - (Rough average of sources: Taylor Uekert 2023 Table S28.) + (weighted average for different polymers: Taylor Uekert 2023 Table S28.) for Chemical Recycling: Pyrolysis CAPEX ~ 2200 $/t omf = 0.03 - (Rough average of sources: Geetanjali Yadav 2023 Table1, Table S9.) + (Geetanjali Yadav 2023 Table1, Table S9.) for Chemical Recycling: Gasification CAPEX ~ 55 $/t omf = 0.055 - (Rough average of sources: Shaik Afzal 2023 Table S3. Table S4.) + (Shaik Afzal 2023 Table S3. Table S4.) inco0 for mechRe = 400$/t omf for mechRe = 0.05 diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 3c71229205..1bbd484297 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -613,6 +613,7 @@ loop ((regi,t2)$( p37_steel_secondary_max_share_scenario(t2,regi) ), display "scenario limits for maximum secondary steel share", p37_steel_secondary_max_share; $endif.sec_steel_scen + Parameter p37_chemicals_feedstock_share(ttot,all_regi) "minimum share of feso/feli/fega in total chemicals FE input [0-1]" / $ondelim @@ -631,7 +632,7 @@ execute_load "input_ref.gdx", vm_demFeSector_afterTax; ); * Define carbon capture and storage share in waste incineration emissions -* capture rate increases linearly from zero in 2025 to value the set in the switch for the defined year, and it is kept constant for years afterwards +* capture rate increases linearly from zero in 2025 to the value set in the switch for the defined year, and it is kept constant for years afterwards p37_regionalWasteIncinerationCCSMaxShare(ttot,all_regi) = 0; $ifthen.cm_wasteIncinerationCCSshare not "%cm_wasteIncinerationCCSshare%" == "off" loop((ttot,ext_regi)$p37_wasteIncinerationCCSMaxShare(ttot,ext_regi), @@ -647,24 +648,24 @@ $endIf.cm_wasteIncinerationCCSshare p37_specMatDem(mat,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" -!! stochiemetric unit change from t NH3 to t N +!! stochiometric unit change from t NH3 to t N p37_specMatDem("ammonia","fertProd","standard") = 17/14; !!TODOQZ Used to verify that the data are equal p37_specMatDem("ammoniaH2","fertProdH2","standard") = 17/14; -p37_specMatDem("methanol","mtoMta","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 -p37_specMatDem("methanolH2","mtoMtaH2","standard") = 2.624; !!Dutta2019 Figure 2, Page 196 +p37_specMatDem("methanol","mtoMta","standard") = 2.624; !!Dutta2019 Table 4 +p37_specMatDem("methanolH2","mtoMtaH2","standard") = 2.624; !!Dutta2019 Table 4 p37_specMatDem("ammonia","amToFinal","standard") = 1; p37_specMatDem("ammoniaH2","amToFinal","greenh2") = 1; p37_specMatDem("methanol","meToFinal","standard") = 1; p37_specMatDem("methanolH2","meToFinal","greenh2") = 1; -p37_specMatDem("naphtha","stCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); +!! p37_specMatDem("naphtha","stCrLiq","standard") = 18.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! should not be needed any more -p37_specMatDem("plasticWaste","mechRe","standard") = 1/0.79; !! Source: Taylor Uekert 2023 Table S1 - S4. -p37_specMatDem("plasticWaste","meSyChemRe","standard") = 1/0.68; !! Source: Shaik Afzal 2023 Table S9. -p37_specMatDem("plasticWaste","stCrChemRe","standard") = 1/0.62; !! Source: Geetanjali Yadav 2023 Table 3. +p37_specMatDem("plasticWaste","mechRe","standard") = 1/0.79; !! Source: Taylor Uekert 2023 Table S1-S4. +p37_specMatDem("plasticWaste","meSyChemRe","standard") = 1/1.47; !! Source: Shaik Afzal 2023 Table 3. +p37_specMatDem("plasticWaste","stCrChemRe","standard") = 1/0.62; !! Source: Geetanjali Yadav 2023 Table S9. -p37_specMatDem("co2f","fertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ +p37_specMatDem("co2f","fertProdH2","standard") = 0.43; !!12/28 for NH₂CONH₂ (urea) p37_specMatDem("co2f","meSyH2","standard") = 0.375; !! 12/32 for CH₃OH $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -688,6 +689,8 @@ p37_specFeDemTarget(all_enty,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! TODO Qianzhi 1MWh NH3,LHV = 0.19355 tons +!! 1 / (sm_TWa_2_MWh/sm_giga_2_non) unit conversion: MWh/t output -> TWa/Gt output + !! should not be needed anymore !!p37_specFeDemTarget("fesos","chemOld","standard") = 1.5 / (sm_TWa_2_MWh/sm_giga_2_non); !!p37_specFeDemTarget("fegas","chemOld","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); @@ -714,11 +717,11 @@ p37_specFeDemTarget("fehos","stCrLiq","standard") = 14.6 / (sm_TWa_2_MWh/sm_gig !!p37_specFeDemTarget("fegas","stCrLiq","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Naphtha input/(Ethylene + By Products) p37_specFeDemTarget("feels","stCrLiq","standard") = 0.07 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Electricity input/(Ethylene + By Products) -p37_specFeDemTarget("fegas","stCrChemRe","standard") = 2.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel -p37_specFeDemTarget("feels","stCrChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 +p37_specFeDemTarget("fegas","stCrChemRe","standard") = 1.99 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel +p37_specFeDemTarget("feels","stCrChemRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Calculating total electricity consumption from fossil fuel for electricity based on 2016 US total electricity generation and fossil fuel consumption for electricity generation -p37_specFeDemTarget("fegas","mechRe","standard") = 0.29 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1 - S4 Weighted average of PE PP and PET -p37_specFeDemTarget("feels","mechRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1 - S4 Weighted average of PE PP and PET +p37_specFeDemTarget("fegas","mechRe","standard") = 0.29 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1-S4 Weighted average of PE PP and PET +p37_specFeDemTarget("feels","mechRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1-S4 Weighted average of PE PP and PET p37_specFeDemTarget("fesos","meSySol","standard") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("feels","meSySol","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 @@ -889,7 +892,7 @@ $endif.cm_subsec_model_steel !! 0. Data input $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter - pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "TODO" + pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "material flows per production route in 2020 [Gt or GtN for fertilizer]" / $ondelim $include "./modules/37_industry/subsectors/input/p37_AllChem_Routes_Value_2020noCCS.cs4r"; @@ -901,7 +904,7 @@ $endif.cm_subsec_model_chemicals !!p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter - p37_mat2ue(tall,all_regi,all_enty,all_in) "TODO" + p37_mat2ue(tall,all_regi,all_enty,all_in) "conversion factors [2017$/kg or 2017$/kgN] for 2020-2050 to convert material [Gt or GtN] into UE [trn$2017]" / $ondelim $include "./modules/37_industry/subsectors/input/p37_AllChemical_Mat2Ue.cs4r"; @@ -1042,7 +1045,7 @@ loop((regi,matFin(mat))$(NOT mat2ue(mat,"ue_chemicals")), $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter - p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "TODO" + p37_demFePrcHist(tall,all_regi,all_te,opmoPrc,all_enty) "total FE demand [EJ] per process in 2005-2020 (calculated from specific FE demand and production volume)" / $ondelim $include "./modules/37_industry/subsectors/input/p37_AllChem_Energy_Value_2005_2020noCCS.cs4r"; diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 006990579c..68c56f1991 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -31,15 +31,15 @@ Parameters p37_demFeTarget(tall,all_regi,all_enty,all_in) "Total Fe demand that would be have been consumed historically for production of a UE if all tech had BAT efficiency" p37_demFeActual(tall,all_regi,all_enty,all_in) "Total historic Fe demand consumed for production of a UE" p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" - p37_matFlowHist(tall,all_regi,all_enty) "TODO" - p37_ue_share(tall,all_regi,all_enty,all_in) "TODO" - p37_mat2ue(tall,all_regi,all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" - p37_ueHistTmp(tall,all_regi) "TODO" + p37_matFlowHist(tall,all_regi,all_enty) "Total historic material flow calculated as the sum of outputs of all processes producing the respective material [Gt or GtN for fertilizer]" + p37_ue_share(tall,all_regi,all_enty,all_in) "Share of material to total ue in CES tree" + p37_mat2ue(tall,all_regi,all_enty,all_in) "Conversion factor of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt], in chemicals [trn$2017/Gt]" + p37_ueHistTmp(tall,all_regi) "TODO - Can this be deleted?" p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" - p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" + p37_teMatShareHist(all_regi,all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contributes to production of a matFin" 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(tall,all_regi,all_enty) "Prices of external material input [US$/kg] = [trn$US/Gt]" + p37_priceMat(tall,all_regi,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]" @@ -110,7 +110,7 @@ Positive Variables v37_shareWithCC(tall,all_regi,all_te,opmoPrc) "Share of process and operation mode equipped with carbon capture technology" vm_costMatPrc(tall,all_regi) "Cost of external material inputs such as iron ore in process-based industry [trn $2017/a]" v37_matShareChange(tall,all_regi,all_te,opmoPrc,all_enty) "Change of share of processes with rectricted relative share change" - v37_chemFlow(tall,all_regi,all_enty) "Summed material outflow of historic processes with future restricted shares" + v37_chemFlow(tall,all_regi,all_enty) "Summed material outflow of historic processes with future restricted shares; Needed as auxiliary for calculating material outflows of historic processes from the restricted shares" ; diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index c3014ab4b4..34beeaa601 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -382,42 +382,42 @@ $endif.cm_subsec_model_steel tePrc(all_te) "Technologies used in process-based model (including CCS)" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - chemOld - chemElec - chemH2 - - stCrNg - stCrLiq - stCrChemRe - - mechRe - - meSySol - meSyNg - meSyLiq - meSySol_cc - meSyNg_cc - meSyLiq_cc - meSyH2 - meSyChemRe - - amSyCoal - amSyNG - amSyLiq - amSyCoal_cc - amSyNG_cc - amSyLiq_cc - amSyH2 + chemOld "process to produce otherChem with historic FE demand" + chemElec "process to produce otherChem with higher share of feels and improved efficiency" + chemH2 "process to produce otherChem with higher share of feh2s" + + stCrNg "ethane/propane steam cracking" + stCrLiq "naphtha steam cracking" + stCrChemRe "pyrolysis (chemical recycling) of plastic waste" + + mechRe "mechanical recycling of plastic waste" + + meSySol "methanol synthesis from coal/biomass" + meSyNg "methanol synthesis from NG" + meSyLiq "methanol synthesis from oil" + meSySol_cc "CC for methanol synthesis from coal/biomass" + meSyNg_cc "CC for methanol synthesis from NG" + meSyLiq_cc "CC for methanol synthesis from oil" + meSyH2 "methanol synthesis from hydrogen" + meSyChemRe "gasification (chemical recycling) of plastic waste" + + amSyCoal "ammonia synthesis from coal/biomass" + amSyNG "ammonia synthesis from NG" + amSyLiq "ammonia synthesis from oil" + amSyCoal_cc "CC for ammonia synthesis from coal/biomass" + amSyNG_cc "CC for ammonia synthesis from NG" + amSyLiq_cc "CC for ammonia synthesis from oil" + amSyH2 "Ammonia synthesis from hydrogen" !! differentiate between mtoMta and mtoMtaH2 such that the share of mtoMta (the old technology) can be constrained !! after liquids disaggregation by Robert there can be a more specific set differentiating between coal and biomass !! same for fertilizer prod; fertProdH2 needs carbon feedstock - mtoMta - mtoMtaH2 - fertProd - fertProdH2 - meToFinal - amToFinal + mtoMta "Methanol to olefins/methanol to aromatics (production of HVC from methanol from fossil feedstocks)" + mtoMtaH2 "mtoMta from green methanol" + fertProd "Fertilizer production from ammonia from fossil feedstocks" + fertProdH2 "Fertilizer production from green ammonia" + meToFinal "dummy process to convert methanol or methanolH2 to methFinal" + amToFinal "dummy process to convert ammonia or ammoniaH2 to ammoFinal" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" @@ -440,13 +440,13 @@ $endif.cm_subsec_model_steel $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! maybe add cc for heat generation part of steam cracker, but may not be worth it because we switch to H2 or electricity for heat generation - meSySol_cc - meSyNg_cc - meSyLiq_cc + meSySol_cc + meSyNg_cc + meSyLiq_cc - amSyCoal_cc - amSyNG_cc - amSyLiq_cc + amSyCoal_cc + amSyNG_cc + amSyLiq_cc $endif.cm_subsec_model_chemicals / @@ -461,20 +461,20 @@ $endif.cm_subsec_model_chemicals mat(all_enty) "Materials considered in process-based model; Can be input and/or output of a process" / $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" - otherChem - hvc - fertilizer - methanol - methanolH2 - ammonia - ammoniaH2 - methFinal - ammoFinal + otherChem "All other chemicals not covered in the specific process-representation" + hvc "High-value chemicals; consist of ethylene, propylene and BTX" + fertilizer "Nitrogen fertilizer; consists of urea, ammonium nitrate, ammonium sulfate and calcium ammonium nitrate" + methanol "Methanol produced from fesos, fehos or fegas; intermediate product" + methanolH2 "Methanol produced from hydrogen or gasification of plastic waste (differentiation from methanol in order to restrict historic shares of mtoMta); intermediate product" + ammonia "Ammonia produced from fesos, fehos or fegas; intermediate product" + ammoniaH2 "Ammonia produced from hydrogen (needs co2f input in fertilizer production in difference to ammonia)" + methFinal "Methanol; final product" + ammoFinal "Ammonia; final product" !! REMINDER: once we co2f from the CCU module, make sure that it isn't subtracted twice (once by taking it from CCU, once by subtracting feedstock carbon) co2f - naphtha - plasticWaste + naphtha "Naphtha" + plasticWaste "Plastic waste, mixed" $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" prsteel From f63277d5cf149216bfb196db813a9499e1ba6774 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Thu, 17 Jul 2025 18:00:12 +0200 Subject: [PATCH 56/69] fix bug in switch, update specFeDemand values and documentation --- core/datainput.gms | 1 + modules/37_industry/subsectors/datainput.gms | 22 ++--- renv/activate.R | 95 ++++++++++++-------- 3 files changed, 68 insertions(+), 50 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 1d15635a1f..410960f046 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -796,6 +796,7 @@ pm_cf(ttot,regi,"bof") = 0.8; pm_cf(ttot,regi,"idr") = 0.8; pm_cf(ttot,regi,"idrcc") = 1.0; !! capex is derived from numbers per ton of CO2, where cf = 1 is assumed in conversion pm_cf(ttot,regi,"bfcc") = 1.0; !! capex is derived from numbers per ton of CO2, where cf = 1 is assumed in conversion +$endif.cm_subsec_model_steel *RP* phasing down the ngt cf to "peak load" cf of 5% pm_cf(ttot,regi,"ngt")$(ttot.val eq 2025) = 0.9 * pm_cf(ttot,regi,"ngt"); diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 588d5e16bb..d71ff507bc 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -756,8 +756,8 @@ p37_specFeDemTarget("fehos","stCrLiq","standard") = 14.6 / (sm_TWa_2_MWh/sm_gig !!p37_specFeDemTarget("fegas","stCrLiq","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Naphtha input/(Ethylene + By Products) p37_specFeDemTarget("feels","stCrLiq","standard") = 0.07 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Electricity input/(Ethylene + By Products) -p37_specFeDemTarget("fegas","stCrChemRe","standard") = 1.99 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel -p37_specFeDemTarget("feels","stCrChemRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Calculating total electricity consumption from fossil fuel for electricity based on 2016 US total electricity generation and fossil fuel consumption for electricity generation +p37_specFeDemTarget("fegas","stCrChemRe","standard") = 0.84 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel +p37_specFeDemTarget("feels","stCrChemRe","standard") = 0.24 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S12+S13, calculated from electricity costs p37_specFeDemTarget("fegas","mechRe","standard") = 0.29 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1-S4 Weighted average of PE PP and PET p37_specFeDemTarget("feels","mechRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1-S4 Weighted average of PE PP and PET @@ -775,7 +775,7 @@ p37_specFeDemTarget("feels","meSyNg","standard") = 0.1 / (sm_TWa_2_MWh/sm_gig p37_specFeDemTarget("fehos","meSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh p37_specFeDemTarget("feels","meSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("fesos","meSySol_cc","standard") = 2.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO:Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("fesos","meSySol_cc","standard") = 2.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO:Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC p37_specFeDemTarget("feels","meSySol_cc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC @@ -785,8 +785,8 @@ p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm p37_specFeDemTarget("feh2s","meSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen p37_specFeDemTarget("feels","meSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("fegas","meSyChemRe","standard") = 3.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S5 -p37_specFeDemTarget("feels","meSyChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S5 +p37_specFeDemTarget("fegas","meSyChemRe","standard") = 2.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S4+S5, calculated from minimum selling price breakdown +p37_specFeDemTarget("feels","meSyChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S3+S5, calculated from minimum selling price breakdown p37_specFeDemTarget("fesos","amSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("feels","amSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 @@ -794,14 +794,14 @@ p37_specFeDemTarget("feels","amSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_gi p37_specFeDemTarget("fegas","amSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 p37_specFeDemTarget("feels","amSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("fehos","amSyLiq","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("fehos","amSyLiq","standard") = 9 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 p37_specFeDemTarget("feels","amSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 p37_specFeDemTarget("feels","amSyCoal_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc Mwh/tC +p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc Mwh/tC p37_specFeDemTarget("feh2s","amSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia p37_specFeDemTarget("feels","amSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 @@ -868,10 +868,6 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_captureRate("meSySol_cc") = 0.95 * 0.71; p37_captureRate("meSyNg_cc") = 0.95 * 0.22; p37_captureRate("meSyLiq_cc") = 0.95 * 0.5; -<<<<<<< HEAD - -======= ->>>>>>> origin/chemicals p37_selfCaptureRate("meSySol_cc") = 0.95; p37_selfCaptureRate("meSyNg_cc") = 0.95; p37_selfCaptureRate("meSyLiq_cc") = 0.95; @@ -927,7 +923,7 @@ $endif.cm_subsec_model_steel *** -------------------------------- -*** Plastics Production volumes +*** Chemicals Production volumes *** -------------------------------- diff --git a/renv/activate.R b/renv/activate.R index e4d691b329..90b251ca6b 100644 --- a/renv/activate.R +++ b/renv/activate.R @@ -695,11 +695,19 @@ local({ } - renv_bootstrap_platform_prefix <- function() { + renv_bootstrap_platform_prefix_default <- function() { - # construct version prefix - version <- paste(R.version$major, R.version$minor, sep = ".") - prefix <- paste("R", numeric_version(version)[1, 1:2], sep = "-") + # read version component + version <- Sys.getenv("RENV_PATHS_VERSION", unset = "R-%v") + + # expand placeholders + placeholders <- list( + list("%v", format(getRversion()[1, 1:2])), + list("%V", format(getRversion()[1, 1:3])) + ) + + for (placeholder in placeholders) + version <- gsub(placeholder[[1L]], placeholder[[2L]], version, fixed = TRUE) # include SVN revision for development versions of R # (to avoid sharing platform-specific artefacts with released versions of R) @@ -708,10 +716,19 @@ local({ identical(R.version[["nickname"]], "Unsuffered Consequences") if (devel) - prefix <- paste(prefix, R.version[["svn rev"]], sep = "-r") + version <- paste(version, R.version[["svn rev"]], sep = "-r") + + version + + } + + renv_bootstrap_platform_prefix <- function() { + + # construct version prefix + version <- renv_bootstrap_platform_prefix_default() # build list of path components - components <- c(prefix, R.version$platform) + components <- c(version, R.version$platform) # include prefix if provided by user prefix <- renv_bootstrap_platform_prefix_impl() @@ -950,14 +967,14 @@ local({ } renv_bootstrap_validate_version_dev <- function(version, description) { - + expected <- description[["RemoteSha"]] if (!is.character(expected)) return(FALSE) - + pattern <- sprintf("^\\Q%s\\E", version) grepl(pattern, expected, perl = TRUE) - + } renv_bootstrap_validate_version_release <- function(version, description) { @@ -1198,86 +1215,89 @@ local({ } renv_json_read_patterns <- function() { - + list( - + # objects - list("{", "\t\n\tobject(\t\n\t"), - list("}", "\t\n\t)\t\n\t"), - + list("{", "\t\n\tobject(\t\n\t", TRUE), + list("}", "\t\n\t)\t\n\t", TRUE), + # arrays - list("[", "\t\n\tarray(\t\n\t"), - list("]", "\n\t\n)\n\t\n"), - + list("[", "\t\n\tarray(\t\n\t", TRUE), + list("]", "\n\t\n)\n\t\n", TRUE), + # maps - list(":", "\t\n\t=\t\n\t") - + list(":", "\t\n\t=\t\n\t", TRUE), + + # newlines + list("\\u000a", "\n", FALSE) + ) - + } renv_json_read_envir <- function() { envir <- new.env(parent = emptyenv()) - + envir[["+"]] <- `+` envir[["-"]] <- `-` - + envir[["object"]] <- function(...) { result <- list(...) names(result) <- as.character(names(result)) result } - + envir[["array"]] <- list - + envir[["true"]] <- TRUE envir[["false"]] <- FALSE envir[["null"]] <- NULL - + envir - + } renv_json_read_remap <- function(object, patterns) { - + # repair names if necessary if (!is.null(names(object))) { - + nms <- names(object) for (pattern in patterns) nms <- gsub(pattern[[2L]], pattern[[1L]], nms, fixed = TRUE) names(object) <- nms - + } - + # repair strings if necessary if (is.character(object)) { for (pattern in patterns) object <- gsub(pattern[[2L]], pattern[[1L]], object, fixed = TRUE) } - + # recurse for other objects if (is.recursive(object)) for (i in seq_along(object)) object[i] <- list(renv_json_read_remap(object[[i]], patterns)) - + # return remapped object object - + } renv_json_read_default <- function(file = NULL, text = NULL) { # read json text text <- paste(text %||% readLines(file, warn = FALSE), collapse = "\n") - + # convert into something the R parser will understand patterns <- renv_json_read_patterns() transformed <- text for (pattern in patterns) transformed <- gsub(pattern[[1L]], pattern[[2L]], transformed, fixed = TRUE) - + # parse it rfile <- tempfile("renv-json-", fileext = ".R") on.exit(unlink(rfile), add = TRUE) @@ -1287,9 +1307,10 @@ local({ # evaluate in safe environment result <- eval(json, envir = renv_json_read_envir()) - # fix up strings if necessary + # fix up strings if necessary -- do so only with reversible patterns + patterns <- Filter(function(pattern) pattern[[3L]], patterns) renv_json_read_remap(result, patterns) - + } From d6ce3733c6bd6b97d82f1505626912b5d9caae45 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Fri, 18 Jul 2025 10:12:33 +0200 Subject: [PATCH 57/69] modified hardcoded chemicals datainput to at least 2 significant digits --- modules/37_industry/subsectors/datainput.gms | 54 ++++++++++---------- 1 file changed, 27 insertions(+), 27 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index d71ff507bc..144b3d646f 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -691,8 +691,8 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_specMatDem("ammonia","fertProd","standard") = 17/14; !!Here the units of urea are based on nitrogen p37_specMatDem("ammoniaH2","fertProdH2","standard") = 17/14; -p37_specMatDem("methanol","mtoMta","standard") = 2.624; !!Dutta2019 Table 4 -p37_specMatDem("methanolH2","mtoMtaH2","standard") = 2.624; !!Dutta2019 Table 4 +p37_specMatDem("methanol","mtoMta","standard") = 2.62; !!Dutta2019 Table 4 +p37_specMatDem("methanolH2","mtoMtaH2","standard") = 2.62; !!Dutta2019 Table 4 p37_specMatDem("ammonia","amToFinal","standard") = 1; p37_specMatDem("ammoniaH2","amToFinal","greenh2") = 1; p37_specMatDem("methanol","meToFinal","standard") = 1; @@ -749,12 +749,12 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" p37_specFeDemTarget("fehos","stCrNg","standard") = 15.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 NGL input/(Ethylene + By Products) !!p37_specFeDemTarget("fegas","stCrNg","standard") = 2.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 External Energy input/(Ethylene + By Products) -p37_specFeDemTarget("fegas","stCrNg","standard") = 0.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 (External Energy input - Hydrogen Output)/(Ethylene + By Products) +p37_specFeDemTarget("fegas","stCrNg","standard") = 0.60 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 (External Energy input - Hydrogen Output)/(Ethylene + By Products) p37_specFeDemTarget("feels","stCrNg","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Yang, M., & You, F. (2017). Table1 Electricity input/(Ethylene + By Products) p37_specFeDemTarget("fehos","stCrLiq","standard") = 14.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Naphtha input/(Ethylene + By Products) !!p37_specFeDemTarget("fegas","stCrLiq","standard") = sm_eps / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Naphtha input/(Ethylene + By Products) -p37_specFeDemTarget("feels","stCrLiq","standard") = 0.07 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Electricity input/(Ethylene + By Products) +p37_specFeDemTarget("feels","stCrLiq","standard") = 0.069 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Lucia S. Layritz 2021 Appendix A.2 Electricity input/(Ethylene + By Products) p37_specFeDemTarget("fegas","stCrChemRe","standard") = 0.84 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S20 Using co-producted naphtha and NGLs as fuel p37_specFeDemTarget("feels","stCrChemRe","standard") = 0.24 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Geetanjali Yadav 2023 Table S12+S13, calculated from electricity costs @@ -762,54 +762,54 @@ p37_specFeDemTarget("feels","stCrChemRe","standard") = 0.24 / (sm_TWa_2_MWh/sm_ p37_specFeDemTarget("fegas","mechRe","standard") = 0.29 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1-S4 Weighted average of PE PP and PET p37_specFeDemTarget("feels","mechRe","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Taylor Uekert 2023 Table S1-S4 Weighted average of PE PP and PET -p37_specFeDemTarget("fesos","meSySol","standard") = 11.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","meSySol","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","meSySol","standard") = 10.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 +p37_specFeDemTarget("feels","meSySol","standard") = 0.14 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 -p37_specFeDemTarget("fesos","meSySol","greenh2") = 4.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feh2s","meSySol","greenh2") = 4.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Zhao Y, Energy Conversion and Management, 2022.Table 6 -p37_specFeDemTarget("feels","meSySol","greenh2") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Same as MeSySol +p37_specFeDemTarget("fesos","meSySol","greenh2") = 4.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 +p37_specFeDemTarget("feh2s","meSySol","greenh2") = 3.3 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 +p37_specFeDemTarget("feels","meSySol","greenh2") = 0.14 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Dongliang, Wang, et al Energy 2021 Table 9 -p37_specFeDemTarget("fegas","meSyNg","standard") = 8.75 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 -p37_specFeDemTarget("feels","meSyNg","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fegas","meSyNg","standard") = 8.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("feels","meSyNg","standard") = 0.083 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("fehos","meSyLiq","standard") = 9.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 Assume Feedstock is 20Mwh -p37_specFeDemTarget("feels","meSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("feels","meSyLiq","standard") = 0.56 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 p37_specFeDemTarget("fesos","meSySol_cc","standard") = 2.8 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO:Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","meSySol_cc","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("feels","meSySol_cc","standard") = 0.065 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as meSyNg_cc Mwh/tC +p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as meSyNg_cc Mwh/tC p37_specFeDemTarget("feh2s","meSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen -p37_specFeDemTarget("feels","meSyH2","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feels","meSyH2","standard") = 0.10 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen p37_specFeDemTarget("fegas","meSyChemRe","standard") = 2.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S4+S5, calculated from minimum selling price breakdown -p37_specFeDemTarget("feels","meSyChemRe","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S3+S5, calculated from minimum selling price breakdown +p37_specFeDemTarget("feels","meSyChemRe","standard") = 0.92 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S3+S5, calculated from minimum selling price breakdown -p37_specFeDemTarget("fesos","amSyCoal","standard") = 10.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 +p37_specFeDemTarget("fesos","amSyCoal","standard") = 10.7 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("feels","amSyCoal","standard") = 1.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 p37_specFeDemTarget("fegas","amSyNG","standard") = 8.9 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("feels","amSyNG","standard") = 0.1 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 +p37_specFeDemTarget("feels","amSyNG","standard") = 0.083 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4 -p37_specFeDemTarget("fehos","amSyLiq","standard") = 9 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","amSyLiq","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("fehos","amSyLiq","standard") = 9.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! TODO Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 +p37_specFeDemTarget("feels","amSyLiq","standard") = 0.56 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A4 -p37_specFeDemTarget("feels","amSyCoal_cc","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("feels","amSyCoal_cc","standard") = 0.44 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC +p37_specFeDemTarget("feels","amSyNG_cc","standard") = 0.46 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5 Mwh/tC -p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc Mwh/tC +p37_specFeDemTarget("feels","amSyLiq_cc","standard") = 0.46 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as amSyNG_cc Mwh/tC p37_specFeDemTarget("feh2s","amSyH2","standard") = 6.0 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 103 Hydrogen to Ammonia -p37_specFeDemTarget("feels","amSyH2","standard") = 0.5 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 +p37_specFeDemTarget("feels","amSyH2","standard") = 0.49 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: GrinbergDana16 Supplementary Table 4 p37_specFeDemTarget("feels","mtoMta","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 p37_specFeDemTarget("feels","mtoMtaH2","standard") = 1.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Bazzanella17 Section 4.5.3 -p37_specFeDemTarget("feels","fertProd","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 -p37_specFeDemTarget("feels","fertProdH2","standard") = 0.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feels","fertProd","standard") = 0.39 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 +p37_specFeDemTarget("feels","fertProdH2","standard") = 0.39 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Palys23 Section 2.3, Page 6 $endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" From 54c112ffe7df8232a449de1f492e42638fd3229f Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Mon, 28 Jul 2025 19:03:15 +0200 Subject: [PATCH 58/69] add documentation (units) to declarations.gms; fix bug in postsolve to include OtherChem in o37_demFeIndRoute --- modules/37_industry/subsectors/declarations.gms | 6 +++--- modules/37_industry/subsectors/postsolve.gms | 3 +-- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 28a9bf5240..084da5ed4e 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -54,11 +54,11 @@ Parameters o37_cementProcessEmissions(ttot,all_regi,all_enty) "cement process emissions [GtC/a]" o37_demFeIndTotEn(ttot,all_regi,all_enty,all_emiMkt) "total FE per energy carrier and emissions market in industry (sum over subsectors)" o37_shIndFE(ttot,all_regi,all_enty,secInd37,all_emiMkt) "share of subsector in FE industry energy carriers and emissions markets" - o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector" + o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector [TWa]" !! process-based implementation - o37_demFePrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Process-based FE demand per FE type and process" + o37_demFePrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Process-based FE demand per FE type and process [TWa]" o37_shareRoute(ttot,all_regi,all_te,opmoPrc,route) "The relative share (between 0 and 1) of a technology and operation mode outflow which belongs to a certain route; For example, bf.standard belongs partly to the route bfbof and partly to the route bfbof" - o37_ProdIndRoute(ttot,all_regi,mat,route) "produciton volume of a material via each process route" + o37_ProdIndRoute(ttot,all_regi,mat,route) "production volume of a material via each process route [Gt]" o37_demFeIndRoute(ttot,all_regi,all_enty,all_te,route,secInd37) "FE demand by FE type, process route and tech" o37_specificEmi(ttot,all_regi,all_te,opmoPrc) "Specific emissions of a technology; Needed as auxiliary for relative outflow calculation of CC tech" !! TODO: make route specific; So far, this only works because the relative outflow of each tech/opmo is the same for all routes. diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 8b35f8becf..b1b5cec24d 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -231,8 +231,7 @@ loop((mat,route)$(matOut(mat)), !! o37_demFeIndRoute(ttot,regi,entyFe,tePrc,route,secInd37) = 0.; loop((entyFe,route,tePrc,opmoPrc,secInd37)$( tePrc2route(tePrc,opmoPrc,route) - AND secInd37_tePrc(secInd37,tePrc) - AND (p37_specFeDemTarget(entyFe,tePrc,opmoPrc) gt 0.) ), + AND secInd37_tePrc(secInd37,tePrc)), o37_demFeIndRoute(ttot,regi,entyFe,tePrc,route,secInd37) = o37_demFeIndRoute(ttot,regi,entyFe,tePrc,route,secInd37) !!sum (only necessary if several opmodes for one route) + vm_outflowPrc.l(ttot,regi,tePrc,opmoPrc) From bb7d0a53bd7f12b19b4ab6ce35ec9fabff0efe86 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Thu, 31 Jul 2025 16:22:59 +0200 Subject: [PATCH 59/69] add vscode to .gitignore --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index e38ef5e15f..3e2842b3fc 100644 --- a/.gitignore +++ b/.gitignore @@ -79,6 +79,9 @@ runtime.rds # ignore RStudio project files /*.Rproj +# ignore VS Code workspace files +/.vscode/ + # Main Python virtual environment .venv/ From 64baeb1e022faa37e96080cfce0b8d5e45358858 Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Sat, 2 Aug 2025 08:54:34 +0200 Subject: [PATCH 60/69] add documentation for chemical process --- core/input/generisdata_tech.prn | 127 +++++++++++++++++++++++++------- 1 file changed, 101 insertions(+), 26 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 80f25aa067..89828bcd37 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -159,29 +159,29 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld chemElec chemH2 stCrNg stCrLiq amSyCoal amSyNG amSyLiq amSyH2 meSySol meSyNG meSyLiq meSyH2 !! documentation & sources: see below -inco0 500 500 500 1100 1000 2000 875 1200 1200 700 310 300 800 +inco0 500 500 500 1080 1040 2100 875 1190 1230 530 300 290 1050 omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 + amSyCoal_cc amSyNg_cc amSyLiq_cc meSySol_cc meSyNg_cc meSyLiq_cc !! documentation & sources: see below -inco0 600 650 650 850 1000 850 -omf 0.05 0.05 0.05 0.05 0.05 0.05 +inco0 610 650 610 855 1003 855 +omf 0.05 0.05 0.05 0.05 0.025 0.05 constrTme 1 1 1 1 1 1 lifetime 25 25 25 25 25 25 + mtoMta mtoMtaH2 fertProd fertProdH2 amToFinal meToFinal !! documentation & sources: see below -inco0 500 500 500 500 500 500 +inco0 533 533 3280 3280 500 500 omf 0.025 0.025 0.06 0.06 0.06 0.06 constrTme 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 + mechRe stCrChemRe meSyChemRe !! documentation & sources: see below -inco0 0 2200 55 -omf 0.05 0.03 0.055 +inco0 318 2200 49 +omf 0.03 0.03 0.055 constrTme 3 3 3 lifetime 30 30 30 @@ -355,6 +355,8 @@ idrcc: chemOld chemElec and chemH2: + Saving later for Heat Gerneration Split + stCrNg and stCrLiq: @@ -367,8 +369,9 @@ stCrNg and stCrLiq: Output ratio: 97.2 Naphtha → 31.86 Ethylene + 13.01 Propylene + 17.48 BTX + 3.78 Others (Sources: Spallina17 Table 5.) - inco0 ~ 2057 $/t * (31.86/(31.86+13.01+17.48)) ~ 1000 $/t - + inco0 ~ 2057 $/t * (31.86/(31.86+13.01+17.48)) /USD_2017 * USD_2015 ~ 1040 $/t + omf ~ 0.025 + for NG Steam Cracking CAPEX ~ 369.4(gas porcessing) + 912.6(co-Cracking) = 1282 Million $ (Sources: Minbo Yang 2017. Table 3) @@ -376,59 +379,131 @@ stCrNg and stCrLiq: Output ratio: 197.3 Ethane-propane → 125.0 Ethylene + 28.4 Propylene + 1.6 BTX + 10.8 Others (Sources: Minbo Yang 2017. Table 1) - inco0 ~ 1282 Million $ * (125.0/(125.0+28.4+1.6)) /8760/0.8*1000*1000 ~ 1100 $/t + inco0 ~ 1282 Million $ * (125.0/(125.0+28.4+1.6)) /8760/0.8*1000*1000 /USD_2017 * USD_2015 ~ 1080 $/t + omf ~ 0.025 amSyCoal amSyNG amSyLiq and amSyH2: + amSyCoal: + inco0 ~ 2175 /USD_2017 * USD_2015 ~ 2100 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + amSyNG: + inco0 ~ 905 /USD_2017 * USD_2015 ~ 875 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4) + + amSyLiq: + inco0 ~ 1203 /USD_2016 * USD_2015 ~ 1190 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) + + amSyH2: + inco0 ~ 1.69 MEUR_2020/MW:LHV *1000 / 3.6 MJ/MWh * 18.6 MJ/kg * 1.08 USD/EUR = 9412 kgNH3/h + 9412 kgNH3/h / (8760 / 0.8 * 1000) /USD_2020 * USD_2015 ~ 1230 $/t + omf ~ 0.04 + (Sources: Technology Data for Renewable Fuels by Danish Energy Agency. 103 Hydrogen to Ammonia) amSyCoal_cc amSyNG_cc amSyLiq_cc: + amSyCoal_cc: + Captured carbon ~ (3.9 kgCO2/kg - 0.2 kgCO2/kg) / 44 * 12 = 1.009 + inco0 ~ (2810 $/t - 2175 $/t) / 1.009 kgC/kg /USD_2017 * USD_2015 ~ 610 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + amSyNG_cc: + Captured carbon ~ (2.35 kgCO2/kg - 0.12 kgCO2/kg) / 44 * 12 = 0.608 + inco0 ~ (1315 $/t - 905 $/t) / 0.608 kgC/kg /USD_2017 * USD_2015 ~ 650 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + amSyLiq_cc: + nodata, just Assume same as asSyCoal_cc meSySol meSyNG meSyLiq and meSyH2: + meSySol: + inco0 ~ 26.7 BRMB_2024 / 6 Mt/a /USD_2024 * USD_2015 ~ 520$/t + (Sources: Real Chinese Project https://www.cgmia.org.cn/Web/News/Detail/21080) + omf ~ 0.05 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + meSyNG: + inco0 ~ 310 /USD_2017 * USD_2015 ~ 300 $/t + omf ~ 0.025 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + meSyLiq: + inco0 ~ 1203 /USD_2016 * USD_2015 ~ 290 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) + meSyH2: + inco0 ~ 1.35 MEUR_2020/MW:LHV *1000 / 3.6 MJ/MWh * 18.6 MJ/kg * 1.08 USD/EUR = 8035 kgMeOH/h + 8035 kgNH3/h / (8760 / 0.8 * 1000) /USD_2020 * USD_2015 ~ 1050 $/t + omf ~ 0.015 + (Sources: Technology Data for Renewable Fuels by Danish Energy Agency. 98 Methanol from hydrogen) meSyChemRe: + inco0 ~ 148MM$ per 353.8 t/d /353.8 * (8760 * 0.85) USD_2022 * USD_2015 ~ 49 $/t + omf ~ 8.18 MUSD_2022/year /148.8 MUSD_2022 = 0.055 + (Sources: Afzal, Shaik, et al., Green Chemistry 25.13 (2023): 5068-5085. Table S3 and S4.) meSySol_cc meSyNg_cc meSyLiq_cc: + meSySol_cc: + Captured carbon ~ (3.3 kgCO2/kg - 0.17 kgCO2/kg) / 44 * 12 = 0.854 + inco0 ~ (1505 $/t - 750 $/t) / 0.854 kgC/kg /USD_2017 * USD_2015 ~ 855 $/t + omf ~ 0.05 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + meSyNg_cc: + Captured carbon ~ (0.8 kgCO2/kg - 0.04 kgCO2/kg) / 44 * 12 = 0.207 + inco0 ~ (525 $/t - 310 $/t) / 0.207 kgC/kg /USD_2017 * USD_2015 ~ 1003 $/t + omf ~ 0.025 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) + + meSyLiq_cc: + nodata, just Assume same as meSySol_cc mtoMta mtoMtaH2: + inco0 ~ 320MM$ per (386 Propylene + 214 Ethylene) kt/a /600 * 1000 ~ 533 $/t + omf ~ 0.03 + (Sources: S. Jasper and M. M. El-Halwagi, Processes, 2015, 3, 684–698. Table 2) fertProd fertProdH2: + inco0 ~ 4.03MM$ per 1000t/a * 1000 /USD_2022 * USD_2015 ~ 3280 $/t + (Sources: Palys23 Section 2.3, Page 6) + omf ~ 0.025 + (Sources: Palys23 Section 2.3, Page 6) amToFinal meToFinal: + Dummy number with no acutal effect mechRe meSyChemRe and stCrChemRe: for Mechanical Recycling - CAPEX ~ 400 $/t - (Rough average of sources: Taylor Uekert 2023 Table S28.) + inco0 ~ 17.18MM$ per 150t/d /150 / (8760 * 0.8) /USD_2022 * USD_2015 ~ 318 $/t + omf = 0.03 (dummy number) + (Sources: Taylor Uekert 2023 Table S28.) for Chemical Recycling: Pyrolysis - CAPEX ~ 2200 $/t - omf = 0.03 - (Rough average of sources: Geetanjali Yadav 2023 Table1, Table S9.) + inco0 ~ 107MM$ per 49.24kt/year /49.24 * 1000 /USD_2016 * USD_2015 ~ 2146 $/t + omf = 0.03 (dummy number) + (Sources: Geetanjali Yadav 2023 Table1, Table S9.) for Chemical Recycling: Gasification - CAPEX ~ 55 $/t - omf = 0.055 - (Rough average of sources: Shaik Afzal 2023 Table S3. Table S4.) - - inco0 for mechRe = 400$/t - omf for mechRe = 0.05 - - inco0 for stCrChemRe = 2200$/t - omf for stCrChemRe = 0.03 + inco0 ~ 148MM$ per 353.8 t/d /353.8 / (8760 * 0.8) USD_2022 * USD_2015 ~ 49 $/t + omf ~ 8.18 MUSD_2022/year /148.8 MUSD_2022 = 0.055 + (Sources: Shaik Afzal 2023 Table S3. Table S4.) - inco0 for meSyChemRe = 55$/t - omf for meSyChemRe = 0.055 - $offtext *** EOF ./core/input/generisdata_tech.prn From f71af9c9eab582dbc1093c502a7c217483a065b3 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Mon, 4 Aug 2025 11:20:15 +0200 Subject: [PATCH 61/69] fix bug in postsolve.gms o37_shIndFE --- modules/37_industry/subsectors/postsolve.gms | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index b1b5cec24d..ed7b920db4 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -44,11 +44,11 @@ o37_shIndFE(ttot,regi,entyFe,secInd37,emiMkt)$( (vm_cesIO.l(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity")) ) - + sum((secInd37_emiMkt(secInd37Prc,emiMkt), - secInd37_tePrc(secInd37Prc,tePrc), - tePrc2opmoPrc(tePrc,opmoPrc)), + + sum((secInd37_emiMkt(secInd37,emiMkt), + secInd37_tePrc(secInd37,tePrc), + tePrc2opmoPrc(tePrc,opmoPrc))$(secInd37Prc(secInd37)), o37_demFePrc(ttot,regi,entyFe,tePrc,opmoPrc) - )$(secInd37Prc(secInd37)) + ) ) / o37_demFeIndTotEn(ttot,regi,entyFe,emiMkt) ; From 2987e3c0679250268b6b3531d8fd097997960c76 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Mon, 4 Aug 2025 15:11:13 +0200 Subject: [PATCH 62/69] make chemicals ces version work: add switches etc. --- core/sets.gms | 1 - modules/37_industry/subsectors/datainput.gms | 13 +++++++++---- modules/37_industry/subsectors/declarations.gms | 1 + 3 files changed, 10 insertions(+), 5 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index 2836a7d10a..03e0bbd66a 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -2933,7 +2933,6 @@ emiMac2mac(all_enty,all_enty) "mapping of emission sources to MACs - co2luc.co2luc co2cement_process. co2cement "process emissions are captured by kiln CCS too" co2cement . co2cement - co2chemicals . co2chemicals $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" co2chemicals . co2chemicals $endif.cm_subsec_model_chemicals diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 144b3d646f..ab7804fa1c 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -939,7 +939,7 @@ $offdelim ; $endif.cm_subsec_model_chemicals -!!p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; +p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter p37_mat2ue(tall,all_regi,all_enty,all_in) "conversion factors [2017$/kg or 2017$/kgN] for 2020-2050 to convert material [Gt or GtN] into UE [trn$2017]" @@ -971,6 +971,13 @@ p37_mat2ue(t,all_regi,"sesteel","ue_steel_secondary") = 1.; p37_mat2ue(t,all_regi,"prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel +*** -------------------------------- +p37_ue_share(tall,all_regi,all_enty,all_in) = 0.; +pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; +pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; +p37_matFlowHist(tall,all_regi,mat) = 0.; + +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" !! HOT FIX !! AmmoniaFinal equals total ammonia minus fertilizer ammonia !! can this be deleted? (recalculated from mrindustry to avoid rounding errors) @@ -1025,8 +1032,8 @@ p37_ue_share(t,regi,mat,in)$(mat2ue(mat,in) AND sameas(in,"ue_chemicals") AND t. / pm_cesdata(t,regi,in,"quantity"); ; p37_ue_share(t,regi,mat,in)$(t.val gt 2020) = p37_ue_share("2020",regi,mat,in); +$endif.cm_subsec_model_chemicals -*** -------------------------------- $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" p37_ue_share(t,regi,"sesteel","ue_steel_secondary") = 1.; p37_ue_share(t,regi,"prsteel","ue_steel_primary") = 1.; @@ -1128,8 +1135,6 @@ s37_shareHistFeDemPenalty = 0.6; *** -------------------------------- -!!pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; -!!p37_matFlowHist(tall,all_regi,mat) = 0.; if (cm_startyear eq 2005, loop(t$(t.val ge 2005 AND t.val le 2020), diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 084da5ed4e..1d11cd8ea5 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -31,6 +31,7 @@ Parameters p37_demFeTarget(tall,all_regi,all_enty,all_in) "Total Fe demand that would be have been consumed historically for production of a UE if all tech had BAT efficiency" p37_demFeActual(tall,all_regi,all_enty,all_in) "Total historic Fe demand consumed for production of a UE" p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" + pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Historic production volumes of processes [Gt]" p37_matFlowHist(tall,all_regi,all_enty) "Total historic material flow calculated as the sum of outputs of all processes producing the respective material [Gt or GtN for fertilizer]" p37_ue_share(tall,all_regi,all_enty,all_in) "Share of material to total ue in CES tree" p37_mat2ue(tall,all_regi,all_enty,all_in) "Conversion factor of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt], in chemicals [trn$2017/Gt]" From 3d090c9c1b6da852c6510e6a094227d2d3f62dbc Mon Sep 17 00:00:00 2001 From: Qianzhi Zhang Date: Mon, 4 Aug 2025 15:45:02 +0200 Subject: [PATCH 63/69] fix bug on calibration --- config/default.cfg | 2 +- modules/29_CES_parameters/calibrate/bounds.gms | 17 +++++++++++------ modules/37_industry/subsectors/postsolve.gms | 2 +- 3 files changed, 13 insertions(+), 8 deletions(-) diff --git a/config/default.cfg b/config/default.cfg index 84ddcd40b2..dc1e8fd7f1 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -31,7 +31,7 @@ cfg$extramappings_historic <- "" cfg$inputRevision <- "7.54" #### Current CES parameter and GDX revision (commit hash) #### -cfg$CESandGDXversion <- "85399046f4a00fdd1dfd4dee32daa0a2912da6ee" +cfg$CESandGDXversion <- "9bd016835c0733daf5aa5b96f5c18b8826b25970" #### Force the model to download new input data #### cfg$force_download <- FALSE diff --git a/modules/29_CES_parameters/calibrate/bounds.gms b/modules/29_CES_parameters/calibrate/bounds.gms index bad3b97540..473d2ea5ad 100644 --- a/modules/29_CES_parameters/calibrate/bounds.gms +++ b/modules/29_CES_parameters/calibrate/bounds.gms @@ -38,6 +38,7 @@ if (smax((t,regi_dyn29(regi),ipf)$( t.val gt 2005 putclose logfile, " " /; ); +$offOrder *' relax industry fixing over the calibration iterations sm_tmp = 5; !! last iteration with bounds on industry loop (pf_industry_relaxed_bounds_dyn37(in), @@ -50,13 +51,17 @@ loop (pf_industry_relaxed_bounds_dyn37(in), abs(pm_cesdata(t,regi,in,"offset_quantity")) ); - vm_cesIO.up(t,regi_dyn29(regi),in) - = ( pm_cesdata(t,regi,in,"quantity") - !! goes from 1.05 to 2.05 in +0.2 steps, then jumps to inf - * (1.05 + max(0, (sm_CES_calibration_iteration - 1) / sm_tmp)) - )$( sm_CES_calibration_iteration le sm_tmp ) - + INF$( sm_CES_calibration_iteration gt sm_tmp ); + vm_cesIO.up(t,regi_dyn29(regi),in)$(t.val gt 2005) + = max( + pm_cesdata(t-1,regi,in,"quantity"), + ( pm_cesdata(t,regi,in,"quantity") + !! goes from 1.05 to 2.05 in +0.2 steps, then jumps to inf + * (1.05 + max(0, (sm_CES_calibration_iteration - 1) / sm_tmp)) + ))$( sm_CES_calibration_iteration le sm_tmp ) + + INF$( sm_CES_calibration_iteration gt sm_tmp ); + ); +$onOrder loop(p29_building_relaxed_bounds_dyn(in), vm_cesIO.lo(t,regi_dyn29(regi),in)$(t.val gt 2020 AND SAMEAS(regi, "MEA")) diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 8b35f8becf..993ed9f832 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -206,7 +206,7 @@ loop((tePrc1,opmoPrc1,tePrc2,opmoPrc2,mat,route)$( AND tePrc2route(tePrc1,opmoPrc1,route) AND tePrc2route(tePrc2,opmoPrc2,route)), !! The share of second-stage tech (such as eaf) which belongs to a certain route equals... - o37_shareRoute(ttot,regi,tePrc2,opmoPrc2,route)$(vm_outflowPrc.l(ttot,regi,tePrc2,opmoPrc2) gt 0.) + o37_shareRoute(ttot,regi,tePrc2,opmoPrc2,route)$(vm_outflowPrc.l(ttot,regi,tePrc2,opmoPrc2) gt sm_eps) !! ...the outflow of the first-stage tech (such as idr) which provides the input material (such as driron) to the second-stage... = vm_outflowPrc.l(ttot,regi,tePrc1,opmoPrc1) !! ...times the share of that 1st stage tech which belongs to a certain route From 4ebb32696f5fd9303b2ecb4d87b2a4f4b67016b9 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Tue, 5 Aug 2025 10:08:44 +0200 Subject: [PATCH 64/69] fix bug in making ces switch work --- modules/37_industry/subsectors/datainput.gms | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index ab7804fa1c..614209dfd9 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -928,6 +928,9 @@ $endif.cm_subsec_model_steel !! 0. Data input +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" +pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "material flows per production route in 2020 [Gt or GtN for fertilizer]" @@ -939,7 +942,9 @@ $offdelim ; $endif.cm_subsec_model_chemicals +$ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "ces" p37_mat2ue(tall,all_regi,all_enty,all_in) = 0.; +$endif.cm_subsec_model_chemicals $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" Parameter p37_mat2ue(tall,all_regi,all_enty,all_in) "conversion factors [2017$/kg or 2017$/kgN] for 2020-2050 to convert material [Gt or GtN] into UE [trn$2017]" @@ -974,7 +979,6 @@ $endif.cm_subsec_model_steel *** -------------------------------- p37_ue_share(tall,all_regi,all_enty,all_in) = 0.; pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; -pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; p37_matFlowHist(tall,all_regi,mat) = 0.; $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" From 011c315e06ae532974ca893d3eb63c04d88edab9 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Tue, 5 Aug 2025 10:41:59 +0200 Subject: [PATCH 65/69] undo Qianzhi change ces parameter and gdx revision hash --- config/default.cfg | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/config/default.cfg b/config/default.cfg index 9758b6abb7..a5f3b12ed5 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -31,7 +31,7 @@ cfg$extramappings_historic <- "" cfg$inputRevision <- "7.57" #### Current CES parameter and GDX revision (commit hash) #### -cfg$CESandGDXversion <- "9bd016835c0733daf5aa5b96f5c18b8826b25970" +cfg$CESandGDXversion <- "346cabc13796db213e2696617074ef45b094ff5f" #### Force the model to download new input data #### cfg$force_download <- FALSE From 2f77a52119e74b170b6a9f531753658b92fe5287 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Tue, 5 Aug 2025 10:53:57 +0200 Subject: [PATCH 66/69] fix discrepancies between docu and input data in generisdata_tech --- core/input/generisdata_tech.prn | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index af9b142f74..2e55e4626c 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -170,7 +170,7 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld chemElec chemH2 stCrNg stCrLiq amSyCoal amSyNG amSyLiq amSyH2 meSySol meSyNG meSyLiq meSyH2 !! documentation & sources: see below -inco0 500 500 500 1080 1040 2100 875 1190 1230 530 300 290 1050 +inco0 500 500 500 1080 1040 2100 875 1190 1230 520 300 290 1050 omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 @@ -185,13 +185,13 @@ lifetime 25 25 25 25 + mtoMta mtoMtaH2 fertProd fertProdH2 amToFinal meToFinal !! documentation & sources: see below inco0 533 533 3280 3280 500 500 -omf 0.025 0.025 0.06 0.06 0.06 0.06 +omf 0.025 0.025 0.03 0.03 0.06 0.06 constrTme 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 + mechRe stCrChemRe meSyChemRe !! documentation & sources: see below -inco0 318 2200 49 +inco0 318 2146 49 omf 0.03 0.03 0.055 constrTme 3 3 3 lifetime 30 30 30 @@ -417,12 +417,12 @@ amSyCoal amSyNG amSyLiq and amSyH2: amSyNG: inco0 ~ 905 /USD_2017 * USD_2015 ~ 875 $/t - omf ~ 0.05 + omf ~ 0.025 (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 4) amSyLiq: inco0 ~ 1203 /USD_2016 * USD_2015 ~ 1190 $/t - omf ~ 0.05 + omf ~ 0.025 (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) amSyH2: @@ -462,7 +462,7 @@ meSySol meSyNG meSyLiq and meSyH2: meSyLiq: inco0 ~ 1203 /USD_2016 * USD_2015 ~ 290 $/t - omf ~ 0.05 + omf ~ 0.025 (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) meSyH2: @@ -497,14 +497,14 @@ meSySol_cc meSyNg_cc meSyLiq_cc: mtoMta mtoMtaH2: inco0 ~ 320MM$ per (386 Propylene + 214 Ethylene) kt/a /600 * 1000 ~ 533 $/t - omf ~ 0.03 + omf ~ 0.025 (Sources: S. Jasper and M. M. El-Halwagi, Processes, 2015, 3, 684–698. Table 2) fertProd fertProdH2: inco0 ~ 4.03MM$ per 1000t/a * 1000 /USD_2022 * USD_2015 ~ 3280 $/t (Sources: Palys23 Section 2.3, Page 6) - omf ~ 0.025 + omf ~ 0.03 (Sources: Palys23 Section 2.3, Page 6) amToFinal meToFinal: From fe30b3a4a6077aeb91f524dece13a171f92f5219 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Tue, 5 Aug 2025 14:57:16 +0200 Subject: [PATCH 67/69] polish generisdata_tech chemicals documentation --- core/input/generisdata_tech.prn | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 2e55e4626c..85e493c95f 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -170,7 +170,7 @@ learn 0.15 $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld chemElec chemH2 stCrNg stCrLiq amSyCoal amSyNG amSyLiq amSyH2 meSySol meSyNG meSyLiq meSyH2 !! documentation & sources: see below -inco0 500 500 500 1080 1040 2100 875 1190 1230 520 300 290 1050 +inco0 500 500 500 1080 1040 2100 875 1190 1250 520 300 290 1050 omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 @@ -426,10 +426,11 @@ amSyCoal amSyNG amSyLiq and amSyH2: (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) amSyH2: - inco0 ~ 1.69 MEUR_2020/MW:LHV *1000 / 3.6 MJ/MWh * 18.6 MJ/kg * 1.08 USD/EUR = 9412 kgNH3/h - 9412 kgNH3/h / (8760 / 0.8 * 1000) /USD_2020 * USD_2015 ~ 1230 $/t - omf ~ 0.04 + inco0 ~ 1.69 MEUR_2020/MW:LHV *1000 / 3.6 MJ/MWh * 18.9 MJ/kg * 1.08 USD/EUR = 9564 kgNH3/h + 9412 kgNH3/h / (8760 / 0.8 * 1000) /USD_2020 * USD_2015 ~ 1250 $/t (Sources: Technology Data for Renewable Fuels by Danish Energy Agency. 103 Hydrogen to Ammonia) + omf ~ 0.04 + (M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021, 294, 116170. Table A1) amSyCoal_cc amSyNG_cc amSyLiq_cc: @@ -461,21 +462,16 @@ meSySol meSyNG meSyLiq and meSyH2: (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) meSyLiq: - inco0 ~ 1203 /USD_2016 * USD_2015 ~ 290 $/t + inco0 ~ 295 /USD_2016 * USD_2015 ~ 290 $/t omf ~ 0.025 (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) meSyH2: - inco0 ~ 1.35 MEUR_2020/MW:LHV *1000 / 3.6 MJ/MWh * 18.6 MJ/kg * 1.08 USD/EUR = 8035 kgMeOH/h + inco0 ~ 1.35 MEUR_2020/MW:LHV *1000 / 3.6 MJ/MWh * 19.9 MJ/kg * 1.08 USD/EUR = 8035 kgMeOH/h 8035 kgNH3/h / (8760 / 0.8 * 1000) /USD_2020 * USD_2015 ~ 1050 $/t - omf ~ 0.015 (Sources: Technology Data for Renewable Fuels by Danish Energy Agency. 98 Methanol from hydrogen) - -meSyChemRe: - - inco0 ~ 148MM$ per 353.8 t/d /353.8 * (8760 * 0.85) USD_2022 * USD_2015 ~ 49 $/t - omf ~ 8.18 MUSD_2022/year /148.8 MUSD_2022 = 0.055 - (Sources: Afzal, Shaik, et al., Green Chemistry 25.13 (2023): 5068-5085. Table S3 and S4.) + omf ~ 0.015 + (Sources: IEA, The Future of Hydrogen. Seizing today’s opportunities, Assumptions Annex, Paris, 2019. PAGE | 5) meSySol_cc meSyNg_cc meSyLiq_cc: @@ -497,8 +493,9 @@ meSySol_cc meSyNg_cc meSyLiq_cc: mtoMta mtoMtaH2: inco0 ~ 320MM$ per (386 Propylene + 214 Ethylene) kt/a /600 * 1000 ~ 533 $/t - omf ~ 0.025 (Sources: S. Jasper and M. M. El-Halwagi, Processes, 2015, 3, 684–698. Table 2) + omf ~ 0.025 + (Sources: IEA, The Future of Petrochemicals: Towards more sustainable plastics and fertilisers, Paris, 2018. Table A3) fertProd fertProdH2: @@ -526,7 +523,7 @@ mechRe meSyChemRe and stCrChemRe: for Chemical Recycling: Gasification inco0 ~ 148MM$ per 353.8 t/d /353.8 / (8760 * 0.8) USD_2022 * USD_2015 ~ 49 $/t omf ~ 8.18 MUSD_2022/year /148.8 MUSD_2022 = 0.055 - (Sources: Shaik Afzal 2023 Table S3. Table S4.) + (Sources: Afzal, Shaik, et al., Green Chemistry 25.13 (2023): 5068-5085. Table S3 and S4.) $offtext From 3044699f7719907004365bba0c61876f440c5276 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Thu, 7 Aug 2025 09:35:00 +0200 Subject: [PATCH 68/69] add steam input to meSyH2 feh2s demand --- core/input/generisdata_tech.prn | 4 ++-- modules/37_industry/subsectors/datainput.gms | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 85e493c95f..2eefb6c17d 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -171,7 +171,7 @@ $ifthen.cm_subsec_model_chemicals "%cm_subsec_model_chemicals%" == "processes" + chemOld chemElec chemH2 stCrNg stCrLiq amSyCoal amSyNG amSyLiq amSyH2 meSySol meSyNG meSyLiq meSyH2 !! documentation & sources: see below inco0 500 500 500 1080 1040 2100 875 1190 1250 520 300 290 1050 -omf 0.06 0.1 0.1 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 +omf 0.06 0.06 0.06 0.025 0.025 0.05 0.025 0.025 0.04 0.05 0.025 0.025 0.015 constrTme 3 3 3 3 3 3 3 3 3 3 3 3 3 lifetime 30 30 30 30 30 30 30 30 30 30 30 30 30 @@ -430,7 +430,7 @@ amSyCoal amSyNG amSyLiq and amSyH2: 9412 kgNH3/h / (8760 / 0.8 * 1000) /USD_2020 * USD_2015 ~ 1250 $/t (Sources: Technology Data for Renewable Fuels by Danish Energy Agency. 103 Hydrogen to Ammonia) omf ~ 0.04 - (M. Fasihi, R. Weiss, J. Savolainen and C. Breyer, Appl. Energy, 2021, 294, 116170. Table A1) + (Fasihi, M., Breyer, C., 2024. Global production potential of green methanol based on variable renewable electricity. Energy Environ. Sci. 17, 3503–3522. Table S10) amSyCoal_cc amSyNG_cc amSyLiq_cc: diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 144b3d646f..b4e34e4833 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -782,7 +782,7 @@ p37_specFeDemTarget("feels","meSyNg_cc","standard") = 0.54 / (sm_TWa_2_MWh/sm_g p37_specFeDemTarget("feels","meSyLiq_cc","standard") = 0.54 / (sm_TWa_2_MWh/sm_giga_2_non); !! Assume same as meSyNg_cc Mwh/tC -p37_specFeDemTarget("feh2s","meSyH2","standard") = 6.4 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen +p37_specFeDemTarget("feh2s","meSyH2","standard") = (6.4+0.58) / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen, assuming steam input is produced from hydrogen p37_specFeDemTarget("feels","meSyH2","standard") = 0.10 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: DEA Technology Data for Energy Carrier Generation and Conversion June 2017 98 Methanol from hydrogen p37_specFeDemTarget("fegas","meSyChemRe","standard") = 2.6 / (sm_TWa_2_MWh/sm_giga_2_non); !! Source: Shaik Afzal 2023 Table S4+S5, calculated from minimum selling price breakdown From 0067a8e7c0991c63940afbdf06fb2fc348755469 Mon Sep 17 00:00:00 2001 From: Leonie Schweiger Date: Tue, 12 Aug 2025 10:36:23 +0200 Subject: [PATCH 69/69] fix bug in feedstock demand balance --- modules/37_industry/subsectors/equations.gms | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index bd1b5d9c6f..d77def5a0f 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -227,12 +227,13 @@ q37_demFeFeedstockChemIndst(t,regi,entyFe,emiMkt) .. vm_demFeNonEnergySector(t,regi,entySe,entyFe,"indst",emiMkt) ) =e= - sum(fe2ppfEn(entyFe,in_chemicals_feedstock_37(in)), + ( + sum(fe2ppfEn(entyFe,in_chemicals_feedstock_37(in)), ( vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity") - ) - + - sum(secInd37Prc$(sameas(secInd37Prc,"chemicals")), + )) + + + sum(secInd37Prc$(sameas(secInd37Prc,"chemicals")), sum((secInd37_emiMkt(secInd37Prc,emiMkt), secInd37_tePrc(secInd37Prc,tePrc), tePrc2opmoPrc(tePrc,opmoPrc)), @@ -240,8 +241,9 @@ q37_demFeFeedstockChemIndst(t,regi,entyFe,emiMkt) .. * vm_outflowPrc(t,regi,tePrc,opmoPrc) ) ) - * p37_chemicals_feedstock_share(t,regi) - )$( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) + ) + * p37_chemicals_feedstock_share(t,regi) + $( entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) ; *' Feedstocks have identical fossil/biomass/synfuel shares as industry FE