From ea907f956e1c1c60254f940d0785bcabb393af3a Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Mon, 17 Oct 2022 14:06:29 +0200 Subject: [PATCH 1/7] add bounds to vm_capCum and vm_costTeCapital for tech_stat 4 technologies to no learn before 2052 --- core/bounds.gms | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/core/bounds.gms b/core/bounds.gms index aa4cef5a2..dfe142d7d 100755 --- a/core/bounds.gms +++ b/core/bounds.gms @@ -271,6 +271,8 @@ if (cm_emiscen ne 1, *nr* cumulated capacity never falls below initial cumulated capacity: vm_capCum.lo(ttot,regi,teLearn)$(ttot.val ge cm_startyear) = pm_data(regi,"ccap0",teLearn); +*** exception for tech_stat 4 technologies whose ccap0 refers to 2025 as these technologies don't exist in 2005 +vm_capCum.lo(ttot,regi,teLearn)$(pm_data(regi,"tech_stat",teLearn) eq 4 AND ttot.val le 2020) = pm_data(regi,"ccap0",teLearn); *nr: floor costs represent the lower bound of learning technologies investment costs vm_costTeCapital.lo(t,regi,teLearn) = pm_data(regi,"floorcost",teLearn); @@ -354,6 +356,12 @@ loop(regi, *** no technologies with tech_stat 4 before 2025 vm_cap.fx(t,regi,te,rlf)$(t.val le 2020 AND pm_data(regi,"tech_stat",te) eq 4)=0; +*** initialize cumulative capacity of tech_stat 4 technologies at 0 +*** (not at ccap0 from generisdata_tech.prn which gives the cucmulative capacity +*** at the initial investment cost of the first year in which the technology can be built) +vm_capCum.fx(t0,regi,teLearn)$(pm_data(regi,"tech_stat",teLearn) eq 4) = 0; +*** tech_stat 4 technologies don't learn before 2025, so capital cost should be fixed +vm_costTeCapital.fx(t,regi,teLearn)$(t.val le 2020 AND pm_data(regi,"tech_stat",teLearn) eq 4)=fm_dataglob("inco0",teLearn); *CB 2012024 ----------------------------------------------------- From 34b6b1ff45d5ff5ca7a6c0f475fd324cae20ac7a Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Mon, 17 Oct 2022 14:07:16 +0200 Subject: [PATCH 2/7] adapt investment cost and initial ccap0 in generisdata_tech.prn for electrolysis --- core/input/generisdata_tech.prn | 21 ++++++++++----------- 1 file changed, 10 insertions(+), 11 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index eb913149d..580017889 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -84,15 +84,15 @@ luse + elh2 dot dhp h2turb h2curt h2turbVRE elh2VRE h22ch4 MeOH tech_stat 4 2 3 3 -inco0 2000 480 360 600 700 0.1 0.1 700 800 +inco0 1500 480 360 600 700 0.1 0.1 700 800 constrTme 2 2 1 2 2 1 1 2 2 mix0 eta 0.73 0.30 0.80 0.40 0.62 0.40 0.73 0.8 0.7 omf 0.05 0.03 0.03 0.03 0.05 0.00 0.00 0.03 0.03 omv 3 12 12 24 0 3 12 lifetime 30 25 25 30 30 30 30 30 30 -incolearn 1500 -ccap0 0.013 +incolearn 1350 +ccap0 0.0065 learn 0.15 @@ -197,14 +197,13 @@ Explanations: Electrolysis - elh2 learning parameterization: -Assume that 20 GW(el) electrolysis installed globally at 1200 EUR/GW(el) in 2025 -(Ueckerdt et al. (2021), https://doi.org/10.1038/s41558-021-01032-7, Fig. S3, - Odenweller et al. (2022), https://doi.org/10.1038/s41560-022-01097-4, Fig. 1d ). - -20 GW(el) * 0.65 (elh2 efficiency) * 1e-3 ~ 0.013 TW(H2) = ccap0 -1200 EUR/GW(el) / 0.65 (elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 2000 USD/kW(H2) = inco0 -Assume floor cost: 350 EUR/GW(el) -350 EUR/GW(el) / 0.75 (long-term elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 500 USD/kW(H2) -> incolearn = 1500 +Assume that 10 GW(el) electrolysis installed globally and CAPEX of 900 EUR/kW(el) in 2025 +(Odenweller et al. (2022), https://doi.org/10.1038/s41560-022-01097-4, +Ueckerdt et al. (2021), https://doi.org/10.1038/s41558-021-01032-7, Fig. S3). +10 GW(el) * 0.65 (elh2 efficiency) * 1e-3 ~ 0.0065 TW(H2) = ccap0 +900 EUR/kW(el) / 0.65 (elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 1500 USD/kW(H2) = inco0 +Assume floor cost: 100 EUR/kW(el) +100 EUR/kW(el) / 0.75 (long-term elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 150 USD/kW(H2) -> incolearn = 1350 Direct Air Capture - dac learning parameterization: From f082b4a424e454fc309a9db8efb77efef0e30b0d Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Mon, 17 Oct 2022 14:08:18 +0200 Subject: [PATCH 3/7] do not apply learning equations to tech_stat 4 technologies before 2025 --- core/equations.gms | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/core/equations.gms b/core/equations.gms index 78add0006..456984fe3 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -381,8 +381,9 @@ qm_deltaCapCumNet(ttot,regi,teLearn)$(ord(ttot) lt card(ttot) AND pm_ttot_val(tt ***--------------------------------------------------------------------------- *' Initial values for cumulated capacities (learning technologies only): +*' (except for tech_stat 4 technologies that have no standing capacities in 2005 and ccap0 refers to another year) ***--------------------------------------------------------------------------- -q_capCumNet(t0,regi,teLearn).. +q_capCumNet(t0,regi,teLearn)$(NOT (pm_data(regi,"tech_stat",teLearn) eq 4)).. vm_capCum(t0,regi,teLearn) =e= pm_data(regi,"ccap0",teLearn); @@ -417,7 +418,8 @@ q_limitGeopot(t,regi,peReComp(enty),rlf).. sum(te$teReComp2pe(enty,te,rlf), (vm_capDistr(t,regi,te,rlf) / (pm_data(regi,"luse",te)/1000))); *** learning curve for investment costs -q_costTeCapital(t,regi,teLearn) .. +*** deactivate learning for tech_stat 4 technologies before 2025 as they are not built before +q_costTeCapital(t,regi,teLearn)$(NOT (pm_data(regi,"tech_stat",teLearn) AND t.val le 2020)) .. vm_costTeCapital(t,regi,teLearn) =e= *** special treatment for first time steps: using global estimates better From 4657072761239d7c3edad851f7bff72c004fa1c6 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Thu, 3 Nov 2022 10:21:28 +0100 Subject: [PATCH 4/7] correct release of bounds on vm_capCum for tech_stat 4 technologies --- core/bounds.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/bounds.gms b/core/bounds.gms index dfe142d7d..3766d2489 100755 --- a/core/bounds.gms +++ b/core/bounds.gms @@ -272,7 +272,7 @@ if (cm_emiscen ne 1, *nr* cumulated capacity never falls below initial cumulated capacity: vm_capCum.lo(ttot,regi,teLearn)$(ttot.val ge cm_startyear) = pm_data(regi,"ccap0",teLearn); *** exception for tech_stat 4 technologies whose ccap0 refers to 2025 as these technologies don't exist in 2005 -vm_capCum.lo(ttot,regi,teLearn)$(pm_data(regi,"tech_stat",teLearn) eq 4 AND ttot.val le 2020) = pm_data(regi,"ccap0",teLearn); +vm_capCum.lo(ttot,regi,teLearn)$(pm_data(regi,"tech_stat",teLearn) eq 4 AND ttot.val le 2020) = 0; *nr: floor costs represent the lower bound of learning technologies investment costs vm_costTeCapital.lo(t,regi,teLearn) = pm_data(regi,"floorcost",teLearn); From f8db0f7bbc9cb45021559fc47a34225e06effccc Mon Sep 17 00:00:00 2001 From: fschreyer <42831977+fschreyer@users.noreply.github.com> Date: Fri, 4 Nov 2022 16:55:01 +0100 Subject: [PATCH 5/7] bugfix condition in q_costTeCapital on techstat 4 technologies Co-authored-by: Adrian Odenweller --- core/equations.gms | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core/equations.gms b/core/equations.gms index 456984fe3..03fb42217 100644 --- a/core/equations.gms +++ b/core/equations.gms @@ -419,7 +419,7 @@ q_limitGeopot(t,regi,peReComp(enty),rlf).. *** learning curve for investment costs *** deactivate learning for tech_stat 4 technologies before 2025 as they are not built before -q_costTeCapital(t,regi,teLearn)$(NOT (pm_data(regi,"tech_stat",teLearn) AND t.val le 2020)) .. +q_costTeCapital(t,regi,teLearn)$(NOT (pm_data(regi,"tech_stat",teLearn) eq 4 AND t.val le 2020)) .. vm_costTeCapital(t,regi,teLearn) =e= *** special treatment for first time steps: using global estimates better From 0c9ebc037ac6651119118d3da33e2934213e874d Mon Sep 17 00:00:00 2001 From: fschreyer <42831977+fschreyer@users.noreply.github.com> Date: Fri, 4 Nov 2022 16:56:52 +0100 Subject: [PATCH 6/7] improve generisdata_tech description of learning parameters for elh2 Co-authored-by: Adrian Odenweller --- core/input/generisdata_tech.prn | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 580017889..3bd46930b 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -197,7 +197,8 @@ Explanations: Electrolysis - elh2 learning parameterization: -Assume that 10 GW(el) electrolysis installed globally and CAPEX of 900 EUR/kW(el) in 2025 +Assume that 10 GW(el) electrolysis installed globally and CAPEX of 900 EUR/kW(el) in 2025 +(slightly optimistic due to recent policies, e.g. EU Hydrogen Bank and US Inflation Reduction Act) (Odenweller et al. (2022), https://doi.org/10.1038/s41560-022-01097-4, Ueckerdt et al. (2021), https://doi.org/10.1038/s41558-021-01032-7, Fig. S3). 10 GW(el) * 0.65 (elh2 efficiency) * 1e-3 ~ 0.0065 TW(H2) = ccap0 From 65f844ed62905b54a61748c35c60a5b10629a937 Mon Sep 17 00:00:00 2001 From: Felix Schreyer Date: Mon, 14 Nov 2022 19:53:37 +0100 Subject: [PATCH 7/7] decrease initial CAPEX of electrolysis to 800 USD/kW(el) at 10 GW cumulated capacity --- core/input/generisdata_tech.prn | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/core/input/generisdata_tech.prn b/core/input/generisdata_tech.prn index 3bd46930b..f7cbb5e09 100644 --- a/core/input/generisdata_tech.prn +++ b/core/input/generisdata_tech.prn @@ -84,14 +84,14 @@ luse + elh2 dot dhp h2turb h2curt h2turbVRE elh2VRE h22ch4 MeOH tech_stat 4 2 3 3 -inco0 1500 480 360 600 700 0.1 0.1 700 800 +inco0 1350 480 360 600 700 0.1 0.1 700 800 constrTme 2 2 1 2 2 1 1 2 2 mix0 eta 0.73 0.30 0.80 0.40 0.62 0.40 0.73 0.8 0.7 omf 0.05 0.03 0.03 0.03 0.05 0.00 0.00 0.03 0.03 omv 3 12 12 24 0 3 12 lifetime 30 25 25 30 30 30 30 30 30 -incolearn 1350 +incolearn 1200 ccap0 0.0065 learn 0.15 @@ -197,14 +197,14 @@ Explanations: Electrolysis - elh2 learning parameterization: -Assume that 10 GW(el) electrolysis installed globally and CAPEX of 900 EUR/kW(el) in 2025 +Assume that 10 GW(el) electrolysis installed globally and CAPEX of 800 EUR/kW(el) in 2025 (slightly optimistic due to recent policies, e.g. EU Hydrogen Bank and US Inflation Reduction Act) (Odenweller et al. (2022), https://doi.org/10.1038/s41560-022-01097-4, Ueckerdt et al. (2021), https://doi.org/10.1038/s41558-021-01032-7, Fig. S3). 10 GW(el) * 0.65 (elh2 efficiency) * 1e-3 ~ 0.0065 TW(H2) = ccap0 -900 EUR/kW(el) / 0.65 (elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 1500 USD/kW(H2) = inco0 +800 EUR/kW(el) / 0.65 (elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 1350 USD/kW(H2) = inco0 Assume floor cost: 100 EUR/kW(el) -100 EUR/kW(el) / 0.75 (long-term elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 150 USD/kW(H2) -> incolearn = 1350 +100 EUR/kW(el) / 0.75 (long-term elh2 efficiency) * 1.1 (EUR to USD, 2015) ~ 150 USD/kW(H2) -> incolearn = 1200 Direct Air Capture - dac learning parameterization: