diff --git a/CHANGELOG.md b/CHANGELOG.md index 23fcabf16d..4284241354 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -41,6 +41,8 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/). https://github.com/remindmodel/development_issues/issues/274 - **MAGICC7** fix climate data for time before cm_startyear on reference run [[#1744](https://github.com/remindmodel/remind/pull/1744)] +- **regipol** fix recycling of implicit tax from BECCS qtty target + [[#1745](https://github.com/remindmodel/remind/pull/1745)] - **scripts** fix tax convergence reporting in modelSummary [[#1728](https://github.com/remindmodel/remind/pull/1728)] - **scripts** cleanup non-existing realizations from settings_config.csv diff --git a/main.gms b/main.gms index e3f6eca156..7662503ad6 100755 --- a/main.gms +++ b/main.gms @@ -1331,7 +1331,7 @@ $setGlobal cm_vehiclesSubsidies off !! def = off *** cm_implicitQttyTarget "2050.GLO.sub.s.FE.electricity 0.8". The p47_implicitQttyTargetTax parameter will contain the subsidy necessary to achieve that goal. *** Enforce a subsidy (sub) that guarantees a minimum share (s) of electricity in final energy (FE.electricity) equal to 80% (0.8) from 2050 (2050) onward in all World (GLO) regions. *** The p47_implicitQttyTargetTax parameter will contain the subsidy necessary to achieve that goal. -*** To limit CCS to 8 GtCO2 and BECCS to 5 GtCO2, use "2050.GLO.tax.t.CCS.all 8000, 2050.GLO.tax.t.CCS.biomass 5000" +*** To limit CCS to 8 GtCO2 and BECCS (only Pe2Se, not industry) to 5 GtCO2, use "2050.GLO.tax.t.CCS.all 8000, 2050.GLO.tax.t.CCS.biomass 5000" *** Example on how to use the switch with cm_implicitQttyTargetType = scenario: *** cm_implicitQttyTarget "EU27_RpEUEff,EU27_bio4" *** "EU27_RpEUEff" -> Enforce a tax that guarantees total FE will be lower or equal to the RePowerEU target for 2030. diff --git a/modules/47_regipol/none/not_used.txt b/modules/47_regipol/none/not_used.txt index 0264ff75ae..bf8cffd7a8 100644 --- a/modules/47_regipol/none/not_used.txt +++ b/modules/47_regipol/none/not_used.txt @@ -75,3 +75,5 @@ vm_emiTeMkt,input,added by codeCheck pm_emiMktTarget_tolerance,switch,not needed sm_globalBudget_dev,input,questionnaire pm_allTargetsConverged,input,questionnaire +sm_eps,input,not needed +vm_co2capture,input,not needed diff --git a/modules/47_regipol/regiCarbonPrice/equations.gms b/modules/47_regipol/regiCarbonPrice/equations.gms index 242f27d103..82e09cf093 100644 --- a/modules/47_regipol/regiCarbonPrice/equations.gms +++ b/modules/47_regipol/regiCarbonPrice/equations.gms @@ -17,21 +17,24 @@ q47_implicitQttyTargetTax(t,regi)$(t.val ge max(2010,cm_startyear)).. vm_taxrevimplicitQttyTargetTax(t,regi) =e= sum((qttyTarget,qttyTargetGroup)$p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup), - ( - p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup) * sum(entyPe$energyQttyTargetANDGroup2enty(qttyTarget,qttyTargetGroup,entyPe), sum(pe2se(entyPe,entySe,te), vm_demPe(t,regi,entyPe,entySe,te))) - )$(sameas(qttyTarget,"PE")) - + - ( - p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup) * sum(entySe$energyQttyTargetANDGroup2enty(qttyTarget,qttyTargetGroup,entySe), sum(se2fe(entySe,entyFe,te), vm_demSe(t,regi,entySe,entyFe,te))) - )$(sameas(qttyTarget,"SE")) - + - ( - p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup) * sum(entySe$energyQttyTargetANDGroup2enty("FE",qttyTargetGroup,entySe), sum(se2fe(entySe,entyFe,te), sum((sector,emiMkt)$(entyFe2Sector(entyFe,sector) AND sector2emiMkt(sector,emiMkt)), vm_demFeSector(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")) - + - ( - p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup) * sum(ccs2te(ccsCo2(enty),enty2,te), sum(teCCS2rlf(te,rlf),vm_co2CCS(t,regi,enty,enty2,te,rlf))) - )$(sameas(qttyTarget,"CCS")) + p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup) * ( + ( sum(entyPe$energyQttyTargetANDGroup2enty(qttyTarget,qttyTargetGroup,entyPe), sum(pe2se(entyPe,entySe,te), vm_demPe(t,regi,entyPe,entySe,te))) + )$(sameas(qttyTarget,"PE")) + + + ( sum(entySe$energyQttyTargetANDGroup2enty(qttyTarget,qttyTargetGroup,entySe), sum(se2fe(entySe,entyFe,te), vm_demSe(t,regi,entySe,entyFe,te))) + )$(sameas(qttyTarget,"SE")) + + + ( 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(ccs2te(ccsCo2(enty),enty2,te), sum(teCCS2rlf(te,rlf),vm_co2CCS(t,regi,enty,enty2,te,rlf))) + )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"all")) + + + ( !! only supply side BECCS + sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail(t,regi,enty,enty2,te,enty3) + * sum(teCCS2rlf(te,rlf), vm_co2CCS.l(t,regi,"cco2","ico2",te,rlf)) / (sum(teCCS2rlf(te,rlf), vm_co2capture.l(t,regi,"cco2","ico2",te,rlf))+sm_eps)) !! pm_share_CCS_CCO2 + )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"biomass")) + ) ) - p47_implicitQttyTargetTax0(t,regi) diff --git a/modules/47_regipol/regiCarbonPrice/postsolve.gms b/modules/47_regipol/regiCarbonPrice/postsolve.gms index 3f75c13d25..4c4c89c34e 100644 --- a/modules/47_regipol/regiCarbonPrice/postsolve.gms +++ b/modules/47_regipol/regiCarbonPrice/postsolve.gms @@ -480,7 +480,7 @@ $ENDIF.emiMkt $ifthen.cm_implicitQttyTarget not "%cm_implicitQttyTarget%" == "off" *** saving previous iteration value for implicit tax revenue recycling -*** the same line exists in presolve.gms, don't forget to update there +*** similar lines exists in equations.gms and presolve.gms, don't forget to update there p47_implicitQttyTargetTax_prevIter(t,regi,qttyTarget,qttyTargetGroup) = p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup); p47_implicitQttyTargetTax0(t,regi) = sum((qttyTarget,qttyTargetGroup)$p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup), @@ -497,11 +497,9 @@ p47_implicitQttyTargetTax0(t,regi) = ( 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")) + - (( !! Supply side BECCS - sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail.l(t,regi,enty,enty2,te,enty3)) - !! Industry BECCS (using biofuels in Industry with CCS) - + sum((emiMkt,entySe,secInd37,entyFe)$entySeBio(entySe), pm_IndstCO2Captured(t,regi,entySe,entyFe,secInd37,emiMkt)) - ) * pm_share_CCS_CCO2(t,regi) )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"biomass")) + ( !! Only supply side BECCS + sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail.l(t,regi,enty,enty2,te,enty3)) * pm_share_CCS_CCO2(t,regi) + )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"biomass")) ) ) ; @@ -529,8 +527,6 @@ loop((ttot,ext_regi,taxType,targetType,qttyTarget,qttyTargetGroup)$pm_implicitQt + sum(regi$regi_groupExt(ext_regi,regi), ( !! Supply side BECCS sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail.l(ttot,regi,enty,enty2,te,enty3)) - !! Industry BECCS (using biofuels in Industry with CCS) - + sum((emiMkt,entySe,secInd37,entyFe)$entySeBio(entySe), pm_IndstCO2Captured(ttot,regi,entySe,entyFe,secInd37,emiMkt)) ) * pm_share_CCS_CCO2(ttot,regi))$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"biomass")) ); if(sameas(targetType,"s"), !!relative target (s=share) (not applied to CCS) diff --git a/modules/47_regipol/regiCarbonPrice/presolve.gms b/modules/47_regipol/regiCarbonPrice/presolve.gms index 645404d864..2df62b866b 100644 --- a/modules/47_regipol/regiCarbonPrice/presolve.gms +++ b/modules/47_regipol/regiCarbonPrice/presolve.gms @@ -35,7 +35,7 @@ $ENDIF.emiMkt $ifthen.cm_implicitQttyTarget not "%cm_implicitQttyTarget%" == "off" *** saving value for implicit tax revenue recycling -*** the same line exists in postsolve.gms, don't forget to update there +*** similar lines exists in equations.gms and postsolve.gms, don't forget to update there p47_implicitQttyTargetTax0(t,regi) = sum((qttyTarget,qttyTargetGroup)$p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup), p47_implicitQttyTargetTax(t,regi,qttyTarget,qttyTargetGroup) * ( @@ -51,11 +51,9 @@ p47_implicitQttyTargetTax0(t,regi) = ( 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")) + - (( !! Supply side BECCS - sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail.l(t,regi,enty,enty2,te,enty3)) - !! Industry BECCS (using biofuels in Industry with CCS) - + sum((emiMkt,entySe,secInd37,entyFe)$entySeBio(entySe), pm_IndstCO2Captured(t,regi,entySe,entyFe,secInd37,emiMkt)) - ) * pm_share_CCS_CCO2(t,regi) )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"biomass")) + ( !! Only supply side BECCS + sum(emiBECCS2te(enty,enty2,te,enty3),vm_emiTeDetail.l(t,regi,enty,enty2,te,enty3)) * pm_share_CCS_CCO2(t,regi) + )$(sameas(qttyTarget,"CCS") AND sameas(qttyTargetGroup,"biomass")) ) ) ;