-
Notifications
You must be signed in to change notification settings - Fork 129
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
Merge Relevant Changes done in the Ariadne Project #1644
Conversation
…ariadne_prod_merge_ampel
…ariadne_mergeTrunk
…orked for EU21 runs
…dy set by default as desired and remove old ariadne import switches
…to ap_tech_push_release
…switch starting low in 2025 and reaching switch value only in 2040
…SMkup_ind switch starting low in 2025 and reaching switch value only in 2040
… on the industrial subsector
…specific value of 0.1 maximum in Germany
…ynthetic gas, to set of technologies to which adjustment cost are applied
…chnologies, set p_adj_coeff to 24 for elh2 and 16 for MeOH and h22ch4 (8 is default) and p_adj_seed_te to 0.33 for elh2 and 0.5 for MeOH and h22ch4 (1 is default)
… production capacities for the EU based on Adrian's analysis of IEA project data
$ontext | ||
*' Limit biomass solids use in industry to 25% (or historic shares, if they are | ||
*' higher) of baseline solids | ||
*' Cement CCS might otherwise become a compelling BioCCS option under very high |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Either delete it, or not, but do not just comment it out.
= max(0.25 , smax(t2, pm_secBioShare(t2,regi,"fesos","indst") ) ) | ||
* p37_BAU_industry_ETS_solids(t,regi); | ||
); | ||
$offtext |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Either delete it, or not, but do not just comment it out.
*** for ARIADNE scenarios, set minimum energy limit (FE/industry production) in policy runs to energy limit of reference (Npi) run from 2025 | ||
*** as this is already quite optimsitic especially in the near-term | ||
if (cm_startyear gt 2005, | ||
loop (industry_ue_calibration_target_dyn37(out), | ||
p37_energy_limit_slope(t,regi,out)$(t.val ge 2025) = sum(ces_eff_target_dyn37(out,in), | ||
p37_cesIO_baseline(t,regi,in)) | ||
/ p37_cesIO_baseline(t,regi,out); | ||
); | ||
); |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How is this limited to ARIADNE scenarios?
*** allow for up to 5% lower solids share in FE primary steel than in historic data | ||
p37_Psteel_solids_limit("2015",regi) = p37_Psteel_solids_limit("2015",regi) - 0.5; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
How does "5% lower" relate to -0.5
, which looks like "50 % lower"?
p37_Psteel_solids_limit("2035",regi) = p37_Psteel_solids_limit("2015",regi) - 0.2; | ||
p37_Psteel_solids_limit("2035",regi) = p37_Psteel_solids_limit("2015",regi) - 0.5; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Minus 20 % or minus 50 % in 2035? Pick one.
pm_tau_ces_tax(ttot,regi,in)$( NOT ppfen_MkupCost37(in) ) | ||
= p37_CESMkup_input(in); | ||
p37_CESMkup(t,regi,in)$(p37_CESMkup_input(in) | ||
AND ppfen_MkupCost37(in)) = |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Throughout:
- Write the mathematical operator (
*
,/
,+
,-
) at the beginning of a line, not the end of the last line
*** for steel to prevent too fast switch to biomass, set maximum biomass shares in near-term | ||
p37_BioShareMaxSubsec(t,regi,"fesos","steel")$(t.val gt 2015 AND t.val le 2025)=0.3; | ||
p37_BioShareMaxSubsec("2030",regi,"fesos","steel")=0.4; | ||
p37_BioShareMaxSubsec("2035",regi,"fesos","steel")=0.7; | ||
p37_BioShareMaxSubsec("2040",regi,"fesos","steel")=1; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will be infeasible at least once @Renato-Rodrigues makes a dedicated Brazil region. See this discussion.
q37_BioLimitSubsec(t,regi,entyFe,emiMkt).. | ||
sum( se2fe(entySeBio,entyFe,te), | ||
vm_demFEsector(t,regi,entySeBio,entyFE,"indst",emiMkt) | ||
) | ||
=l= | ||
sum(secInd37_emiMkt(secInd37,emiMkt), | ||
p37_BioShareMaxSubsec(t,regi,entyFe,secInd37) | ||
* sum( (secInd37_2_pf(secInd37,in), | ||
fe2ppfen37(entyFe,in)), | ||
vm_cesIO(t,regi,in)) | ||
) | ||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
vm_cesIO
should only link to vm_demFEsector_afterTax
, not vm_demFEsector
. See remindmodel/development_issues#273.
q37_BioLimitSubsec(t,regi,entyFe,emiMkt).. | ||
sum( se2fe(entySeBio,entyFe,te), | ||
vm_demFEsector(t,regi,entySeBio,entyFE,"indst",emiMkt) | ||
) | ||
=l= | ||
sum(secInd37_emiMkt(secInd37,emiMkt), | ||
p37_BioShareMaxSubsec(t,regi,entyFe,secInd37) | ||
* sum( (secInd37_2_pf(secInd37,in), | ||
fe2ppfen37(entyFe,in)), | ||
vm_cesIO(t,regi,in)) | ||
) | ||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will break under PBS, unless vm_outflowPrc
is taken into account, like in q37_demFeIndst
. (q37_demFeIndst_intermediate
on the current merge target, which is outdated.)
q37_Psteel_solids_limit(t,regi)$( t.val ge cm_startyear ) .. | ||
sum(ces_eff_target_dyn37("ue_steel_primary",in), | ||
vm_cesIO(t,regi,in)) | ||
* p37_Psteel_solids_limit(t,regi) | ||
=l= | ||
vm_cesIO(t,regi,"feso_steel") | ||
; |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I find a vm_cesIO("feso_steel") =g= …
formulation more obvious, but ¯\_(ツ)_/¯
is this the code you are referring to in this point? remind/modules/37_industry/subsectors/bounds.gms Lines 117 to 125 in f66a27f
If yes, here is the related issue: https://github.com/remindmodel/development_issues/issues/103
If we follow the sentence included in the original issue:
My suggestion would be to ask somebody from RSE to run the current model version with this code disabled to see if we can remove this entirely from the code if possible. |
I am in favor of discarding this in favor of adjustment costs changes. |
I find this reasonable to assume, but I would connect the minimum electrolysis capacity with the renewables share instead of a hard coded period of time to make it more geenralized. |
Could we check if we can parametrize this for other regions based on PYPSA? maybe @aodenweller |
Maybe you could check git blame to see whom changed this code while you were away, and get the reasoning behind that change. |
I agree. |
I am not able to give an opinion about this. |
Maybe create an issue so the advantages and the way to generalize this can be discussed further? |
I would add this as a generalized option, and not an option specific only for this tech. I could help on the code change if this is the intention. |
I agree with 2020 bounds and lower bounds in future years, but in principle I disagree with upper bounds for future years like 2025, if the upper bounds do not reflect physical limits or active legislation. So I agree with a 2025 coal upper bound, but I would not add a 2025 wind, solar and gas upper bound as there is still things happening in the World that could affect those. If you need those for an specific scenario, these should be only added behind a switch. |
These are already part of the remind trunk, no? remind/modules/47_regipol/regiCarbonPrice/bounds.gms Lines 139 to 148 in f66a27f
|
I have no strong opinion about this. |
I think this is already better implemented in the trunk. remind/modules/47_regipol/regiCarbonPrice/datainput.gms Lines 241 to 263 in f66a27f
|
I have no strong opinion regarding this, but if there is an issue somewhere explaining the reasons behind quick fix it would be nice to give a second look. |
why do you propose to discard this, Felix? If it makes EU upscaling more realistic, I think it is good to have as default |
@fschreyer actually I think this format (github PR) doesn't work for this type of discussion, as too many different questions arise and there is no branching so that replies on one topic are shown below earlier comments on this topic. I would propose copying the high-level discussion to a googledoc, and then for those where the high-level discussion comes to the conclusion "keep/implement", have separate PRs like you proposed yesterday? |
googledoc for discussions here: https://docs.google.com/document/d/1NXNY-LEK03GvCi-wnzd_iADNE8HsqdsnjwmZZ0V3K68/edit |
Unfortunately not yet, but in the future hopefully yes. Bear in mind that PyPSA will solve for a highly integrated European power grid, which might not be entirely plausible given national concerns around security of supply and so on. |
Spread over different PRs. |
Purpose of this PR
This is a PR to compare the current Ariadne branch to the REMIND trunk version. We should discuss this in an upcoming REMIND-EU meeting.
I will describe all relevant changes made throughout 2023 below and we will need to decide whether
a) keep the changes,
b) make changes scenario-dependent behind a switch or generalize them for all regions
c) discard the changes.
If we chose b), note that we have limited capacities for this and we need to find someone to do it if it needs more work. I would therefore suggest to concentrate on option a) and c) and only consider b) if it is quick to implement. I added my suggestions on each change below but please comment if you have other thoughts.
The merge with the trunk was overall a bit messy. To have a more transparent git history, I would cherry-pick / transfer the changes of a) and b) to separate PRs with less commits. Until those PRs are merged, I will continue working with this version for ARIADNE. However, I would afterwards check out a new trunk version such that changes in category c) will be lost. Preferably, the branch should be kept closer to the trunk in the future.
Changes made during Ariadne Project in 2023
Industry Sector
q37_BioLimitSubsec
to limit near-term substitution of fossils with bioenergy (mostly relevant for 2030):Different versions used: 1.) max. 40%/70% biomass in steel by 2030/2035, 2) limit biomass in steel to 10% for all times (as charcoal-based blast furnaces are not under consideration in Germany).
Discussed earlier with Michaja that this could be integrated into the Trunk but it was postponed as it would require correctly initializing the share for all regions based on IEA input data
Regarding changes 1)-3), I compiled a few plots to facilitate the discussion: https://cloud.pik-potsdam.de/index.php/apps/onlyoffice/20335781?filePath=%2FShared%2FREMIND-EU_calibration%2FAriadneScenarios%2FAriadne_REMIND_Changes_2023.pptx
I don't think those changes are a perfect solution but they led us to have emissions reductions that are less steep and more cautious in line with the sectoral model FORECAST. I have not managed to understand the differences to FORECAST in detail, though.
Action: I tend to favor generalizing 1.) into a scenario switch that can be activated to have less ambitious energy efficiency assumptions, discarding 2.) and keeping 3.)
4.) removed bounds that limited maximum biomass use of solids in ETS sectors to 25%
Action: Keep or generalize to scenario switch.
Power Sector
5.) Phase-in of flexibility tax for green hydrogen over time (0 before 2025, 25% in 2025, 50% in 2030, 75% 2035, only full electricity price reduction from 2040 on) [discard]
This was used to have more plausible (higher) hydrogen prices in the near-term and not let the model see the full flexibility benefit from early on. It is based on the assumption that power market design is not fully prepared yet to allow for flexible operation. However, as discussed with Falko it is probably better to steer the upscaling via adjustment cost / CAPEX changes of electrolysis as at least for Ger / EU renewable purchase agreements and Day-Ahead Market start to get used for that. Part of these adjustment cost changes implemented already below (see section 9).
Note: this would come on top of my recent changes of the hydrogen modeling which increased hydrogen prices a bit
Action: Tend to discard this.
6.) Added
q32_elh2VREcapfromTestor
again, constraint that requires some minimum electrolysis capacity to be built at increasing VRE shares. We now phase-in this constraint over time so that it is only fully active from 2035.Action: Tend to keep. But no strong opinion.
7.) Doubled
h2turbVREcapratio
ofp32_storageCap
parameter. This doubles the minimum amount of back-up capacity (H2 or gas turbines) needed at certain VRE shares.q32_h2turbVREcapfromTestor
), usually binding, in current runs in 2045 at 54 GW (H2+Gas Turbines), see/p/tmp/schreyer/Modeling/remind/ariadne/output/Bal_2024-01-29_16.43.31>
. This is about the level that also the Enertile model reaches in the German Langfristszenarien (https://langfristszenarien.de/enertile-explorer-de/szenario-explorer/angebot.php). Others see more like 100 GW needed. I don't have deep knowledge in this field, but I'd think we should not be overly optimistic here without good reason.Action: Keep.
8.) Reduce offshore wind potential in Germany
Action: Discard.
CES Mark-up Cost
9.) Introduced phase-in of CES mark-up cost changes (relative to default) in buildings and industry: linear phase in from 0 to 100% of the long-term change from 2020 to 2040.
enhb
to keep total useful energy at similar levels as today in the long-term as this effect does not reduce much the UE in the near-term.Action: Keep.
Hydrogen / Synfuels
9.) Improved Upscaling: Removed some outdated bounds that prevented synfuel production before 2035 and added adjustment cost to both synfuel technologies
Action: Keep.
11.) Some bounds on hydrogen / synfuel production capacities for EU27 based on Adrian's analysis of IEA project data
Action: Discard
12.) Added
cm_elh2_CF
scenario switch to change capacity factor of electrolysisAction: Keep.
Germany-specific Bounds
13.) historical and near-term fixings (2020 and 2025)
Action: Keep.
14.) coal phase-out bounds
Action: Keep
15.) Scenario-specific Germany bounds
cm_VREminCap
, sets lower bounds on capacities for wind, solar and H2 as specified in the ampel coalition agreement and KSG.Action: Keep (or maybe outdated? I was not there when this was implemented).
Other Switches
16.)
cm_regipol_LUC
switch, user-defined shift of land-use change emissions from Magpie trajectories when employing cm_emiMktTarget with the Grassi offset (LULUCFGrassi option)Action: Keep.
17.)
cm_run_initialCap
, "Switch to entable running the InitialCap module in policy runs"Action: Discard. But no strong opinion.
Type of change
(Make sure to delete from the Type-of-change list the items not relevant to your PR)
Checklist:
remind2
where it was neededforbiddenColumnNames
in readCheckScenarioConfig.R in case the PR leads to deprecated switchesFAIL 0
in the output ofmake test
)CHANGELOG.md
has been updated correctlyFurther information (optional):