From 25bdaea47ab7ad0bf8dbb1a0c877be2f2db855dd Mon Sep 17 00:00:00 2001 From: Renato-Rodrigues Date: Mon, 9 Feb 2026 19:22:13 +0100 Subject: [PATCH 1/2] add support for FE sector quantity targets --- .../47_regipol/regiCarbonPrice/postsolve.gms | 27 +++++++++++++++++++ .../47_regipol/regiCarbonPrice/presolve.gms | 9 +++++++ modules/47_regipol/regiCarbonPrice/sets.gms | 7 +++++ 3 files changed, 43 insertions(+) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 4cb57cdc4a..733d569eb3 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -494,6 +494,15 @@ p47_implicitQttyTargetTax0(t,regi) = ( sum(entySe$energyQttyTargetANDGroup2enty("FE",qttyTargetGroup,entySe), sum(se2fe(entySe,entyFe,te), sum((sector,emiMkt)$(entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt)))) )$(sameas(qttyTarget,"FE") or sameas(qttyTarget,"FE_wo_b") or sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) + + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_indst",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,"indst",emiMkt)))) + )$(sameas(qttyTarget,"FE_indst") AND sameas(qttyTargetGroup,"all")) + + + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_build",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"build") AND sector2emiMkt("build",emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,"build",emiMkt)))) + )$(sameas(qttyTarget,"FE_build") AND sameas(qttyTargetGroup,"all")) + + + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_trans",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"trans") AND sector2emiMkt("trans",emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,"trans",emiMkt)))) + )$(sameas(qttyTarget,"FE_trans") AND sameas(qttyTargetGroup,"all")) + + ( sum(ccs2te(ccsCo2(enty),enty2,te), sum(teCCS2rlf(te,rlf),vm_co2CCS.l(t,regi,enty,enty2,te,rlf))) )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"all")) + @@ -526,6 +535,15 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt )$(sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) )$(sameas(qttyTarget,"FE") or sameas(qttyTarget,"FE_wo_b") or sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(entyFe$energyQttyTargetANDGroup2enty("FE_indst",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"indst",emiMkt)))) ) + )$(sameas(qttyTarget,"FE_indst") AND sameas(qttyTargetGroup,"all")) + + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(entyFe$energyQttyTargetANDGroup2enty("FE_build",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"build") AND sector2emiMkt("build",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"build",emiMkt)))) ) + )$(sameas(qttyTarget,"FE_build") AND sameas(qttyTargetGroup,"all")) + + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(entyFe$energyQttyTargetANDGroup2enty("FE_trans",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"trans") AND sector2emiMkt("trans",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"trans",emiMkt)))) ) + )$(sameas(qttyTarget,"FE_trans") AND sameas(qttyTargetGroup,"all")) + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(ccs2te(ccsCo2(enty),enty2,te), sum(teCCS2rlf(te,rlf),vm_co2CCS.l(ttot,regi,enty,enty2,te,rlf)))) )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"all")) + @@ -569,6 +587,15 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt )$(sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) ) )$(sameas(qttyTarget,"FE") or sameas(qttyTarget,"FE_wo_b") or sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) + + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(entyFe$energyQttyTargetANDGroup2enty("FE_indst",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"indst",emiMkt)))) ) + )$(sameas(qttyTarget,"FE_indst") AND sameas(qttyTargetGroup,"all")) + + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(entyFe$energyQttyTargetANDGroup2enty("FE_build",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"build") AND sector2emiMkt("build",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"build",emiMkt)))) ) + )$(sameas(qttyTarget,"FE_build") AND sameas(qttyTargetGroup,"all")) + + + ( sum(regi$regi_groupExt(ext_regi,regi), sum(entyFe$energyQttyTargetANDGroup2enty("FE_trans",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"trans") AND sector2emiMkt("trans",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"trans",emiMkt)))) ) + )$(sameas(qttyTarget,"FE_trans") AND sameas(qttyTargetGroup,"all")) ; ); ); diff --git a/modules/47_regipol/regiCarbonPrice/presolve.gms b/modules/47_regipol/regiCarbonPrice/presolve.gms index 9d96a7f67c..a1d93369f3 100644 --- a/modules/47_regipol/regiCarbonPrice/presolve.gms +++ b/modules/47_regipol/regiCarbonPrice/presolve.gms @@ -62,6 +62,15 @@ p47_implicitQttyTargetTax0(t,regi) = ( sum(entySe$energyQttyTargetANDGroup2enty("FE",qttyTargetGroup,entySe), sum(se2fe(entySe,entyFe,te), sum((sector,emiMkt)$(entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt)))) )$(sameas(qttyTarget,"FE") or sameas(qttyTarget,"FE_wo_b") or sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) + + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_indst",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"indst",emiMkt)))) + )$(sameas(qttyTarget,"FE_indst") AND sameas(qttyTargetGroup,"all")) + + + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_build",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"build") AND sector2emiMkt("build",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"build",emiMkt)))) + )$(sameas(qttyTarget,"FE_build") AND sameas(qttyTargetGroup,"all")) + + + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_trans",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"trans") AND sector2emiMkt("trans",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"trans",emiMkt)))) + )$(sameas(qttyTarget,"FE_trans") AND sameas(qttyTargetGroup,"all")) + + ( sum(ccs2te(ccsCo2(enty),enty2,te), sum(teCCS2rlf(te,rlf),vm_co2CCS.l(t,regi,enty,enty2,te,rlf))) )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"all")) + diff --git a/modules/47_regipol/regiCarbonPrice/sets.gms b/modules/47_regipol/regiCarbonPrice/sets.gms index 61ca8a8ca2..631ce0d7fa 100644 --- a/modules/47_regipol/regiCarbonPrice/sets.gms +++ b/modules/47_regipol/regiCarbonPrice/sets.gms @@ -50,6 +50,9 @@ qttyTarget "quantity target for energy carrier level (primary, secondary, final PE "Primary Energy" SE "Secondary Energy" FE "Final Energy" + FE_indst "Final Energy industry" + FE_build "Final Energy buildings" + FE_trans "Final Energy transport" FE_wo_b "Final Energy without bunkers" FE_wo_n_e "Final Energy without non-energy" FE_wo_b_wo_n_e "Final Energy without bunkers and non-energy" @@ -100,6 +103,10 @@ energyQttyTargetANDGroup2enty(qttyTarget,qttyTargetGroup,all_enty) "set combinin FE.hydrogen.(seh2) FE.electricity.(seel) FE.heat.(sehe) +*** Total final energy per sector and final energy type + FE_indst.all.(fegas,fehos,fesos,feels,fehes,feh2s) + FE_build.all.(fegas,fehos,fesos,feels,fehes,feh2s) + FE_trans.all.(fepet,fedie,feh2t,feelt,fegat) / qttyDelayType_47 "options to define different delay rules for starting the quantity targets algorithm" From 609edc1c96ff00f074a21df459c7493814b2655d Mon Sep 17 00:00:00 2001 From: Renato-Rodrigues Date: Mon, 9 Feb 2026 21:06:35 +0100 Subject: [PATCH 2/2] adjust time set --- modules/47_regipol/regiCarbonPrice/presolve.gms | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/modules/47_regipol/regiCarbonPrice/presolve.gms b/modules/47_regipol/regiCarbonPrice/presolve.gms index a1d93369f3..35b9c6f5b6 100644 --- a/modules/47_regipol/regiCarbonPrice/presolve.gms +++ b/modules/47_regipol/regiCarbonPrice/presolve.gms @@ -62,13 +62,13 @@ p47_implicitQttyTargetTax0(t,regi) = ( sum(entySe$energyQttyTargetANDGroup2enty("FE",qttyTargetGroup,entySe), sum(se2fe(entySe,entyFe,te), sum((sector,emiMkt)$(entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,sector,emiMkt)))) )$(sameas(qttyTarget,"FE") or sameas(qttyTarget,"FE_wo_b") or sameas(qttyTarget,"FE_wo_n_e") or sameas(qttyTarget,"FE_wo_b_wo_n_e")) + - ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_indst",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"indst",emiMkt)))) + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_indst",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"indst") AND sector2emiMkt("indst",emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,"indst",emiMkt)))) )$(sameas(qttyTarget,"FE_indst") AND sameas(qttyTargetGroup,"all")) + - ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_build",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"build") AND sector2emiMkt("build",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"build",emiMkt)))) + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_build",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"build") AND sector2emiMkt("build",emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,"build",emiMkt)))) )$(sameas(qttyTarget,"FE_build") AND sameas(qttyTargetGroup,"all")) + - ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_trans",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"trans") AND sector2emiMkt("trans",emiMkt)), vm_demFeSector.l(ttot,regi,entySe,entyFe,"trans",emiMkt)))) + ( sum(entyFe$energyQttyTargetANDGroup2enty("FE_trans",qttyTargetGroup,entyFe), sum(se2fe(entySe,entyFe,te), sum((emiMkt)$(entyFe2Sector(entyFe,"trans") AND sector2emiMkt("trans",emiMkt)), vm_demFeSector.l(t,regi,entySe,entyFe,"trans",emiMkt)))) )$(sameas(qttyTarget,"FE_trans") AND sameas(qttyTargetGroup,"all")) + ( sum(ccs2te(ccsCo2(enty),enty2,te), sum(teCCS2rlf(te,rlf),vm_co2CCS.l(t,regi,enty,enty2,te,rlf)))