Skip to content

Commit

Permalink
Merge branch 'remindmodel:develop' into deltaCap_for_capCum
Browse files Browse the repository at this point in the history
  • Loading branch information
tabeado authored Jan 12, 2024
2 parents f8ce5a9 + f43a105 commit 754e3ca
Show file tree
Hide file tree
Showing 10 changed files with 172 additions and 101 deletions.
4 changes: 2 additions & 2 deletions CITATION.cff
Original file line number Diff line number Diff line change
Expand Up @@ -246,8 +246,8 @@ authors:
affiliation: "Potsdam Institute for Climate Impact Research"

title: REMIND - REgional Model of INvestments and Development
version: "3.2.1.dev634"
date-released: 2024-01-03
version: "3.2.1.dev651"
date-released: 2024-01-12
repository-code: https://github.com/remindmodel/remind
keywords:
- energy
Expand Down
2 changes: 1 addition & 1 deletion config/default.cfg
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,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.2.1.dev634"
cfg$model_version <- "3.2.1.dev651"

#### settings ####
cfg$gms <- list()
Expand Down
2 changes: 2 additions & 0 deletions core/bounds.gms
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ vm_costTeCapital.fx(t,regi,teNoLearn) = pm_inco0_t(t,regi,teNoLearn);
*' @code{extrapage: "00_model_assumptions"}

*' ### Model Bounds and Assumptions:

