From 14b7f53026b41e4d116ec1c6560a13a08212de9f Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 9 Sep 2024 16:21:22 +0200 Subject: [PATCH 01/16] introduce shares which materials contribute to a ue --- modules/37_industry/subsectors/datainput.gms | 13 +++++++++++++ modules/37_industry/subsectors/declarations.gms | 3 ++- modules/37_industry/subsectors/equations.gms | 9 +++++---- 3 files changed, 20 insertions(+), 5 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 9ed2e8afc..cfc15b599 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -647,6 +647,19 @@ $endif.cm_subsec_model_steel *** -------------------------------- +p37_ue_share(all_enty,all_in) = 0.; +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" +p37_ue_share("sesteel","ue_steel_secondary") = 1.; +p37_ue_share("prsteel","ue_steel_primary") = 1.; +$endif.cm_subsec_model_steel +loop(ppfUePrc(in), + if(abs(sum(mat,p37_ue_share(mat,in))-1.) gt sm_eps, + abort "p37_ue_share must add to one for each ue"; + ); +); + +*** -------------------------------- + p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 54221db44..43d7606f6 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -29,6 +29,7 @@ Parameters p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" pm_outflowPrcIni(all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" + p37_ue_share(all_enty,all_in) "Fixed share of material in ue" p37_captureRate(all_te) "Capture rate of CCS technology" p37_selfCaptureRate(all_te) "Share of emissions from fossil fuels used for a CCS process which are captured by the CCS process itself" p37_priceMat(all_enty) "Prices of external material input [2005$/kg = trn2005$/Gt]" @@ -121,7 +122,7 @@ $endif.no_calibration !! process-based implementation q37_demMatPrc(tall,all_regi,mat) "Material demand of processes" q37_prodMat(tall,all_regi,mat) "Production volume of processes equals material flow of output material" - q37_mat2ue(tall,all_regi,all_in) "Connect materials production to ue ces tree nodes" + q37_mat2ue(tall,all_regi,mat,all_in) "Connect materials production to ue ces tree nodes" 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 e1875867d..45fe5b944 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -81,7 +81,7 @@ $endif.exogDem_scen *' energy mix, as that is what can be captured); vm_emiIndBase itself is not used for emission *' accounting, just as a CCS baseline. ***------------------------------------------------------ -q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) +q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) OR sameas(enty,"co2cement_process") ) .. vm_emiIndBase(t,regi,enty,secInd37) =e= @@ -403,9 +403,10 @@ q37_prodMat(t,regi,mat)$( matOut(mat) ) .. ***------------------------------------------------------ *' Hand-over to CES ***------------------------------------------------------ -q37_mat2ue(t,regi,in)$( ppfUePrc(in) ) .. - vm_cesIO(t,regi,in) - + pm_cesdata(t,regi,in,"offset_quantity") +q37_mat2ue(t,regi,mat,in)$( ppfUePrc(in) ) .. + (vm_cesIO(t,regi,in) + + pm_cesdata(t,regi,in,"offset_quantity")) + * p37_ue_share(mat,in) =e= sum(mat2ue(mat,in), p37_mat2ue(mat,in) From 4a9f7afb6c72c0a82edb855f435c78af02b3977d Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Mon, 9 Sep 2024 18:14:30 +0200 Subject: [PATCH 02/16] procss-based industry general historic production formulation --- modules/05_initialCap/on/preloop.gms | 10 +-- modules/37_industry/subsectors/bounds.gms | 18 +---- modules/37_industry/subsectors/datainput.gms | 68 ++++++++++++------- .../37_industry/subsectors/declarations.gms | 5 +- 4 files changed, 56 insertions(+), 45 deletions(-) diff --git a/modules/05_initialCap/on/preloop.gms b/modules/05_initialCap/on/preloop.gms index 3e7c9be6c..d30e59d9d 100644 --- a/modules/05_initialCap/on/preloop.gms +++ b/modules/05_initialCap/on/preloop.gms @@ -48,7 +48,7 @@ q05_eedemini(regi,enty).. + sum(tePrc2opmoPrc(tePrc,opmoPrc)$(pm_specFeDem("2005",regi,enty,tePrc,opmoPrc) gt 0.), pm_specFeDem("2005",regi,enty,tePrc,opmoPrc) * - pm_outflowPrcIni(regi,tePrc,opmoPrc) + pm_outflowPrcHist("2005",regi,tePrc,opmoPrc) )$(entyFeStat(enty)) ) * s05_inic_switch !! Transformation pathways that consume this enty: @@ -122,9 +122,9 @@ display v05_INIdemEn0.l, v05_INIcap0.l; p05_cap0(regi,te) = v05_INIcap0.l(regi,te); $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p05_cap0(regi,'bof') = pm_outflowPrcIni(regi,'bof','unheated') / pm_cf("2005",regi,'bof'); -p05_cap0(regi,'bf') = pm_outflowPrcIni(regi,'bf','standard') / pm_cf("2005",regi,'bf'); -p05_cap0(regi,'eaf') = pm_outflowPrcIni(regi,'eaf','sec') / pm_cf("2005",regi,'eaf'); +p05_cap0(regi,'bof') = pm_outflowPrcHist("2005",regi,'bof','unheated') / pm_cf("2005",regi,'bof'); +p05_cap0(regi,'bf') = pm_outflowPrcHist("2005",regi,'bf','standard') / pm_cf("2005",regi,'bf'); +p05_cap0(regi,'eaf') = pm_outflowPrcHist("2005",regi,'eaf','sec') / pm_cf("2005",regi,'eaf'); p05_cap0(regi,'idr') = 0.; p05_cap0(regi,"bfcc") =0.; p05_cap0(regi,"idrcc") =0.; @@ -543,7 +543,7 @@ if (cm_startyear gt 2005, *** Only the eta values of chp technologies have been adapted by initialCap script above. *** This is to avoid overwriting all of pm_data and make sure that scenario switches which adapt pm_data before this module work as intended. Execute_Loadpoint 'input_ref' p05_pmdata_ref = pm_data; - pm_data(regi,char,te)$( (sameas(te,"coalchp") + pm_data(regi,char,te)$( (sameas(te,"coalchp") OR sameas(te,"gaschp") OR sameas(te,"biochp") ) AND sameas(char,"eta") ) = p05_pmdata_ref(regi,char,te); diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 623ff6419..b7dd65909 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -137,21 +137,9 @@ $drop cm_indstExogScen_set $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! fix processes procudction in historic years if (cm_startyear eq 2005, - loop(regi, - loop(tePrc2opmoPrc(tePrc,opmoPrc), - vm_outflowPrc.fx("2005",regi,tePrc,opmoPrc) = pm_outflowPrcIni(regi,tePrc,opmoPrc); + loop((ttot,regi,tePrc2opmoPrc(tePrc,opmoPrc))$(ttot.val ge 2005 AND ttot.val le 2020), + vm_outflowPrc.fx(ttot,regi,tePrc,opmoPrc) = pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc); ); - ); - - loop(regi, - loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), - vm_outflowPrc.fx(ttot,regi,"eaf","pri") = 0.; - vm_outflowPrc.fx(ttot,regi,"idr","ng") = 0.; - vm_outflowPrc.fx(ttot,regi,"idr","h2") = 0.; - vm_outflowPrc.fx(ttot,regi,"bfcc","standard") = 0.; - vm_outflowPrc.fx(ttot,regi,"idrcc","ng") = 0.; - ); - ); ); !! Switch to turn off steel CCS @@ -173,7 +161,7 @@ $endif.fixedUE_scenario *** fix plastic waste to zero until 2010, and possible to reference scenario *** values between 2015 and cm_startyear -v37_plasticWaste.fx(t,regi,entySe,entyFe,emiMkt)$( +v37_plasticWaste.fx(t,regi,entySe,entyFe,emiMkt)$( t.val lt max(2015, cm_startyear) AND sefe(entySe,entyFe) AND entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index cfc15b599..7677e82ff 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -654,10 +654,27 @@ p37_ue_share("prsteel","ue_steel_primary") = 1.; $endif.cm_subsec_model_steel loop(ppfUePrc(in), if(abs(sum(mat,p37_ue_share(mat,in))-1.) gt sm_eps, + display p37_ue_share; abort "p37_ue_share must add to one for each ue"; ); ); +*** -------------------------------- +p37_teMatShareHist(tePrc,opmoPrc,mat) = 0.; +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" +p37_teMatShareHist("bof","unheated","prsteel") = 1.; +p37_teMatShareHist("eaf","sec","sesteel") = 1.; +$endif.cm_subsec_model_steel +loop(matFin(mat), + if(abs(sum((tePrc,opmoPrc),p37_teMatShareHist(tePrc,opmoPrc,mat))-1.) gt sm_eps, + display p37_teMatShareHist; + abort "p37_teMatShareHist must add to one for each matFin"; + ); +); +if(sum((tePrc,opmoPrc,mat)$(not matFin(mat)), p37_teMatShareHist(tePrc,opmoPrc,mat)) gt sm_eps, + display p37_teMatShareHist; + abort "p37_teMatShareHist must only be non-zero for matFin"; +); *** -------------------------------- p37_captureRate(all_te) = 0.; @@ -686,19 +703,27 @@ $endif.cm_subsec_model_steel *** -------------------------------- pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; -pm_outflowPrcIni(all_regi,all_te,opmoPrc) = 0.; +pm_outflowPrcHist(ttot,all_regi,all_te,opmoPrc) = 0.; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" if (cm_startyear eq 2005, - pm_outflowPrcIni(regi,"bof","unheated") = pm_fedemand("2005",regi,"ue_steel_primary"); - pm_outflowPrcIni(regi,"bf","standard") = p37_specMatDem("pigiron","bof","unheated") * pm_outflowPrcIni(regi,"bof","unheated"); - pm_outflowPrcIni(regi,"eaf","sec") = pm_fedemand("2005",regi,"ue_steel_secondary"); - pm_outflowPrcIni(regi,"eaf","pri") = 0.; - pm_outflowPrcIni(regi,"idr","ng") = 0.; - pm_outflowPrcIni(regi,"idr","h2") = 0.; - pm_outflowPrcIni(regi,"bfcc","standard") = 0.; - pm_outflowPrcIni(regi,"idrcc","ng") = 0.; - loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), + + + !! 2nd stage tech + loop((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in)), + pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) = pm_fedemand(ttot,regi,in) / p37_mat2ue(mat,in) * p37_teMatShareHist(tePrc,opmoPrc,mat); + ); + + !! 1st stage tech + loop((tePrc1,opmoPrc1,mat)$( + sum((tePrc2,opmoPrc2), tePrc2matIn(tePrc2,opmoPrc2,mat)) + AND tePrc2matOut(tePrc1,opmoPrc1,mat)), + pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) + = sum((tePrc2matOut(tePrc1,opmoPrc1,mat), + tePrc2matIn(tePrc2,opmoPrc2,mat)), + p37_specMatDem(mat,tePrc2,opmoPrc2) * pm_outflowPrcHist(ttot,regi,tePrc2,opmoPrc2) ); + ); + !! CC tech implicitly set to zero, since not part of the above sets pm_specFeDem(ttot,regi,"feh2s","idr","h2") = p37_specFeDemTarget("feh2s","idr","h2"); pm_specFeDem(ttot,regi,"feels","idr","h2") = p37_specFeDemTarget("feels","idr","h2"); @@ -721,22 +746,19 @@ if (cm_startyear eq 2005, ); !! loop over other years and blend - loop(entyFeStat(all_enty), - loop(tePrc(all_te), - loop(opmoPrc, - if( (p37_specFeDemTarget(all_enty,all_te,opmoPrc) gt 0.), - loop(ttot$(ttot.val > 2020), - !! fedemand in excess of BAT halves until 2055 - !! gams cannot handle float exponents, so pre-compute 0.5^(1/(2055-2020)) = 0.9804 - pm_specFeDem(ttot,regi,all_enty,all_te,opmoPrc) - = p37_specFeDemTarget(all_enty,all_te,opmoPrc) - + (pm_specFeDem("2020",regi,all_enty,all_te,opmoPrc) - p37_specFeDemTarget(all_enty,all_te,opmoPrc)) - * power(0.9804, ttot.val - 2020) ; - ); - ); + loop((entyFeStat(all_enty), tePrc(all_te), opmoPrc), + if( (p37_specFeDemTarget(all_enty,all_te,opmoPrc) gt 0.), + loop(ttot$(ttot.val > 2020), + !! fedemand in excess of BAT halves until 2055 + !! gams cannot handle float exponents, so pre-compute 0.5^(1/(2055-2020)) = 0.9804 + pm_specFeDem(ttot,regi,all_enty,all_te,opmoPrc) + = p37_specFeDemTarget(all_enty,all_te,opmoPrc) + + (pm_specFeDem("2020",regi,all_enty,all_te,opmoPrc) - p37_specFeDemTarget(all_enty,all_te,opmoPrc)) + * power(0.9804, ttot.val - 2020) ; ); ); ); + ); if (cm_startyear gt 2005, diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 43d7606f6..c66aee959 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -26,10 +26,11 @@ Parameters !! process-based implementation p37_specMatDem(mat,all_te,opmoPrc) "Specific materials demand of a production technology and operation mode [t_input/t_output]" pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) "Actual specific final-energy demand of a tech; blends between IEA data and Target [TWa/Gt_output]" - p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" - pm_outflowPrcIni(all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" + p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" + pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ue_share(all_enty,all_in) "Fixed share of material in ue" + p37_teMatShareHist(all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" p37_selfCaptureRate(all_te) "Share of emissions from fossil fuels used for a CCS process which are captured by the CCS process itself" p37_priceMat(all_enty) "Prices of external material input [2005$/kg = trn2005$/Gt]" From c095a587077cf1b3a73d12949dddee39123c5c9e Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Tue, 10 Sep 2024 10:56:01 +0200 Subject: [PATCH 03/16] general formulation of historic specific energy demands in process-based industry --- modules/37_industry/subsectors/datainput.gms | 57 ++++++++++++------- .../37_industry/subsectors/declarations.gms | 5 ++ modules/37_industry/subsectors/sets.gms | 10 ++++ 3 files changed, 50 insertions(+), 22 deletions(-) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 7677e82ff..630352134 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -676,6 +676,8 @@ if(sum((tePrc,opmoPrc,mat)$(not matFin(mat)), p37_teMatShareHist(tePrc,opmoPrc,m abort "p37_teMatShareHist must only be non-zero for matFin"; ); *** -------------------------------- +s37_shareHistFeDemPenalty = 0.6; +*** -------------------------------- p37_captureRate(all_te) = 0.; p37_selfCaptureRate(all_te) = 0.; @@ -703,46 +705,57 @@ $endif.cm_subsec_model_steel *** -------------------------------- pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; -pm_outflowPrcHist(ttot,all_regi,all_te,opmoPrc) = 0.; +pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; +p37_matFlowHist(tall,all_regi,mat) = 0.; $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" if (cm_startyear eq 2005, loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), - !! 2nd stage tech - loop((tePrc2matOut(tePrc,opmoPrc,mat), mat2ue(mat,in)), - pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) = pm_fedemand(ttot,regi,in) / p37_mat2ue(mat,in) * p37_teMatShareHist(tePrc,opmoPrc,mat); + loop(mat2ue(mat,in), + p37_matFlowHist(ttot,regi,mat) = pm_fedemand(ttot,regi,in) / p37_mat2ue(mat,in) * p37_ue_share(mat,in); + loop(tePrc2matOut(tePrc,opmoPrc,mat), + pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) = p37_matFlowHist(ttot,regi,mat) * p37_teMatShareHist(tePrc,opmoPrc,mat); + ); ); !! 1st stage tech + !! TODO: simply do this loop several times to fill more than two stages? loop((tePrc1,opmoPrc1,mat)$( sum((tePrc2,opmoPrc2), tePrc2matIn(tePrc2,opmoPrc2,mat)) AND tePrc2matOut(tePrc1,opmoPrc1,mat)), - pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) + p37_matFlowHist(ttot,regi,mat) = sum((tePrc2matOut(tePrc1,opmoPrc1,mat), tePrc2matIn(tePrc2,opmoPrc2,mat)), + !!TODO: enable p37_teMatShareHist here, too (has to be defined, though) p37_specMatDem(mat,tePrc2,opmoPrc2) * pm_outflowPrcHist(ttot,regi,tePrc2,opmoPrc2) ); + pm_outflowPrcHist(ttot,regi,tePrc1,opmoPrc1) = p37_matFlowHist(ttot,regi,mat); ); - !! CC tech implicitly set to zero, since not part of the above sets - pm_specFeDem(ttot,regi,"feh2s","idr","h2") = p37_specFeDemTarget("feh2s","idr","h2"); - pm_specFeDem(ttot,regi,"feels","idr","h2") = p37_specFeDemTarget("feels","idr","h2"); - - pm_specFeDem(ttot,regi,"fegas","idr","ng") = p37_specFeDemTarget("fegas","idr","ng"); - pm_specFeDem(ttot,regi,"feels","idr","ng") = p37_specFeDemTarget("feels","idr","ng"); - pm_specFeDem(ttot,regi,"fegas","bfcc","standard") = p37_specFeDemTarget("fegas","bfcc","standard"); - pm_specFeDem(ttot,regi,"feels","bfcc","standard") = p37_specFeDemTarget("feels","bfcc","standard"); - - pm_specFeDem(ttot,regi,"fegas","idrcc","ng") = p37_specFeDemTarget("fegas","idrcc","ng"); - pm_specFeDem(ttot,regi,"feels","idrcc","ng") = p37_specFeDemTarget("feels","idrcc","ng"); + loop((entyFe,ppfUePrc), + p37_demFeTarget(ttot,regi,entyFe,ppfUePrc) = sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) * p37_specFeDemTarget(entyFe,tePrc,opmoPrc)); + p37_demFeActual(ttot,regi,entyFe,ppfUePrc) = sum((fe2ppfen_no_ces_use(entyFe,all_in),ue2ppfenPrc(ppfUePrc,all_in)), pm_fedemand(ttot,regi,all_in) * sm_EJ_2_TWa); + ); - pm_specFeDem(ttot,regi,"fesos","bf","standard") = pm_fedemand(ttot,regi,"feso_steel") * sm_EJ_2_TWa / ( p37_specMatDem("pigiron","bof","unheated") * pm_fedemand(ttot,regi,"ue_steel_primary") ); - pm_specFeDem(ttot,regi,"fehos","bf","standard") = pm_fedemand(ttot,regi,"feli_steel") * sm_EJ_2_TWa / ( p37_specMatDem("pigiron","bof","unheated") * pm_fedemand(ttot,regi,"ue_steel_primary") ); - pm_specFeDem(ttot,regi,"fegas","bf","standard") = pm_fedemand(ttot,regi,"fega_steel") * sm_EJ_2_TWa / ( p37_specMatDem("pigiron","bof","unheated") * pm_fedemand(ttot,regi,"ue_steel_primary") ); - pm_specFeDem(ttot,regi,"feels","bf","standard") = pm_fedemand(ttot,regi,"feel_steel_primary") * sm_EJ_2_TWa / ( p37_specMatDem("pigiron","bof","unheated") * pm_fedemand(ttot,regi,"ue_steel_primary") ); + p37_demFeRatio(ttot,regi,ppfUePrc) = sum(entyFe,p37_demFeActual(ttot,regi,entyFe,ppfUePrc)) / sum(entyFe,p37_demFeTarget(ttot,regi,entyFe,ppfUePrc)); + + loop((tePrc2opmoPrc(tePrc,opmoPrc),regi,entyFe)$(p37_specFeDemTarget(entyFe,tePrc,opmoPrc) gt 0.01*sm_eps), + if((pm_outflowPrcHist(ttot,regi,tePrc,opmoPrc) gt sm_eps), + pm_specFeDem(ttot,regi,entyFe,tePrc,opmoPrc) + = p37_specFeDemTarget(entyFe,tePrc,opmoPrc) + * sum(tePrc2ue(tePrc,opmoPrc,in), + p37_demFeActual(ttot,regi,entyFe,in) + / p37_demFeTarget(ttot,regi,entyFe,in)); + else + pm_specFeDem(ttot,regi,entyFe,tePrc,opmoPrc) + = p37_specFeDemTarget(entyFe,tePrc,opmoPrc) + * (1. + + s37_shareHistFeDemPenalty + * (sum(tePrc2ue(tePrc,opmoPrc,ppfUePrc), p37_demFeRatio(ttot,regi,ppfUePrc)) + -1.)); + ); + ); - pm_specFeDem(ttot,regi,"feels","eaf","sec") = pm_fedemand(ttot,regi,"feel_steel_secondary") * sm_EJ_2_TWa / pm_fedemand(ttot,regi,"ue_steel_secondary"); - pm_specFeDem(ttot,regi,"feels","eaf","pri") = pm_specFeDem(ttot,regi,"feels","eaf","sec"); ); !! loop over other years and blend diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index c66aee959..ac9aa7b98 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -9,6 +9,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" + s37_shareHistFeDemPenalty "Share of the addiotional historic specific FE demand compared with BAT which is applied to non-historic tech" ; Parameters @@ -26,10 +27,14 @@ Parameters !! process-based implementation p37_specMatDem(mat,all_te,opmoPrc) "Specific materials demand of a production technology and operation mode [t_input/t_output]" pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) "Actual specific final-energy demand of a tech; blends between IEA data and Target [TWa/Gt_output]" + p37_demFeTarget(tall,all_regi,all_enty,all_in) "Total Fe demand that would be have been consumed historically for production of a UE if all tech had BAT efficiency" + p37_demFeActual(tall,all_regi,all_enty,all_in) "Total historic Fe demand consumed for production of a UE" p37_specFeDemTarget(all_enty,all_te,opmoPrc) "Best available technology (will be reached in convergence year) [TWa/Gt_output]" pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) "Exogenously prescribed production volume of processes in start year (from IEA data)" + p37_matFlowHist(tall,all_regi,all_enty) "Historic material flows" p37_mat2ue(all_enty,all_in) "Contribution of process output to ue in CES tree; Trivial if just one material per UE, as in steel [Gt/Gt]" p37_ue_share(all_enty,all_in) "Fixed share of material in ue" + p37_demFeRatio(tall,all_regi,all_in) "Ratio of historic Fe demand and Fe demand calculated from historic production and BAT specific demand" p37_teMatShareHist(all_te,opmoPrc,mat) "Share that a tePrc/opmoPrc historically contibrutes to production of a matFin" p37_captureRate(all_te) "Capture rate of CCS technology" p37_selfCaptureRate(all_te) "Share of emissions from fossil fuels used for a CCS process which are captured by the CCS process itself" diff --git a/modules/37_industry/subsectors/sets.gms b/modules/37_industry/subsectors/sets.gms index 7b3543a52..f0abe2819 100644 --- a/modules/37_industry/subsectors/sets.gms +++ b/modules/37_industry/subsectors/sets.gms @@ -589,6 +589,16 @@ $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" $endif.cm_subsec_model_steel / +ue2ppfenPrc(all_in,all_in) "correspondant to ces_eff_target_dyn37, but for use in process-based context, i.e. contained subsectors are complements" + / +$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" + ue_steel_primary . (feso_steel, feli_steel, fega_steel, feh2_steel, + feel_steel_primary) + + ue_steel_secondary . feel_steel_secondary +$endif.cm_subsec_model_steel + / + regi_fxDem37(ext_regi) "regions under which we fix UE demand to baseline demand" / $ifthen.fixedUE_scenario "%cm_fxIndUe%" == "on" From 6288093d05599522b832d68d6662dc7123e397f0 Mon Sep 17 00:00:00 2001 From: orichters Date: Tue, 10 Sep 2024 15:13:49 +0200 Subject: [PATCH 04/16] let selectPlots properly work with coupled runs --- DESCRIPTION | 4 ++-- scripts/output/comparison/selectPlots.R | 15 +++++++++------ 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/DESCRIPTION b/DESCRIPTION index be3ed69f4..bf9455e60 100644 --- a/DESCRIPTION +++ b/DESCRIPTION @@ -43,7 +43,7 @@ Imports: magclass, magpie4 (>= 2.3.10), magpiesets, - mip (>= 0.149.3), + mip (>= 0.150.0), modelstats, mrremind, mrvalidation, @@ -51,7 +51,7 @@ Imports: nleqslv, optparse, piamenv (>= 0.4.0), - piamInterfaces (>= 0.27.0), + piamInterfaces (>= 0.27.2), piamPlotComparison (>= 0.0.10), piamutils, plotly, diff --git a/scripts/output/comparison/selectPlots.R b/scripts/output/comparison/selectPlots.R index 1a89f951e..10497c3d9 100644 --- a/scripts/output/comparison/selectPlots.R +++ b/scripts/output/comparison/selectPlots.R @@ -29,13 +29,13 @@ postfix <- paste0(ifelse(filename_prefix == "", "", "-"), filename_prefix, timeS histPath <- remind2::getMifHistPath(outputdirs[1], mustWork = TRUE) -scenario <- lucode2::getScenNames(outputdirs) -mifs <- file.path(outputdirs, paste0("REMIND_generic_", scenario, ".mif")) -newnames <- make.unique(basename(outputdirs), sep = "_") +scenarios <- lucode2::getScenNames(outputdirs) +mifs <- file.path(outputdirs, paste0("REMIND_generic_", scenarios, ".mif")) +newnames <- make.unique(basename(outputdirs), sep = "_") message("Do you want to remove the timestamp from scenario names and shorten coupled runs? y/N") if (tolower(gms::getLine()) %in% c("y", "yes")) { - newnames <- make.unique(gsub("^C_", "", gsub("-rem-([0-9]+)$", "-\\1", scenario)), sep = "_") - duplicates <- duplicated(scenario) | duplicated(scenario, fromLast = TRUE) + newnames <- make.unique(gsub("^C_", "", gsub("-rem-([0-9]+)$", "-\\1", scenarios)), sep = "_") + duplicates <- duplicated(scenarios) | duplicated(scenarios, fromLast = TRUE) if (any(duplicates)) { message("\nAvoiding duplicates:\n", paste(paste(basename(outputdirs), "->", newnames)[duplicates], collapse = "\n")) @@ -43,7 +43,10 @@ if (tolower(gms::getLine()) %in% c("y", "yes")) { } message("\nLoading data...") -mifs <- lapply(seq_along(mifs), function(x) mutate(as.quitte(mifs[x]), scenario = factor(newnames[x]))) +loadAdjust <- function(x) { + mutate(as.quitte(mifs[x]), model = factor("REMIND"), scenario = factor(newnames[x])) +} +mifs <- lapply(seq_along(mifs), loadAdjust) plotIntercomparison(list(mifs, histPath), summationsFile = "extractVariableGroups", outputDirectory = "output/plots", From 120e645dd83934c02a7378ed8f781f164989f875 Mon Sep 17 00:00:00 2001 From: REMIND Research Software Engineering Date: Wed, 11 Sep 2024 09:14:46 +0000 Subject: [PATCH 05/16] Release development version 3.3.2.dev556 --- CITATION.cff | 4 ++-- config/default.cfg | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 91fa81a3d..bc62d4452 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -266,8 +266,8 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: "3.3.2.dev553" -date-released: 2024-09-10 +version: "3.3.2.dev556" +date-released: 2024-09-11 repository-code: https://github.com/remindmodel/remind keywords: - energy diff --git a/config/default.cfg b/config/default.cfg index 5c384dd1b..c785eb767 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -71,7 +71,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev553" +cfg$model_version <- "3.3.2.dev556" #### settings #### cfg$gms <- list() From 5e86468d0b14a8cc3aa462bc96ad178c5a4675c4 Mon Sep 17 00:00:00 2001 From: Michaja Pehl Date: Wed, 11 Sep 2024 11:15:21 +0200 Subject: [PATCH 06/16] add ORCID for Pehl in CITATION.cff (#1821) * add ORCID for Pehl in CITATION.cff * doing by hand what should be done by the computer --- .zenodo.json | 3 ++- CITATION.cff | 1 + 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/.zenodo.json b/.zenodo.json index 649c3ed46..8556ddcdd 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -180,7 +180,8 @@ }, { "name": "Pehl, Michaja", - "affiliation": "Potsdam Institute for Climate Impact Research" + "affiliation": "Potsdam Institute for Climate Impact Research", + "orcid": "0000-0003-2349-6515" }, { "name": "Pflüger, Mika", diff --git a/CITATION.cff b/CITATION.cff index bc62d4452..5401820ab 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -186,6 +186,7 @@ authors: - family-names: "Pehl" given-names: "Michaja" + orcid: https://orcid.org/0000-0003-2349-6515 affiliation: "Potsdam Institute for Climate Impact Research" - family-names: "Pflüger" From 8cf26c5304b3b017df0371d02295fe2a5ff0e3b6 Mon Sep 17 00:00:00 2001 From: REMIND Research Software Engineering Date: Wed, 11 Sep 2024 09:16:02 +0000 Subject: [PATCH 07/16] Release development version 3.3.2.dev558 --- CITATION.cff | 2 +- config/default.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 5401820ab..c58872fb9 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -267,7 +267,7 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: "3.3.2.dev556" +version: "3.3.2.dev558" date-released: 2024-09-11 repository-code: https://github.com/remindmodel/remind keywords: diff --git a/config/default.cfg b/config/default.cfg index c785eb767..2379d798c 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -71,7 +71,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev556" +cfg$model_version <- "3.3.2.dev558" #### settings #### cfg$gms <- list() From 7829638c47479c6c38c1aec7892e0c2ab4e5a102 Mon Sep 17 00:00:00 2001 From: orichters Date: Wed, 11 Sep 2024 16:14:13 +0200 Subject: [PATCH 08/16] accept urls in xlsx_IIASA --- scripts/output/export/xlsx_IIASA.R | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/scripts/output/export/xlsx_IIASA.R b/scripts/output/export/xlsx_IIASA.R index c4c3d4e9b..743ca297d 100644 --- a/scripts/output/export/xlsx_IIASA.R +++ b/scripts/output/export/xlsx_IIASA.R @@ -73,7 +73,8 @@ if (is.null(mapping)) { if (length(mapping) == 0 || ! all(file.exists(mapping) | mapping %in% names(mappingNames()))) { stop("mapping='", paste(mapping, collapse = ", "), "' not found.") } -if (exists("iiasatemplate") && ! is.null(iiasatemplate) && ! file.exists(iiasatemplate)) { +if (exists("iiasatemplate") && ! is.null(iiasatemplate) && ! file.exists(iiasatemplate) && + ! grepl("^https:\\/\\/files\\.ece\\.iiasa\\.ac\\.at\\/.*\\.xlsx$", iiasatemplate)) { stop("iiasatemplate=", iiasatemplate, " not found.") } From bcb2b5d7dbc88ba6074340eb8e40d14cbdb569a6 Mon Sep 17 00:00:00 2001 From: REMIND Research Software Engineering Date: Wed, 11 Sep 2024 14:24:15 +0000 Subject: [PATCH 09/16] Release development version 3.3.2.dev561 --- CITATION.cff | 2 +- config/default.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index c58872fb9..2f47a29db 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -267,7 +267,7 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: "3.3.2.dev558" +version: "3.3.2.dev561" date-released: 2024-09-11 repository-code: https://github.com/remindmodel/remind keywords: diff --git a/config/default.cfg b/config/default.cfg index 2379d798c..b164bc05d 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -71,7 +71,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev558" +cfg$model_version <- "3.3.2.dev561" #### settings #### cfg$gms <- list() From 6284e2f59cd2f5842f7f993fc203e5e3f4a31450 Mon Sep 17 00:00:00 2001 From: orichters Date: Wed, 11 Sep 2024 19:07:17 +0200 Subject: [PATCH 10/16] add Tonn to author list --- .zenodo.json | 4 ++++ CITATION.cff | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/.zenodo.json b/.zenodo.json index 8556ddcdd..a21059f96 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -216,6 +216,10 @@ "name": "Rottoli, Marianna", "affiliation": "Potsdam Institute for Climate Impact Research" }, + { + "name": "Rüter, Tonn", + "affiliation": "Potsdam Institute for Climate Impact Research" + }, { "name": "Schmidt, Eva" }, diff --git a/CITATION.cff b/CITATION.cff index 2f47a29db..a61b4e9d3 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -222,6 +222,10 @@ authors: given-names: "Marianna" affiliation: "Potsdam Institute for Climate Impact Research" +- family-names: "Rüter" + given-names: "Tonn" + affiliation: "Potsdam Institute for Climate Impact Research" + - family-names: "Schmidt" given-names: "Eva" From 85ba016136606679e4287af9989148183bc18c2e Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Thu, 12 Sep 2024 08:47:12 +0200 Subject: [PATCH 11/16] make the exogenous waste incineration rate an upper bound instead of a fix --- modules/37_industry/subsectors/bounds.gms | 4 +++- modules/37_industry/subsectors/datainput.gms | 6 +++--- modules/37_industry/subsectors/declarations.gms | 5 +++-- modules/37_industry/subsectors/equations.gms | 6 +++--- 4 files changed, 12 insertions(+), 9 deletions(-) diff --git a/modules/37_industry/subsectors/bounds.gms b/modules/37_industry/subsectors/bounds.gms index 623ff6419..437bdaf6d 100755 --- a/modules/37_industry/subsectors/bounds.gms +++ b/modules/37_industry/subsectors/bounds.gms @@ -133,6 +133,8 @@ $ifthen.policy_scenario "%cm_indstExogScen_set%" == "YES" $endif.policy_scenario $drop cm_indstExogScen_set +v37_regionalWasteIncinerationCCSshare.lo(t,regi) = 0.; +v37_regionalWasteIncinerationCCSshare.up(t,regi) = p37_regionalWasteIncinerationCCSMaxShare(t,regi); $ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" !! fix processes procudction in historic years @@ -173,7 +175,7 @@ $endif.fixedUE_scenario *** fix plastic waste to zero until 2010, and possible to reference scenario *** values between 2015 and cm_startyear -v37_plasticWaste.fx(t,regi,entySe,entyFe,emiMkt)$( +v37_plasticWaste.fx(t,regi,entySe,entyFe,emiMkt)$( t.val lt max(2015, cm_startyear) AND sefe(entySe,entyFe) AND entyFE2sector2emiMkt_NonEn(entyFe,"indst",emiMkt) ) diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 9ed2e8afc..e324447b7 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -566,11 +566,11 @@ execute_load "input_ref.gdx", vm_demFeSector_afterTax; * Define carbon capture and storage share in waste incineration emissions * capture rate increases linearly from zero in 2025 to value the set in the switch for the defined year, and it is kept constant for years afterwards -p37_regionalWasteIncinerationCCSshare(ttot,all_regi) = 0; +p37_regionalWasteIncinerationCCSMaxShare(ttot,all_regi) = 0; $ifthen.cm_wasteIncinerationCCSshare not "%cm_wasteIncinerationCCSshare%" == "off" -loop((ttot,ext_regi)$p37_wasteIncinerationCCSshare(ttot,ext_regi), +loop((ttot,ext_regi)$p37_wasteIncinerationCCSMaxShare(ttot,ext_regi), loop(regi$regi_groupExt(ext_regi,regi), - p37_regionalWasteIncinerationCCSshare(t,regi)$((t.val gt 2025)) = min(p37_wasteIncinerationCCSshare(ttot,ext_regi), (p37_wasteIncinerationCCSshare(ttot,ext_regi)/(ttot.val - 2025))*(t.val-2025)); + p37_regionalWasteIncinerationCCSMaxShare(t,regi)$((t.val gt 2025)) = min(p37_wasteIncinerationCCSMaxShare(ttot,ext_regi), (p37_wasteIncinerationCCSMaxShare(ttot,ext_regi)/(ttot.val - 2025))*(t.val-2025)); ); ); $endIf.cm_wasteIncinerationCCSshare diff --git a/modules/37_industry/subsectors/declarations.gms b/modules/37_industry/subsectors/declarations.gms index 54221db44..e3aad1783 100644 --- a/modules/37_industry/subsectors/declarations.gms +++ b/modules/37_industry/subsectors/declarations.gms @@ -68,9 +68,9 @@ $ifthen.sec_steel_scen NOT "%cm_steel_secondary_max_share_scenario%" == "off" / %cm_steel_secondary_max_share_scenario% / $endif.sec_steel_scen - p37_regionalWasteIncinerationCCSshare(ttot,all_regi) "regional proportion of waste incineration that is captured [%]" + p37_regionalWasteIncinerationCCSMaxShare(ttot,all_regi) "upper bound on regional proportion of waste incineration that is captured [%]" $ifthen.cm_wasteIncinerationCCSshare not "%cm_wasteIncinerationCCSshare%" == "off" - p37_wasteIncinerationCCSshare(ttot,ext_regi) "switch values for proportion of waste incineration that is captured [%]" + p37_wasteIncinerationCCSMaxShare(ttot,ext_regi) "switch values for proportion of waste incineration that is captured [%]" / %cm_wasteIncinerationCCSshare% / $endIf.cm_wasteIncinerationCCSshare ; @@ -83,6 +83,7 @@ Positive Variables v37_FeedstocksCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in chemical feedstocks [GtC]" v37_plasticsCarbon(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastics [GtC]" v37_plasticWaste(ttot,all_regi,all_enty,all_enty,all_emiMkt) "Carbon flow: carbon contained in plastic waste [GtC]" + v37_regionalWasteIncinerationCCSshare(tall,all_regi) "share of waste incineration that is captured [%]" !! process-based implementation vm_outflowPrc(tall,all_regi,all_te,opmoPrc) "Production volume of processes in process-based model [Gt/a]" diff --git a/modules/37_industry/subsectors/equations.gms b/modules/37_industry/subsectors/equations.gms index e1875867d..35df4078c 100644 --- a/modules/37_industry/subsectors/equations.gms +++ b/modules/37_industry/subsectors/equations.gms @@ -81,7 +81,7 @@ $endif.exogDem_scen *' energy mix, as that is what can be captured); vm_emiIndBase itself is not used for emission *' accounting, just as a CCS baseline. ***------------------------------------------------------ -q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) +q37_emiIndBase(t,regi,enty,secInd37)$( entyFeCC37(enty) OR sameas(enty,"co2cement_process") ) .. vm_emiIndBase(t,regi,enty,secInd37) =e= @@ -309,7 +309,7 @@ q37_incinerationEmi(t,regi,sefe(entySe,entyFe),emiMkt)$( =e= v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) * pm_incinerationRate(t,regi) - * (1 - p37_regionalWasteIncinerationCCSshare(t,regi)) + * (1 - v37_regionalWasteIncinerationCCSshare(t,regi)) ; q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( @@ -318,7 +318,7 @@ q37_incinerationCCS(t,regi,sefe(entySe,entyFe),emiMkt)$( =e= v37_plasticWaste(t,regi,entySe,entyFe,emiMkt) * pm_incinerationRate(t,regi) - * p37_regionalWasteIncinerationCCSshare(t,regi) + * v37_regionalWasteIncinerationCCSshare(t,regi) ; *' calculate carbon contained in non-incinerated plastics From bebfa885e78792bc05f2133691034fa8dd7d955d Mon Sep 17 00:00:00 2001 From: REMIND Research Software Engineering Date: Thu, 12 Sep 2024 07:14:33 +0000 Subject: [PATCH 12/16] Release development version 3.3.2.dev564 --- CITATION.cff | 4 ++-- config/default.cfg | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index 2f47a29db..f64625fd7 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -267,8 +267,8 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: "3.3.2.dev561" -date-released: 2024-09-11 +version: "3.3.2.dev564" +date-released: 2024-09-12 repository-code: https://github.com/remindmodel/remind keywords: - energy diff --git a/config/default.cfg b/config/default.cfg index b164bc05d..45ae184c4 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -71,7 +71,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev561" +cfg$model_version <- "3.3.2.dev564" #### settings #### cfg$gms <- list() From 223f443fd335de2b5697852e8655de2c853a7b94 Mon Sep 17 00:00:00 2001 From: Jakob Duerrwaechter Date: Wed, 11 Sep 2024 19:20:32 +0200 Subject: [PATCH 13/16] adapt some code to process-based energy demand generalization --- modules/05_initialCap/on/preloop.gms | 11 +++-------- modules/37_industry/fixed_shares/not_used.txt | 2 +- modules/37_industry/subsectors/datainput.gms | 2 -- 3 files changed, 4 insertions(+), 11 deletions(-) diff --git a/modules/05_initialCap/on/preloop.gms b/modules/05_initialCap/on/preloop.gms index d30e59d9d..7a4852b23 100644 --- a/modules/05_initialCap/on/preloop.gms +++ b/modules/05_initialCap/on/preloop.gms @@ -121,14 +121,9 @@ display v05_INIdemEn0.l, v05_INIcap0.l; p05_cap0(regi,te) = v05_INIcap0.l(regi,te); -$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" -p05_cap0(regi,'bof') = pm_outflowPrcHist("2005",regi,'bof','unheated') / pm_cf("2005",regi,'bof'); -p05_cap0(regi,'bf') = pm_outflowPrcHist("2005",regi,'bf','standard') / pm_cf("2005",regi,'bf'); -p05_cap0(regi,'eaf') = pm_outflowPrcHist("2005",regi,'eaf','sec') / pm_cf("2005",regi,'eaf'); -p05_cap0(regi,'idr') = 0.; -p05_cap0(regi,"bfcc") =0.; -p05_cap0(regi,"idrcc") =0.; -$endif.cm_subsec_model_steel +loop(tePrc, + p05_cap0(regi,tePrc) = sum(tePrc2opmoPrc(tePrc,opmoPrc), pm_outflowPrcHist("2005",regi,tePrc,opmoPrc)) / pm_cf("2005",regi,tePrc); +); *RP keep energy demand for the Kyoto target calibration pm_EN_demand_from_initialcap2(regi,enty) = v05_INIdemEn0.l(regi,enty); diff --git a/modules/37_industry/fixed_shares/not_used.txt b/modules/37_industry/fixed_shares/not_used.txt index e97b7962b..a73aa7d40 100644 --- a/modules/37_industry/fixed_shares/not_used.txt +++ b/modules/37_industry/fixed_shares/not_used.txt @@ -12,7 +12,7 @@ pm_emifacNonEnergy, parameter, not needed pm_exogDemScen, input, added by codeCheck pm_fedemand, parameter, not needed pm_incinerationRate, parameter, not needed -pm_outflowPrcIni, parameter, not needed +pm_outflowPrcHist, parameter, not needed pm_secBioShare, parameter, not needed pm_specFeDem, parameter, not needed pm_tau_ces_tax, input, questionnaire diff --git a/modules/37_industry/subsectors/datainput.gms b/modules/37_industry/subsectors/datainput.gms index 630352134..b40f845c8 100644 --- a/modules/37_industry/subsectors/datainput.gms +++ b/modules/37_industry/subsectors/datainput.gms @@ -707,7 +707,6 @@ $endif.cm_subsec_model_steel pm_specFeDem(tall,all_regi,all_enty,all_te,opmoPrc) = 0.; pm_outflowPrcHist(tall,all_regi,all_te,opmoPrc) = 0.; p37_matFlowHist(tall,all_regi,mat) = 0.; -$ifthen.cm_subsec_model_steel "%cm_subsec_model_steel%" == "processes" if (cm_startyear eq 2005, loop(ttot$(ttot.val ge 2005 AND ttot.val le 2020), @@ -777,7 +776,6 @@ if (cm_startyear eq 2005, if (cm_startyear gt 2005, Execute_Loadpoint "input_ref" pm_specFeDem = pm_specFeDem; ); -$endif.cm_subsec_model_steel if (cm_startyear gt 2005, execute_load "input_ref.gdx" v37_plasticWaste.l = v37_plasticWaste.l; From ef7be4f72f527f0c5fc8d245cfea11a62ab9f4e4 Mon Sep 17 00:00:00 2001 From: REMIND Research Software Engineering Date: Thu, 12 Sep 2024 08:04:18 +0000 Subject: [PATCH 14/16] Release development version 3.3.2.dev570 --- CITATION.cff | 2 +- config/default.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index f64625fd7..aa1dc0499 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -267,7 +267,7 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: "3.3.2.dev564" +version: "3.3.2.dev570" date-released: 2024-09-12 repository-code: https://github.com/remindmodel/remind keywords: diff --git a/config/default.cfg b/config/default.cfg index 45ae184c4..7e9ef3eef 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -71,7 +71,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev564" +cfg$model_version <- "3.3.2.dev570" #### settings #### cfg$gms <- list() From d21725937b431d99133a6a846b1ee70bafe33cb5 Mon Sep 17 00:00:00 2001 From: orichters Date: Thu, 12 Sep 2024 10:03:50 +0200 Subject: [PATCH 15/16] Jan -> Jan Philipp as agreed with him --- .zenodo.json | 2 +- CITATION.cff | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.zenodo.json b/.zenodo.json index a21059f96..10f45cbb5 100644 --- a/.zenodo.json +++ b/.zenodo.json @@ -57,7 +57,7 @@ "affiliation": "Potsdam Institute for Climate Impact Research" }, { - "name": "Dietrich, Jan", + "name": "Dietrich, Jan Philipp", "affiliation": "Potsdam Institute for Climate Impact Research", "orcid": "0000-0002-4309-6431" }, diff --git a/CITATION.cff b/CITATION.cff index a61b4e9d3..d483c4703 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -58,7 +58,7 @@ authors: affiliation: "Potsdam Institute for Climate Impact Research" - family-names: "Dietrich" - given-names: "Jan" + given-names: "Jan Philipp" orcid: https://orcid.org/0000-0002-4309-6431 affiliation: "Potsdam Institute for Climate Impact Research" From 32112a8dcceb5f0d3299188c6a89a7e2e008dd04 Mon Sep 17 00:00:00 2001 From: REMIND Research Software Engineering Date: Thu, 12 Sep 2024 09:21:07 +0000 Subject: [PATCH 16/16] Release development version 3.3.2.dev574 --- CITATION.cff | 2 +- config/default.cfg | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/CITATION.cff b/CITATION.cff index c671d9cbf..b94a9919a 100644 --- a/CITATION.cff +++ b/CITATION.cff @@ -271,7 +271,7 @@ abstract: REMIND (REgional Model of Investment and Development) is a numerical technology, policy and climate constraints. It also accounts for regional trade characteristics on goods, energy fuels, and emissions allowances. All greenhouse gas emissions due to human activities are represented in the model. -version: "3.3.2.dev570" +version: "3.3.2.dev574" date-released: 2024-09-12 repository-code: https://github.com/remindmodel/remind keywords: diff --git a/config/default.cfg b/config/default.cfg index 7e9ef3eef..ea8fa4756 100644 --- a/config/default.cfg +++ b/config/default.cfg @@ -71,7 +71,7 @@ cfg$validationmodel_name <- "VALIDATIONREMIND" #### model version of the overall model (used for run statistics only). # automatically generated for development versions, updated by hand for releases -cfg$model_version <- "3.3.2.dev570" +cfg$model_version <- "3.3.2.dev574" #### settings #### cfg$gms <- list()