Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

expand emission scaling parameterization to allow representing GWP* #469

Draft
wants to merge 1 commit into
base: main
Choose a base branch
from
Draft
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
4 changes: 3 additions & 1 deletion message_ix/model/MESSAGE/data_load.gms
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,7 @@ rating_bin, reliability_factor, peak_load_factor, flexibility_factor
renewable_capacity_factor, renewable_potential
* emission factors, bounds and taxes on emissions (including mapping sets)
historical_emission, emission_factor, emission_scaling, is_bound_emission, bound_emission, tax_emission,
* emission_diff_scaling,
* historical values of new capacity investment, activity and extraction
historical_new_capacity, historical_activity, historical_extraction
* parameters for land-use model emulator
Expand All @@ -75,7 +76,8 @@ fixed_extraction, fixed_stock, fixed_new_capacity, fixed_capacity, fixed_activit
storage_initial, storage_self_discharge, time_order
;


* dummy code to add (empty) emission_diff_scaling parameter
emission_diff_scaling(type_emission,emission,year_all,year_all) = 0 ;
*----------------------------------------------------------------------------------------------------------------------*
* ensure that each node is mapped to itself *
*----------------------------------------------------------------------------------------------------------------------*
Expand Down
21 changes: 17 additions & 4 deletions message_ix/model/MESSAGE/model_core.gms
Original file line number Diff line number Diff line change
Expand Up @@ -1842,9 +1842,14 @@ EMISSION_EQUIVALENCE(node,emission,type_tec,year)..
*
* Equation EMISSION_CONSTRAINT
* """"""""""""""""""""""""""""
* This constraint enforces upper bounds on emissions (by emission type). For all bounds that include multiple periods,
* the parameter :math:`bound\_emission_{n,\widehat{e},\widehat{t},\widehat{y}}` is scaled to represent average annual
* emissions over all years included in the year-set :math:`\widehat{y}`.
* This constraint enforces upper bounds on emissions (by emission type), including the possibility to aggregate
* across different emission species and scale them relateive to each other (e.g., to reflect different emission
* metrics such as global warming potentials, GWPs). As of release X.Y, the possibility to include scaling metrics
* that work across multiple periods (e.g., to accommodate implemantation of the GWP* metric that for short-lived
* emission species applies scaling factors to differences of emissions over time) has been added.
*
* For all bounds that include multiple periods, the parameter :math:`bound\_emission_{n,\widehat{e},\widehat{t},\widehat{y}}`
* is scaled to represent average annual emissions over all years included in the year-set :math:`\widehat{y}`.
*
* The formulation includes historical emissions and allows to model constraints ranging over both the model horizon
* and historical periods.
Expand All @@ -1855,6 +1860,9 @@ EMISSION_EQUIVALENCE(node,emission,type_tec,year)..
* \begin{array}{l}
* duration\_period_{y'} \cdot emission\_scaling_{\widehat{e},e} \cdot \\
* \Big( EMISS_{n,e,\widehat{t},y'} + \sum_{m} historical\_emission_{n,e,\widehat{t},y'} \Big)
* + \sum_{y'' \in (\widehat{y}), y'' \neq y'}
* duration\_period_{y'} \cdot emission\_diff\_scaling_{\widehat{e},e,y', y''} \cdot \\
* \Big( EMISS_{n,e,\widehat{t},y''} + \sum_{m} historical\_emission_{n,e,\widehat{t},y''} \Big)
* \end{array}
* }
* { \sum_{y' \in Y(\widehat{y})} duration\_period_{y'} }
Expand All @@ -1866,7 +1874,12 @@ EMISSION_CONSTRAINT(node,type_emission,type_tec,type_year)$is_bound_emission(nod
duration_period(year_all2) * emission_scaling(type_emission,emission) *
( EMISS(node,emission,type_tec,year_all2)$( year(year_all2) )
+ historical_emission(node,emission,type_tec,year_all2) )
)
+ SUM( (year_all3)$( NOT SAMEAS(year_all2, year_all3) ),
duration_period(year_all2) * emission_diff_scaling(type_emission,emission,year_all2,year_all3) *
( EMISS(node,emission,type_tec,year_all3)$( year(year_all3) )
+ historical_emission(node,emission,type_tec,year_all3) )
)
)
/ SUM(year_all2$( cat_year(type_year,year_all2) ), duration_period(year_all2) )
=L= bound_emission(node,type_emission,type_tec,type_year) ;

Expand Down
13 changes: 10 additions & 3 deletions message_ix/model/MESSAGE/parameter_def.gms
Original file line number Diff line number Diff line change
Expand Up @@ -608,19 +608,26 @@ Parameters
* - ``node`` | ``emission`` | ``type_tec`` | ``year``
* * - emission_scaling [#em_scaling]_
* - ``type_emission`` | ``emission``
* * - emission_diff_scaling [#em_diff_scaling]_
* - ``type_emission`` | ``emission`` | ``year`` | ``year``
* * - bound_emission
* - ``node`` | ``type_emission`` | ``type_tec`` | ``type_year``
* * - tax_emission
* - ``node`` | ``type_emission`` | ``type_tec`` | ``type_year``
*
* .. [#em_scaling] The parameter ``emission_scaling`` is the scaling factor to harmonize bounds or taxes across types of
* emissions. It allows to efficiently aggregate different emissions/pollutants and set bounds or taxes on various categories.
* .. [#em_scaling] The parameter ``emission_scaling`` is the scaling factor to aggreagte or scale emissions across types of
* emissions. It allows to efficiently aggregate different emissions/pollutants (e.g., to represent Gobal Warming Potentials,
* GWPs) and set bounds or taxes on various emission categories.
* .. [#em_diff_scaling] The parameter ``emission_diff_scaling`` is the scaling factor to aggreagte or scale emissions across types
* and different model periods which in combination with the parameter ``emission_scaling`` allows representing metrics such
* as GWP*.
*
***

Parameters
historical_emission(node,emission,type_tec,year_all) historical emissions by technology type (including land)
emission_scaling(type_emission,emission) scaling factor to harmonize bounds or taxes across types
emission_scaling(type_emission,emission) emission scaling factor to aggreagte or scale emissions across types
emission_diff_scaling(type_emission,emission,year_all,year_all) emission scaling factor to aggreagte or scale emissions across types and different model periods
bound_emission(node,type_emission,type_tec,type_year) upper bound on emissions
tax_emission(node,type_emission,type_tec,type_year) emission tax
;
Expand Down