*' #### Model Bounds in Core
*' Lower limit on all P2SE technologies capacities to 100 kW of all technologies and all time steps
loop(pe2se(enty,enty2,te)$((not sameas(te,"biotr")) AND (not sameas(te,"biodiesel")) AND (not sameas(te,"bioeths")) AND (not sameas(te,"gasftcrec")) AND (not sameas(te,"gasftrec"))
AND (not sameas(te,"tnrs"))),
Expand Down
1 change: 1 addition & 0 deletions modules/24_trade/capacity/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ $offdelim
;
pm_costsTradePeFinancial(regi,"XportElasticity", tradePe(enty)) = 100;
pm_costsTradePeFinancial(regi, "tradeFloor", tradePe(enty)) = 0.0125;
pm_costsTradePeFinancial(regi,"Mport","peur") = 1e-06;

*** Adjust tradecosts based on switch
pm_costsTradePeFinancial(regi,"Xport", "pebiolc") = pm_costsTradePeFinancial(regi,"Xport", "pebiolc") * cm_tradecostBio;
Expand Down
1 change: 1 addition & 0 deletions modules/24_trade/se_trade/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ $offdelim
;
pm_costsTradePeFinancial(regi,"XportElasticity", tradePe(enty)) = 100;
pm_costsTradePeFinancial(regi, "tradeFloor", tradePe(enty)) = 0.0125;
pm_costsTradePeFinancial(regi,"Mport","peur") = 1e-06;

*** Adjust tradecosts based on switch
pm_costsTradePeFinancial(regi,"Xport", "pebiolc") = pm_costsTradePeFinancial(regi,"Xport", "pebiolc") * cm_tradecostBio;
Expand Down
1 change: 1 addition & 0 deletions modules/24_trade/standard/datainput.gms
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ $offdelim
;
pm_costsTradePeFinancial(regi,"XportElasticity", tradePe(enty)) = 100;
pm_costsTradePeFinancial(regi, "tradeFloor", tradePe(enty)) = 0.0125;
pm_costsTradePeFinancial(regi,"Mport","peur") = 1e-06;

*** Adjust tradecosts based on switch
pm_costsTradePeFinancial(regi,"Xport", "pebiolc") = pm_costsTradePeFinancial(regi,"Xport", "pebiolc") * cm_tradecostBio;
Expand Down
22 changes: 17 additions & 5 deletions modules/33_CDR/portfolio/bounds.gms
Original file line number Diff line number Diff line change
Expand Up @@ -23,18 +23,30 @@ if(card(te_ccs33) eq 0,
v33_emi.fx(t,regi,te_all33)$(not te_used33(te_all33)) = 0;
v33_FEdemand.fx(t,regi,entyFe,entyFe2,te_all33)$(not te_used33(te_all33) and fe2cdr(entyFe,entyFe2,te_all33)) = 0;

*' Bounds for DAC (cm_emiscen ne 1 avoids setting the boundary for the business-as-usual scenario)
if (te_used33("dac") and cm_emiscen ne 1,
vm_cap.lo(t,regi,"dac",rlf)$(teNoTransform2rlf33("dac",rlf) AND (t.val ge max(2025,cm_startyear))) = sm_eps;
*' Fix all CDR-related variables to zero for early time steps t< 2025 (no CDR in the real world)
*' to reduce unnecessary freedom (and likelyhood of spontaneous solver infeasibilities)
v33_emi.fx(t,regi,te_used33)$(t.val lt 2025) = 0.0;
v33_FEdemand.fx(t,regi,entyFe,entyFe2,te_used33)$(fe2cdr(entyFe,entyFe2,te_used33) AND (t.val lt 2025)) = 0.0;
vm_emiCdr.fx(t,regi,"co2")$(t.val lt 2025) = 0;
vm_omcosts_cdr.fx(t,regi)$((t.val lt 2025)) = 0;
vm_cap.fx(t,regi,"weathering",rlf)$(t.val lt 2025) = 0;
*** vm_cap for dac is fixed for t<2025 in core/bounds.gms (tech_stat eq 4)
vm_ccs_cdr.fx(t,regi,enty,enty2,te,rlf)$(ccs2te(enty,enty2,te) AND t.val lt 2025) = 0;


*' Set minimum DAC capacities (if available) to help the solver find the technology
if (te_used33("dac"),
vm_cap.lo(t,regi,"dac",rlf)$(teNoTransform2rlf33("dac",rlf) AND (t.val ge 2030)) = sm_eps;
);

*' Bounds for enhanced weathering
if(te_used33("weathering"),
v33_EW_onfield_tot.up(t,regi,rlf_cz33,rlf) = s33_step;
v33_EW_onfield.fx(t,regi,rlf_cz33,rlf)$(rlf.val gt 10) = 0; !! rlfs that are not used
v33_EW_onfield_tot.fx(t,regi,rlf_cz33,rlf)$(rlf.val gt 10) = 0; !! rlfs that are not used
v33_EW_onfield.fx(ttot,regi,rlf_cz33,rlf)$(ttot.val lt max(2025,cm_startyear)) = 0.0;
v33_EW_onfield_tot.fx(ttot,regi,rlf_cz33,rlf)$(ttot.val lt max(2025,cm_startyear)) = 0.0;
!! if cm_startyear > 2025 and input_ref.gdx used EW, this fixing will be overwritten in submit.R
v33_EW_onfield.fx(ttot,regi,rlf_cz33,rlf)$(ttot.val lt max(2025,cm_startyear)) = 0.0; !!
v33_EW_onfield_tot.fx(ttot,regi,rlf_cz33,rlf)$(ttot.val lt max(2025,cm_startyear)) = 0.0; !!
);

*' Bounds if enhanced weathering is not in the portfolio
Expand Down
26 changes: 23 additions & 3 deletions modules/47_regipol/module.gms
Original file line number Diff line number Diff line change
Expand Up @@ -8,11 +8,31 @@

*' @title Regional Policies
*'
*' @description The 47_regipol module includes region specific policies.
*' @description The 47_regipol module includes region-specific policies and adjustments on top of the generic parts in the core and other modules.
*'
*'
*' The `regiCarbonPrice` realization allows to determine region specific year or budget targets for CO2 or GHG emissions.
*' It overwrites all other carbon prices for selected regions (for example those implemented by 45_carbonprice or 46_carbonpriceRegi).
*' The `regiCarbonPrice` realization has two purposes. First, it allows to determine region specific year or budget targets for CO2 or GHG emissions.
*' Second, it comprises region-specific adjustments that are always active in this realization and policies that can be activated by specific switches (see modules/47_regipol/regiCarbonPrice/bounds.gms).
*' On the emissions targets: Emissions targets can be activated via the switch cm_emiMktTarget and there are number of options that can be chosen to specify them
*' like the type of target (annual target or budget), the target year, the regions the target should be applied to,
*' the emissions metric (CO2, GHG, CO2 excl. bunkers/LULUCF etc.) and the emissions market (all, ETS, ESR). For example, setting cm_emiMktTarget to
*' "2020.2030.EU27_regi.all.year.netGHG_noLULUCF_noBunkers 3.16, 2035.2050.EU27_regi.all.year.netCO2 0.001" will apply two emissions targets to the region group "EU27_regi"
*' which consists of all model regions in the EU27 (for the definition of region groups, please see definition of the set regi_group): The first is a target of 3.16 GtCO2eq/yr annual ("year") emissions by 2030
*' in the metric of net greenhouse gas emissions without LULUCF and bunkers ("netGHG_noLULUCF_noBunkers", for definition of emissions metrics see modules/47_regipol/regiCarbonPrice/postsolve.gms)
*' for all emissions markets ("all"). The second defines a target of 1 Mt CO2/yr annual ("year") emissions by 2050 in the metric of net CO2 emissions ("netCO2") for all emissions markets ("all").
*' For details on the options please see the description of the switch.
*' When an emissions target is set via this switch, the carbon price in the target years and regions, to which it is applied, is adjusted over nash iterations in REMIND
*' until the desired emissions target is reached within a certain margin of tolerance defined by cm_emiMktTarget_tolerance. Note that also multiple emissions targets can be specified for
*' different years (e.g. the EU's 2030 and 2050 targets). The carbon price trajectory up to the target years are linear and the carbon price
*' is assumed to still increase linearly at a small rate after the last target year. Please check the parameter pm_emiMktTarget_dev_iter to see the emissions target convergence over iterations.
*' Note that these regional emissions targets of the module only overwrite the carbon price trajectory for the regions they are applied to, while the other regions keep the carbon price trajectories
*' that are adjusted in other parts of the model, in particular, from the global emissions target adjustment.
*' This means that these regional targets come on top of the global emissions target that REMIND aims to achieve.
*' On the regional bounds and adjustments: In the bounds file, there are a number of regionally hard-coded bounds to the model that aim to improve the representation of specific regions in REMIND.
*' They come on top of the bounds in the core of REMIND. The difference is that core defines bounds for all regions, while in this module region-specific adjustments are made which have not yet been generalized to all regions
*' and are not activated outside of the realization "regiCarbonPrice".
*' These bounds either serve to align REMIND with historic and near-term data in specific regions or represent regional policies (like national coal phase-out plans) that can be activated via switches.
*' Finally, there are some regional adjustments in the datainput file that modify input data for specific regions for cases which have not been generalized for all REMIND regions yet.
*'
*' @authors Renato Rodrigues, Felix Schreyer

Expand Down
Loading

0 comments on commit 754e3ca

Please sign in to comment.