Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 2 additions & 0 deletions core/declarations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -529,6 +529,8 @@ q_PE_histCap(ttot,all_regi,all_enty,all_enty) "require minimum of fossil
q_PE_histCap_NGCC_2020_up(ttot,all_regi,all_enty,all_enty) "require maximum of gas power capacity in 2020 based on 2015 historical data and growth rate assumptions"
q_shbiofe_up(ttot,all_regi,all_enty,emi_sectors,all_emiMkt) "constrain share of biomass in hydrocarbons of sectoral final energy in historical years based on historical data (upper bound)"
q_shbiofe_lo(ttot,all_regi,all_enty,emi_sectors,all_emiMkt) "constrain share of biomass in hydrocarbons of sectoral final energy in historical years based on historical data (lower bound)"
q_shbiofe_indst_up(ttot,all_regi,all_enty,emi_sectors) "constrain share of biomass in solids of industry final energy in historical years based on historical data (upper bound)"
q_shbiofe_indst_lo(ttot,all_regi,all_enty,emi_sectors) "constrain share of biomass in solids of industry final energy in historical years based on historical data (lower bound)"

*** energy service layer equations (only relevant for transport)
q_transFe2Es(ttot,all_regi,all_enty,all_esty,all_teEs) "conversion from final energy to energy services"
Expand Down
31 changes: 30 additions & 1 deletion core/equations.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1140,7 +1140,7 @@ q_limitCapFeH2BI(t,regi,sector)$(SAMEAS(sector,"build") OR SAMEAS(sector,"indst"

***---------------------------------------------------------------------------
*' Enforce historical data biomass share per carrier in sector final energy for transport and buildings (+- 2%)
*' Exempt industry solids as these are covered by the equation q37_limitBioSolidsIndst
*' Exempt industry solids as they are covered below

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Why do they need to be exempt here and we need another equation? Shouldn't applying the same bound to ETS and ES lead to very similar resutls?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On why industry solids need to be exempt from q_shbiofe_up/lo:

The industry bound enforces a maximum of 30% biosolids in industry solids, but only for the ETS sectors (steel, cement, chemicals). OtherInd (ES) should have no such requirement. However, q_shbiofe_up/lo applies the historical bioshare target to ETS and ES markets independently. This led to a situation where, e.g. in the EU, both equations forced ~50% biosolids in ETS AND ES industry until 2020. The strict 30% ETS bound starts in 2025, creating some substantial jumps in solids bioshare in some regions.

Before this PR, I decided the best solution was to exempt industry solids here and rely exclusively on the new bounds from 2005 onwards to constrain ETS industry solids to a maximum of 30% biosolids.

Why we need a separate equation:

Since the 30% bound applies only to ETS sectors, I expect that the net historical bioshare is still broadly respected, with ES sectors compensating by using up a bigger share of biosolids. I had hoped the model would do this by itself, but this doesn't work in e.g. India, which led to the issue you raised. The new equations therefore bound the combined ETS+ES bioshare in industry solids, making sure otherInd (ES) makes up for the lower bio share in ETS sectors.

Nb. These aggregated equations across emiMkt could actually be applied to all sectors and FE, and replace q_shbiofe_up/lo entirely. I don't want to make such a change close to the new REMIND release, though. I could test it in a few days.

***---------------------------------------------------------------------------

q_shbiofe_up(t,regi,entyFe,sector,emiMkt)$(pm_secBioShare(t,regi,entyFe,sector) and sector2emiMkt(sector,emiMkt) and NOT (sameas(sector,"indst") and sameas(entyFe,"fesos")))..
Expand All @@ -1159,6 +1159,35 @@ q_shbiofe_lo(t,regi,entyFe,sector,emiMkt)$(pm_secBioShare(t,regi,entyFe,sector)
sum((entySeBio,te)$se2fe(entySeBio,entyFe,te), vm_demFeSector_afterTax(t,regi,entySeBio,entyFe,sector,emiMkt))
;

***---------------------------------------------------------------------------
*' Enforce historical data biomass share per carrier in sector final energy for industry (+- 2%)
*' Applies to the sum of emiMkt
***---------------------------------------------------------------------------

q_shbiofe_indst_up(t,regi,entyFe,sector)$(pm_secBioShare(t,regi,entyFe,sector) and (sameas(sector,"indst") and sameas(entyFe,"fesos")))..
(pm_secBioShare(t,regi,entyFe,sector) + 0.02)
*
sum(emiMkt$sector2emiMkt(sector,emiMkt),
sum((entySe,te)$se2fe(entySe,entyFe,te),
vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt)))
=g=
sum(emiMkt$sector2emiMkt(sector,emiMkt),
sum((entySeBio,te)$se2fe(entySeBio,entyFe,te),
vm_demFeSector_afterTax(t,regi,entySeBio,entyFe,sector,emiMkt)))
;

q_shbiofe_indst_lo(t,regi,entyFe,sector)$(pm_secBioShare(t,regi,entyFe,sector) and (sameas(sector,"indst") and sameas(entyFe,"fesos")))..
(pm_secBioShare(t,regi,entyFe,sector) - 0.02)
*
sum(emiMkt$sector2emiMkt(sector,emiMkt),
sum((entySe,te)$se2fe(entySe,entyFe,te),
vm_demFeSector_afterTax(t,regi,entySe,entyFe,sector,emiMkt)))
=l=
sum(emiMkt$sector2emiMkt(sector,emiMkt),
sum((entySeBio,te)$se2fe(entySeBio,entyFe,te),
vm_demFeSector_afterTax(t,regi,entySeBio,entyFe,sector,emiMkt)))
;

***---------------------------------------------------------------------------
*' Penalty for secondary energy share deviation in sectors
***---------------------------------------------------------------------------
Expand Down
Loading