From 7d4e87128fe2c69d27f7de75156dedb4364ed478 Mon Sep 17 00:00:00 2001 From: clarabachorz Date: Fri, 27 Mar 2026 11:08:12 +0100 Subject: [PATCH 1/4] remove implicit early retirement in steel --- modules/37_industry/subsectors/declarations.gms | 1 + modules/37_industry/subsectors/equations.gms | 15 +++++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index b55f1e78f2..8b541f0a85 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -155,6 +155,7 @@ $endif.no_calibration q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" + q37_limitCapMatHist(tall,all_regi,all_te) "Material-flow conversion is limited by capacities (historical)" q37_limitCapMat(tall,all_regi,all_te) "Material-flow conversion is limited by capacities" q37_emiPrc(ttot,all_regi,all_enty,all_te,opmoPrc) "Local industry emissions pre-capture; Only used as baseline for CCS [GtC/a]" q37_emiCCPrc(tall,all_regi,emiInd37) "Captured emissions from CCS" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index 26d4b68f49..dcceb75d6d 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -464,9 +464,9 @@ q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. ; ***------------------------------------------------------ -*' Definition of capacity constraints +*' Definition of capacity constraints (historical and current) ***------------------------------------------------------ -q37_limitCapMat(t,regi,tePrc) .. +q37_limitCapMatHist(t,regi,tePrc)$(t.val le 2020) .. sum(tePrc2opmoPrc(tePrc,opmoPrc), vm_outflowPrc(t,regi,tePrc,opmoPrc) ) @@ -477,6 +477,17 @@ q37_limitCapMat(t,regi,tePrc) .. ) ; +q37_limitCapMat(t,regi,tePrc)$(t.val gt 2020) .. + sum(tePrc2opmoPrc(tePrc,opmoPrc), + vm_outflowPrc(t,regi,tePrc,opmoPrc) + ) + =e= + sum(teMat2rlf(tePrc,rlf), + vm_capFac(t,regi,tePrc) + * vm_cap(t,regi,tePrc,rlf) + ) +; + ***------------------------------------------------------ *' Emission from process based industry sector (pre CC) ***------------------------------------------------------ From d7c7026fa169191b450bbb91198480cde43a4e6d Mon Sep 17 00:00:00 2001 From: clarabachorz Date: Mon, 27 Apr 2026 17:03:22 +0200 Subject: [PATCH 2/4] calibration fix for primary steel --- .../29_CES_parameters/calibrate/bounds.gms | 23 +++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/modules/29_CES_parameters/calibrate/bounds.gms b/modules/29_CES_parameters/calibrate/bounds.gms index bad3b97540..44c450aa6d 100644 --- a/modules/29_CES_parameters/calibrate/bounds.gms +++ b/modules/29_CES_parameters/calibrate/bounds.gms @@ -58,6 +58,29 @@ loop (pf_industry_relaxed_bounds_dyn37(in), + INF$( sm_CES_calibration_iteration gt sm_tmp ); ); + +*' For primary steel, the upper bound from 2025 is too restrictive given slight inconsistencies in input data +*' This helps to accommodate these inconsistencies, though ECS remains difficult. +$offOrder +* vm_cesIO.up(t,regi,"ue_steel_primary")$(t.val gt 2005 AND NOT sameAs(regi, "ECS")) +vm_cesIO.up(t,regi,"ue_steel_primary")$(t.val gt 2005) += max( + pm_cesdata(t-1,regi,"ue_steel_primary","quantity"), + (pm_cesdata(t,regi,"ue_steel_primary","quantity") + *(2.5 + max(0, (sm_CES_calibration_iteration - 1) / sm_tmp)) + ))$( sm_CES_calibration_iteration le sm_tmp ) + + INF$( sm_CES_calibration_iteration gt sm_tmp + ); +$onOrder + +*' primary steel requires a more flexible upper bound for calibration, due to a historically low capacity factor in historical data (pre 2025) +* vm_cesIO.up(t,regi,"ue_steel_primary")$(t.val gt 2005) +* = ( pm_cesdata(t,regi,"ue_steel_primary","quantity") +* !! goes from 1.5 to 2.5 in +0.2 steps, then jumps to inf +* * (1.5 + max(0, (sm_CES_calibration_iteration - 1) / sm_tmp)) +* )$( sm_CES_calibration_iteration le sm_tmp ) +* + INF$( sm_CES_calibration_iteration gt sm_tmp ); + loop(p29_building_relaxed_bounds_dyn(in), vm_cesIO.lo(t,regi_dyn29(regi),in)$(t.val gt 2020 AND SAMEAS(regi, "MEA")) = pm_cesdata(t,regi,in,"quantity") * 0.95 ; From ef4e0a673ae1da876175cfc47ed5777948cf948f Mon Sep 17 00:00:00 2001 From: clarabachorz Date: Tue, 28 Apr 2026 16:37:07 +0200 Subject: [PATCH 3/4] change bfbof lifetime params --- core/input/generisdata_tech.prn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 1d89c09188..0671cba37d 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -173,7 +173,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" tech_stat inco0 400.0 200.0 420.0 350.0 omf 0.06 0.06 0.06 0.06 -lifetime 20 20 20 20 +lifetime 35 35 20 20 + bfcc idrcc inco0 1100 900 From ef63928334f0d0a7622862cda24c09685cc30c64 Mon Sep 17 00:00:00 2001 From: clarabachorz Date: Wed, 29 Apr 2026 18:50:54 +0200 Subject: [PATCH 4/4] remove generisdata_tech changes --- core/input/generisdata_tech.prn | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 0671cba37d..1d89c09188 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -173,7 +173,7 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" tech_stat inco0 400.0 200.0 420.0 350.0 omf 0.06 0.06 0.06 0.06 -lifetime 35 35 20 20 +lifetime 20 20 20 20 + bfcc idrcc inco0 1100 900