From 60862226690a3abf4a21175fb2580e700165d997 Mon Sep 17 00:00:00 2001 From: Michaja Pehl Date: Wed, 6 Oct 2021 10:29:20 +0200 Subject: [PATCH 01/33] add lower bound on feso/feli/fega in chemicals FE input for feedstocks --- modules/37_industry/subsectors/datainput.gms | 8 ++++++++ modules/37_industry/subsectors/declarations.gms | 2 ++ modules/37_industry/subsectors/equations.gms | 8 ++++++++ modules/37_industry/subsectors/input/files | 1 + modules/37_industry/subsectors/sets.gms | 7 +++++++ 5 files changed, 26 insertions(+) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 8845ea6c2..ec2b75312 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -199,5 +199,13 @@ $endIf.CESMkup display p37_CESMkup; +Parameter p37_chemicals_feedstock_share(ttot,all_regi) "minimum share of feso/feli/fega in total chemicals FE input [0-1]" + / +$ondelim +$include "./modules/37_industry/subsectors/input/p37_chemicals_feedstock_share.cs4r"; +$offdelim + / +; + *** EOF ./modules/37_industry/subsectors/datainput.gms diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 32af13964..ef27f7959 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -22,6 +22,7 @@ Parameters pm_IndstCO2Captured(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "Captured CO2 in industry by energy carrier, subsector and emissions market" p37_CESMkup(ttot,all_regi,all_in) "CES markup cost parameter [trUSD/CES input]" + p37_chemicals_feedstock_share(ttot,all_regi) "minimum share of feso/feli/fega in total chemicals FE input [0-1]" *** output parameters only for reporting o37_emiInd(ttot,all_regi,all_enty,secInd37,all_enty) "industry CCS emissions [GtC/a]" @@ -55,6 +56,7 @@ Equations q37_IndCCSCost "Calculate industry CCS costs" q37_demFeIndst(ttot,all_regi,all_enty,all_emiMkt) "industry final energy demand (per emission market)" q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." + q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" ; *** EOF ./modules/37_industry/subsectors/declarations.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 393b75afe..045066d70 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -124,5 +124,13 @@ q37_costCESmarkup(t,regi,in)$(ppfen_CESMkup_dyn37(in)).. * (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) ; +* lower bound on feso/feli/fega in chemicals FE input for feedstocks +q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. + sum(in_chemicals_feedstocks37(in), vm_cesIO(t,regi,in)) + =g= + sum(ces_eff_target_dyn37("ue_chemicals",in), vm_cesIO(t,regi,in)) + * p37_chemicals_feedstock_share(t,regi) +; + *** EOF ./modules/37_industry/subsectors/equations.gms diff --git a/modules/37_industry/subsectors/input/files b/modules/37_industry/subsectors/input/files index 6cc4f9ef6..cb690dccb 100644 --- a/modules/37_industry/subsectors/input/files +++ b/modules/37_industry/subsectors/input/files @@ -1,2 +1,3 @@ p37_cesIO_up_steel_secondary.cs4r p37_clinker-to-cement-ratio.cs3r +p37_chemicals_feedstock_share.cs4r diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 18bd43408..41957763f 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -141,6 +141,13 @@ Sets feh2_otherInd, fehe_otherInd, feelhth_otherInd) / + in_chemicals_feedstocks37(all_in) "chemicals FE that can provide feedstocks" + / + feso_chemicals + feli_chemicals + fega_chemicals + / + ces_eff_target_dyn37(all_in,all_in) "limits to specific total energy use" / ue_cement . (feso_cement, feli_cement, fega_cement, feh2_cement, From 3b4dda1390bfe25c89bbce299758be5041aeb23d Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Fri, 14 Jan 2022 19:35:40 +0100 Subject: [PATCH 02/33] adds a factor to discount (non-energy) feedstocks from emissions accounting in chemicals subsector --- core/equations.gms | 35 +++++++++++++++++-- core/sets.gms | 2 +- .../37_industry/subsectors/declarations.gms | 10 +++--- modules/37_industry/subsectors/equations.gms | 18 +++++++++- modules/37_industry/subsectors/sets.gms | 4 +-- 5 files changed, 59 insertions(+), 10 deletions(-) diff --git a/core/equations.gms b/core/equations.gms index 4d42fdb9a..c65cf8856 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -490,6 +490,35 @@ q_emiTe(t,regi,emiTe(enty)).. sum(emiMkt, vm_emiTeMkt(t,regi,enty,emiMkt)) ; +$ontext +***----------------------------------------------------------------------------- +*' Calculate terms to correct the emissions from non-energy feedstocks in the +*' industry. ALTERNATIVE IMPLEMENTATION TO DISTINGUISH BETWEEN FE FORMS +*' NOT IN USE YET. CURRENT FIX IMPLEMENTED IN q_emiTeDetailMkt() +***----------------------------------------------------------------------------- +q_emiNEFeedstockDiscount().. + vm_discountFeedstock !!def! + =e= + sum(t, + - ( !!discount emissions of NE feedstocks that are not combusted but are assumed to be combusted in the previous sum + !!why is vm_cesIO used for definig related bound in industry/subsectors? ---> vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) + vm_demFeSector(t,regi,enty,"feso_chemicals","indst","ETS") + * p37_chemicals_feedstock_share(t,regi) !!gotta fix p37->pm + + vm_demFeSector(t,regi,enty,enty2,"indst","ETS") + * p37_chemicals_feedstock_share(t,regi) + + vm_demFeSector(t,regi,enty,enty2,"indst","ETS") + * p37_chemicals_feedstock_share(t,regi) + ) +; + +Add feedstock emissions with right emi factor. This can be included in q_emiTeDetailMkt +q_emiNEFeedstock().. + vm_emiNEFeedstock !!def + =e= + + vm_emiNEFeedstock(t,regi,...) !!add process emissions from NE feedstocks that are not combusted +; +$offtext + ***----------------------------------------------------------------------------- *' Emissions per market *' from primary to secondary energy transformation, @@ -513,9 +542,11 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) )$(sameas(emiMkt,"ETS")) + sum(se2fe(enty,enty2,te), pm_emifac(t,regi,enty,enty2,te,enty3) - * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt)) - ) + * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt)-vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)) + !!emissions from (non-energy) feedstocks are still missing: + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)*pm_emifacFeedstock(..) + ) ) + ; ***-------------------------------------------------- diff --git a/core/sets.gms b/core/sets.gms index 6360a47ae..c51c4bb86 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -623,7 +623,7 @@ all_in "all inputs and outputs of the CES function" en_chemicals "energy use of chemicals production" kap_chemicals "energy efficiency capital of chemicals production" en_chemicals_fhth "feedstock and high temperature heat enery use of chemicals production" - feso_chemicals "solids energy use of cement production" + feso_chemicals "solids energy use of chemicals production" feli_chemicals "liquids energy use of chemicals production" fega_chemicals "gases energy use of chemicals production" feh2_chemicals "hydrogen energy use of chemicals production" diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index b511acbb7..aba63aef5 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -38,10 +38,11 @@ Parameter $endIf.CESMkup Positive Variables - vm_macBaseInd(ttot,all_regi,all_enty,secInd37) "industry CCS baseline emissions [GtC/a]" - vm_emiIndCCS(ttot,all_regi,all_enty) "industry CCS emissions [GtC/a]" - vm_IndCCSCost(ttot,alL_regi,all_enty) "industry CCS cost" - v37_emIIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" + vm_macBaseInd(ttot,all_regi,all_enty,secInd37) "industry CCS baseline emissions [GtC/a]" + vm_emiIndCCS(ttot,all_regi,all_enty) "industry CCS emissions [GtC/a]" + vm_IndCCSCost(ttot,alL_regi,all_enty) "industry CCS cost" + vm_demFENonEnergySector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "energy flow of non-energy feedstocks for the chemicals industry [Twa]" !!check sets! + v37_emIIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" ; Equations @@ -55,6 +56,7 @@ Equations q37_demFeIndst(ttot,all_regi,all_enty,all_emiMkt) "industry final energy demand (per emission market)" q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" + q37_demFeFeedstockChemIndst "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" ; *** EOF ./modules/37_industry/subsectors/declarations.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 15c3c8613..2dc2bdb0b 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -126,11 +126,27 @@ q37_costCESmarkup(t,regi,in)$(ppfen_CESMkup_dyn37(in)).. * lower bound on feso/feli/fega in chemicals FE input for feedstocks q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. - sum(in_chemicals_feedstocks37(in), vm_cesIO(t,regi,in)) + sum(in_chemicals_feedstocks37(in), vm_cesIO(t,regi,in)) !!why "in" and not "all_in"? =g= sum(ces_eff_target_dyn37("ue_chemicals",in), vm_cesIO(t,regi,in)) * p37_chemicals_feedstock_share(t,regi) ; +*Correction factor for non-energy feedstock emissions +q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear + AND entyFe2Sector(entyFe,"indst") ) .. + sum(se2fe(entySE,entyFE,te), + !!vm_demFeNonEnergy (t,regi,entySe,entyFe,sector,emiMkt) + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) + ) + =e= + sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), !!check this mapping + secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), !!apply these set only to chem indu, and only for relevant vectors: so li ga --> in_chemicals_feedstocks37(in) + (vm_cesIO(ttot,regi,in) + + pm_cesdata(ttot,regi,in,"offset_quantity") + ) + * p37_chemicals_feedstock_share(t,regi) + ) +; *** EOF ./modules/37_industry/subsectors/equations.gms diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index e4bbab693..2e3f19b2e 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -80,7 +80,7 @@ Sets 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" - feso_chemicals "solids energy use of cement production" + feso_chemicals "solids energy use of chemicals production" feli_chemicals "liquids energy use of chemicals production" fega_chemicals "gases energy use of chemicals production" feh2_chemicals "hydrogen energy use of chemicals production" @@ -141,7 +141,7 @@ Sets feh2_otherInd, fehe_otherInd, feelhth_otherInd) / - in_chemicals_feedstocks37(all_in) "chemicals FE that can provide feedstocks" + in_chemicals_37(all_in) "chemicals FE that can provide feedstocks" / feso_chemicals feli_chemicals From 82081aeb05d613ef219edaea9c228a9caae86710 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 20 Jan 2022 19:02:58 +0100 Subject: [PATCH 03/33] Please enter the commit message for your changes. Lines starting --- core/declarations.gms | 1 + core/equations.gms | 6 ++++-- core/sets.gms | 16 +++++++++++++--- modules/37_industry/subsectors/declarations.gms | 1 - modules/37_industry/subsectors/equations.gms | 17 ++++++++++------- 5 files changed, 28 insertions(+), 13 deletions(-) diff --git a/core/declarations.gms b/core/declarations.gms index 80edcca6e..cc4177dd3 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -331,6 +331,7 @@ vm_demSe(ttot,all_regi,all_enty,all_enty,all_te) "se demand. [TWa]" vm_prodSe(tall,all_regi,all_enty,all_enty,all_te) "se production. [TWa]" vm_prodFe(ttot,all_regi,all_enty,all_enty,all_te) "fe production. [TWa]" vm_demFeSector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "fe demand per sector and emission market. [TWa]" +vm_demFENonEnergySector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "energy flows of non-energy feedstocks [TWa]" v_costFu(ttot,all_regi) "fuel costs" vm_costFuEx(ttot,all_regi,all_enty) "fuel costs from exhaustible energy [tril$US]" vm_pebiolc_price(ttot,all_regi) "Bioenergy price according to MAgPIE supply curves [T$US/TWa]" diff --git a/core/equations.gms b/core/equations.gms index c65cf8856..08647dcba 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -542,8 +542,10 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) )$(sameas(emiMkt,"ETS")) + sum(se2fe(enty,enty2,te), pm_emifac(t,regi,enty,enty2,te,enty3) - * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt)-vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)) - !!emissions from (non-energy) feedstocks are still missing: + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)*pm_emifacFeedstock(..) + * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) + -vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) +*emissions from (non-energy) feedstocks are still missing: + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)*pm_emifacFeedstock(..) ) ) diff --git a/core/sets.gms b/core/sets.gms index c51c4bb86..6bf46f666 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -714,10 +714,20 @@ sets all_regi "all regions" /LAM,OAS,SSA,EUR,NEU,MEA,REF,CAZ,CHA,IND,JPN,USA/ - ext_regi "extended regions list (includes subsets of H12 regions)" / LAM_regi,OAS_regi,SSA_regi,EUR_regi,NEU_regi,MEA_regi,REF_regi,CAZ_regi,CHA_regi,IND_regi,JPN_regi,USA_regi,LAM,OAS,SSA,EUR,NEU,MEA,REF,CAZ,CHA,IND,JPN,USA / - + ext_regi "extended regions list (includes subsets of H12 regions)" + / + GLO, + +LAM_regi,OAS_regi,SSA_regi,EUR_regi,NEU_regi,MEA_regi,REF_regi,CAZ_regi,CHA_regi,IND_regi,JPN_regi,USA_regi +, + +LAM,OAS,SSA,EUR,NEU,MEA,REF,CAZ,CHA,IND,JPN,USA + / + regi_group(ext_regi,all_regi) "region groups (regions that together corresponds to a H12 region)" / + +GLO.( LAM,OAS,SSA,EUR,NEU,MEA,REF,CAZ,CHA,IND,JPN,USA ) LAM_regi .(LAM) OAS_regi .(OAS) SSA_regi .(SSA) @@ -874,7 +884,7 @@ $endif.altFeEmiFac ***######################## R SECTION START (MODULES) ############################### *** THIS CODE IS CREATED AUTOMATICALLY, DO NOT MODIFY THESE LINES DIRECTLY *** ANY DIRECT MODIFICATION WILL BE LOST AFTER NEXT MODEL START -*** CHANGES CAN BE DONE USING THE RESPECTIVE LINES IN scripts/start/prepare_and_run.R +*** CHANGES CAN BE DONE USING THE RESPECTIVE LINES IN scripts/start_functions.R sets diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index aba63aef5..eef0835b6 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -41,7 +41,6 @@ Positive Variables vm_macBaseInd(ttot,all_regi,all_enty,secInd37) "industry CCS baseline emissions [GtC/a]" vm_emiIndCCS(ttot,all_regi,all_enty) "industry CCS emissions [GtC/a]" vm_IndCCSCost(ttot,alL_regi,all_enty) "industry CCS cost" - vm_demFENonEnergySector(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "energy flow of non-energy feedstocks for the chemicals industry [Twa]" !!check sets! v37_emIIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions" ; diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 2dc2bdb0b..519a1a51d 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -126,25 +126,28 @@ q37_costCESmarkup(t,regi,in)$(ppfen_CESMkup_dyn37(in)).. * lower bound on feso/feli/fega in chemicals FE input for feedstocks q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. - sum(in_chemicals_feedstocks37(in), vm_cesIO(t,regi,in)) !!why "in" and not "all_in"? + sum(in_chemicals_37(in), vm_cesIO(t,regi,in)) =g= sum(ces_eff_target_dyn37("ue_chemicals",in), vm_cesIO(t,regi,in)) * p37_chemicals_feedstock_share(t,regi) ; *Correction factor for non-energy feedstock emissions q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear - AND entyFe2Sector(entyFe,"indst") ) .. + AND entyFe2Sector(entyFe,"indst") ) .. + sum(se2fe(entySE,entyFE,te), - !!vm_demFeNonEnergy (t,regi,entySe,entyFe,sector,emiMkt) + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) =e= - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), !!check this mapping - secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), !!apply these set only to chem indu, and only for relevant vectors: so li ga --> in_chemicals_feedstocks37(in) - (vm_cesIO(ttot,regi,in) + sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), + secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), + + ( vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") ) - * p37_chemicals_feedstock_share(t,regi) + * p37_chemicals_feedstock_share(ttot,regi) +*apply this only to chem indu, and only for relevant vectors: so li ga --> in_chemicals_feedstocks37(in) ) ; From 576be8b83cc6f9d6c683a9dc7f60d5934926e502 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 20 Jan 2022 19:27:00 +0100 Subject: [PATCH 04/33] debug mappings in non-energy feedstock flows 2(gitshow) --- modules/37_industry/subsectors/equations.gms | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 519a1a51d..b915c7f0c 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -148,6 +148,7 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startye ) * p37_chemicals_feedstock_share(ttot,regi) *apply this only to chem indu, and only for relevant vectors: so li ga --> in_chemicals_feedstocks37(in) +*dummy ) ; From 8833a78adcc564cf6d5ce3adaafa6bda1d333f7d Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 3 Feb 2022 15:19:19 +0100 Subject: [PATCH 05/33] add emissions from non-energy feedstocks in the chemicals sector --- core/datainput.gms | 14 ++++++++++ core/declarations.gms | 1 + core/equations.gms | 4 +++ core/input/generisdata_emi.prn | 10 +++---- core/sets.gms | 2 +- last.dump.rda | Bin 0 -> 298 bytes main.gms | 46 ++++++++++++++++----------------- 7 files changed, 46 insertions(+), 31 deletions(-) create mode 100644 last.dump.rda diff --git a/core/datainput.gms b/core/datainput.gms index 63db87d31..c4894a31f 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1412,6 +1412,20 @@ pm_emifac(ttot,regi,"seliqfos","fehos","tdfoshos","co2") = p_ef_dem(regi,"fehos" pm_emifac(ttot,regi,"seliqfos","fepet","tdfospet","co2") = p_ef_dem(regi,"fepet") / (sm_c_2_co2*1000*sm_EJ_2_TWa); !! GtC/TWa pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie") / (sm_c_2_co2*1000*sm_EJ_2_TWa); !! GtC/TWa +*** define non-energy emission factors. For now only for the chemicals industry + +pm_emifacNonEnergy(t,regi,'segafos','fegas','indst','co2') = 0.051; !! GtC/TWa +pm_emifacNonEnergy(t,regi,'seliqfos','fehos','indst','co2') = 0.069; !! GtC/TWa +pm_emifacNonEnergy(t,regi,'sesofos','fesos','indst','co2') = 0.086; !! GtC/TWa + +pm_emifacNonEnergy('2005',regi,'segafos','fegas','indst','co2') = 0.068; !! GtC/TWa +pm_emifacNonEnergy('2005',regi,'seliqfos','fehos','indst','co2') = 0.092; !! GtC/TWa +pm_emifacNonEnergy('2005',regi,'sesofos','fesos','indst','co2') = 0.114; !! GtC/TWa + +pm_emifacNonEnergy('2010',regi,'segafos','fegas','indst','co2') = 0.071; !! GtC/TWa +pm_emifacNonEnergy('2010',regi,'seliqfos','fehos','indst','co2') = 0.096; !! GtC/TWa +pm_emifacNonEnergy('2010',regi,'sesofos','fesos','indst','co2') = 0.119; !! GtC/TWa + *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! pm_cesdata(ttot,regi,in,"offset_quantity")$(ttot.val ge 2005) = 0; diff --git a/core/declarations.gms b/core/declarations.gms index 70d50c9af..3d30a81e1 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -113,6 +113,7 @@ pm_dataccs(all_regi,char,rlf) "maximum CO2 storage pm_dataeta(tall,all_regi,all_te) "regional eta data" p_emi_quan_conv_ar4(all_enty) "conversion factor for various gases to GtCeq" pm_emifac(tall,all_regi,all_enty,all_enty,all_te,all_enty) "emission factor by technology for all types of emissions in emiTe" +pm_emifacNonEnergy(ttot,all_regi,all_enty,all_enty,emi_sectors,all_enty) "emission factor for non-energy fedstocks. For now only for Chemicals Industry [GtC per TWa]" pm_omeg (all_regi,opTimeYr,all_te) "technical depreciation parameter, gives the share of a capacity that is still usable after tlt. [none/share, value between 0 and 1]" p_aux_lifetime(all_regi,all_te) "auxiliary parameter for calculating life times, calculated externally in excel sheet" pm_pedem_res(ttot,all_regi,all_te) "Demand for pebiolc residues, needed for enhancement of residue potential [TWa]" diff --git a/core/equations.gms b/core/equations.gms index 837c0ccd6..f883d244b 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -614,6 +614,10 @@ q_emiAllMkt(t,regi,emi,emiMkt).. + vm_emiCdr(t,regi,emi)$(sameas(emi,"co2") AND sameas(emiMkt,"ETS")) *** Exogenous emissions + pm_emiExog(t,regi,emi)$(sameas(emiMkt,"other")) +*ADD here non energy emi fro chem sector: + + sum(sector$sector2emiMkt(sector,emiMkt), sum(se2fe(entySe,entyFe,te), + vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt)*pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) + )) ; diff --git a/core/input/generisdata_emi.prn b/core/input/generisdata_emi.prn index c43277f2c..d1065ba8b 100644 --- a/core/input/generisdata_emi.prn +++ b/core/input/generisdata_emi.prn @@ -1,9 +1,5 @@ *** SOF ./core/input/generisdata_emi.prn -*TA* This file includes the emission factors of secondary energy production technologies given in GtC per ZJ (ie 10^9tC per 10^9TJ) -*RP* the emission factors for oil were reduced from 20 to 18.4 to represent -*** that a share of oil is not burned but rather converted into long-lived -*** goods (bitumen->tar for streets, durable plastics - most of plastics is -*** quickly burned, but some remains unburnt for decades) - "carbonstored". +*TA* This file includes the emission factors of secondary energy production technologies given in GtC per ZJ (ie 10^9tC per 10^9TJ) *** NB: reduction calculated based on values in manual to IEA CO2 emissions statistics (2007). *JeS* emission factors for n2o are in Tg N per TWa (native remind units) *LP* ratio of C to H in CCU-technologies (make sure if it is H or H2 you are reffering to!) @@ -44,8 +40,8 @@ pebiolc.sehe.biohp 0.12614 pebiolc.sesobio.biotr 0.12614 pebiolc.sesobio.biotrmod 0.12614 pebiolc.segabio.biogas 0.12614 -peoil.seliqfos.refliq 18.4 -peoil.seel.dot 18.4 0.01892 +peoil.seliqfos.refliq 20 +peoil.seel.dot 20 0.01892 seh2.segasyn.h22ch4 0.395 seh2.seliqsyn.MeOH 0.53 diff --git a/core/sets.gms b/core/sets.gms index 5a0c24a21..a57be9c26 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -884,7 +884,7 @@ $endif.altFeEmiFac ***######################## R SECTION START (MODULES) ############################### *** THIS CODE IS CREATED AUTOMATICALLY, DO NOT MODIFY THESE LINES DIRECTLY *** ANY DIRECT MODIFICATION WILL BE LOST AFTER NEXT MODEL START -*** CHANGES CAN BE DONE USING THE RESPECTIVE LINES IN scripts/start_functions.R +*** CHANGES CAN BE DONE USING THE RESPECTIVE LINES IN scripts/start/prepare_and_run.R sets diff --git a/last.dump.rda b/last.dump.rda new file mode 100644 index 0000000000000000000000000000000000000000..337260b68a0ca9068c0b39b234f1820f7b654eb1 GIT binary patch literal 298 zcmV+_0oDE=iwFP!000001C>%yOT#b_j@v4%q6mU-!m+0fv>?97U{BM%I>v;(NodnH zkmgE~zUXgPysWKrc@PX7xx4SncXvrPPrHYB7c<6&YropDJL#10PAA?2H)|!h6_A#Qw7F6Mw&i>)|0RDN?6|z< z)z4gg^0t+E^Jk}%Kcy$LK=51`gC-$S%Zsqh^|J>-YLGch50?&$1>Dcz1LnX@(NvTN wX#sOkLKm)tcVRGIa;5AXel-_|)1>t3;WTId6C}Cm2HoGnH{%mLVo3r30J9s2d;kCd literal 0 HcmV?d00001 diff --git a/main.gms b/main.gms index ffe3d7ad1..598544aa7 100644 --- a/main.gms +++ b/main.gms @@ -83,9 +83,9 @@ * * Regionscode: 62eff8f7 * -* Input data revision: 6.276 +* Input data revision: 6.278 * -* Last modification (input data): Thu Dec 23 10:57:10 2021 +* Last modification (input data): Wed Feb 2 22:10:52 2022 * *###################### R SECTION END (VERSION INFO) ########################### @@ -140,7 +140,7 @@ option profile = 0; ***--------------------- Run name ----------------------------------------- -$setGlobal c_expname default +$setGlobal c_expname SSP2EU-AMT-NDC ***------------------------------------------------------------------------------ *** MODULES @@ -165,7 +165,7 @@ $setGlobal growth exogenous !! def = exogenous ***--------------------- 21_tax ------------------------------------------- $setGlobal tax on !! def = on ***--------------------- 22_subsidizeLearning ----------------------------- -$setGlobal subsidizeLearning off !! def = off +$setGlobal subsidizeLearning globallyOptimal !! def = off ***--------------------- 23_capitalMarket ----------------------------- $setGlobal capitalMarket debt_limit !! def = debt_limit ***--------------------- 24_trade ----------------------------------------- @@ -191,13 +191,13 @@ $setglobal industry subsectors !! def = subsectors ***--------------------- 39_CCU -------------------------------------- $setglobal CCU on !! def = on ***--------------------- 40_techpol ----------------------------------------- -$setglobal techpol none !! def = none +$setglobal techpol NDC !! def = none ***--------------------- 41_emicapregi -------------------------------------- $setglobal emicapregi none !! def = none ***--------------------- 42_banking ----------------------------------------- $setglobal banking off !! def = off ***--------------------- 45_carbonprice ------------------------------------- -$setglobal carbonprice none !! def = none +$setglobal carbonprice NDC !! def = none ***--------------------- 47_regipol ------------------------------------- $setglobal regipol none !! def = none ***--------------------- 50_damages --------------------------------------- @@ -205,7 +205,7 @@ $setGlobal damages off !! def = off ***--------------------- 51_internalizeDamages --------------------------------------- $setGlobal internalizeDamages off !! def = off ***--------------------- 70_water ------------------------------------------- -$setglobal water off !! def = off +$setglobal water heat !! def = off ***--------------------- 80_optimization ---------------------------------- $setGlobal optimization nash !! def = nash ***--------------------- 81_codePerformance ------------------------------- @@ -354,9 +354,9 @@ c_keep_iteration_gdxes = 0; !! def = 0 cm_nash_autoconverge = 1; !! def = 1 $setglobal cm_MAgPIE_coupling off !! def = "off" -cm_emiscen = 1; !! def = 1 -$setglobal cm_rcp_scen none !! def = "none" -cm_co2_tax_2020 = -1; !! def = -1 +cm_emiscen = 9; !! def = 1 +$setglobal cm_rcp_scen rcp45 !! def = "none" +cm_co2_tax_2020 = 1; !! def = -1 cm_co2_tax_growth = 1.05; !! def = 1.05 c_macscen = 1; !! def = 1 @@ -393,12 +393,12 @@ $setglobal cm_demScen gdp_SSP2EU !! def = gdp_SSP2EU cm_GDPcovid = 0; !! def = 0 *AG* and *CB* for cm_startyear greater than 2005, you have to copy the fulldata.gdx (rename it to: input_ref.gdx) from the run you want to build your new run onto. -cm_startyear = 2005; !! def = 2005 for a BAU, 2015 for policy runs +cm_startyear = 2015; !! def = 2005 for a BAU, 2015 for policy runs c_start_budget = 2100; !! def = 2100 cm_prtpScen = 3; !! def = 3 cm_fetaxscen = 3; !! def = 3 -cm_multigasscen = 2; !! def = 2 +cm_multigasscen = 3; !! def = 2 cm_permittradescen = 1; !! def = 1 cm_limit_peur_scen = 1; !! def = 1 $setGlobal cm_oil_scen medOil !! def = medOil @@ -424,8 +424,8 @@ c_techAssumptScen = 1; !! def = 1 c_ccsinjecratescen = 1; !! def = 1 c_ccscapratescen = 1; !! def = 1 c_export_tax_scen = 0; !! def = 0 -cm_iterative_target_adj = 0; !! def = 0 -$setglobal cm_NDC_version 2021_cond !! def = 2021_cond +cm_iterative_target_adj = 3; !! def = 0 +$setglobal cm_NDC_version 2022_cond !! def = 2021_cond cm_gdximport_target = 0; !! def = 0 $setglobal c_SSP_forcing_adjust forcing_SSP2 !! def = forcing_SSP2 $setglobal c_delayPolicy SPA0 !! def = SPA0 @@ -436,12 +436,12 @@ cm_expoLinear_yearStart = 2050; !! def = 2050 c_budgetCO2FFI = 1000; !! def = 1000 c_abtrdy = 2010; !! def = 2010 c_abtcst = 1; !! def = 1 -c_budgetCO2 = 1350; !! def = 1300 +c_budgetCO2 = 0; !! def = 1300 $setGlobal cm_regiExoPrice off !! def = off $setGlobal cm_regiCO2target off !! def = off cm_postTargetIncrease = 2; !! def = 2 $setGlobal cm_quantity_regiCO2target off !! def = off -cm_peakBudgYr = 2050; !! def = 2050 +cm_peakBudgYr = 2100; !! def = 2050 cm_taxCO2inc_after_peakBudgYr = 3; !! def = 3 cm_CO2priceRegConvEndYr = 2050; !! def = 2050 $setGlobal cm_emiMktETS off !! def = off @@ -569,7 +569,7 @@ $SETGLOBAL cm_SlowConvergence off !! def = off $setGlobal cm_nash_mode parallel !! def = parallel $setGLobal cm_debug_preloop off !! def = off $setGlobal c_EARLYRETIRE on !! def = on -$setGlobal cm_OILRETIRE on !! def = on +$setGlobal cm_OILRETIRE off !! def = on $setglobal cm_INCONV_PENALTY on !! def = on $setglobal cm_INCONV_PENALTY_FESwitch on !! def = on $setGlobal cm_so2_out_of_opt on !! def = on @@ -587,13 +587,13 @@ $setGlobal cm_damage_DiceLike_specification HowardNonCatastrophic !! def = Ho $setglobal cm_CES_configuration indu_subsectors-buil_simple-tran_edge_esm-POP_pop_SSP2EU-GDP_gdp_SSP2EU-En_gdp_SSP2EU-Kap_debt_limit-Reg_62eff8f7 !! this will be changed by start_run() -$setglobal c_CES_calibration_new_structure 0 !! def = 0 -$setglobal c_CES_calibration_iterations 10 !! def = 10 +$setglobal c_CES_calibration_new_structure 0 !! def = 0 +$setglobal c_CES_calibration_iterations 10 !! def = 10 $setglobal c_CES_calibration_iteration 1 !! def = 1 -$setglobal c_CES_calibration_write_prices 0 !! def = 0 -$setglobal cm_CES_calibration_default_prices 0.01 !! def = 0.01 -$setglobal c_CES_calibration_industry_FE_target 0 -$setglobal cm_calibration_string off !! def = off +$setglobal c_CES_calibration_write_prices 0 !! def = 0 +$setglobal cm_CES_calibration_default_prices 0.01 !! def = 0.01 +$setglobal c_CES_calibration_industry_FE_target 0 +$setglobal cm_calibration_string off !! def = off $setglobal c_testOneRegi_region EUR !! def = EUR From f093da36526ed8d66fffe81b249c099e5896e190 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Thu, 17 Feb 2022 15:07:08 +0100 Subject: [PATCH 06/33] fix subsetting of sums of feedstocks implementation to only apply equtions to the relevant FE carriers, sectors, markets --- core/equations.gms | 15 +++++++++------ core/sets.gms | 8 ++++++++ modules/37_industry/subsectors/equations.gms | 2 +- 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/core/equations.gms b/core/equations.gms index f883d244b..4f0939a5b 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -544,11 +544,12 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) pm_emifac(t,regi,enty,enty2,te,enty3) * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) - -vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) + - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) + ) + ) *emissions from (non-energy) feedstocks are still missing: + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)*pm_emifacFeedstock(..) ) - ) - ; ***-------------------------------------------------- @@ -615,9 +616,11 @@ q_emiAllMkt(t,regi,emi,emiMkt).. *** Exogenous emissions + pm_emiExog(t,regi,emi)$(sameas(emiMkt,"other")) *ADD here non energy emi fro chem sector: - + sum(sector$sector2emiMkt(sector,emiMkt), sum(se2fe(entySe,entyFe,te), - vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt)*pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) - )) + + sum((entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt), + se2fe(entySe,entyFe,te)), + vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) + * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) + ) ; diff --git a/core/sets.gms b/core/sets.gms index a57be9c26..5f88502d0 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -2077,6 +2077,14 @@ macSector2emiMkt(all_enty,all_emiMkt) "mapping mac sectors to emission markets" co2luc.other co2cement_process.ETS / + +entyFe2sector2emiMkt_NonEn(all_enty,emi_sectors,all_emiMkt) "combinations of FE type, sector and emissions markets existing for FE non-energy use" +/ + fesos.indst.ETS + fehos.indst.ETS + fegas.indst.ETS +/ + ccsCo2(all_enty) "only cco2 (???)" / cco2 diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index b915c7f0c..ffd480908 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -133,7 +133,7 @@ q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. ; *Correction factor for non-energy feedstock emissions q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear - AND entyFe2Sector(entyFe,"indst") ) .. + AND entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. sum(se2fe(entySE,entyFE,te), From b6da625ee5cfbe4525f8aac2868828ca5936fe8e Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Thu, 17 Feb 2022 15:08:16 +0100 Subject: [PATCH 07/33] add some parameters for checking the newly introduced FE w/o non-energy and chemical process emissions, only temporary purpose --- .../37_industry/subsectors/declarations.gms | 3 +++ modules/37_industry/subsectors/postsolve.gms | 21 +++++++++++++++++++ 2 files changed, 24 insertions(+) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index eef0835b6..58f259485 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -29,6 +29,9 @@ Parameters 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_SecCC(ttot,all_regi,secInd37) "FE per subsector whose emissions can be captured, helper parameter for calculation of industry captured CO2" + + p37_FE_noNonEn(ttot,all_regi,all_enty,all_enty2,emiMkt) "testing parameter for FE without non-energy use" + p37_Emi_ChemProcess(ttot,all_regi,all_enty,emiMkt) "testing parameter for process emissions from chemical feedstocks" ; $ifThen.CESMkup not "%cm_CESMkup_ind%" == "standard" diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 0c64c659c..ce1e71991 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -59,5 +59,26 @@ pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt)$( / o37_demFeIndSub_SecCC(ttot,regi,secInd37); + +display vm_demFENonEnergySector.l; + +*** to be deleted before merge of feedstocks implementation, just checking the values +*** check FE w/o non-energy use calculation +p37_FE_noNonEn(t,regi,enty,enty2,emiMkt) = + sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) + - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt))); + + +*** check chemical process emissions calculation +p37_Emi_ChemProcess(t,regi,emi,emiMkt) = + sum((entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt), + se2fe(entySe,entyFe,te)), + vm_demFENonEnergySector.l(t,regi,entySe,entyFe,sector,emiMkt) + * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) + ); + + *** EOF ./modules/37_industry/subsectors/postsolve.gms From 3c8d6efe8223a1501b20dab8d1947b373cf3b633 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Fri, 25 Feb 2022 15:29:24 +0100 Subject: [PATCH 08/33] remove feedstock carbon in industry from carbon that can be captured --- modules/37_industry/subsectors/equations.gms | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index ffd480908..9616248d1 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -43,9 +43,12 @@ q37_macBaseInd(ttot,regi,entyFE,secInd37)$( ttot.val ge cm_startyear ) .. vm_macBaseInd(ttot,regi,entyFE,secInd37) =e= sum((secInd37_2_pf(secInd37,ppfen_industry_dyn37(in)),fe2ppfen(entyFE,in))$(entyFeCC37(entyFe)), - vm_cesIO(ttot,regi,in) - * sum((entySe,te)$(se2fe(entySe,entyFe,te) and entySeFos(entySe)), pm_emifac(ttot,regi,entySe,entyFe,te,"co2")) - ) + (vm_cesIO(ttot,regi,in) + - p37_chemicals_feedstock_share(ttot,regi) + * vm_cesIO(ttot,regi,in)$(in_chemicals_37(in))) + * sum((entySe,te)$(se2fe(entySe,entyFe,te) and entySeFos(entySe)), + pm_emifac(ttot,regi,entySe,entyFe,te,"co2")) + ) ; *' Compute maximum possible CCS level in industry sub-sectors given the current From c20ec685424f833ba9107ed1da41fdd3f5778c28 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Fri, 25 Feb 2022 15:30:17 +0100 Subject: [PATCH 09/33] initialize pm_emifacNonEnergy for all years via ttot --- core/datainput.gms | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index c4894a31f..cce2c5464 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1414,17 +1414,17 @@ pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie" *** define non-energy emission factors. For now only for the chemicals industry -pm_emifacNonEnergy(t,regi,'segafos','fegas','indst','co2') = 0.051; !! GtC/TWa -pm_emifacNonEnergy(t,regi,'seliqfos','fehos','indst','co2') = 0.069; !! GtC/TWa -pm_emifacNonEnergy(t,regi,'sesofos','fesos','indst','co2') = 0.086; !! GtC/TWa +pm_emifacNonEnergy(ttot,regi,'segafos','fegas','indst','co2') = 0.051; !! GtC/TWa +pm_emifacNonEnergy(ttot,regi,'seliqfos','fehos','indst','co2') = 0.069; !! GtC/TWa +pm_emifacNonEnergy(ttot,regi,'sesofos','fesos','indst','co2') = 0.086; !! GtC/TWa -pm_emifacNonEnergy('2005',regi,'segafos','fegas','indst','co2') = 0.068; !! GtC/TWa -pm_emifacNonEnergy('2005',regi,'seliqfos','fehos','indst','co2') = 0.092; !! GtC/TWa -pm_emifacNonEnergy('2005',regi,'sesofos','fesos','indst','co2') = 0.114; !! GtC/TWa +pm_emifacNonEnergy("2005",regi,'segafos','fegas','indst','co2') = 0.068; !! GtC/TWa +pm_emifacNonEnergy("2005",regi,'seliqfos','fehos','indst','co2') = 0.092; !! GtC/TWa +pm_emifacNonEnergy("2005",regi,'sesofos','fesos','indst','co2') = 0.114; !! GtC/TWa -pm_emifacNonEnergy('2010',regi,'segafos','fegas','indst','co2') = 0.071; !! GtC/TWa -pm_emifacNonEnergy('2010',regi,'seliqfos','fehos','indst','co2') = 0.096; !! GtC/TWa -pm_emifacNonEnergy('2010',regi,'sesofos','fesos','indst','co2') = 0.119; !! GtC/TWa +pm_emifacNonEnergy("2010",regi,'segafos','fegas','indst','co2') = 0.071; !! GtC/TWa +pm_emifacNonEnergy("2010",regi,'seliqfos','fehos','indst','co2') = 0.096; !! GtC/TWa +pm_emifacNonEnergy("2010",regi,'sesofos','fesos','indst','co2') = 0.119; !! GtC/TWa *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! From f701461f9bde0f5d3d1b7a1eb757e00545cb8e77 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 3 Mar 2022 10:58:54 +0100 Subject: [PATCH 10/33] minor description update --- modules/37_industry/subsectors/equations.gms | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index ffd480908..e37a6e00c 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -131,7 +131,8 @@ q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. sum(ces_eff_target_dyn37("ue_chemicals",in), vm_cesIO(t,regi,in)) * p37_chemicals_feedstock_share(t,regi) ; -*Correction factor for non-energy feedstock emissions + +*Flow of non-energy feedstocks. It is used for emissions accounting q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear AND entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. @@ -147,8 +148,7 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startye + pm_cesdata(ttot,regi,in,"offset_quantity") ) * p37_chemicals_feedstock_share(ttot,regi) -*apply this only to chem indu, and only for relevant vectors: so li ga --> in_chemicals_feedstocks37(in) -*dummy + ) ; From 6d27211bb3cfea202fc4b6e63a2089f427fd4e58 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Wed, 9 Mar 2022 17:11:44 +0100 Subject: [PATCH 11/33] add constraint that baseline runs should only use fossil feedstocks in industry --- .../37_industry/subsectors/declarations.gms | 23 ++++++++++--------- modules/37_industry/subsectors/equations.gms | 12 ++++++++++ 2 files changed, 24 insertions(+), 11 deletions(-) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 58f259485..2294f96a1 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -48,17 +48,18 @@ Positive Variables ; Equations - q37_energy_limits(ttot,all_regi,all_in) "thermodynamic/technical limit of energy use" - q37_limit_secondary_steel_share(ttot,all_regi) "no more than 90% of steel from seconday production" - q37_macBaseInd(ttot,all_regi,all_enty,secInd37) "gross industry emissions before CCS" - q37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions at current CO2 price" - q37_IndCCS(ttot,all_regi,emiInd37) "limit industry emissions abatement" - q37_cementCCS(ttot,all_regi) "link cement fuel and process abatement" - q37_IndCCSCost "Calculate industry CCS costs" - q37_demFeIndst(ttot,all_regi,all_enty,all_emiMkt) "industry final energy demand (per emission market)" - q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." - q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" - q37_demFeFeedstockChemIndst "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" + q37_energy_limits(ttot,all_regi,all_in) "thermodynamic/technical limit of energy use" + q37_limit_secondary_steel_share(ttot,all_regi) "no more than 90% of steel from seconday production" + q37_macBaseInd(ttot,all_regi,all_enty,secInd37) "gross industry emissions before CCS" + q37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions at current CO2 price" + q37_IndCCS(ttot,all_regi,emiInd37) "limit industry emissions abatement" + q37_cementCCS(ttot,all_regi) "link cement fuel and process abatement" + q37_IndCCSCost "Calculate industry CCS costs" + q37_demFeIndst(ttot,all_regi,all_enty,all_emiMkt) "industry final energy demand (per emission market)" + q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." + q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" + q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" + q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" ; *** EOF ./modules/37_industry/subsectors/declarations.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 9616248d1..9bb254bd3 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -155,5 +155,17 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startye ) ; + +*** in baseline runs, all industrial feedstocks should come from fossil energy carriers, no biofuels or synfuels +q37_FossilFeedstock_Base(t,regi,entyFe,emiMkt)$(entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) + AND cm_emiscen eq 1).. + sum(entySE, + vm_demFENonEnergySector(t,regi,entySE,entyFE,"indst",emiMkt)) + =e= + sum(entySE$(entySeFos(entySE)), + vm_demFENonEnergySector(t,regi,entySE,entyFE,"indst",emiMkt)) +; + + *** EOF ./modules/37_industry/subsectors/equations.gms From cf5e67185f2d7208551f3b455e310defd40fc86a Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Wed, 9 Mar 2022 17:13:18 +0100 Subject: [PATCH 12/33] add small penalty cost on fuel switching between biogenic and synthetic fuels in industry feedstocks --- .../02_welfare/utilitarian/declarations.gms | 6 +++++ modules/02_welfare/utilitarian/equations.gms | 27 +++++++++++++++++-- modules/02_welfare/utilitarian/postsolve.gms | 9 ++++++- 3 files changed, 39 insertions(+), 3 deletions(-) diff --git a/modules/02_welfare/utilitarian/declarations.gms b/modules/02_welfare/utilitarian/declarations.gms index 86bfd92d8..c993aeb40 100644 --- a/modules/02_welfare/utilitarian/declarations.gms +++ b/modules/02_welfare/utilitarian/declarations.gms @@ -21,6 +21,8 @@ $endif.inconv $IFTHEN.INCONV_bioSwitch "%cm_INCONV_PENALTY_FESwitch%" == "on" p02_inconvPen_Switch_Track(ttot,all_regi) "Parameter to track magnitude of inconvenience penalty for bio/synfuel share switching [share of consumption]" $ENDIF.INCONV_bioSwitch + +p02_inconvPen_NonEn_Switch_Track(ttot,all_regi) "Parameter to track magnitude of inconvenience penalty for bio/synfuel non-energy fuel switching [share of consumption]" ; ***------------------------------------------------------------------------------- @@ -44,6 +46,9 @@ $IFTHEN.INCONV_bioSwitch "%cm_INCONV_PENALTY_FESwitch%" == "on" v02_NegInconvPenFeBioSwitch(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "Negative inconvenience penalty in the welfare function for bio/synfuel shares switch between sectors and emissions markets" v02_PosInconvPenFeBioSwitch(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "Positive inconvenience penalty in the welfare function for bio/synfuel shares switch between sectors and emissions markets" $ENDIF.INCONV_bioSwitch + +v02_NegInconvPenNonEnSwitch(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "Negative inconvenience penalty in the welfare function for fuel switching between biomass/synfuel in non-energy use" +v02_PosInconvPenNonEnSwitch(ttot,all_regi,all_enty,all_enty,emi_sectors,all_emiMkt) "Positive inconvenience penalty in the welfare function for fuel switching between biomass/synfuel in non-energy use" ; ***------------------------------------------------------------------------------- @@ -62,6 +67,7 @@ $IFTHEN.INCONV_bioSwitch "%cm_INCONV_PENALTY_FESwitch%" == "on" q02_inconvPenFeBioSwitch(ttot,all_regi,all_enty,all_enty,all_te,emi_sectors,all_emiMkt) "Calculate the inconvenience penalty to avoid switching biomass and synfuel shares in hydrocarbons in buildings, transport and industry and emissions markets if costs are relatively close" $ENDIF.INCONV_bioSwitch +q02_inconvPenNonEnSwitch(ttot,all_regi,all_enty,all_enty,all_te,emi_sectors,all_emiMkt) "Calculate the inconvenience penalty to avoid switching biomass and synfuel shares in FE non-energy use" ; *** EOF ./modules/02_welfare/utilitarian/declarations.gms diff --git a/modules/02_welfare/utilitarian/equations.gms b/modules/02_welfare/utilitarian/equations.gms index f65395b71..72126ba5d 100644 --- a/modules/02_welfare/utilitarian/equations.gms +++ b/modules/02_welfare/utilitarian/equations.gms @@ -33,9 +33,19 @@ q02_welfare(regi).. ) ) $if %cm_INCONV_PENALTY% == "on" - v02_inconvPen(ttot,regi) - v02_inconvPenCoalSolids(ttot,regi) +*** inconvenience cost for fuel switching in FE between fossil, biogenic, synthetic solids, liquids and gases across sectors and emissions markets $if "%cm_INCONV_PENALTY_FESwitch%" == "on" - sum((entySe,entyFe,te,sector,emiMkt)$(se2fe(entySe,entyFe,te) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) AND (entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe)) ), v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt))/1e3 - ) - ) +*** inconvenience cost for fuel switching in FE non-energy use between biogenic, synthetic solids, liquids and gases + - sum((entySe,entyFe,te,sector,emiMkt)$(se2fe(entySe,entyFe,te) + AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) + AND (entySeBio(entySe) + OR entySeSyn(entySe) )), + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + ) + /1e3 + ) + ) ; ***--------------------------------------------------------------------------- @@ -78,5 +88,18 @@ q02_inconvPenFeBioSwitch(ttot,regi,entySe,entyFe,te,sector,emiMkt)$((ttot.val ge ; $ENDIF.INCONV_bioSwitch +*** inconvenience cost for fuel switching between biomass/synfuel in non-energy use +q02_inconvPenNonEnSwitch(ttot,regi,entySe,entyFe,te,sector,emiMkt)$((ttot.val ge cm_startyear) + AND se2fe(entySe,entyFe,te) + AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) + AND (entySeBio(entySe) + OR entySeSyn(entySe) ) ).. + vm_demFENonEnergySector(ttot,regi,entySe,entyFe,sector,emiMkt) + - vm_demFENonEnergySector(ttot-1,regi,entySe,entyFe,sector,emiMkt) + + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + - v02_PosInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + =e= + 0 +; *** EOF ./modules/02_welfare/utilitarian/equations.gms diff --git a/modules/02_welfare/utilitarian/postsolve.gms b/modules/02_welfare/utilitarian/postsolve.gms index c33645091..670095820 100644 --- a/modules/02_welfare/utilitarian/postsolve.gms +++ b/modules/02_welfare/utilitarian/postsolve.gms @@ -17,7 +17,14 @@ p02_inconvPen_Switch_Track(t,regi) = (sum((entySe,entyFe,te,sector,emiMkt)$(se2f / vm_cons.l(t,regi); $ENDIF.INCONV_bioSwitch - +*** track inconvenience penalty for no-energy bio/synfuel switching to check how large it is relative to consumption +p02_inconvPen_NonEn_Switch_Track(t,regi) = (sum((entySe,entyFe,te,sector,emiMkt)$(se2fe(entySe,entyFe,te) + AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) + AND (entySeBio(entySe) + OR entySeSyn(entySe) )), + v02_NegInconvPenNonEnSwitch.l(t,regi,entySe,entyFe,sector,emiMkt) + + v02_NegInconvPenNonEnSwitch.l(t,regi,entySe,entyFe,sector,emiMkt))/1e3) + / vm_cons.l(t,regi); *** EOF ./modules/02_welfare/utilitarian/postsolve.gms From c5fa3601f80738b0c2d528450fbb71f53b6e5c8c Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Wed, 23 Mar 2022 17:00:12 +0100 Subject: [PATCH 13/33] correct emissions accounting of feedstock carbon: substract non-fossil carbon stored in feedstocks from energy emissions as this generates negative emissions --- core/declarations.gms | 2 ++ core/equations.gms | 8 ++++- core/sets.gms | 34 +++++++++++++++++++ .../37_industry/subsectors/declarations.gms | 3 ++ modules/37_industry/subsectors/equations.gms | 10 ++++++ modules/37_industry/subsectors/preloop.gms | 6 ++++ modules/37_industry/subsectors/sets.gms | 8 +++++ 7 files changed, 70 insertions(+), 1 deletion(-) diff --git a/core/declarations.gms b/core/declarations.gms index 3d30a81e1..00bdef146 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -370,6 +370,8 @@ v_shGasLiq_fe(ttot,all_regi,emi_sectors) "share of gases and liquids vm_emiCdrAll(ttot,all_regi) "all CDR emissions" +vm_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in chemical feedstocks [GtC]" + *** ES layer variables vm_demFeForEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Final energy which will be used in the ES layer." v_prodEs(ttot,all_regi,all_enty,all_esty,all_teEs) "Energy services (unit determined by conversion factor pm_fe2es)." diff --git a/core/equations.gms b/core/equations.gms index 4f0939a5b..46bf786ef 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -544,11 +544,11 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) pm_emifac(t,regi,enty,enty2,te,enty3) * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) +*** substract FE used for non-energy, does not lead to energy-related emissions - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) ) ) -*emissions from (non-energy) feedstocks are still missing: + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)*pm_emifacFeedstock(..) ) ; @@ -591,6 +591,12 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. vm_emiIndCCS(t,regi,emiInd37_fuel) )$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) +*** substract carbon in feedstocks from biogenic or synthetic origin, generates negative emissions + - sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum( se2fe(entySe, entyFe, te)$(entySeBio(entySe) OR entySeSyn(entySe)), + vm_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) + ) + )$( sameas(enty,"co2") ) *** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime + ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) *** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years) diff --git a/core/sets.gms b/core/sets.gms index 5f88502d0..f735d1ebf 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -2467,7 +2467,41 @@ se2fe(all_enty,all_enty,all_te) "map secondary energy to end-use energy using seliqsyn.fedie.tdsyndie seh2.feh2t.tdh2t / + + sefe(all_enty,all_enty) "map secondary energy to final energy" +// + +entySe2entyFe(all_enty,all_enty) "map secondary energy to final energy" + +/ + seel.feels + segabio.fegas + segafos.fegas + segasyn.fegas + segabio.fegat + segafos.fegat + segasyn.fegat + seliqbio.fehos + seliqfos.fehos + seliqsyn.fehos + sesobio.fesos + sesofos.fesos + seh2.feh2s + sehe.fehes + seel.feelt + seliqbio.fepet + seliqfos.fepet + seliqsyn.fepet + seliqbio.fedie + seliqfos.fedie + seliqsyn.fedie + seh2.feh2t +/ + + + + fete(all_enty,all_te) "map final energy to technologies" fe2ue(all_enty,all_enty,all_te) "map FE carriers to ES via appliances" // diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 2294f96a1..e4390a9f2 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -30,6 +30,8 @@ Parameters o37_demFeIndSub(ttot,all_regi,all_enty,all_enty,secInd37,all_emiMkt) "FE demand per industry subsector" o37_demFeIndSub_SecCC(ttot,all_regi,secInd37) "FE per subsector whose emissions can be captured, helper parameter for calculation of industry captured CO2" + p37_FeedstockCarbonContent(ttot,all_regi,all_enty) "carbon content of feedstocks [GtC/TWa]" + p37_FE_noNonEn(ttot,all_regi,all_enty,all_enty2,emiMkt) "testing parameter for FE without non-energy use" p37_Emi_ChemProcess(ttot,all_regi,all_enty,emiMkt) "testing parameter for process emissions from chemical feedstocks" ; @@ -60,6 +62,7 @@ Equations q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" + q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" ; *** EOF ./modules/37_industry/subsectors/declarations.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 9bb254bd3..ca37f4177 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -156,6 +156,16 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startye ; +*** calculate carbon contained in chemical feedstocks +q37_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt)$( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) + AND entySe2entyFe(entySe,entyFe) ) .. + vm_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt) + =e= + vm_demFENonEnergySector(ttot,regi,entySe,entyFe,"indst",emiMkt) + * p37_FeedstockCarbonContent(ttot,regi,entyFe); +; + + *** in baseline runs, all industrial feedstocks should come from fossil energy carriers, no biofuels or synfuels q37_FossilFeedstock_Base(t,regi,entyFe,emiMkt)$(entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) AND cm_emiscen eq 1).. diff --git a/modules/37_industry/subsectors/preloop.gms b/modules/37_industry/subsectors/preloop.gms index 93f9214e7..71cd5cf96 100644 --- a/modules/37_industry/subsectors/preloop.gms +++ b/modules/37_industry/subsectors/preloop.gms @@ -9,5 +9,11 @@ *** initialize captured CO2 parameter pm_IndstCO2Captured(t,regi,entySe,entyFe,secInd37,emiMkt) = 0; +*** calculate parameter for feedstock carbon content as difference between combustion emissions factor of FE and industrial process emissions factor of feedstocks +p37_FeedstockCarbonContent(ttot,regi,entyFe) = sum(entySeFos, + sum(se2fe(entySeFos,entyFe,te), + pm_emifac(ttot,regi,entySeFos,entyFe,te,"co2") + - pm_emifacNonEnergy(ttot,regi,entySeFos,entyFe,"indst","co2"))); + *** EOF ./modules/37_industry/subsectors/preloop.gms diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 7d6f5ba69..5057a28f8 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -302,6 +302,14 @@ entyFeCC37(all_enty) "FE carriers in industry which can be used for CO2 capture fegas / +entySe_emiFac_feedstocks(all_enty,all_enty) "SE type of emissions factor that should be used to calculate carbon contained in feedstocks" + +/ + sesofos.fesos + seliqfos.fehos + segafos.fegas +/ + ppfen_CESMkup_dyn37(all_in) "industry production factors of CES function to which CES markup cost can be applied" / From 2baede0ec5bdc9d77a897aec956c8efe6616f38c Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Wed, 23 Mar 2022 17:00:49 +0100 Subject: [PATCH 14/33] correct entySeSyn set to contain only synthetic liquids, gases SE carriers --- core/sets.gms | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index f735d1ebf..9c0e2848e 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -1740,9 +1740,8 @@ entySeBio(all_enty) "biomass secondary energy types" entySeSyn(all_enty) "synfuel secondary energy types" / - seliqbio "secondary energy liquids from biomass" - sesobio "secondary energy solids from biomass" - segabio "secondary energy gas from biomass" + seliqsyn "secondary energy synthetic liquids from H2" + segasyn "secondary energy synthetic gas from H2" / entySeFos(all_enty) "secondary energy types from fossil primary energy" From f5698a20698352be1d2d69d261d2aed836b756fd Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Wed, 23 Mar 2022 17:02:37 +0100 Subject: [PATCH 15/33] correct FE2CES industry balance equation for feedstocks supply, such that feedstocks in v_demFeNonEnergySector need to be supplied by the energy system, that is, need to be part of vm_demFeSector --- modules/37_industry/subsectors/equations.gms | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index ca37f4177..dc0367eac 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -12,12 +12,26 @@ q37_demFeIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear sum(se2fe(entySE,entyFE,te), vm_demFEsector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) +*** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) + - sum(se2fe(entySE,entyFE,te), + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) + ) =e= sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in)), vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") ) + +*** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) + - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), + secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), + + ( vm_cesIO(ttot,regi,in) + + pm_cesdata(ttot,regi,in,"offset_quantity") + ) + * p37_chemicals_feedstock_share(ttot,regi) + ) ; q37_energy_limits(ttot,regi,industry_ue_calibration_target_dyn37(out))$( From f5b9a668db40a021ab7140b07898119a403a54f9 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Wed, 23 Mar 2022 17:03:15 +0100 Subject: [PATCH 16/33] add futher parameters in industry module to check correct implementation of feedstocks, can be deleted once everything checked --- .../37_industry/subsectors/declarations.gms | 5 +++ modules/37_industry/subsectors/postsolve.gms | 44 +++++++++++++++++++ 2 files changed, 49 insertions(+) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index e4390a9f2..906203fa1 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -34,6 +34,11 @@ Parameters p37_FE_noNonEn(ttot,all_regi,all_enty,all_enty2,emiMkt) "testing parameter for FE without non-energy use" p37_Emi_ChemProcess(ttot,all_regi,all_enty,emiMkt) "testing parameter for process emissions from chemical feedstocks" + p37_CarbonFeed_CDR(ttot,all_regi,all_emiMkt) "testing parameter for carbon in feedstocks from biogenic and synthetic sources" + p37_IndFeBal_FeedStock_LH(ttot,all_regi,all_enty,emiMkt) "testing parameter Ind FE Balance left-hand side feedstock term" + p37_IndFeBal_FeedStock_RH(ttot,all_regi,all_enty,emiMkt) "testing parameter Ind FE Balance right-hand side feedstock term" + p37_EmiEnDemand_NonEnCorr(ttot,all_regi) "energy demand co2 emissions with non-energy correction" + p37_EmiEnDemand(ttot,all_regi) "energy demand co2 emissions without non-energy correction" ; $ifThen.CESMkup not "%cm_CESMkup_ind%" == "standard" diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index ce1e71991..7b2388e4e 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -80,5 +80,49 @@ p37_Emi_ChemProcess(t,regi,emi,emiMkt) = ); +*** check biogenic and synthetic carbon in feedstocks that generate negative emissions +p37_CarbonFeed_CDR(t,regi,emiMkt) = sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum( se2fe(entySe, entyFe, te)$(entySeBio(entySe) OR entySeSyn(entySe)), + vm_FeedstocksCarbon.l(t,regi,entySe,entyFe,emiMkt) + )); + + +*** check feedstock correction term of left hand-side of Indst FE2CES equation +p37_IndFeBal_FeedStock_LH(ttot,regi,entyFe,emiMkt) = sum(se2fe(entySE,entyFe,te), + vm_demFENonEnergySector.l(ttot,regi,entySE,entyFE,"indst",emiMkt) + ); +*** check feedstock correction term of left right-side of Indst FE2CES equation +p37_IndFeBal_FeedStock_RH(ttot,regi,entyFe,emiMkt) = sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), + secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), + + ( vm_cesIO.l(ttot,regi,in) + + pm_cesdata(ttot,regi,in,"offset_quantity") + ) + * p37_chemicals_feedstock_share(ttot,regi) + ); + +*** check FE combustion emissions with non-energy use correction +p37_EmiEnDemand_NonEnCorr(t,regi) = sum(emiMkt, + sum(se2fe(enty,enty2,te), + pm_emifac(t,regi,enty,enty2,te,"co2") + * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) +*** substract FE used for non-energy, does not lead to energy-related emissions + - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt)) + ) + ) + ); + +p37_EmiEnDemand(t,regi) = sum(emiMkt, + sum(se2fe(enty,enty2,te), + pm_emifac(t,regi,enty,enty2,te,"co2") + * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) + ) + ) + ); + + *** EOF ./modules/37_industry/subsectors/postsolve.gms From fd19be35b148275ffc600a1405b96cf44ff3f292 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Wed, 23 Mar 2022 17:16:41 +0100 Subject: [PATCH 17/33] clean up the code a bit --- core/equations.gms | 34 +++------------------------------- 1 file changed, 3 insertions(+), 31 deletions(-) diff --git a/core/equations.gms b/core/equations.gms index 4f0939a5b..da9236b47 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -490,34 +490,6 @@ q_emiTe(t,regi,emiTe(enty)).. sum(emiMkt, vm_emiTeMkt(t,regi,enty,emiMkt)) ; -$ontext -***----------------------------------------------------------------------------- -*' Calculate terms to correct the emissions from non-energy feedstocks in the -*' industry. ALTERNATIVE IMPLEMENTATION TO DISTINGUISH BETWEEN FE FORMS -*' NOT IN USE YET. CURRENT FIX IMPLEMENTED IN q_emiTeDetailMkt() -***----------------------------------------------------------------------------- -q_emiNEFeedstockDiscount().. - vm_discountFeedstock !!def! - =e= - sum(t, - - ( !!discount emissions of NE feedstocks that are not combusted but are assumed to be combusted in the previous sum - !!why is vm_cesIO used for definig related bound in industry/subsectors? ---> vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) - vm_demFeSector(t,regi,enty,"feso_chemicals","indst","ETS") - * p37_chemicals_feedstock_share(t,regi) !!gotta fix p37->pm - + vm_demFeSector(t,regi,enty,enty2,"indst","ETS") - * p37_chemicals_feedstock_share(t,regi) - + vm_demFeSector(t,regi,enty,enty2,"indst","ETS") - * p37_chemicals_feedstock_share(t,regi) - ) -; - -Add feedstock emissions with right emi factor. This can be included in q_emiTeDetailMkt -q_emiNEFeedstock().. - vm_emiNEFeedstock !!def - =e= - + vm_emiNEFeedstock(t,regi,...) !!add process emissions from NE feedstocks that are not combusted -; -$offtext ***----------------------------------------------------------------------------- *' Emissions per market @@ -548,8 +520,8 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) ) ) -*emissions from (non-energy) feedstocks are still missing: + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,sector,emiMkt)*pm_emifacFeedstock(..) - ) +*later we can add a term to represent waste incineration and the diff between using synfuels and fossil fuels as feedstocks + ) ; ***-------------------------------------------------- @@ -615,7 +587,7 @@ q_emiAllMkt(t,regi,emi,emiMkt).. + vm_emiCdr(t,regi,emi)$(sameas(emi,"co2") AND sameas(emiMkt,"ETS")) *** Exogenous emissions + pm_emiExog(t,regi,emi)$(sameas(emiMkt,"other")) -*ADD here non energy emi fro chem sector: +*ADD here non energy emi from chem sector (feedstock emissions): + sum((entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt), se2fe(entySe,entyFe,te)), vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) From 1bed6217116fea19a234c846ec42642f16e68303 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Wed, 15 Jun 2022 11:22:23 +0200 Subject: [PATCH 18/33] fix remaining conflict --- core/sets.gms | 4 ---- 1 file changed, 4 deletions(-) diff --git a/core/sets.gms b/core/sets.gms index 21047ff3e..2f7d4747b 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -637,11 +637,7 @@ all_in "all inputs and outputs of the CES function" ue_chemicals "useful energy of chemicals production" en_chemicals "energy use of chemicals production" kap_chemicals "energy efficiency capital of chemicals production" -<<<<<<< HEAD en_chemicals_fhth "feedstock and high temperature heat energy use of chemicals production" -======= - en_chemicals_fhth "feedstock and high temperature heat enery use of chemicals production" ->>>>>>> 0269115c0454e7d08d70bd35c7904bba0228be5e feso_chemicals "solids energy use of chemicals production" feli_chemicals "liquids energy use of chemicals production" fega_chemicals "gases energy use of chemicals production" From aeb68e9b9d57c1f96c13fc946869cc78f6e2bcdf Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Tue, 2 Aug 2022 11:45:25 +0200 Subject: [PATCH 19/33] add section break for feedstock balances --- modules/37_industry/subsectors/equations.gms | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index f1c492497..08d953fea 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -156,6 +156,10 @@ q37_costCESmarkup(t,regi,in)$(ppfen_industry_dyn37(in)).. * (vm_cesIO(t,regi,in) + pm_cesdata(t,regi,in,"offset_quantity")) ; +***-------------------------------------------------------------------------- +*' Feedstock balances +***-------------------------------------------------------------------------- + * lower bound on feso/feli/fega in chemicals FE input for feedstocks q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. sum(in_chemicals_37(in), vm_cesIO(t,regi,in)) @@ -175,7 +179,7 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startye =e= sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - + ( vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") ) From 2d231641f4a4c31b2646189086e28b59c552f77e Mon Sep 17 00:00:00 2001 From: Michaja Pehl Date: Wed, 3 Aug 2022 10:06:26 +0200 Subject: [PATCH 20/33] clean up industry code, remove entySe2entyFe set, reset main.gms changes, remove last.dump.rda file --- core/equations.gms | 76 ++++++++------- core/sets.gms | 40 ++------ last.dump.rda | Bin 298 -> 0 bytes main.gms | 12 +-- .../37_industry/subsectors/declarations.gms | 46 ++++----- modules/37_industry/subsectors/equations.gms | 89 ++++++++---------- modules/37_industry/subsectors/postsolve.gms | 58 ++++++------ modules/37_industry/subsectors/preloop.gms | 12 +-- modules/37_industry/subsectors/presolve.gms | 2 +- modules/37_industry/subsectors/sets.gms | 4 +- 10 files changed, 155 insertions(+), 184 deletions(-) delete mode 100644 last.dump.rda diff --git a/core/equations.gms b/core/equations.gms index 7e9f7f296..4ebe9dd7c 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -512,31 +512,35 @@ q_emiTe(t,regi,emiTe(enty)).. *' transformations within the chain of CCS steps (Leakage). ***----------------------------------------------------------------------------- -q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) .. +q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$( + emi2te(enty,enty2,te,enty3) + OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) .. v_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt) =e= sum(emi2te(enty,enty2,te,enty3), - ( - sum(pe2se(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,enty3) - * vm_demPE(t,regi,enty,enty2,te) - ) - + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), - pm_emifac(t,regi,enty,enty2,te,enty3) - * vm_co2CCS(t,regi,enty,enty2,te,rlf) - ) - )$(sameas(emiMkt,"ETS")) - + sum(se2fe(enty,enty2,te), + ( sum(pe2se(enty,enty2,te), pm_emifac(t,regi,enty,enty2,te,enty3) - * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), - vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) -*** substract FE used for non-energy, does not lead to energy-related emissions - - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), - vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) - ) - ) -*later we can add a term to represent waste incineration and the diff between using synfuels and fossil fuels as feedstocks - ) + * vm_demPE(t,regi,enty,enty2,te) + ) + + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), + pm_emifac(t,regi,enty,enty2,te,enty3) + * vm_co2CCS(t,regi,enty,enty2,te,rlf) + ) + )$( sameas(emiMkt,"ETS") ) + + sum(se2fe(enty,enty2,te), + pm_emifac(t,regi,enty,enty2,te,enty3) + * sum((entyFe2Sector(enty2,sector),sector2emiMkt(sector,emiMkt)), + vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) + !! substract FE used for non-energy, does not lead to energy-related + !! emissions + - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt) + ) + ) + ) + !! TODO: later we can add a term to represent waste incineration and the + !! diff between using synfuels and fossil fuels as feedstocks + ) ; ***-------------------------------------------------- @@ -597,22 +601,24 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. ***-------------------------------------------------- q_emiAllMkt(t,regi,emi,emiMkt).. vm_emiAllMkt(t,regi,emi,emiMkt) - =e= - vm_emiTeMkt(t,regi,emi,emiMkt) -*** Non-energy sector emissions. Note: These are emissions from all MAC curves. -*** So, this includes fugitive emissions, which are sometimes also subsumed under the term energy emissions. - + sum(emiMacSector2emiMac(emiMacSector,emiMac(emi))$macSector2emiMkt(emiMacSector,emiMkt), - vm_emiMacSector(t,regi,emiMacSector) - ) -*** CDR from CDR module - + vm_emiCdr(t,regi,emi)$(sameas(emi,"co2") AND sameas(emiMkt,"ETS")) -*** Exogenous emissions - + pm_emiExog(t,regi,emi)$(sameas(emiMkt,"other")) -*ADD here non energy emi from chem sector (feedstock emissions): + =e= + vm_emiTeMkt(t,regi,emi,emiMkt) + !! Non-energy sector emissions. Note: These are emissions from all MAC + !! curves. So, this includes fugitive emissions, which are sometimes also + !! subsumed under the term energy emissions. + + sum((emiMacSector2emiMac(emiMacSector,emiMac(emi)), + macSector2emiMkt(emiMacSector,emiMkt)), + vm_emiMacSector(t,regi,emiMacSector) + ) + !! CDR from CDR module + + vm_emiCdr(t,regi,emi)$( sameas(emi,"co2") AND sameas(emiMkt,"ETS") ) + !! Exogenous emissions + + pm_emiExog(t,regi,emi)$( sameas(emiMkt,"other") ) + !! non energy emi from chem sector (feedstock emissions): + sum((entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt), - se2fe(entySe,entyFe,te)), + se2fe(entySe,entyFe,te)), vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) - * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) + * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) ) ; diff --git a/core/sets.gms b/core/sets.gms index 921eff5f2..84fae2ff6 100755 --- a/core/sets.gms +++ b/core/sets.gms @@ -2111,11 +2111,11 @@ macSector2emiMkt(all_enty,all_emiMkt) "mapping mac sectors to emission markets" co2cement_process.ETS / -entyFe2sector2emiMkt_NonEn(all_enty,emi_sectors,all_emiMkt) "combinations of FE type, sector and emissions markets existing for FE non-energy use" +entyFE2sector2emiMkt_NonEn(all_enty,emi_sectors,all_emiMkt) "combinations of FE type, sector and emissions markets existing for FE non-energy use" / - fesos.indst.ETS - fehos.indst.ETS - fegas.indst.ETS + fesos . indst . ETS + fehos . indst . ETS + fegas . indst . ETS / ccsCo2(all_enty) "only cco2 (???)" @@ -2514,37 +2514,9 @@ se2fe(all_enty,all_enty,all_te) "map secondary energy to end-use energy using sefe(all_enty,all_enty) "map secondary energy to final energy" // -entySe2entyFe(all_enty,all_enty) "map secondary energy to final energy" - -/ - seel.feels - segabio.fegas - segafos.fegas - segasyn.fegas - segabio.fegat - segafos.fegat - segasyn.fegat - seliqbio.fehos - seliqfos.fehos - seliqsyn.fehos - sesobio.fesos - sesofos.fesos - seh2.feh2s - sehe.fehes - seel.feelt - seliqbio.fepet - seliqfos.fepet - seliqsyn.fepet - seliqbio.fedie - seliqfos.fedie - seliqsyn.fedie - seh2.feh2t -/ - - - - fete(all_enty,all_te) "map final energy to technologies" +// + fe2ue(all_enty,all_enty,all_te) "map FE carriers to ES via appliances" // diff --git a/last.dump.rda b/last.dump.rda deleted file mode 100644 index 337260b68a0ca9068c0b39b234f1820f7b654eb1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 298 zcmV+_0oDE=iwFP!000001C>%yOT#b_j@v4%q6mU-!m+0fv>?97U{BM%I>v;(NodnH zkmgE~zUXgPysWKrc@PX7xx4SncXvrPPrHYB7c<6&YropDJL#10PAA?2H)|!h6_A#Qw7F6Mw&i>)|0RDN?6|z< z)z4gg^0t+E^Jk}%Kcy$LK=51`gC-$S%Zsqh^|J>-YLGch50?&$1>Dcz1LnX@(NvTN wX#sOkLKm)tcVRGIa;5AXel-_|)1>t3;WTId6C}Cm2HoGnH{%mLVo3r30J9s2d;kCd diff --git a/main.gms b/main.gms index 831832b2c..6a35c7559 100644 --- a/main.gms +++ b/main.gms @@ -194,7 +194,7 @@ $setglobal industry subsectors !! def = subsectors ***--------------------- 39_CCU ------------------------------------------- $setglobal CCU on !! def = on ***--------------------- 40_techpol ----------------------------------------- -$setglobal techpol NDC !! def = none +$setglobal techpol none !! def = none ***--------------------- 41_emicapregi -------------------------------------- $setglobal emicapregi none !! def = none ***--------------------- 42_banking ----------------------------------------- @@ -210,7 +210,7 @@ $setGlobal damages off !! def = off ***--------------------- 51_internalizeDamages ---------------------------- $setGlobal internalizeDamages off !! def = off ***--------------------- 70_water ------------------------------------------- -$setglobal water heat !! def = off +$setglobal water off !! def = off ***--------------------- 80_optimization ---------------------------------- $setGlobal optimization nash !! def = nash ***--------------------- 81_codePerformance ------------------------------- @@ -410,12 +410,12 @@ $setglobal cm_demScen gdp_SSP2EU !! def = gdp_SSP2EU cm_GDPcovid = 0; !! def = 0 *AG* and *CB* for cm_startyear greater than 2005, you have to copy the fulldata.gdx (rename it to: input_ref.gdx) from the run you want to build your new run onto. -cm_startyear = 2015; !! def = 2005 for a BAU, 2015 for policy runs +cm_startyear = 2005; !! def = 2005 for a BAU, 2015 for policy runs c_start_budget = 2100; !! def = 2100 cm_prtpScen = 3; !! def = 3 cm_fetaxscen = 3; !! def = 3 -cm_multigasscen = 3; !! def = 2 +cm_multigasscen = 2; !! def = 2 cm_permittradescen = 1; !! def = 1 cm_limit_peur_scen = 1; !! def = 1 $setGlobal cm_oil_scen medOil !! def = medOil @@ -461,7 +461,7 @@ $setGlobal cm_regiExoPrice off !! def = off $setGlobal cm_regiCO2target off !! def = off cm_postTargetIncrease = 2; !! def = 2 $setGlobal cm_quantity_regiCO2target off !! def = off -cm_peakBudgYr = 2100; !! def = 2050 +cm_peakBudgYr = 2050; !! def = 2050 cm_taxCO2inc_after_peakBudgYr = 3; !! def = 3 cm_CO2priceRegConvEndYr = 2050; !! def = 2050 $setGlobal cm_emiMktETS off !! def = off @@ -601,7 +601,7 @@ $setGlobal cm_nash_mode parallel !! def = parallel $SetGlobal cm_quick_mode off !! def = off $setGLobal cm_debug_preloop off !! def = off $setGlobal c_EARLYRETIRE on !! def = on -$setGlobal cm_OILRETIRE off !! def = on +$setGlobal cm_OILRETIRE on !! def = on $setglobal cm_INCONV_PENALTY on !! def = on $setglobal cm_INCONV_PENALTY_FESwitch on !! def = on $setGlobal cm_so2_out_of_opt on !! def = on diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 386b1e445..3d2376e40 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -20,19 +20,19 @@ Parameters p37_CESMkup(ttot,all_regi,all_in) "CES markup cost parameter [trUSD/CES input]" p37_cesIO_up_steel_secondary(tall,all_regi,all_GDPscen) "upper limit to secondary steel production based on scrap availability" p37_steel_secondary_max_share(tall,all_regi) "maximum share of secondary steel production" - 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]" - p37_FE_noNonEn(ttot,all_regi,all_enty,all_enty2,emiMkt) "testing parameter for FE without non-energy use" - p37_Emi_ChemProcess(ttot,all_regi,all_enty,emiMkt) "testing parameter for process emissions from chemical feedstocks" - p37_CarbonFeed_CDR(ttot,all_regi,all_emiMkt) "testing parameter for carbon in feedstocks from biogenic and synthetic sources" - p37_IndFeBal_FeedStock_LH(ttot,all_regi,all_enty,emiMkt) "testing parameter Ind FE Balance left-hand side feedstock term" - p37_IndFeBal_FeedStock_RH(ttot,all_regi,all_enty,emiMkt) "testing parameter Ind FE Balance right-hand side feedstock term" - p37_EmiEnDemand_NonEnCorr(ttot,all_regi) "energy demand co2 emissions with non-energy correction" - p37_EmiEnDemand(ttot,all_regi) "energy demand co2 emissions without non-energy correction" p37_BAU_industry_ETS_solids(tall,all_regi) "industry solids demand in baseline scenario" p37_cesIO_baseline(tall,all_regi,all_in) "vm_cesIO from the baseline scenario" + 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]" + p37_FE_noNonEn(ttot,all_regi,all_enty,all_enty2,emiMkt) "testing parameter for FE without non-energy use" + p37_Emi_ChemProcess(ttot,all_regi,all_enty,emiMkt) "testing parameter for process emissions from chemical feedstocks" + p37_CarbonFeed_CDR(ttot,all_regi,all_emiMkt) "testing parameter for carbon in feedstocks from biogenic and synthetic sources" + p37_IndFeBal_FeedStock_LH(ttot,all_regi,all_enty,emiMkt) "testing parameter Ind FE Balance left-hand side feedstock term" + p37_IndFeBal_FeedStock_RH(ttot,all_regi,all_enty,emiMkt) "testing parameter Ind FE Balance right-hand side feedstock term" + p37_EmiEnDemand_NonEnCorr(ttot,all_regi) "energy demand co2 emissions with non-energy correction" + p37_EmiEnDemand(ttot,all_regi) "energy demand co2 emissions without non-energy correction" + *** output parameters only for reporting o37_emiInd(ttot,all_regi,all_enty,secInd37,all_enty) "industry CCS emissions [GtC/a]" o37_cementProcessEmissions(ttot,all_regi,all_enty) "cement process emissions [GtC/a]" @@ -61,19 +61,19 @@ Positive Variables ; Equations - q37_energy_limits(ttot,all_regi,all_in) "thermodynamic/technical limit of energy use" - q37_limit_secondary_steel_share(ttot,all_regi) "no more than 90% of steel from seconday production" - q37_macBaseInd(ttot,all_regi,all_enty,secInd37) "gross industry emissions before CCS" - q37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions at current CO2 price" - q37_IndCCS(ttot,all_regi,emiInd37) "limit industry emissions abatement" - q37_cementCCS(ttot,all_regi) "link cement fuel and process abatement" - q37_IndCCSCost "Calculate industry CCS costs" - q37_demFeIndst(ttot,all_regi,all_enty,all_emiMkt) "industry final energy demand (per emission market)" - q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." - q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" - q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" - q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" - q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" + q37_energy_limits(ttot,all_regi,all_in) "thermodynamic/technical limit of energy use" + q37_limit_secondary_steel_share(ttot,all_regi) "no more than 90% of steel from seconday production" + q37_macBaseInd(ttot,all_regi,all_enty,secInd37) "gross industry emissions before CCS" + q37_emiIndCCSmax(ttot,all_regi,emiInd37) "maximum abatable industry emissions at current CO2 price" + q37_IndCCS(ttot,all_regi,emiInd37) "limit industry emissions abatement" + q37_cementCCS(ttot,all_regi) "link cement fuel and process abatement" + q37_IndCCSCost "Calculate industry CCS costs" + q37_demFeIndst(ttot,all_regi,all_enty,all_emiMkt) "industry final energy demand (per emission market)" + q37_costCESmarkup(ttot,all_regi,all_in) "calculation of additional CES markup cost to represent demand-side technology cost of end-use transformation, for example, cost of heat pumps etc." + q37_chemicals_feedstocks_limit(ttot,all_regi) "lower bound on feso/feli/fega in chemicals FE input for feedstocks" + q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" + q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" + q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_te,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" ; *** EOF ./modules/37_industry/subsectors/declarations.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 08d953fea..9b22778e9 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -7,31 +7,23 @@ *** SOF ./modules/37_industry/subsectors/equations.gms *' Industry final energy balance -q37_demFeIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear - AND entyFe2Sector(entyFe,"indst") ) .. +q37_demFeIndst(ttot,regi,entyFE,emiMkt)$( ttot.val ge cm_startyear + AND entyFE2Sector(entyFE,"indst") ) .. sum(se2fe(entySE,entyFE,te), vm_demFEsector(ttot,regi,entySE,entyFE,"indst",emiMkt) + !! subtract chemical feedstocks + - vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) -*** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) - - sum(se2fe(entySE,entyFE,te), - vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) - ) =e= sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in)), vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") + !! subtract chemical feedstocks + - ( (vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity")) + * p37_chemicals_feedstock_share(ttot,regi) + ) ) - -*** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) - - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), - secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - - ( vm_cesIO(ttot,regi,in) - + pm_cesdata(ttot,regi,in,"offset_quantity") - ) - * p37_chemicals_feedstock_share(ttot,regi) - ) ; *' Thermodynamic limits on subsector energy demand @@ -71,13 +63,17 @@ $endif.fixed_production q37_macBaseInd(ttot,regi,entyFE,secInd37)$( ttot.val ge cm_startyear ) .. vm_macBaseInd(ttot,regi,entyFE,secInd37) =e= - sum((secInd37_2_pf(secInd37,ppfen_industry_dyn37(in)),fe2ppfen(entyFE,in))$(entyFeCC37(entyFe)), - (vm_cesIO(ttot,regi,in) - - p37_chemicals_feedstock_share(ttot,regi) - * vm_cesIO(ttot,regi,in)$(in_chemicals_37(in))) - * sum((entySe,te)$(se2fe(entySe,entyFe,te) and entySeFos(entySe)), - pm_emifac(ttot,regi,entySe,entyFe,te,"co2")) - ) + sum((secInd37_2_pf(secInd37,ppfen_industry_dyn37(in)), + fe2ppfen(entyFE,in))$(entyFECC37(entyFE)), + ( vm_cesIO(ttot,regi,in) + - ( p37_chemicals_feedstock_share(ttot,regi) + * vm_cesIO(ttot,regi,in) + )$( in_chemicals_37(in) ) + ) + * sum(se2fe(entySEfos,entyFE,te), + pm_emifac(ttot,regi,entySEfos,entyFE,te,"co2") + ) + ) ; *' Compute maximum possible CCS level in industry sub-sectors given the current @@ -160,7 +156,7 @@ q37_costCESmarkup(t,regi,in)$(ppfen_industry_dyn37(in)).. *' Feedstock balances ***-------------------------------------------------------------------------- -* lower bound on feso/feli/fega in chemicals FE input for feedstocks +*** lower bound on feso/feli/fega in chemicals FE input for feedstocks q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. sum(in_chemicals_37(in), vm_cesIO(t,regi,in)) =g= @@ -168,46 +164,43 @@ q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. * p37_chemicals_feedstock_share(t,regi) ; -*Flow of non-energy feedstocks. It is used for emissions accounting -q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear - AND entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - +*** Flow of non-energy feedstocks. It is used for emissions accounting +q37_demFeFeedstockChemIndst(ttot,regi,entyFE,emiMkt)$( + ttot.val ge cm_startyear + AND entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. sum(se2fe(entySE,entyFE,te), - vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) =e= sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), - secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - + secInd37_emiMkt(secInd37,emiMkt), + secInd37_2_pf(secInd37,in_chemicals_37(in))), ( vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") ) - * p37_chemicals_feedstock_share(ttot,regi) - + * p37_chemicals_feedstock_share(ttot,regi) ) ; - *** calculate carbon contained in chemical feedstocks -q37_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt)$( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) - AND entySe2entyFe(entySe,entyFe) ) .. - vm_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt) +q37_FeedstocksCarbon(ttot,regi,se2fe(entySE,entyFE,te),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + vm_FeedstocksCarbon(ttot,regi,entySE,entyFE,emiMkt) =e= - vm_demFENonEnergySector(ttot,regi,entySe,entyFe,"indst",emiMkt) - * p37_FeedstockCarbonContent(ttot,regi,entyFe); + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) + * p37_FeedstockCarbonContent(ttot,regi,entyFE) ; - -*** in baseline runs, all industrial feedstocks should come from fossil energy carriers, no biofuels or synfuels -q37_FossilFeedstock_Base(t,regi,entyFe,emiMkt)$(entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) - AND cm_emiscen eq 1).. - sum(entySE, - vm_demFENonEnergySector(t,regi,entySE,entyFE,"indst",emiMkt)) +*** in baseline runs, all industrial feedstocks should come from fossil energy +*** carriers, no biofuels or synfuels +q37_FossilFeedstock_Base(t,regi,entyFE,emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) + AND cm_emiscen eq 1 ) .. + sum(entySE, vm_demFENonEnergySector(t,regi,entySE,entyFE,"indst",emiMkt)) =e= - sum(entySE$(entySeFos(entySE)), - vm_demFENonEnergySector(t,regi,entySE,entyFE,"indst",emiMkt)) + sum(entySEFos, + vm_demFENonEnergySector(t,regi,entySEfos,entyFE,"indst",emiMkt) + ) ; - *** EOF ./modules/37_industry/subsectors/equations.gms diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index 77b25f356..5c00dbf3e 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -16,50 +16,50 @@ pm_FEPrice(ttot,regi,entyFE,"indst",emiMkt)$( abs(qm_budget.m(ttot,regi)) gt sm_ *** reporting easier *** total FE per energy carrier and emissions market in industry (sum over *** subsectors) -o37_demFeIndTotEn(ttot,regi,entyFe,emiMkt) - = sum((fe2ppfEn37(entyFe,in),secInd37_2_pf(secInd37,in), +o37_demFeIndTotEn(ttot,regi,entyFE,emiMkt) + = sum((fe2ppfEn37(entyFE,in),secInd37_2_pf(secInd37,in), secInd37_emiMkt(secInd37,emiMkt)), (vm_cesIO.l(ttot,regi,in) +pm_cesdata(ttot,regi,in,"offset_quantity")) ); *** share of subsector in FE industry energy carriers and emissions markets -o37_shIndFE(ttot,regi,entyFe,secInd37,emiMkt)$( - o37_demFeIndTotEn(ttot,regi,entyFe,emiMkt) ) - = sum(( fe2ppfEn37(entyFe,in), +o37_shIndFE(ttot,regi,entyFE,secInd37,emiMkt)$( + o37_demFeIndTotEn(ttot,regi,entyFE,emiMkt) ) + = sum(( fe2ppfEn37(entyFE,in), secInd37_2_pf(secInd37,in), secInd37_emiMkt(secInd37,emiMkt)), (vm_cesIO.l(ttot,regi,in) +pm_cesdata(ttot,regi,in,"offset_quantity")) ) - / o37_demFeIndTotEn(ttot,regi,entyFe,emiMkt); + / o37_demFeIndTotEn(ttot,regi,entyFE,emiMkt); *** FE per subsector and energy carriers -o37_demFeIndSub(ttot,regi,entySe,entyFe,secInd37,emiMkt) +o37_demFeIndSub(ttot,regi,entySE,entyFE,secInd37,emiMkt) = sum(secInd37_emiMkt(secInd37,emiMkt), - o37_shIndFE(ttot,regi,entyFe,secInd37,emiMkt) - * vm_demFeSector.l(ttot,regi,entySe,entyFe,"indst",emiMkt) + o37_shIndFE(ttot,regi,entyFE,secInd37,emiMkt) + * vm_demFeSector.l(ttot,regi,entySE,entyFE,"indst",emiMkt) ); *** FE per subsector whose emissions can be captured (helper parameter for *** calculation of industry captured CO2 below) o37_demFeIndSub_SecCC(ttot,regi,secInd37) - = sum((se2fe(entySe,entyFe,te),macBaseInd37(entyFe,secInd37), + = sum((se2fe(entySE,entyFE,te),macBaseInd37(entyFE,secInd37), sector2emiMkt("indst",emiMkt)), - o37_demFeIndSub(ttot,regi,entySe,entyFe,secInd37,emiMkt) + o37_demFeIndSub(ttot,regi,entySE,entyFE,secInd37,emiMkt) ); *** industry captured CO2 -pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt)$( - entyFeCC37(entyFe) +pm_IndstCO2Captured(ttot,regi,entySE,entyFE,secInd37,emiMkt)$( + entyFECC37(entyFE) AND o37_demFeIndSub_SecCC(ttot,regi,secInd37) - AND macBaseInd37(entyFe,secInd37)) + AND macBaseInd37(entyFE,secInd37)) = sum( secInd37_2_emiInd37(secInd37,emiInd37)$(emiInd37_fuel(emiInd37)), vm_emiIndCCS.l(ttot,regi,emiInd37) ) - * o37_demFeIndSub(ttot,regi,entySe,entyFe,secInd37,emiMkt) + * o37_demFeIndSub(ttot,regi,entySE,entyFE,secInd37,emiMkt) / o37_demFeIndSub_SecCC(ttot,regi,secInd37); @@ -69,34 +69,34 @@ display vm_demFENonEnergySector.l; *** to be deleted before merge of feedstocks implementation, just checking the values *** check FE w/o non-energy use calculation p37_FE_noNonEn(t,regi,enty,enty2,emiMkt) = - sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + sum(sector$(entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) - - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt))); *** check chemical process emissions calculation p37_Emi_ChemProcess(t,regi,emi,emiMkt) = - sum((entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt), - se2fe(entySe,entyFe,te)), - vm_demFENonEnergySector.l(t,regi,entySe,entyFe,sector,emiMkt) - * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) + sum((entyFE2sector2emiMkt_NonEn(entyFE,sector,emiMkt), + se2fe(entySE,entyFE,te)), + vm_demFENonEnergySector.l(t,regi,entySE,entyFE,sector,emiMkt) + * pm_emifacNonEnergy(t,regi,entySE,entyFE,sector,emi) ); *** check biogenic and synthetic carbon in feedstocks that generate negative emissions -p37_CarbonFeed_CDR(t,regi,emiMkt) = sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - sum( se2fe(entySe, entyFe, te)$(entySeBio(entySe) OR entySeSyn(entySe)), - vm_FeedstocksCarbon.l(t,regi,entySe,entyFe,emiMkt) +p37_CarbonFeed_CDR(t,regi,emiMkt) = sum( entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt), + sum( se2fe(entySE, entyFE, te)$(entySEBio(entySE) OR entySESyn(entySE)), + vm_FeedstocksCarbon.l(t,regi,entySE,entyFE,emiMkt) )); *** check feedstock correction term of left hand-side of Indst FE2CES equation -p37_IndFeBal_FeedStock_LH(ttot,regi,entyFe,emiMkt) = sum(se2fe(entySE,entyFe,te), +p37_IndFeBal_FeedStock_LH(ttot,regi,entyFE,emiMkt) = sum(se2fe(entySE,entyFE,te), vm_demFENonEnergySector.l(ttot,regi,entySE,entyFE,"indst",emiMkt) ); *** check feedstock correction term of left right-side of Indst FE2CES equation -p37_IndFeBal_FeedStock_RH(ttot,regi,entyFe,emiMkt) = sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), +p37_IndFeBal_FeedStock_RH(ttot,regi,entyFE,emiMkt) = sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), ( vm_cesIO.l(ttot,regi,in) @@ -109,10 +109,10 @@ p37_IndFeBal_FeedStock_RH(ttot,regi,entyFe,emiMkt) = sum((fe2ppfEN(entyFE,ppfen_ p37_EmiEnDemand_NonEnCorr(t,regi) = sum(emiMkt, sum(se2fe(enty,enty2,te), pm_emifac(t,regi,enty,enty2,te,"co2") - * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + * sum(sector$(entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) *** substract FE used for non-energy, does not lead to energy-related emissions - - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt)) ) ) @@ -121,7 +121,7 @@ p37_EmiEnDemand_NonEnCorr(t,regi) = sum(emiMkt, p37_EmiEnDemand(t,regi) = sum(emiMkt, sum(se2fe(enty,enty2,te), pm_emifac(t,regi,enty,enty2,te,"co2") - * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), + * sum(sector$(entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) ) ) diff --git a/modules/37_industry/subsectors/preloop.gms b/modules/37_industry/subsectors/preloop.gms index b76c51691..74153bf18 100644 --- a/modules/37_industry/subsectors/preloop.gms +++ b/modules/37_industry/subsectors/preloop.gms @@ -7,13 +7,13 @@ *** SOF ./modules/37_industry/subsectors/preloop.gms *** initialize captured CO2 parameter -pm_IndstCO2Captured(t,regi,entySe,entyFe,secInd37,emiMkt) = 0; +pm_IndstCO2Captured(t,regi,entySE,entyFE,secInd37,emiMkt) = 0; *** calculate parameter for feedstock carbon content as difference between combustion emissions factor of FE and industrial process emissions factor of feedstocks -p37_FeedstockCarbonContent(ttot,regi,entyFe) = sum(entySeFos, - sum(se2fe(entySeFos,entyFe,te), - pm_emifac(ttot,regi,entySeFos,entyFe,te,"co2") - - pm_emifacNonEnergy(ttot,regi,entySeFos,entyFe,"indst","co2"))); +p37_FeedstockCarbonContent(ttot,regi,entyFE) + = sum(se2fe(entySEFos,entyFE,te), + pm_emifac(ttot,regi,entySEFos,entyFE,te,"co2") + - pm_emifacNonEnergy(ttot,regi,entySEFos,entyFE,"indst","co2") + ); *** EOF ./modules/37_industry/subsectors/preloop.gms - diff --git a/modules/37_industry/subsectors/presolve.gms b/modules/37_industry/subsectors/presolve.gms index 32fbfe048..f6a4d6f5e 100644 --- a/modules/37_industry/subsectors/presolve.gms +++ b/modules/37_industry/subsectors/presolve.gms @@ -19,7 +19,7 @@ vm_macBaseInd.fx(ttot,regi,"co2cement_process","cement")$( ttot.val ge 2005 ) / sm_C_2_CO2; -***p37_emiFac(ttot,regi,entyFe) = sum((entySe,te)$(se2fe(entySe,entyFe,te) and entySeFos(entySe)), pm_emifac(ttot,regi,entySe,entyFe,te,"co2")); +***p37_emiFac(ttot,regi,entyFE) = sum((entySE,te)$(se2fe(entySE,entyFE,te) and entySEFos(entySE)), pm_emifac(ttot,regi,entySE,entyFE,te,"co2")); *** EOF ./modules/37_industry/subsectors/presolve.gms diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index c8542d986..c0758fb00 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -296,14 +296,14 @@ energy_limits37(all_in,all_in) "thermodynamic limit of energy" ue_steel_secondary . feel_steel_secondary / -entyFeCC37(all_enty) "FE carriers in industry which can be used for CO2 capture" +entyFECC37(all_enty) "FE carriers in industry which can be used for CO2 capture" / fesos fehos fegas / -entySe_emiFac_feedstocks(all_enty,all_enty) "SE type of emissions factor that should be used to calculate carbon contained in feedstocks" +entySE_emiFac_feedstocks(all_enty,all_enty) "SE type of emissions factor that should be used to calculate carbon contained in feedstocks" / sesofos.fesos From 76598cdb59ab30215be703a4f4fe97c5fdb870bb Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Tue, 30 Aug 2022 11:44:25 +0200 Subject: [PATCH 21/33] delete canceling terms in main balance of industry/subsectors --- .Rprofile | 2 +- .../37_industry/subsectors/declarations.gms | 1 + modules/37_industry/subsectors/equations.gms | 31 +++++++++++++------ scripts/cs2/run_compareScenarios2.R | 4 ++- scripts/output/single/reporting.R | 6 +++- 5 files changed, 31 insertions(+), 13 deletions(-) diff --git a/.Rprofile b/.Rprofile index 821aa2f39..c99c428f4 100644 --- a/.Rprofile +++ b/.Rprofile @@ -39,7 +39,7 @@ activateSnapshot <- function(snapshot) { # Snapshots must be compatible to the R version used. If you are using R 4.1 # make sure the selected snapshot's name ends with '_R4'. -# snapshot <- "/p/projects/rd3mod/R/libraries/snapshots/2022_05_31_R4" +# snapshot <- "/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4" # snapshot <- latestSnapshot if (exists("snapshot")) { diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 386b1e445..9987f7e1f 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -74,6 +74,7 @@ Equations q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" + q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" ; *** EOF ./modules/37_industry/subsectors/declarations.gms diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 08d953fea..93de11033 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -13,9 +13,9 @@ q37_demFeIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear vm_demFEsector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) *** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) - - sum(se2fe(entySE,entyFE,te), - vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) - ) +* - sum(se2fe(entySE,entyFE,te), +* vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) +* ) =e= sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in)), @@ -24,14 +24,14 @@ q37_demFeIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear ) *** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) - - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), - secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), +* - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), +* secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - ( vm_cesIO(ttot,regi,in) - + pm_cesdata(ttot,regi,in,"offset_quantity") - ) - * p37_chemicals_feedstock_share(ttot,regi) - ) +* ( vm_cesIO(ttot,regi,in) +* + pm_cesdata(ttot,regi,in,"offset_quantity") +* ) +* * p37_chemicals_feedstock_share(ttot,regi) +* ) ; *' Thermodynamic limits on subsector energy demand @@ -188,6 +188,17 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startye ) ; +* feedstocks flow has to be lower than total energy flow into industry +q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$(ttot.val ge cm_startyear + AND sefe(entySE,entyFE) AND sector2emiMkt("indst",emiMkt) + AND entyFe2Sector(entyFe,"indst") AND entyFeCC37(entyFe)).. + + vm_demFESector(ttot,regi,entySE,entyFE,"indst",emiMkt) + =g= + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) + +; + *** calculate carbon contained in chemical feedstocks q37_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt)$( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) diff --git a/scripts/cs2/run_compareScenarios2.R b/scripts/cs2/run_compareScenarios2.R index 66e60d3fa..0d242b5fa 100644 --- a/scripts/cs2/run_compareScenarios2.R +++ b/scripts/cs2/run_compareScenarios2.R @@ -5,7 +5,9 @@ # | REMIND License Exception, version 1.0 (see LICENSE file). # | Contact: remind@pik-potsdam.de library(lucode2) # getScenNames -library(remind2) +#library(remind2) +library(devtools) +load_all("/p/tmp/simonlei/this-is-remind2/remind2") if (!exists("source_include")) { readArgs("outputDirs", "outFileName", "profileName") diff --git a/scripts/output/single/reporting.R b/scripts/output/single/reporting.R index 240b894eb..7c88fa239 100644 --- a/scripts/output/single/reporting.R +++ b/scripts/output/single/reporting.R @@ -6,7 +6,11 @@ # | Contact: remind@pik-potsdam.de library(magclass) -library(remind2) + +#library(remind2) +library(devtools) +load_all("/p/tmp/simonlei/this-is-remind2/remind2") + library(lucode2) library(gms) library(methods) From 8ad444d7448b1ea050176c4652afe0b5e2f1d6f2 Mon Sep 17 00:00:00 2001 From: Christof Schoetz Date: Thu, 25 Aug 2022 17:09:27 +0200 Subject: [PATCH 22/33] fix file ending --- scripts/cs2/run_compareScenarios2.R | 113 +++++++++++++--------------- 1 file changed, 51 insertions(+), 62 deletions(-) diff --git a/scripts/cs2/run_compareScenarios2.R b/scripts/cs2/run_compareScenarios2.R index 0d242b5fa..48db833cc 100644 --- a/scripts/cs2/run_compareScenarios2.R +++ b/scripts/cs2/run_compareScenarios2.R @@ -4,13 +4,10 @@ # | AGPL-3.0, you are granted additional permissions described in the # | REMIND License Exception, version 1.0 (see LICENSE file). # | Contact: remind@pik-potsdam.de -library(lucode2) # getScenNames -#library(remind2) -library(devtools) -load_all("/p/tmp/simonlei/this-is-remind2/remind2") +library(remind2) if (!exists("source_include")) { - readArgs("outputDirs", "outFileName", "profileName") + lucode2::readArgs("outputDirs", "outFileName", "profileName") } run_compareScenarios2 <- function( @@ -18,29 +15,27 @@ run_compareScenarios2 <- function( outFileName, profileName ) { + + stopifnot(length(profileName) == 1 && is.character(profileName) && !is.na(profileName)) + stopifnot(length(outFileName) == 1 && is.character(outFileName) && !is.na(outFileName)) # working directory is assumed to be the remind directory # load cs2 profiles - profiles <- remind2::getCs2Profiles() - - scenNames <- getScenNames(outputDirs) - - system(paste0("mkdir ", outFileName)) # create temporary folder + profiles <- getCs2Profiles() - outputDirs <- normalizePath(outputDirs) # make paths absolute - outfilepath <- normalizePath(outFileName) - mifPath <- file.path(outputDirs, paste("REMIND_generic_", scenNames, ".mif", sep = "")) - mifPathPolCosts <- file.path( - outputDirs, - paste("REMIND_generic_", scenNames, "_adjustedPolicyCosts.mif", sep = "")) - mifPath <- ifelse(file.exists(mifPathPolCosts), mifPathPolCosts, mifPath) - histPath <- file.path(outputDirs[1], "historical.mif") - scenConfigPath <- file.path(outputDirs, "config.Rdata") - defaultConfigPath <- normalizePath("./config/default.cfg") - - message("Using these mif paths:\n - ", paste(c(histPath, mifPath), collapse = "\n - ")) - message("Using this temporary folder:\n - ", outfilepath) + # Create temporary folder. This is necessary because each compareScenarios2 + # run creates a folder named 'figure'. If multiple compareScenarios2 run in + # parallel they would interfere with the others' figure folder. So we create a + # temporary subfolder in which each compareScenarios2 creates its own figure + # folder. + system(paste0("mkdir ", outFileName)) + outDir <- normalizePath(outFileName, mustWork = TRUE) + + mifPath <- getMifScenPath(outputDirs, mustWork = TRUE) + histPath <- getMifHistPath(outputDirs[1], mustWork = TRUE) + scenConfigPath <- getCfgScenPath(outputDirs, mustWork = TRUE) + defaultConfigPath <- getCfgDefaultPath(mustWork = TRUE) # predefined arguments args <- list( @@ -48,54 +43,48 @@ run_compareScenarios2 <- function( mifHist = histPath, cfgScen = scenConfigPath, cfgDefault = defaultConfigPath, - outputDir = outfilepath, - outputFile = outFileName + outputDir = outDir, + outputFile = outFileName, + outputFormat = "pdf" ) - # If profileName is a single non-empty string, load cs2 profile and change args. - if ( - length(profileName) == 1 && - is.character(profileName) && - !is.na(profileName) && - nchar(profileName) > 1 - ) { - message("Applying profile ", profileName) - profile <- profiles[[profileName]] - # Evaluate entries of profile as R code. - profileEval <- lapply( - names(profile), - function(nm) { - eval( - parse(text = profile[[nm]]), - # Set variable . to predefined argument value. - # This allows refer to the predefined value in the profile expression. - list("." = args[[nm]])) - } - ) - args[names(profile)] <- profileEval - } else { - message("Using default profile.") + # Load cs2 profile and change args. + message("Applying profile ", profileName) + profile <- profiles[[profileName]] + # Evaluate entries of profile as R code. + profileEval <- lapply( + names(profile), + function(nm) { + eval( + parse(text = profile[[nm]]), + # Set variable . to predefined argument value. + # This allows refer to the predefined value in the profile expression. + list("." = args[[nm]])) + } + ) + args[names(profile)] <- profileEval + + # Check outputFile ending. + expectedEnding <- paste0(".", tolower(args$outputFormat)) + if (!endsWith(tolower(args$outputFile), expectedEnding)) { + args$outputFile <- paste0(args$outputFile, expectedEnding) } message("Will make following function call:") message(" remind2::compareScenarios2(") for (i in seq_along(args)) - message(" ", names(args)[i], " = ", capture.output(dput(args[[i]])), ",") + message(" ", names(args)[i], " = ", capture.output(dput(args[[i]])), if (i < length(args)) ",") message(" )") - # Create temporary folder. This is necessary because each compareScenarios2 creates a folder names 'figure'. - # If multiple compareScenarios2 run in parallel they would interfere with the others' figure folder. - # So we create a temporary subfolder in which each compareScenarios2 creates its own figure folder. - wd <- getwd() - setwd(outfilepath) # working directory now is the temporary folder - - # move pdf / html file out of temporary folder and remove temporary folder - on.exit(system(paste0("mv ", args$outputFile, ".* .."))) - on.exit(setwd(wd), add = TRUE) # working directory should be the remind folder after exiting run_compareScenarios2() - on.exit(system(paste0("rm -rf ", args$outputDir)), add = TRUE) - message("Calling remind2::compareScenarios2()...\n") - try(do.call(compareScenarios2, args)) + do.call(compareScenarios2, args) + + message("Move outputFile and delete temporary folder.\n") + outputFilePath <- file.path(args$outputDir, args$outputFile) + system(paste0("mv ", outputFilePath, " .")) + system(paste0("rm -rf ", args$outputDir)) + + message("Done!.\n") } -run_compareScenarios2(outputDirs, outFileName, profileName) +run_compareScenarios2(outputDirs, outFileName, profileName) \ No newline at end of file From 0b5d50c3d5a752eba84d6d0d4a4675001fe82d9f Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Mon, 26 Sep 2022 18:32:06 +0200 Subject: [PATCH 23/33] read in regionalized emission factors for feedstocks in chemicals sector. And clean code --- core/datainput.gms | 11 +++++++++++ modules/37_industry/subsectors/equations.gms | 14 -------------- 2 files changed, 11 insertions(+), 14 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index aac69fa15..6f8038af2 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1447,6 +1447,17 @@ $include "./core/magicc/magicc_scen_bau.inc"; $include "./core/magicc/magicc_scen_450.inc"; $include "./core/magicc/magicc_scen_550.inc"; +***------ Read in emission factors for process emissions in chemicals sector--- +*' will need an update after new IEA balances are integrated +*' calculated using IEA data on feedstocks flows and UNFCCC data on chem sector process emissions +parameter pm_emifacNonEnergy(ttot,all_regi,all_enty,all_enty,emi_sectors,all_enty) "emission factors for feedstocks in the chemicals sector" +/ +$ondelim +$include "./core/input/f_nechem_emissionFactors.cs4r" +$offdelim +/ +; + *** ----- Parameters needed for MAGICC ---------------------------------------- table p_regi_2_MAGICC_regions(all_regi,RCP_regions_world_bunkers) "map REMIND to MAGICC regions" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 93de11033..c85185f67 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -12,26 +12,12 @@ q37_demFeIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear sum(se2fe(entySE,entyFE,te), vm_demFEsector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) -*** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) -* - sum(se2fe(entySE,entyFE,te), -* vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) -* ) =e= sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in)), vm_cesIO(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") ) - -*** substract chemical feedstocks which are supplied by vm_demFENonEnergySector (see q37_demFeFeedstockChemIndst) -* - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), -* secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - -* ( vm_cesIO(ttot,regi,in) -* + pm_cesdata(ttot,regi,in,"offset_quantity") -* ) -* * p37_chemicals_feedstock_share(ttot,regi) -* ) ; *' Thermodynamic limits on subsector energy demand From cfb93d40bd40aafdb6f59d9b90f86b8bb0eff9fe Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Tue, 27 Sep 2022 10:29:25 +0200 Subject: [PATCH 24/33] fixes to read in feedstocks emissions data --- core/datainput.gms | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index 6f8038af2..a9a6f0d2f 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1417,17 +1417,17 @@ pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie" *** define non-energy emission factors. For now only for the chemicals industry -pm_emifacNonEnergy(ttot,regi,'segafos','fegas','indst','co2') = 0.051; !! GtC/TWa -pm_emifacNonEnergy(ttot,regi,'seliqfos','fehos','indst','co2') = 0.069; !! GtC/TWa -pm_emifacNonEnergy(ttot,regi,'sesofos','fesos','indst','co2') = 0.086; !! GtC/TWa +* pm_emifacNonEnergy(ttot,regi,'segafos','fegas','indst','co2') = 0.051; !! GtC/TWa +* pm_emifacNonEnergy(ttot,regi,'seliqfos','fehos','indst','co2') = 0.069; !! GtC/TWa +* pm_emifacNonEnergy(ttot,regi,'sesofos','fesos','indst','co2') = 0.086; !! GtC/TWa -pm_emifacNonEnergy("2005",regi,'segafos','fegas','indst','co2') = 0.068; !! GtC/TWa -pm_emifacNonEnergy("2005",regi,'seliqfos','fehos','indst','co2') = 0.092; !! GtC/TWa -pm_emifacNonEnergy("2005",regi,'sesofos','fesos','indst','co2') = 0.114; !! GtC/TWa +* pm_emifacNonEnergy("2005",regi,'segafos','fegas','indst','co2') = 0.068; !! GtC/TWa +* pm_emifacNonEnergy("2005",regi,'seliqfos','fehos','indst','co2') = 0.092; !! GtC/TWa +* pm_emifacNonEnergy("2005",regi,'sesofos','fesos','indst','co2') = 0.114; !! GtC/TWa -pm_emifacNonEnergy("2010",regi,'segafos','fegas','indst','co2') = 0.071; !! GtC/TWa -pm_emifacNonEnergy("2010",regi,'seliqfos','fehos','indst','co2') = 0.096; !! GtC/TWa -pm_emifacNonEnergy("2010",regi,'sesofos','fesos','indst','co2') = 0.119; !! GtC/TWa +* pm_emifacNonEnergy("2010",regi,'segafos','fegas','indst','co2') = 0.071; !! GtC/TWa +* pm_emifacNonEnergy("2010",regi,'seliqfos','fehos','indst','co2') = 0.096; !! GtC/TWa +* pm_emifacNonEnergy("2010",regi,'sesofos','fesos','indst','co2') = 0.119; !! GtC/TWa *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! From dfd92b02edc974b719a86bd190ed9b74f0eea036 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Mon, 24 Oct 2022 18:12:51 +0200 Subject: [PATCH 25/33] fix sets in q37_demFeFeedstockChemIndst that calculates feedstocks --- .Rprofile | 2 +- config/scenario_config_rev3p0p0_fdstk.csv | 51 ++++++++++++++++++++ core/datainput.gms | 37 ++++++-------- modules/37_industry/subsectors/equations.gms | 21 +++----- 4 files changed, 74 insertions(+), 37 deletions(-) create mode 100644 config/scenario_config_rev3p0p0_fdstk.csv diff --git a/.Rprofile b/.Rprofile index c99c428f4..da51a4328 100644 --- a/.Rprofile +++ b/.Rprofile @@ -39,7 +39,7 @@ activateSnapshot <- function(snapshot) { # Snapshots must be compatible to the R version used. If you are using R 4.1 # make sure the selected snapshot's name ends with '_R4'. -# snapshot <- "/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4" + snapshot <- "/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4" # snapshot <- latestSnapshot if (exists("snapshot")) { diff --git a/config/scenario_config_rev3p0p0_fdstk.csv b/config/scenario_config_rev3p0p0_fdstk.csv new file mode 100644 index 000000000..fb36a5986 --- /dev/null +++ b/config/scenario_config_rev3p0p0_fdstk.csv @@ -0,0 +1,51 @@ +title;cm_nash_mode;start;CES_parameters;regionmapping;cm_rcp_scen;cm_iterative_target_adj;subsidizeLearning;c_budgetCO2from2020;carbonprice;cm_co2_tax_2020;cm_peakBudgYr;cm_taxCO2inc_after_peakBudgYr;cm_CO2priceRegConvEndYr;cm_emiscen;c_regi_earlyreti_rate;c_tech_earlyreti_rate;cm_fetaxscen;cm_co2_tax_growth;trade;cm_import_EU;cm_bioenergy_tax;cm_bioenergymaxscen;cm_bioprod_histlim;cm_BioImportTax_EU;c_ccsinjecratescen;c_ccscapratescen;c_BaselineAgriEmiRed;cm_ariadne_VRECapFac_adj;cm_CESMkup_build;cm_CESMkup_ind;cm_INNOPATHS_adj_coeff_multiplier;cm_INNOPATHS_adj_seed_multiplier;techpol;regipol;cm_regiCO2target;cm_NucRegiPol;cm_CoalRegiPol;cm_altFeEmiFac;cm_POPscen;cm_GDPscen;cm_demScen;cm_oil_scen;cm_gas_scen;cm_coal_scen;c_techAssumptScen;cm_nucscen;cm_so2tax_scen;cm_multigasscen;cm_OILRETIRE;cm_LU_emi_scen;cm_tradecost_bio;cm_1stgen_phaseout;c_SSP_forcing_adjust;cm_APscen;water;cm_EDGEtr_scen;cm_startyear;path_gdx;path_gdx_ref;path_gdx_bau;path_gdx_refpolicycost;description +SSP1-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;2;1.025;standard;off;1.75;0;-1;0;2;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;off;SSP1;1;1;forcing_SSP1;SSP1;heat;Mix1;2005;;;;;SSP1-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;2;1.025;standard;off;1.75;0;-1;0;2;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;off;SSP1;1;1;forcing_SSP1;SSP1;heat;Mix1;2005;;;;;SSP1-Base: This baseline scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. +SSP1-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;0;-1;0;2;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;3;off;SSP1;1;1;forcing_SSP1;SSP1;heat;Mix2;2025;;SSP2EU-NDC;SSP1-Base;;SSP1-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. +SSP1-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;0;-1;0;2;1;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;3;off;SSP1;1;1;forcing_SSP1;SSP1;heat;Mix1;2025;;SSP2EU-NDC;SSP1-Base;;SSP1-NPi: This National Policies Implemented (Npi) scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The NPi is identical to the NDC scenario until 2020 but 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-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;0;-1;0;2;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;heat;Mix4;2025;;SSP2EU-NDC;SSP1-Base;;SSP1-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. 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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. +SSP1-PkBudg1150;;0;load;config/regionmappingH12.csv;rcp26;9;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;0;-1;0;2;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP1;gdp_SSP1;gdp_SSP1;lowOil;lowGas;lowCoal;2;2;4;2;on;SSP1;1;1;forcing_SSP1;SSP1;heat;Mix3;2025;;SSP2EU-NDC;SSP1-Base;;SSP1-PkBudg1150: This climate policy scenario follows the Shared Socioeconomic Pathways 1 called Sustainability. The stylized climate policy scenario assumes a peak budget of 1150 Gt?CO2 on total CO2 emissions from 2015 to 2100. This is a weel below 2??C scenario, peak warming is allowed to be at or slightly above 2??C, at median climate sensitivity but returns to values below 2??C in at least 67?% of scenarios by the end of the century. +SSP2EU-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix1;2005;;;;;SSP2EU-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2EU-Base_Fdstk_RegiEmi_test3;;1;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix1;2005;;;;;SSP2EU-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. +SSP2EU-NDC_Fdstk_RegiEmi_test3;;1;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix2;2015;;SSP2EU-Base_Fdstk_RegiEmi_test3;SSP2EU-Base_Fdstk_RegiEmi_test3;;SSP2EU-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. +SSP2EU-NPi_Fdstk_RegiEmi_test3;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix1;2025;;SSP2EU-NDC_Fdstk_RegiEmi_test3;SSP2EU-Base_Fdstk_RegiEmi_test3;;"SSP2EU-NPi: This National Policies Implemented (Npi) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. The NPi is identical to the NDC scenario until 2020 but 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.[feedstocks test, regionalized emissions, snapshot <- ""/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4""]" +SSP2EU-PkBudg500_Fdstk_RegiEmi_test3;;1;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix4;2025;;SSP2EU-NDC_Fdstk_RegiEmi_test3;SSP2EU-Base_Fdstk_RegiEmi_test3;;"SSP2EU-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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. [feedstocks test, regionalized emissions, snapshot <- ""/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4""]" +SSP2EU-PkBudg1150_Fdstk_RegiEmi_test3;;1;load;config/regionmappingH12.csv;rcp26;9;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix3;2025;;SSP2EU-NDC_Fdstk_RegiEmi_test3;SSP2EU-Base_Fdstk_RegiEmi_test3;;"SSP2EU-PkBudg1150: 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 weel below 2??C scenario, peak warming is allowed to be at or slightly above 2??C, at median climate sensitivity but returns to values below 2??C in at least 67?% of scenarios by the end of the century. [feedstocks test, regionalized emissions, snapshot <- ""/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4""]" +SSP5-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;1;1.05;standard;off;1.75;0;-1;0;3;2;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;off;SSP5;1;1;forcing_SSP5;SSP5;heat;Mix1;2005;;;;;SSP5-calibration: This baseline calibration scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. +SSP5-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;1;1.05;standard;off;1.75;0;-1;0;3;2;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;off;SSP5;1;1;forcing_SSP5;SSP5;heat;Mix1;2005;;;;;SSP5-Base: This baseline scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. +SSP5-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;1;1.05;standard;off;1.75;0;-1;0;3;2;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;off;SSP5;1;1;forcing_SSP5;SSP5;heat;Mix2;2025;;SSP2EU-NDC;SSP5-Base;;SSP5-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. +SSP5-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;1;1.05;standard;off;1.75;0;-1;0;3;2;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;3;off;SSP5;1;1;forcing_SSP5;SSP5;heat;Mix1;2025;;SSP2EU-NDC;SSP5-Base;;SSP5-NPi: This National Policies Implemented (Npi) scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The NPi is identical to the NDC scenario until 2020 but 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-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;150;2080;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;1;1.05;standard;off;1.75;0;-1;0;3;2;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;heat;Mix4;2025;;SSP2EU-NDC;SSP5-Base;;SSP5-PkBudg500: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. 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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. +SSP5-PkBudg1150;;0;load;config/regionmappingH12.csv;rcp26;9;globallyOptimal;1150;diffCurvPhaseIn2Lin;80;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;1;1.05;standard;off;1.75;0;-1;0;3;2;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP5;gdp_SSP5;gdp_SSP5;highOil;highGas;highCoal;3;6;4;2;on;SSP5;1;1;forcing_SSP5;SSP5;heat;Mix3;2025;;SSP2EU-NDC;SSP5-Base;;SSP5-PkBudg1150: This climate policy scenario follows the Shared Socioeconomic Pathways 5 called Fossil-Fueled Development. The stylized climate policy scenario assumes a peak budget of 1150 Gt?CO2 on total CO2 emissions from 2015 to 2100. This is a weel below 2??C scenario, peak warming is allowed to be at or slightly above 2??C, at median climate sensitivity but returns to values below 2??C in at least 67?% of scenarios by the end of the century. +SDP-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.12, EUR_regi 0.15;off;4;1.025;standard;off;1.75;4;-1;0;5;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP;gdp_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix1;2005;;;;;SDP-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario fosucing on measures to achieve the UN 2030 Agenda, see Soergel et al., 2021. +SDP-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.12, EUR_regi 0.15;off;4;1.025;standard;off;1.75;4;-1;0;5;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP;gdp_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix1;2005;;;;;SDP-Base: This baseline scenario follows the Sustainable Development Pathway scenario fosucing on measures to achieve the UN 2030 Agenda, see Soergel et al., 2021. +SDP-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;1.75;4;-1;0;5;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP;gdp_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix2;2025;;SSP2EU-NDC;SDP-Base;;SDP-NDC: This Nationally Determined Contribution (NDC) scenario follows the Sustainable Development Pathway scenario fosucing on measures to achieve the UN 2030 Agenda, see Soergel et al., 2021. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. +SDP-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;1.75;4;-1;0;5;1;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SDP;gdp_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix1;2025;;SSP2EU-NDC;SDP-Base;;SDP-NPi: This National Policies Implemented (Npi) scenario follows the Sustainable Development Pathway scenario fosucing on measures to achieve the UN 2030 Agenda, see Soergel et al., 2021. The NPi is identical to the NDC scenario until 2020 but 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. +SDP-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;150;2045;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;1.75;4;-1;0;5;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP;gdp_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;heat;Mix4;2025;;SSP2EU-NDC;SDP-Base;;SDP-PkBudg500: This climate policy scenario follows the Sustainable Development Pathway scenario fosucing on measures to achieve the UN 2030 Agenda, see Soergel et al., 2021. 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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. +SDP-PkBudg1150;;0;load;config/regionmappingH12.csv;rcp26;9;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;1.75;4;-1;0;5;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP;gdp_SDP;gdp_SDP;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;heat;Mix3;2025;;SSP2EU-NDC;SDP-Base;;SDP-PkBudg1150: This climate policy scenario follows the Sustainable Development Pathway scenario fosucing on measures to achieve the UN 2030 Agenda, see Soergel et al., 2021. +SDP_EI-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.14, EUR_regi 0.15;off;2;1.025;standard;off;1.75;3;-1;0;1;2;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix4;2005;;;;;"SDP_EI-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth." +SDP_EI-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.14, EUR_regi 0.15;off;2;1.025;standard;off;1.75;3;-1;0;1;2;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix4;2005;;;;;"SDP_EI-Base: This baseline scenario follows the Sustainable Development Pathway scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth." +SDP_EI-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.14, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;3;-1;0;1;2;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix4;2025;;SSP2EU-NDC;SDP_EI-Base;;"SDP_EI-NDC: This Nationally Determined Contribution (NDC) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020." +SDP_EI-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.14, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;3;-1;0;1;2;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;SSP1;heat;Mix4;2025;;SSP2EU-NDC;SDP_EI-Base;;"SDP_EI-NPi: This National Policies Implemented (Npi) scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth. The NPi is identical to the NDC scenario until 2020 but 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." +SDP_EI-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;150;2045;3;2050;9;GLO 0.14, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;3;-1;0;1;2;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP_EI;gdp_SDP_EI;gdp_SDP_EI;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;SSP1;heat;Mix4;2025;;SSP2EU-NDC;SDP_EI-Base;;"SDP_EI-PkBudg500: This climate policy scenario following the narrative of ""Economy-driven innovation"": tech & market driven - globalized word - high-growth. 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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. " +SDP_MC-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.12, EUR_regi 0.15;off;2;1.025;standard;off;1.75;4;-1;0;2;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;MFR;heat;Mix4;2005;;;;;"SDP_MC-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions." +SDP_MC-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.12, EUR_regi 0.15;off;2;1.025;standard;off;1.75;4;-1;0;2;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;1;1;forcing_SSP1;MFR;heat;Mix4;2005;;;;;"SDP_MC-Base: This baseline scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions." +SDP_MC-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;4;-1;0;2;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;MFR;heat;Mix4;2025;;SSP2EU-NDC;SDP_MC-Base;;"SDP_MC-NDC: This Nationally Determined Contribution (NDC) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020." +SDP_MC-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;4;-1;0;2;1;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;1;1;forcing_SSP1;MFR;heat;Mix4;2025;;SSP2EU-NDC;SDP_MC-Base;;"SDP_MC-NPi: This National Policies Implemented (Npi) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions. The NPi is identical to the NDC scenario until 2020 but 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." +SDP_MC-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;150;2045;3;2050;9;GLO 0.12, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;2;1.025;standard;off;1.75;4;-1;0;2;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP_MC;gdp_SDP_MC;gdp_SDP_MC;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;1;1;forcing_SSP1;MFR;heat;Mix4;2025;;SSP2EU-NDC;SDP_MC-Base;;"SDP_MC-PkBudg500: This climate policy scenario follows the Sustainable Development Pathway scenario following the narrative of ""Managing the global commons"": strong global institutions - efficient technological solutions. 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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. " +SDP_RC-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2060;1;GLO 0.12, EUR_regi 0.15;off;4;1.025;standard;off;2;1;-1;0;5;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;2;1;forcing_SSP1;SSP1;heat;Mix3;2005;;;;;"SDP_RC-calibration: This baseline calibration scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven." +SDP_RC-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2060;1;GLO 0.09, EUR_regi 0.15;off;4;1.025;standard;off;2;1;-1;0;5;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;2;4;2;off;SDP;2;1;forcing_SSP1;SSP1;heat;Mix3;2005;;;;;"SDP_RC-Base: This baseline scenario follows the Sustainable Development Pathway scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven." +SDP_RC-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2060;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;2;1;-1;0;5;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;2;1;forcing_SSP1;SSP1;heat;Mix3;2025;;SSP2EU-NDC;SDP_RC-Base;;"SDP_RC-NDC: This Nationally Determined Contribution (NDC) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven. 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. This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020." +SDP_RC-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2060;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;2;1;-1;0;5;1;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;2;4;3;off;SDP;2;1;forcing_SSP1;SSP1;heat;Mix3;2025;;SSP2EU-NDC;SDP_RC-Base;;"SDP_RC-NPi: This National Policies Implemented (Npi) scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven. The NPi is identical to the NDC scenario until 2020 but 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." +SDP_RC-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;150;2045;3;2060;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;4;1.025;standard;off;2;1;-1;0;5;1;0;off;standard;standard;off;off;NDCplus;none;off;off;off;off;pop_SDP_RC;gdp_SDP_RC;gdp_SDP_RC;lowOil;lowGas;lowCoal;2;2;4;2;on;SDP;2;1;forcing_SSP1;SSP1;heat;Mix3;2025;;SSP2EU-NDC;SDP_RC-Base;;"SDP_RC-PkBudg500: This climate policy scenario follows the Sustainable Development Pathway scenario following the narrative of ""Resilient communities"": human well-being - behavioural change - local & less tech-driven. 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.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. " +SSP2EU_lowEn-calibrate;;0;calibrate;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2_lowEn;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix1;2005;;;;;SSP2EU_lowEn-calibration: This baseline scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. +SSP2EU_lowEn-Base;;0;load;config/regionmappingH12.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;none;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2_lowEn;medOil;medGas;medCoal;1;2;1;2;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix1;2005;;;;;SSP2EU_lowEn-Base: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. This scenario also assumes low energy demand trajectories. +SSP2EU_lowEn-NDC;;0;load;config/regionmappingH12.csv;rcp45;3;globallyOptimal;0;NDC;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2_lowEn;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix2;2015;;SSP2EU-NDC;SSP2EU_lowEn-Base;;SSP2EU_lowEn-NDC: This Nationally Determined Contribution (NDC) scenario follows the Shared Socioeconomic Pathways 2 called Middle of the Road. 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.This scenario serves as reference for all other policy scenarios and The NPi scenario until 2020. +SSP2EU_lowEn-NPi;;0;load;config/regionmappingH12.csv;rcp45;3;off;0;NPi2018;1;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NPi2018;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2_lowEn;medOil;medGas;medCoal;1;2;1;3;off;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix1;2025;;SSP2EU-NDC;SSP2EU_lowEn-Base;;SSP2EU_lowEn-NPi: 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 is identical to the NDC scenario until 2020 but 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. +SSP2EU_lowEn-PkBudg500;;0;load;config/regionmappingH12.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2_lowEn;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix4;2025;;SSP2EU-NDC;SSP2EU_lowEn-Base;;SSP2EU_lowEn-PkBudg500: 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 500 Gt?CO2 on total CO2 emissions from 2015 to 2100. This is a 1.5??C scenario, peak warming is allowed to be at or slightly above 1.5??C, at median climate sensitivity but returns to values below 1.5??C in at least 67?% of scenarios by the end of the century. +SSP2EU_lowEn-PkBudg1150;;0;load;config/regionmappingH12.csv;rcp26;9;globallyOptimal;1150;diffCurvPhaseIn2Lin;60;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;standard;off;1.5;0;-1;0;1;1;0;off;standard;standard;off;off;NDC;none;off;off;off;off;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2_lowEn;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;heat;Mix3;2025;;SSP2EU-NDC;SSP2EU_lowEn-Base;;SSP2EU_lowEn-PkBudg1150: 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 1150 Gt?CO2 on total CO2 emissions from 2015 to 2100. This is a weel below 2??C scenario, peak warming is allowed to be at or slightly above 2??C, at median climate sensitivity but returns to values below 2??C in at least 67?% of scenarios by the end of the century. +#____ REMIND-EU Ariadne Runs ____;;0;;;;;;0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +EU21reg_Calib;;0;calibrate;./config/21_regions_EU11/regionmapping_21_EU11.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;3;1.05;se_trade;off;1.5;0;-1;0;2;1;0;on;standard;standard;off;off;none;regiCarbonPrice;off;off;off;EUR_regi, NEU_regi;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;off;Mix1;2005;;;;;EU21reg_Calib: This baseline calibration scenario follows the Shared Socioeconomic Pathways 2 for the 21 region REMIND-EU version. +EU21reg_Base;;0;load;./config/21_regions_EU11/regionmapping_21_EU11.csv;none;0;off;0;none;-1;2100;3;2050;1;GLO 0.09, EUR_regi 0.15;off;3;1.05;se_trade;off;1.5;0;1.1;0;2;1;0;on;standard;standard;off;off;none;regiCarbonPrice;off;off;off;EUR_regi, NEU_regi;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;off;Mix1;2005;;;;;EU21reg_Base: This baseline scenario follows the Shared Socioeconomic Pathways 2 for the 21 region REMIND-EU version. +EU21reg_Ref-gd40;;0;load;./config/21_regions_EU11/regionmapping_21_EU11.csv;rcp26;5;globallyOptimal;1100;expoLinear;30;2100;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;se_trade;off;1.5;0;1.1;0;2;1;0;on;standard;standard;off;off;none;regiCarbonPrice;2020.2030.EUR_regi.year.netGHG_noBunkers 3.3;on;on;EUR_regi, NEU_regi;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;0;forcing_SSP2;SSP2;off;Mix2;2020;;EU21reg_Base;EU21reg_Base;;EU21reg_Ref-gd40: This reference scenario is based on the Shared Socioeconomic Pathways 2 for the 21 region REMIND-EU version and describes a current policy pathways from the perspective of the EU in 2020 with the -40% 2030 EU emissions target that was aimed at the time. It serves to produce consistent near-term trends for the 2020 time step where mild climate policies have been in place. +EU21reg_Bal;;0;load;./config/21_regions_EU11/regionmapping_21_EU11.csv;rcp20;9;globallyOptimal;500;diffCurvPhaseIn2Lin;100;2080;3;2050;9;GLO 0.09, EUR_regi 0.15;GLO.(biodiesel 0.14, bioeths 0.14), EUR_regi.(biodiesel 0.15, bioeths 0.15), USA_regi.pc 0.13, REF_regi.pc 0.13, CHA_regi.pc 0.13;3;1.05;se_trade;bal;1.5;0;1.1;3;2;1;0.4;on;fehob 1.75;standard;0.5;2;none;regiCarbonPrice;2020.2030.EU27_regi.year.netGHG_LULUCFGrassi_noBunkers 2.15, 2035.2050.EU27_regi.year.netGHG_LULUCFGrassi_noBunkers 0.01, 2020.2030.DEU.year.netGHG_noBunkers 0.46, 2035.2045.DEU.year.netGHG_noBunkers 0.001;on;on;EUR_regi, NEU_regi;pop_SSP2EU;gdp_SSP2EU;gdp_SSP2EU;medOil;medGas;medCoal;1;2;1;2;on;SSP2;2;1;forcing_SSP2;SSP2;off;Mix4;2025;;EU21reg_Ref-gd40;EU21reg_Ref-gd40;;EU21reg_Bal: This policy scenario is based on the Shared Socioeconomic Pathways 2 for the 21 region REMIND-EU version and describes the technology mix (balanced) scenario used in the Ariadne project for pathways in line with the German and EU climate neutrality goals. It features a couple of assumptions (restricted CCS, biomass, regional policies etc.) that matter in particular for EU-specific scenarios. diff --git a/core/datainput.gms b/core/datainput.gms index a9a6f0d2f..9c25c572f 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1415,19 +1415,23 @@ pm_emifac(ttot,regi,"seliqfos","fehos","tdfoshos","co2") = p_ef_dem(regi,"fehos" pm_emifac(ttot,regi,"seliqfos","fepet","tdfospet","co2") = p_ef_dem(regi,"fepet") / (sm_c_2_co2*1000*sm_EJ_2_TWa); !! GtC/TWa pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie") / (sm_c_2_co2*1000*sm_EJ_2_TWa); !! GtC/TWa -*** define non-energy emission factors. For now only for the chemicals industry - -* pm_emifacNonEnergy(ttot,regi,'segafos','fegas','indst','co2') = 0.051; !! GtC/TWa -* pm_emifacNonEnergy(ttot,regi,'seliqfos','fehos','indst','co2') = 0.069; !! GtC/TWa -* pm_emifacNonEnergy(ttot,regi,'sesofos','fesos','indst','co2') = 0.086; !! GtC/TWa +***------ Read in emission factors for process emissions in chemicals sector--- +*' will need an update after new IEA balances are integrated +*' calculated using IEA data on feedstocks flows and UNFCCC data on chem sector process emissions -* pm_emifacNonEnergy("2005",regi,'segafos','fegas','indst','co2') = 0.068; !! GtC/TWa -* pm_emifacNonEnergy("2005",regi,'seliqfos','fehos','indst','co2') = 0.092; !! GtC/TWa -* pm_emifacNonEnergy("2005",regi,'sesofos','fesos','indst','co2') = 0.114; !! GtC/TWa +***remember to remove the "*" before merging by modif the input file (fegas instead of gases, etc.) +*** "non-energy emission factors [GtC per ZJ]" +parameter f_nechem_emissionFactors(ttot,all_regi,*) +/ +$ondelim +$include "./core/input/f_nechem_emissionFactors.cs4r" +$offdelim +/ +; -* pm_emifacNonEnergy("2010",regi,'segafos','fegas','indst','co2') = 0.071; !! GtC/TWa -* pm_emifacNonEnergy("2010",regi,'seliqfos','fehos','indst','co2') = 0.096; !! GtC/TWa -* pm_emifacNonEnergy("2010",regi,'sesofos','fesos','indst','co2') = 0.119; !! GtC/TWa +pm_emifacNonEnergy(ttot,regi,'segafos','fegas','indst','co2') = f_nechem_emissionFactors(ttot,regi,"gases") / s_zj_2_twa; +pm_emifacNonEnergy(ttot,regi,'seliqfos','fehos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"liquids") / s_zj_2_twa; +pm_emifacNonEnergy(ttot,regi,'sesofos','fesos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"solids") / s_zj_2_twa; *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! @@ -1447,17 +1451,6 @@ $include "./core/magicc/magicc_scen_bau.inc"; $include "./core/magicc/magicc_scen_450.inc"; $include "./core/magicc/magicc_scen_550.inc"; -***------ Read in emission factors for process emissions in chemicals sector--- -*' will need an update after new IEA balances are integrated -*' calculated using IEA data on feedstocks flows and UNFCCC data on chem sector process emissions -parameter pm_emifacNonEnergy(ttot,all_regi,all_enty,all_enty,emi_sectors,all_enty) "emission factors for feedstocks in the chemicals sector" -/ -$ondelim -$include "./core/input/f_nechem_emissionFactors.cs4r" -$offdelim -/ -; - *** ----- Parameters needed for MAGICC ---------------------------------------- table p_regi_2_MAGICC_regions(all_regi,RCP_regions_world_bunkers) "map REMIND to MAGICC regions" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index c85185f67..f3777cf61 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -154,25 +154,18 @@ q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. * p37_chemicals_feedstock_share(t,regi) ; -*Flow of non-energy feedstocks. It is used for emissions accounting -q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$( ttot.val ge cm_startyear - AND entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) .. - +***Flow of non-energy feedstocks. It is used for emissions accounting +q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$(ttot.val ge cm_startyear AND entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt)) .. sum(se2fe(entySE,entyFE,te), - vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) =e= - sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), - secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - - ( vm_cesIO(ttot,regi,in) - + pm_cesdata(ttot,regi,in,"offset_quantity") + sum(in$(fe2ppfEN(entyFE,in) and in_chemicals_37(in)), + ( vm_cesIO(ttot,regi,in) + + pm_cesdata(ttot,regi,in,"offset_quantity") ) - * p37_chemicals_feedstock_share(ttot,regi) - - ) -; + )* p37_chemicals_feedstock_share(ttot,regi) +; * feedstocks flow has to be lower than total energy flow into industry q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$(ttot.val ge cm_startyear From 39296c3589b34ca75914f80d12453f7707e4d443 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 10 Nov 2022 15:14:31 +0100 Subject: [PATCH 26/33] define feedstocks emi factors for synfuels and biofuels too and restrict demFENonEnergySector definition to ETS --- .Rprofile | 2 +- core/datainput.gms | 8 ++++++++ core/equations.gms | 3 ++- modules/37_industry/subsectors/equations.gms | 9 +++++---- 4 files changed, 16 insertions(+), 6 deletions(-) diff --git a/.Rprofile b/.Rprofile index da51a4328..c99c428f4 100644 --- a/.Rprofile +++ b/.Rprofile @@ -39,7 +39,7 @@ activateSnapshot <- function(snapshot) { # Snapshots must be compatible to the R version used. If you are using R 4.1 # make sure the selected snapshot's name ends with '_R4'. - snapshot <- "/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4" +# snapshot <- "/p/projects/rd3mod/R/libraries/snapshots/2022_08_R4" # snapshot <- latestSnapshot if (exists("snapshot")) { diff --git a/core/datainput.gms b/core/datainput.gms index 9c25c572f..e3b619095 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1433,6 +1433,14 @@ pm_emifacNonEnergy(ttot,regi,'segafos','fegas','indst','co2') = f_nechem_emissio pm_emifacNonEnergy(ttot,regi,'seliqfos','fehos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"liquids") / s_zj_2_twa; pm_emifacNonEnergy(ttot,regi,'sesofos','fesos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"solids") / s_zj_2_twa; +pm_emifacNonEnergy(ttot,regi,'segabio','fegas','indst','co2') = f_nechem_emissionFactors(ttot,regi,"gases") / s_zj_2_twa; +pm_emifacNonEnergy(ttot,regi,'seliqbio','fehos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"liquids") / s_zj_2_twa; +pm_emifacNonEnergy(ttot,regi,'sesobio','fesos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"solids") / s_zj_2_twa; + +pm_emifacNonEnergy(ttot,regi,'segasyn','fegas','indst','co2') = f_nechem_emissionFactors(ttot,regi,"gases") / s_zj_2_twa; +pm_emifacNonEnergy(ttot,regi,'seliqsyn','fehos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"liquids") / s_zj_2_twa; + + *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! pm_cesdata(ttot,regi,in,"offset_quantity")$(ttot.val ge 2005) = 0; diff --git a/core/equations.gms b/core/equations.gms index 7e9f7f296..12dbfecd3 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -530,7 +530,7 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) pm_emifac(t,regi,enty,enty2,te,enty3) * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) -*** substract FE used for non-energy, does not lead to energy-related emissions +*** substract FE used for non-energy purposes (as feedstocks) so it does not create energy-related emissions - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) ) @@ -587,6 +587,7 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. *** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime + ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) *** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years) +*** SM The CCU module will be refactored because now this is also including carbon that is sequestered in products of the chemicals sector + sum(teCCU2rlf(te2,rlf), vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index f3777cf61..6d873b324 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -155,9 +155,9 @@ q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. ; ***Flow of non-energy feedstocks. It is used for emissions accounting -q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$(ttot.val ge cm_startyear AND entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt)) .. +q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$(ttot.val ge cm_startyear AND entyFe2sector2emiMkt_NonEn(entyFe,"indst","ETS")) .. sum(se2fe(entySE,entyFE,te), - vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) + vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst","ETS") ) =e= sum(in$(fe2ppfEN(entyFE,in) and in_chemicals_37(in)), @@ -168,6 +168,7 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFe,emiMkt)$(ttot.val ge cm_startyear A ; * feedstocks flow has to be lower than total energy flow into industry +*** TODO: try to change ttot for t q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$(ttot.val ge cm_startyear AND sefe(entySE,entyFE) AND sector2emiMkt("indst",emiMkt) AND entyFe2Sector(entyFe,"indst") AND entyFeCC37(entyFe)).. @@ -178,8 +179,8 @@ q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$(ttot.val ge cm_startyear ; - -*** calculate carbon contained in chemical feedstocks +*** calculate carbon contained in feedstocks for the industry sector +*** TODO: try to change ttot for t q37_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt)$( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) AND entySe2entyFe(entySe,entyFe) ) .. vm_FeedstocksCarbon(ttot,regi,entySe,entyFe,emiMkt) From a6819d42a8b67f26497b9be9396bc74c3fbd55f0 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Mon, 20 Feb 2023 12:54:26 +0100 Subject: [PATCH 27/33] littel message for clean up --- scripts/output/single/reporting.R | 1 + 1 file changed, 1 insertion(+) diff --git a/scripts/output/single/reporting.R b/scripts/output/single/reporting.R index 39d688ee9..06e8dd026 100644 --- a/scripts/output/single/reporting.R +++ b/scripts/output/single/reporting.R @@ -7,6 +7,7 @@ library(magclass) +######remove for CLEAN UP------------------------ #library(remind2) library(devtools) load_all("/p/tmp/simonlei/this-is-remind2/remind2") From 39b0d27bf4050077c825177d75ec782afefe2929 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Wed, 7 Jun 2023 18:41:19 +0200 Subject: [PATCH 28/33] fix path to input file with emissions factors for chemical processes --- core/datainput.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/datainput.gms b/core/datainput.gms index f5984b13c..247c31db1 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1470,7 +1470,7 @@ pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie" parameter f_nechem_emissionFactors(ttot,all_regi,*) / $ondelim -$include "./core/input/f_nechem_emissionFactors.cs4r" +$include "./input/f_nechem_emissionFactors.cs4r" $offdelim / ; From a4fc992a700f24364d4fe2401b7c3fd80ec9570a Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 8 Jun 2023 17:04:11 +0200 Subject: [PATCH 29/33] add feedstock emi factors file to core\input\files and fix path in core\datainput.gms --- core/datainput.gms | 2 +- core/input/files | 1 + 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/core/datainput.gms b/core/datainput.gms index 247c31db1..f5984b13c 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1470,7 +1470,7 @@ pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie" parameter f_nechem_emissionFactors(ttot,all_regi,*) / $ondelim -$include "./input/f_nechem_emissionFactors.cs4r" +$include "./core/input/f_nechem_emissionFactors.cs4r" $offdelim / ; diff --git a/core/input/files b/core/input/files index 61d554520..11884885e 100644 --- a/core/input/files +++ b/core/input/files @@ -21,6 +21,7 @@ p_adj_deltacapoffset.cs4r p_boundCapCCSindicator.cs4r p_boundEmi.cs4r p_emiFossilFuelExtr.cs4r +f_nechem_emissionFactors.cs4r p_emineg_econometric.cs3r pm_histCap.cs3r p_histCapFac.cs4r From ab3813c86e73b4ee7a1934e8eb1bd3b9c06dd388 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Thu, 22 Jun 2023 14:47:14 +0200 Subject: [PATCH 30/33] modify paths for internal testing --- config/default.cfg | 2 +- scripts/output/single/reporting.R | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/config/default.cfg b/config/default.cfg index 5dde0b3b0..3c3c0fcf3 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -27,7 +27,7 @@ cfg$regionmapping <- "config/regionmappingH12.csv" ### Additional (optional) region mapping, so that those validation data can be loaded that contain the corresponding additional regions. cfg$extramappings_historic <- "" #### Current input data revision (.) #### -cfg$inputRevision <- "6.501" +cfg$inputRevision <- "6.54APT-2023-06-11" #### Current CES parameter and GDX revision (commit hash) #### cfg$CESandGDXversion <- "7c6249fa1d775d0e1a4ce1602fc321b47c2a33be" diff --git a/scripts/output/single/reporting.R b/scripts/output/single/reporting.R index c7588ae0d..78b00d3ed 100644 --- a/scripts/output/single/reporting.R +++ b/scripts/output/single/reporting.R @@ -10,7 +10,7 @@ library(magclass) ######remove for CLEAN UP------------------------ #library(remind2) library(devtools) -load_all("/p/tmp/simonlei/this-is-remind2/remind2") +load_all("/p/projects/remind/users/simonlei/Feedstocks_clean/remind2") library(lucode2) library(gms) From 9aa92ef90d2b3d4777e0f5c0fc22a5e6fa8ad064 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Tue, 15 Aug 2023 16:35:08 +0200 Subject: [PATCH 31/33] UNFINISHED: add plastics incineration emissions and plastic carbon removals --- core/datainput.gms | 13 +++++++-- core/declarations.gms | 5 +++- core/equations.gms | 13 +++++---- .../37_industry/subsectors/declarations.gms | 4 +++ modules/37_industry/subsectors/equations.gms | 29 +++++++++++++++++++ 5 files changed, 54 insertions(+), 10 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index f5984b13c..d05b385db 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1462,10 +1462,8 @@ pm_emifac(ttot,regi,"seliqfos","fepet","tdfospet","co2") = p_ef_dem(regi,"fepet" pm_emifac(ttot,regi,"seliqfos","fedie","tdfosdie","co2") = p_ef_dem(regi,"fedie") / (sm_c_2_co2*1000*sm_EJ_2_TWa); !! GtC/TWa ***------ Read in emission factors for process emissions in chemicals sector--- -*' will need an update after new IEA balances are integrated *' calculated using IEA data on feedstocks flows and UNFCCC data on chem sector process emissions - -***remember to remove the "*" before merging by modif the input file (fegas instead of gases, etc.) +***TO DO: remove the "*" by modif the input file (fegas instead of gases, etc.) *** "non-energy emission factors [GtC per ZJ]" parameter f_nechem_emissionFactors(ttot,all_regi,*) / @@ -1486,6 +1484,15 @@ pm_emifacNonEnergy(ttot,regi,'sesobio','fesos','indst','co2') = f_nechem_emissio pm_emifacNonEnergy(ttot,regi,'segasyn','fegas','indst','co2') = f_nechem_emissionFactors(ttot,regi,"gases") / s_zj_2_twa; pm_emifacNonEnergy(ttot,regi,'seliqsyn','fehos','indst','co2') = f_nechem_emissionFactors(ttot,regi,"liquids") / s_zj_2_twa; +***------ Read in projections for incineration rates of plastic waste--- +*** "incineration rates [fraction]" +parameter f_incinerationShares(ttot,all_regi) +/ +$ondelim +$include "./core/input/f_incinerationShares.cs4r" +$offdelim +/ +; *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! diff --git a/core/declarations.gms b/core/declarations.gms index 9854e2333..860aaf47f 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -123,6 +123,7 @@ pm_dataeta(tall,all_regi,all_te) "regional eta data" p_emi_quan_conv_ar4(all_enty) "conversion factor for various gases to GtCeq" pm_emifac(tall,all_regi,all_enty,all_enty,all_te,all_enty) "emission factor by technology for all types of emissions in emiTe" pm_emifacNonEnergy(ttot,all_regi,all_enty,all_enty,emi_sectors,all_enty) "emission factor for non-energy fedstocks. For now only for Chemicals Industry [GtC per TWa]" +pm_incinerationRate(ttot,all_regi) "share of plastic waste that gets incinerated [fraction]" pm_omeg (all_regi,opTimeYr,all_te) "technical depreciation parameter, gives the share of a capacity that is still usable after tlt. [none/share, value between 0 and 1]" p_aux_lifetime(all_regi,all_te) "auxiliary parameter for calculating life times, calculated externally in excel sheet" pm_pedem_res(ttot,all_regi,all_te) "Demand for pebiolc residues, needed for enhancement of residue potential [TWa]" @@ -423,7 +424,9 @@ v_shGasLiq_fe(ttot,all_regi,emi_sectors) "share of gases and liquids vm_emiCdrAll(ttot,all_regi) "all CDR emissions" -vm_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in chemical feedstocks [GtC]" +vm_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in chemical feedstocks [GtC]" +vm_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in plastics [GtC]" +vm_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in plastics [GtC]" v_changeProdStartyearAdj(ttot,all_regi,all_te) "Absolute effect size of changing output with respect to the reference run for each te" vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output with respect to the reference run for each te" diff --git a/core/equations.gms b/core/equations.gms index 55ba42e2f..1667bd838 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -537,7 +537,6 @@ q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) ) ) -*later we can add a term to represent waste incineration and the diff between using synfuels and fossil fuels as feedstocks ) ; ***-------------------------------------------------- @@ -579,16 +578,15 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. vm_emiIndCCS(t,regi,emiInd37_fuel) )$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) -*** substract carbon in feedstocks from biogenic or synthetic origin, generates negative emissions +*** substract carbon from biogenic or synthetic origin contained in plastics ("plastic removals") - sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), sum( se2fe(entySe, entyFe, te)$(entySeBio(entySe) OR entySeSyn(entySe)), - vm_FeedstocksCarbon(t,regi,entySe,entyFe,emiMkt) + vm_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) ) - )$( sameas(enty,"co2") ) + )$( sameas(enty,"co2") ) *** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime + ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) *** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years) -*** SM The CCU module will be refactored because now this is also including carbon that is sequestered in products of the chemicals sector + sum(teCCU2rlf(te2,rlf), vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) @@ -612,12 +610,15 @@ q_emiAllMkt(t,regi,emi,emiMkt).. + vm_emiCdr(t,regi,emi)$( sameas(emi,"co2") AND sameas(emiMkt,"ETS") ) !! Exogenous emissions + pm_emiExog(t,regi,emi)$( sameas(emiMkt,"other") ) - !! non energy emi from chem sector (feedstock emissions): + !! non energy emi from chem sector (process emissions from feedstocks): + sum((entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt), se2fe(entySe,entyFe,te)), vm_demFENonEnergySector(t,regi,entySe,entyFe,sector,emiMkt) * pm_emifacNonEnergy(t,regi,entySe,entyFe,sector,emi) ) + !!emissions from plastics incineration + + !!emissions from chemical feedstock with unknown fate (assumed to go into the atmosphere) ; diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index c08c55b15..41cd706b4 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -8,6 +8,7 @@ Scalar s37_clinker_process_CO2 "CO2 emissions per unit of clinker production" + s37_plasticsShare "share of carbon cointained in feedstocks for the chemicals subsector that goes to plastics" ; Parameters @@ -88,6 +89,9 @@ $endif.no_calibration q37_demFeFeedstockChemIndst(ttot,all_regi,all_enty,all_emiMkt) "defines energy flow of non-energy feedstocks for the chemicals industry. It is used for emissions accounting" q37_FossilFeedstock_Base(ttot,all_regi,all_enty,all_emiMkt) "in baseline runs feedstocks only come from fossil energy carriers" q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" + q37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics [GtC]" + q37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are incinerated [GtC]" + q37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in chemical feedstock with unknown fate [GtC]" q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" $ifthen.process_based_steel "%cm_process_based_steel%" == "on" !! cm_process_based_steel diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 28475b148..d9d828af6 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -264,6 +264,35 @@ q37_FeedstocksCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( * p37_FeedstockCarbonContent(ttot,regi,entyFE) ; +*** calculate carbon contained in plastics [GtC] +*** this is used in emissions accounting to subtract the carbon that gets sequestered in plastic products +q37_plasticsCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) + =e= + vm_FeedstocksCarbon(ttot,regi,entySE,entyFE,emiMkt) + * s37_plasticsShare +; + +*** calculate emissions from plastics incineration +q37_incinerationEmi(ttot,regi,sefe(entySE,entyFE),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + vm_incinerationEmi(ttot,regi,entySE,entyFE,emiMkt) + =e= + vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) + * pm_incinerationRate(ttot,regi) +; + +*** calculate flow of carbon contained in chemical feedstock with unknown fate +*** it is assumed that this carbon is re-emitted in the same timestep +q37_feedstockEmiUnknownFate(ttot,regi,sefe(entySE,entyFE),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + vm_feedstockEmiUnknownFate(ttot,regi,entySE,entyFE,emiMkt) + =e= + vm_FeedstocksCarbon(ttot,regi,entySE,entyFE,emiMkt) + * (1 - s37_plasticsShare) +; + *** in baseline runs, all industrial feedstocks should come from fossil energy *** carriers, no biofuels or synfuels q37_FossilFeedstock_Base(t,regi,entyFE,emiMkt)$( From 90190401ec4982198548b0db5893447183a35305 Mon Sep 17 00:00:00 2001 From: Simon Moreno Date: Fri, 18 Aug 2023 13:08:38 +0200 Subject: [PATCH 32/33] bugfix incineration of plastics --- core/datainput.gms | 3 ++- core/declarations.gms | 8 +++++++- core/equations.gms | 18 +++++++++++++++--- modules/37_industry/subsectors/datainput.gms | 4 ++++ .../37_industry/subsectors/declarations.gms | 3 ++- modules/37_industry/subsectors/equations.gms | 13 +++++++++++-- 6 files changed, 41 insertions(+), 8 deletions(-) diff --git a/core/datainput.gms b/core/datainput.gms index d05b385db..6d2ed1692 100644 --- a/core/datainput.gms +++ b/core/datainput.gms @@ -1486,13 +1486,14 @@ pm_emifacNonEnergy(ttot,regi,'seliqsyn','fehos','indst','co2') = f_nechem_emissi ***------ Read in projections for incineration rates of plastic waste--- *** "incineration rates [fraction]" -parameter f_incinerationShares(ttot,all_regi) +parameter f_incinerationShares(ttot,all_regi) "incineration rate of plastic waste" / $ondelim $include "./core/input/f_incinerationShares.cs4r" $offdelim / ; +pm_incinerationRate(ttot,all_regi)=f_incinerationShares(ttot,all_regi); *** some balances are not matching by small amounts; *** the differences are cancelled out here!!! diff --git a/core/declarations.gms b/core/declarations.gms index 860aaf47f..24f915fe5 100644 --- a/core/declarations.gms +++ b/core/declarations.gms @@ -129,6 +129,9 @@ p_aux_lifetime(all_regi,all_te) "auxiliary parameter pm_pedem_res(ttot,all_regi,all_te) "Demand for pebiolc residues, needed for enhancement of residue potential [TWa]" p_ef_dem(all_regi,all_enty) "Demand side emission factor of final energy carriers [MtCO2/EJ]" +*** share of plastic waste that is incinerated REDUNDANT; DELETE ME +pm_incinerationShares(ttot,all_regi) "Share of plastic waste that gets incinerated [fraction]" + pm_secBioShare(ttot,all_regi,all_enty,emi_sectors) "share of biomass per carrier for each sector" p_avCapFac2015(all_regi,all_te) "average capacity factor of non-bio renewables in 2015 in REMIND" @@ -426,7 +429,10 @@ vm_emiCdrAll(ttot,all_regi) "all CDR emissions" vm_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in chemical feedstocks [GtC]" vm_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in plastics [GtC]" -vm_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in plastics [GtC]" +vm_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in plastics with unknown fate (assumed to go back into the atmosphere) [GtC]" +vm_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Emissions from incineration of plastic waste [GtC]" +vm_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "carbon contained in plastics that are not incinerated [GtC]" + v_changeProdStartyearAdj(ttot,all_regi,all_te) "Absolute effect size of changing output with respect to the reference run for each te" vm_changeProdStartyearCost(ttot,all_regi,all_te) "Costs for changing output with respect to the reference run for each te" diff --git a/core/equations.gms b/core/equations.gms index 1667bd838..d01269e48 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -578,12 +578,24 @@ q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. vm_emiIndCCS(t,regi,emiInd37_fuel) )$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) -*** substract carbon from biogenic or synthetic origin contained in plastics ("plastic removals") +*** substract carbon from biogenic or synthetic origin contained in plastics that don't get incinerated ("plastic removals") - sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), sum( se2fe(entySe, entyFe, te)$(entySeBio(entySe) OR entySeSyn(entySe)), - vm_plasticsCarbon(t,regi,entySe,entyFe,emiMkt) + vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) ) - )$( sameas(enty,"co2") ) + )$( sameas(enty,"co2") ) +*** add emissions from plastics incineration. CHECK FOR DOUBLE-COUNTING RISK + + sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum( se2fe(entySe, entyFe, te), + vm_incinerationEmi(t,regi,entySe,entyFe,emiMkt) + ) + )$( sameas(enty,"co2") ) +*** add emissions from chemical feedstock with unknown fate + + sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum( se2fe(entySe, entyFe, te), + vm_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) + ) + )$( sameas(enty,"co2") ) *** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime + ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) *** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 54ec423fe..307ba8cba 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -267,6 +267,10 @@ p37_clinker_cement_ratio(t,regi) *** costs have to be calculated. pm_CementDemandReductionCost(ttot,regi) = 0; +*** Exogenous share of carbon in chemical feedstock that is embeded into plastics +** calculated based on energy flows in REMIND, plastics production from (Geyer et.al., 2017) and stoichiometric calculations +s37_plasticsShare = 0.629; + *** FIXME calibration debug Parameter p37_arcane_FE_limits(all_in,all_in) "minimum ratio of feelhth/feelwlth and feh2/fega (may be needed for calibration)" diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 41cd706b4..6c67c11ff 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -91,8 +91,9 @@ $endif.no_calibration q37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in feedstocks [GtC]" q37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics [GtC]" q37_incinerationEmi(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are incinerated [GtC]" + q37_nonIncineratedPlastics(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in plastics that are not incinerated [GtC]" q37_feedstockEmiUnknownFate(ttot,all_regi,all_enty,all_enty,all_emiMkt) "calculate carbon contained in chemical feedstock with unknown fate [GtC]" - q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" + q37_feedstocksLimit(ttot,all_regi,all_enty,all_enty,all_emiMkt) "restrict feedstocks flow to total energy flows into industry" $ifthen.process_based_steel "%cm_process_based_steel%" == "on" !! cm_process_based_steel q37_balMats(tall,all_regi,all_enty) "Balance of materials in material-flow model" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index d9d828af6..bcd1ea4bb 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -265,7 +265,6 @@ q37_FeedstocksCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( ; *** calculate carbon contained in plastics [GtC] -*** this is used in emissions accounting to subtract the carbon that gets sequestered in plastic products q37_plasticsCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) @@ -281,7 +280,17 @@ q37_incinerationEmi(ttot,regi,sefe(entySE,entyFE),emiMkt)$( =e= vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) * pm_incinerationRate(ttot,regi) -; +; + +***calculate carbon contained in non-incinerated plastics +*** this is used in emissions accounting to subtract the carbon that gets sequestered in plastic products +q37_nonIncineratedPlastics(ttot,regi,sefe(entySE,entyFE),emiMkt)$( + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + vm_nonIncineratedPlastics(ttot,regi,entySE,entyFE,emiMkt) + =e= + vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) + * (1-pm_incinerationRate(ttot,regi)) + ; *** calculate flow of carbon contained in chemical feedstock with unknown fate *** it is assumed that this carbon is re-emitted in the same timestep From 35734947f257094b98de26c39acf7f2cc24c9b06 Mon Sep 17 00:00:00 2001 From: Michaja Pehl Date: Wed, 13 Sep 2023 11:51:16 +0200 Subject: [PATCH 33/33] boyscout readability --- core/equations.gms | 110 +++++++++--------- modules/02_welfare/utilitarian/equations.gms | 89 +++++++++----- modules/02_welfare/utilitarian/postsolve.gms | 23 ++-- .../37_industry/subsectors/declarations.gms | 3 - modules/37_industry/subsectors/equations.gms | 37 +++--- modules/37_industry/subsectors/postsolve.gms | 103 ++++++++-------- modules/37_industry/subsectors/preloop.gms | 4 +- modules/37_industry/subsectors/sets.gms | 6 +- 8 files changed, 211 insertions(+), 164 deletions(-) diff --git a/core/equations.gms b/core/equations.gms index d01269e48..d79286cfc 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -505,40 +505,41 @@ q_emiTe(t,regi,emiTe(enty)).. sum(emiMkt, vm_emiTeMkt(t,regi,enty,emiMkt)) ; - ***----------------------------------------------------------------------------- *' Emissions per market *' from primary to secondary energy transformation, *' from secondary to final energy transformation (some air pollutants), or *' transformations within the chain of CCS steps (Leakage). ***----------------------------------------------------------------------------- -q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$(emi2te(enty,enty2,te,enty3) - OR (pe2se(enty,enty2,te) - AND sameas(enty3,"cco2")) ) .. +q_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt)$( + emi2te(enty,enty2,te,enty3) + OR (pe2se(enty,enty2,te) AND sameas(enty3,"cco2")) ) .. vm_emiTeDetailMkt(t,regi,enty,enty2,te,enty3,emiMkt) =e= sum(emi2te(enty,enty2,te,enty3), - ( - sum(pe2se(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,enty3) - * vm_demPE(t,regi,enty,enty2,te) - ) - + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), - pm_emifac(t,regi,enty,enty2,te,enty3) - * vm_co2CCS(t,regi,enty,enty2,te,rlf) - ) - )$(sameas(emiMkt,"ETS")) - + sum(se2fe(enty,enty2,te), + ( sum(pe2se(enty,enty2,te), pm_emifac(t,regi,enty,enty2,te,enty3) - * sum(sector$(entyFe2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), - vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) -*** substract FE used for non-energy purposes (as feedstocks) so it does not create energy-related emissions - - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), - vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) - ) - ) - ) + * vm_demPE(t,regi,enty,enty2,te) + ) + + sum((ccs2Leak(enty,enty2,te,enty3),teCCS2rlf(te,rlf)), + pm_emifac(t,regi,enty,enty2,te,enty3) + * vm_co2CCS(t,regi,enty,enty2,te,rlf) + ) + )$( sameas(emiMkt,"ETS") ) + + sum(se2fe(enty,enty2,te), + pm_emifac(t,regi,enty,enty2,te,enty3) + * sum(sector$( entyFe2Sector(enty2,sector) + AND sector2emiMkt(sector,emiMkt) ), + vm_demFeSector(t,regi,enty,enty2,sector,emiMkt) + !! substract FE used for non-energy purposes (as feedstocks) so it does + !! not create energy-related emissions + - sum(entyFe2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector(t,regi,enty,enty2,sector,emiMkt)) + ) + ) + ) ; + ***-------------------------------------------------- *' energy emissions from fuel extraction ***-------------------------------------------------- @@ -564,50 +565,53 @@ q_emiEnFuelEx(t,regi,emiTe(enty)).. ***-------------------------------------------------- *' Total energy-emissions per emission market, region and timestep ***-------------------------------------------------- -q_emiTeMkt(t,regi,emiTe(enty),emiMkt).. +q_emiTeMkt(t,regi,emiTe(enty),emiMkt) .. vm_emiTeMkt(t,regi,enty,emiMkt) =e= -*** emissions from fuel combustion + !! emissions from fuel combustion sum(emi2te(enty2,enty3,te,enty), vm_emiTeDetailMkt(t,regi,enty2,enty3,te,enty,emiMkt) ) -*** energy emissions fuel extraction - + v_emiEnFuelEx(t,regi,enty)$(sameas(emiMkt,"ETS")) -*** Industry CCS emissions - - ( sum(emiMac2mac(emiInd37_fuel,enty2), - vm_emiIndCCS(t,regi,emiInd37_fuel) - )$( sameas(enty,"co2") ) - )$(sameas(emiMkt,"ETS")) -*** substract carbon from biogenic or synthetic origin contained in plastics that don't get incinerated ("plastic removals") - - sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - sum( se2fe(entySe, entyFe, te)$(entySeBio(entySe) OR entySeSyn(entySe)), + !! energy emissions fuel extraction + + v_emiEnFuelEx(t,regi,enty)$(sameas(emiMkt,"ETS")) + !! Industry CCS emissions + - ( sum(emiMac2mac(emiInd37_fuel,enty2), + vm_emiIndCCS(t,regi,emiInd37_fuel) + )$( sameas(enty,"co2") ) + )$(sameas(emiMkt,"ETS") ) + !! substract carbon from biogenic or synthetic origin contained in + !! plastics that don't get incinerated ("plastic removals") + - sum(entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum(se2fe(entySe,entyFe,te)$( entySeBio(entySe) OR entySeSyn(entySe) ), vm_nonIncineratedPlastics(t,regi,entySe,entyFe,emiMkt) - ) - )$( sameas(enty,"co2") ) -*** add emissions from plastics incineration. CHECK FOR DOUBLE-COUNTING RISK - + sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - sum( se2fe(entySe, entyFe, te), + ) + )$( sameas(enty,"co2") ) + !! add emissions from plastics incineration. CHECK FOR DOUBLE-COUNTING RISK + + sum(entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum(se2fe(entySe,entyFe,te), vm_incinerationEmi(t,regi,entySe,entyFe,emiMkt) - ) - )$( sameas(enty,"co2") ) -*** add emissions from chemical feedstock with unknown fate - + sum( entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), - sum( se2fe(entySe, entyFe, te), + ) + )$( sameas(enty,"co2") ) + !! add emissions from chemical feedstock with unknown fate + + sum(entyFe2sector2emiMkt_NonEn(entyFe,"indst",emiMkt), + sum(se2fe(entySe,entyFe,te), vm_feedstockEmiUnknownFate(t,regi,entySe,entyFe,emiMkt) - ) - )$( sameas(enty,"co2") ) -*** LP, Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS capacity don't have the same lifetime - + ( v_co2capturevalve(t,regi)$( sameas(enty,"co2") ) )$(sameas(emiMkt,"ETS")) -*** JS CO2 from short-term CCU (short term CCU co2 is emitted again in a time period shorter than 5 years) + ) + )$( sameas(enty,"co2") ) + !! Valve from cco2 capture step, to mangage if capture capacity and CCU/CCS + !! capacity don't have the same lifetime + + v_co2capturevalve(t,regi)$( sameas(enty,"co2") AND sameas(emiMkt,"ETS") ) + !! CO2 from short-term CCU (short term CCU co2 is emitted again in a time + !! period shorter than 5 years) + sum(teCCU2rlf(te2,rlf), - vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") ) - )$(sameas(emiMkt,"ETS")) + vm_co2CCUshort(t,regi,"cco2","ccuco2short",te2,rlf)$( sameas(enty,"co2") ) + )$(sameas(emiMkt,"ETS")) ; ***-------------------------------------------------- *' Total emissions ***-------------------------------------------------- -q_emiAllMkt(t,regi,emi,emiMkt).. +q_emiAllMkt(t,regi,emi,emiMkt) .. vm_emiAllMkt(t,regi,emi,emiMkt) =e= vm_emiTeMkt(t,regi,emi,emiMkt) diff --git a/modules/02_welfare/utilitarian/equations.gms b/modules/02_welfare/utilitarian/equations.gms index 1fdb056d7..1a8b5fcad 100644 --- a/modules/02_welfare/utilitarian/equations.gms +++ b/modules/02_welfare/utilitarian/equations.gms @@ -21,29 +21,55 @@ q02_welfareGlob.. *' summing over all time steps taking into account the pure time preference rate. *' Assuming an intertemporal elasticity of substitution of 1, it holds: ***--------------------------------------------------------------------------- -q02_welfare(regi).. - v02_welfare(regi) +q02_welfare(regi) .. + v02_welfare(regi) =e= sum(ttot $(ttot.val ge 2005), - pm_welf(ttot) * pm_ts(ttot) * (1 / ( (1 + pm_prtp(regi))**(pm_ttot_val(ttot)-2005) ) ) - * ( (pm_pop(ttot,regi) - * ( - ((( (vm_cons(ttot,regi))/pm_pop(ttot,regi))**(1-1/pm_ies(regi))-1)/(1-1/pm_ies(regi)) )$(pm_ies(regi) ne 1) - + (log((vm_cons(ttot,regi)) / pm_pop(ttot,regi)))$(pm_ies(regi) eq 1) - ) + pm_welf(ttot) + * pm_ts(ttot) + * (1 / ((1 + pm_prtp(regi)) ** (pm_ttot_val(ttot) - 2005))) + * ( ( pm_pop(ttot,regi) + * ( + ( ( ( vm_cons(ttot,regi) + / pm_pop(ttot,regi) ) -$if %cm_INCONV_PENALTY% == "on" - v02_inconvPen(ttot,regi) - v02_inconvPenCoalSolids(ttot,regi) -*** inconvenience cost for fuel switching in FE between fossil, biogenic, synthetic solids, liquids and gases across sectors and emissions markets -$if "%cm_INCONV_PENALTY_FESwitch%" == "on" - sum((entySe,entyFe,te,sector,emiMkt)$(se2fe(entySe,entyFe,te) AND entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt) AND (entySeBio(entySe) OR entySeSyn(entySe) OR entySeFos(entySe)) ), v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt))/1e3 -*** inconvenience cost for fuel switching in FE non-energy use between biogenic, synthetic solids, liquids and gases - - sum((entySe,entyFe,te,sector,emiMkt)$(se2fe(entySe,entyFe,te) - AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) - AND (entySeBio(entySe) - OR entySeSyn(entySe) )), - v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + ** (1 - (1 / pm_ies(regi))) + - 1 + ) + / (1 - (1 / pm_ies(regi))) + )$( pm_ies(regi) ne 1 ) + + log((vm_cons(ttot,regi)) / pm_pop(ttot,regi))$( pm_ies(regi) eq 1 ) + ) + ) +$ifthen %cm_INCONV_PENALTY% == "on" + - v02_inconvPen(ttot,regi) + - v02_inconvPenCoalSolids(ttot,regi) +$endif +$ifthen "%cm_INCONV_PENALTY_FESwitch%" == "on" + !! inconvenience cost for fuel switching in FE between fossil, + !! biogenic, synthetic solids, liquids and gases across sectors and + !! emissions markets + - sum((entySe,entyFe,te,sector,emiMkt)$( + se2fe(entySe,entyFe,te) + AND entyFe2Sector(entyFe,sector) + AND sector2emiMkt(sector,emiMkt) + AND ( entySeBio(entySe) + OR entySeSyn(entySe) + OR entySeFos(entySe)) ), + v02_NegInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + + v02_PosInconvPenFeBioSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + ) + / 1e3 + !! inconvenience cost for fuel switching in FE non-energy use between biogenic, synthetic solids, liquids and gases + - sum((entySe,entyFe,te,sector,emiMkt)$( + se2fe(entySe,entyFe,te) + AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) + AND (entySeBio(entySe) OR entySeSyn(entySe) ) ), + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - ) - /1e3 + ) + / 1e3 +$endif ) ) ; @@ -88,18 +114,19 @@ q02_inconvPenFeBioSwitch(ttot,regi,entySe,entyFe,te,sector,emiMkt)$((ttot.val ge ; $ENDIF.INCONV_bioSwitch -*** inconvenience cost for fuel switching between biomass/synfuel in non-energy use -q02_inconvPenNonEnSwitch(ttot,regi,entySe,entyFe,te,sector,emiMkt)$((ttot.val ge cm_startyear) - AND se2fe(entySe,entyFe,te) - AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) - AND (entySeBio(entySe) - OR entySeSyn(entySe) ) ).. - vm_demFENonEnergySector(ttot,regi,entySe,entyFe,sector,emiMkt) - - vm_demFENonEnergySector(ttot-1,regi,entySe,entyFe,sector,emiMkt) - + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - - v02_PosInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) - =e= - 0 +*** inconvenience cost for fuel switching between biomass/synfuel in non-energy +*** use +q02_inconvPenNonEnSwitch(ttot,regi,entySe,entyFe,te,sector,emiMkt)$( + ttot.val ge cm_startyear + AND se2fe(entySe,entyFe,te) + AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) + AND (entySeBio(entySe) OR entySeSyn(entySe) ) ) .. + vm_demFENonEnergySector(ttot,regi,entySe,entyFe,sector,emiMkt) + - vm_demFENonEnergySector(ttot-1,regi,entySe,entyFe,sector,emiMkt) + + v02_NegInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + - v02_PosInconvPenNonEnSwitch(ttot,regi,entySe,entyFe,sector,emiMkt) + =e= + 0 ; *** EOF ./modules/02_welfare/utilitarian/equations.gms diff --git a/modules/02_welfare/utilitarian/postsolve.gms b/modules/02_welfare/utilitarian/postsolve.gms index 2bd6d02fa..b0800d97a 100644 --- a/modules/02_welfare/utilitarian/postsolve.gms +++ b/modules/02_welfare/utilitarian/postsolve.gms @@ -17,16 +17,21 @@ p02_inconvPen_Switch_Track(t,regi) = (sum((entySe,entyFe,te,sector,emiMkt)$(se2f / vm_cons.l(t,regi); $ENDIF.INCONV_bioSwitch -*** track inconvenience penalty for no-energy bio/synfuel switching to check how large it is relative to consumption -p02_inconvPen_NonEn_Switch_Track(t,regi) = (sum((entySe,entyFe,te,sector,emiMkt)$(se2fe(entySe,entyFe,te) - AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) - AND (entySeBio(entySe) - OR entySeSyn(entySe) )), - v02_NegInconvPenNonEnSwitch.l(t,regi,entySe,entyFe,sector,emiMkt) - + v02_NegInconvPenNonEnSwitch.l(t,regi,entySe,entyFe,sector,emiMkt))/1e3) - / vm_cons.l(t,regi); +*** track inconvenience penalty for no-energy bio/synfuel switching to check +*** how large it is relative to consumption +p02_inconvPen_NonEn_Switch_Track(t,regi) + = ( sum((entySe,entyFe,te,sector,emiMkt)$( + se2fe(entySe,entyFe,te) + AND entyFe2sector2emiMkt_NonEn(entyFe,sector,emiMkt) + AND (entySeBio(entySe) OR entySeSyn(entySe) ) ), + v02_NegInconvPenNonEnSwitch.l(t,regi,entySe,entyFe,sector,emiMkt) + + v02_NegInconvPenNonEnSwitch.l(t,regi,entySe,entyFe,sector,emiMkt) + ) + / 1e3 + ) + / vm_cons.l(t,regi); + *the inequality term in the SCC calculation is set to 1 here pm_sccIneq(tall,regi) = 1; - *** EOF ./modules/02_welfare/utilitarian/postsolve.gms diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 6c67c11ff..f9ca9e7c9 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -45,8 +45,6 @@ $endif.process_based_steel 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_SecCC(ttot,all_regi,secInd37) "FE per subsector whose emissions can be captured, helper parameter for calculation of industry captured CO2" - -; $ifThen.CESMkup not "%cm_CESMkup_ind%" == "standard" p37_CESMkup_input(all_in) "markup cost parameter read in from config for CES levels in industry to influence demand-side cost and efficiencies in CES tree [trUSD/CES input]" / %cm_CESMkup_ind% / @@ -59,7 +57,6 @@ $endif.sec_steel_scen ; Positive Variables - vm_macBaseInd(ttot,all_regi,all_enty,secInd37) "industry CCS baseline emissions [GtC/a]" vm_emiIndCCS(ttot,all_regi,all_enty) "industry CCS emissions [GtC/a]" vm_IndCCSCost(ttot,alL_regi,all_enty) "industry CCS cost" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index bcd1ea4bb..f3fa83298 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -127,7 +127,7 @@ q37_macBaseInd(ttot,regi,entyFE,secInd37)$( ttot.val ge cm_startyear ) .. vm_macBaseInd(ttot,regi,entyFE,secInd37) =e= sum((secInd37_2_pf(secInd37,ppfen_industry_dyn37(in)), - fe2ppfen(entyFE,in))$(entyFECC37(entyFE)), + fe2ppfen(entyFE,in))$( entyFECC37(entyFE) ), ( vm_cesIO(ttot,regi,in) - ( p37_chemicals_feedstock_share(ttot,regi) * vm_cesIO(ttot,regi,in) @@ -229,8 +229,8 @@ q37_chemicals_feedstocks_limit(t,regi)$( t.val ge cm_startyear ) .. *** Flow of non-energy feedstocks. It is used for emissions accounting q37_demFeFeedstockChemIndst(ttot,regi,entyFE,emiMkt)$( - ttot.val ge cm_startyear - AND entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + ttot.val ge cm_startyear + AND entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. sum(se2fe(entySE,entyFE,te), vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) ) @@ -246,10 +246,12 @@ q37_demFeFeedstockChemIndst(ttot,regi,entyFE,emiMkt)$( ; * feedstocks flow has to be lower than total energy flow into industry -q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$(ttot.val ge cm_startyear - AND sefe(entySE,entyFE) AND sector2emiMkt("indst",emiMkt) - AND entyFe2Sector(entyFe,"indst") AND entyFeCC37(entyFe)).. - +q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$( + ttot.val ge cm_startyear + AND sefe(entySE,entyFE) + AND sector2emiMkt("indst",emiMkt) + AND entyFe2Sector(entyFe,"indst") + AND entyFeCC37(entyFe) ) .. vm_demFESector(ttot,regi,entySE,entyFE,"indst",emiMkt) =g= vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) @@ -257,7 +259,7 @@ q37_feedstocksLimit(ttot,regi,entySE,entyFE,emiMkt)$(ttot.val ge cm_startyear *** calculate carbon contained in chemical feedstocks q37_FeedstocksCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. vm_FeedstocksCarbon(ttot,regi,entySE,entyFE,emiMkt) =e= vm_demFENonEnergySector(ttot,regi,entySE,entyFE,"indst",emiMkt) @@ -266,7 +268,7 @@ q37_FeedstocksCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( *** calculate carbon contained in plastics [GtC] q37_plasticsCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) =e= vm_FeedstocksCarbon(ttot,regi,entySE,entyFE,emiMkt) @@ -275,27 +277,28 @@ q37_plasticsCarbon(ttot,regi,sefe(entySE,entyFE),emiMkt)$( *** calculate emissions from plastics incineration q37_incinerationEmi(ttot,regi,sefe(entySE,entyFE),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. vm_incinerationEmi(ttot,regi,entySE,entyFE,emiMkt) =e= vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) * pm_incinerationRate(ttot,regi) ; -***calculate carbon contained in non-incinerated plastics -*** this is used in emissions accounting to subtract the carbon that gets sequestered in plastic products +*** calculate carbon contained in non-incinerated plastics +*** this is used in emissions accounting to subtract the carbon that gets +*** sequestered in plastic products q37_nonIncineratedPlastics(ttot,regi,sefe(entySE,entyFE),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. vm_nonIncineratedPlastics(ttot,regi,entySE,entyFE,emiMkt) =e= vm_plasticsCarbon(ttot,regi,entySE,entyFE,emiMkt) - * (1-pm_incinerationRate(ttot,regi)) + * (1 - pm_incinerationRate(ttot,regi)) ; *** calculate flow of carbon contained in chemical feedstock with unknown fate *** it is assumed that this carbon is re-emitted in the same timestep q37_feedstockEmiUnknownFate(ttot,regi,sefe(entySE,entyFE),emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) ) .. vm_feedstockEmiUnknownFate(ttot,regi,entySE,entyFE,emiMkt) =e= vm_FeedstocksCarbon(ttot,regi,entySE,entyFE,emiMkt) @@ -305,8 +308,8 @@ q37_feedstockEmiUnknownFate(ttot,regi,sefe(entySE,entyFE),emiMkt)$( *** in baseline runs, all industrial feedstocks should come from fossil energy *** carriers, no biofuels or synfuels q37_FossilFeedstock_Base(t,regi,entyFE,emiMkt)$( - entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) - AND cm_emiscen eq 1 ) .. + entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt) + AND cm_emiscen eq 1 ) .. sum(entySE, vm_demFENonEnergySector(t,regi,entySE,entyFE,"indst",emiMkt)) =e= sum(entySEFos, diff --git a/modules/37_industry/subsectors/postsolve.gms b/modules/37_industry/subsectors/postsolve.gms index eb0adebba..1701e07a8 100644 --- a/modules/37_industry/subsectors/postsolve.gms +++ b/modules/37_industry/subsectors/postsolve.gms @@ -68,65 +68,74 @@ display vm_demFENonEnergySector.l; *** to be deleted before merge of feedstocks implementation, just checking the values *** check FE w/o non-energy use calculation -p37_FE_noNonEn(t,regi,enty,enty2,emiMkt) = - sum(sector$(entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), - vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) - - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), - vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt))); - +p37_FE_noNonEn(t,regi,enty,enty2,emiMkt) + = sum(sector$( entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt) ), + vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) + - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt) + ) + ); *** check chemical process emissions calculation -p37_Emi_ChemProcess(t,regi,emi,emiMkt) = - sum((entyFE2sector2emiMkt_NonEn(entyFE,sector,emiMkt), - se2fe(entySE,entyFE,te)), +p37_Emi_ChemProcess(t,regi,emi,emiMkt) + = sum((entyFE2sector2emiMkt_NonEn(entyFE,sector,emiMkt), + se2fe(entySE,entyFE,te)), vm_demFENonEnergySector.l(t,regi,entySE,entyFE,sector,emiMkt) - * pm_emifacNonEnergy(t,regi,entySE,entyFE,sector,emi) + * pm_emifacNonEnergy(t,regi,entySE,entyFE,sector,emi) ); +*** check biogenic and synthetic carbon in feedstocks that generate negative +*** emissions +p37_CarbonFeed_CDR(t,regi,emiMkt) + = sum(entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt), + sum(se2fe(entySE,entyFE,te)$( entySEBio(entySE) OR entySESyn(entySE) ), + vm_FeedstocksCarbon.l(t,regi,entySE,entyFE,emiMkt) + ) + ); -*** check biogenic and synthetic carbon in feedstocks that generate negative emissions -p37_CarbonFeed_CDR(t,regi,emiMkt) = sum( entyFE2sector2emiMkt_NonEn(entyFE,"indst",emiMkt), - sum( se2fe(entySE, entyFE, te)$(entySEBio(entySE) OR entySESyn(entySE)), - vm_FeedstocksCarbon.l(t,regi,entySE,entyFE,emiMkt) - )); - +*** check feedstock correction term of left hand-side of Indst FE2CES equation +p37_IndFeBal_FeedStock_LH(ttot,regi,entyFE,emiMkt) + = sum(se2fe(entySE,entyFE,te), + vm_demFENonEnergySector.l(ttot,regi,entySE,entyFE,"indst",emiMkt) + ); -*** check feedstock correction term of left hand-side of Indst FE2CES equation -p37_IndFeBal_FeedStock_LH(ttot,regi,entyFE,emiMkt) = sum(se2fe(entySE,entyFE,te), - vm_demFENonEnergySector.l(ttot,regi,entySE,entyFE,"indst",emiMkt) - ); -*** check feedstock correction term of left right-side of Indst FE2CES equation -p37_IndFeBal_FeedStock_RH(ttot,regi,entyFE,emiMkt) = sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), - secInd37_emiMkt(secInd37,emiMkt),secInd37_2_pf(secInd37,in_chemicals_37(in))), - +*** check feedstock correction term of left right-side of Indst FE2CES equation +p37_IndFeBal_FeedStock_RH(ttot,regi,entyFE,emiMkt) + = sum((fe2ppfEN(entyFE,ppfen_industry_dyn37(in)), + secInd37_emiMkt(secInd37,emiMkt), + secInd37_2_pf(secInd37,in_chemicals_37(in))), ( vm_cesIO.l(ttot,regi,in) + pm_cesdata(ttot,regi,in,"offset_quantity") ) - * p37_chemicals_feedstock_share(ttot,regi) - ); + * p37_chemicals_feedstock_share(ttot,regi) + ); *** check FE combustion emissions with non-energy use correction -p37_EmiEnDemand_NonEnCorr(t,regi) = sum(emiMkt, - sum(se2fe(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,"co2") - * sum(sector$(entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), - vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) -*** substract FE used for non-energy, does not lead to energy-related emissions - - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), - vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt)) - ) - ) - ); - -p37_EmiEnDemand(t,regi) = sum(emiMkt, - sum(se2fe(enty,enty2,te), - pm_emifac(t,regi,enty,enty2,te,"co2") - * sum(sector$(entyFE2Sector(enty2,sector) AND sector2emiMkt(sector,emiMkt)), - vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) - ) - ) - ); +p37_EmiEnDemand_NonEnCorr(t,regi) + = sum(emiMkt, + sum(se2fe(enty,enty2,te), + pm_emifac(t,regi,enty,enty2,te,"co2") + * sum(sector$( entyFE2Sector(enty2,sector) + AND sector2emiMkt(sector,emiMkt) ), + vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) + !! substract FE used for non-energy, does not lead to energy-related + !! emissions + - sum(entyFE2sector2emiMkt_NonEn(enty2,sector,emiMkt), + vm_demFENonEnergySector.l(t,regi,enty,enty2,sector,emiMkt) + ) + ) + ) + ); +p37_EmiEnDemand(t,regi) + = sum(emiMkt, + sum(se2fe(enty,enty2,te), + pm_emifac(t,regi,enty,enty2,te,"co2") + * sum(sector$( entyFE2Sector(enty2,sector) + AND sector2emiMkt(sector,emiMkt) ), + vm_demFeSector.l(t,regi,enty,enty2,sector,emiMkt) + ) + ) + ); *** EOF ./modules/37_industry/subsectors/postsolve.gms - diff --git a/modules/37_industry/subsectors/preloop.gms b/modules/37_industry/subsectors/preloop.gms index 42bac0286..9f82e0c2f 100644 --- a/modules/37_industry/subsectors/preloop.gms +++ b/modules/37_industry/subsectors/preloop.gms @@ -9,7 +9,9 @@ *** initialize captured CO2 parameter pm_IndstCO2Captured(t,regi,entySE,entyFE,secInd37,emiMkt) = 0; -*** calculate parameter for feedstock carbon content as difference between combustion emissions factor of FE and industrial process emissions factor of feedstocks +*** calculate parameter for feedstock carbon content as difference between +*** combustion emissions factor of FE and industrial process emissions factor +*** of feedstocks p37_FeedstockCarbonContent(ttot,regi,entyFE) = sum(se2fe(entySEFos,entyFE,te), pm_emifac(ttot,regi,entySEFos,entyFE,te,"co2") diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index e05bc534f..fc6253e8f 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -363,9 +363,9 @@ entyFECC37(all_enty) "FE carriers in industry which can be used for CO2 capture entySE_emiFac_feedstocks(all_enty,all_enty) "SE type of emissions factor that should be used to calculate carbon contained in feedstocks" / - sesofos.fesos - seliqfos.fehos - segafos.fegas + sesofos . fesos + seliqfos . fehos + segafos . fegas / ppfen_MkupCost37(all_in) "primary production factors in industry on which CES mark-up cost can be levied that are counted as expenses in the macroeconomic budget equation"