Skip to content

Commit

Permalink
Adding uncertainty to PV and electrolyzers
Browse files Browse the repository at this point in the history
  • Loading branch information
romainsacchi committed Aug 18, 2024
1 parent ff6582e commit 8979f2f
Show file tree
Hide file tree
Showing 12 changed files with 1,394 additions and 882 deletions.
1,571 changes: 1,005 additions & 566 deletions dev/Untitled1.ipynb

Large diffs are not rendered by default.

Binary file modified premise/data/additional_inventories/lci-PV-GaAs.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-PV-perovskite.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-hydrogen-electrolysis.xlsx
Binary file not shown.
Binary file not shown.
2 changes: 1 addition & 1 deletion premise/data/fuels/fuel_groups.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@ gas:

hydrogen:
- hydrogen, from petroleum
- hydrogen, from electrolysis
- hydrogen, from electrolysis, PEM
- hydrogen, from solar
- hydrogen, from pyrolysis
- hydrogen, from biomass
Expand Down
81 changes: 48 additions & 33 deletions premise/data/fuels/hydrogen_efficiency_parameters.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,4 @@
from electrolysis (PEM):
name: hydrogen production, gaseous, 30 bar, from PEM electrolysis, from grid electricity
var: hydrogen, from electrolysis
hydrogen, from electrolysis, PEM:
feedstock name: electricity, low voltage
feedstock unit: kilowatt hour
efficiency:
Expand All @@ -14,63 +12,80 @@ from electrolysis (PEM):
maximum: 52.5
floor value: 45.3

from SMR of biogas, with CCS:
name: hydrogen production, steam methane reforming, from biomethane, with CCS
var: hydrogen, from biogas, with CCS
hydrogen, from electrolysis, AEC:
feedstock name: electricity, low voltage
feedstock unit: kilowatt hour
efficiency:
2020:
mean: 51.8
minimum: 48.7
maximum: 54.9
2050:
mean: 48.5
minimum: 47.1
maximum: 49.9
floor value: 47.1

hydrogen, from electrolysis, SOEC:
feedstock name: electricity, low voltage
feedstock unit: kilowatt hour
efficiency:
2020:
mean: 42.3
minimum: 41.2
maximum: 43.4
2050:
mean: 40.6
minimum: 40.0
maximum: 41.2
floor value: 40.0

hydrogen, from biogas, with CCS:
feedstock name: biomethane
feedstock unit: kilogram
floor value: 3.2
from SMR of biogas:
name: hydrogen production, steam methane reforming, from biomethane
var: hydrogen, from biogas

hydrogen, from biogas:
feedstock name: biomethane
feedstock unit: kilogram
floor value: 3.2
from SMR of natural gas:
name: hydrogen production, steam methane reforming
var: hydrogen, from natural gas

hydrogen, from natural gas:
feedstock name: natural gas
feedstock unit: cubic meter
floor value: 3.5
from SMR of natural gas, with CCS:
name: hydrogen production, steam methane reforming, with CCS
var: hydrogen, from natural gas, with CCS

hydrogen, from natural gas, with CCS:
feedstock name: natural gas
feedstock unit: cubic meter
floor value: 3.5
from gasification of biomass, with CCS:
name: hydrogen production, gaseous, 25 bar, from gasification of woody biomass in entrained flow gasifier, with CCS, at gasification plant
var: hydrogen, from biomass, with CCS

hydrogen, from biomass, with CCS:
feedstock name: wood chips
feedstock unit: kilogram
floor value: 7
from gasification of biomass:
name: hydrogen production, gaseous, 25 bar, from gasification of woody biomass in entrained flow gasifier, at gasification plant
var: hydrogen, from biomass

hydrogen, from biomass:
feedstock name: wood chips
feedstock unit: kilogram
floor value: 7
from coal gasification:
name: hydrogen production, coal gasification
var: hydrogen, from coal

hydrogen, from coal:
feedstock name: hard coal
feedstock unit: kilogram
floor value: 5
from coal gasification, with CCS:
name: hydrogen production, coal gasification, with CCS
var: hydrogen, from coal, with CCS

hydrogen, from coal, with CCS:
feedstock name: hard coal
feedstock unit: kilogram
floor value: 5
from pyrolysis:
name: hydrogen production, gaseous, 100 bar, from methane pyrolysis
var: hydrogen, from pyrolysis

hydrogen, from pyrolysis:
feedstock name: natural gas
feedstock unit: cubic meter
floor value: 6.5
from thermochemical water splitting:
name: hydrogen production, gaseous, 25 bar, from thermochemical water splitting, at solar tower
var: hydrogen, from solar

hydrogen, from solar:
feedstock name: Energy, solar, converted
feedstock unit: megajoule
floor value: 180
51 changes: 28 additions & 23 deletions premise/data/renewables/efficiency_solar_PV.csv
Original file line number Diff line number Diff line change
@@ -1,23 +1,28 @@
technology;year;efficiency
micro-Si;2010;0.1
single-Si;2010;0.151
multi-Si;2010;0.14
CIGS;2010;0.11
CIS;2010;0.11
CdTe;2010;0.1
micro-Si;2020;0.119
single-Si;2020;0.179
multi-Si;2020;0.168
perovskite;2020;0.25
GaAs;2020;0.28
CIGS;2020;0.14
CIS;2020;0.14
CdTe;2020;0.168
micro-Si;2050;0.125
single-Si;2050;0.267
multi-Si;2050;0.244
CIGS;2050;0.234
CIS;2050;0.234
CdTe;2050;0.21
perovskite;2050;0.25
GaAs;2050;0.28
technology,year,mean,min,max,source
micro-Si,2010,0.1,0.075,0.125,Past eff: https://iea.blob.core.windows.net/assets/3a99654f-ffff-469f-b83c-bf0386ed8537/pv_roadmap.pdf; Uncertainty: Own assumption: -+25%
single-Si,2010,0.15,0.11325,0.18875,Past eff: https://treeze.ch/fileadmin/user_upload/downloads/Publications/Case_Studies/Energy/Future-PV-LCA-IEA-PVPS-Task-12-March-2015.pdf; Uncertainty: Own assumption: -+25%
multi-Si,2010,0.14,0.105,0.175,Past eff: https://iea.blob.core.windows.net/assets/3a99654f-ffff-469f-b83c-bf0386ed8537/pv_roadmap.pdf; Uncertainty: Own assumption: -+25%
CIGS,2010,0.11,0.0825,0.1375,Past eff: https://iea.blob.core.windows.net/assets/3a99654f-ffff-469f-b83c-bf0386ed8537/pv_roadmap.pdf; Uncertainty: Own assumption: -+25%
CIS,2010,0.11,0.0825,0.1375,Past eff: https://iea.blob.core.windows.net/assets/3a99654f-ffff-469f-b83c-bf0386ed8537/pv_roadmap.pdf; Uncertainty: Own assumption: -+25%
CdTe,2010,0.1,0.075,0.125,Past eff: https://iea.blob.core.windows.net/assets/3a99654f-ffff-469f-b83c-bf0386ed8537/pv_roadmap.pdf; Uncertainty: Own assumption: -+25%
GaAs,2010,0.28,0.21,0.35,Past efficiencies same as current.
perovskite,2010,0.25,0.1875,0.3125,Past efficiencies same as current.
micro-Si,2020,0.12,0.08925,0.14875,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
single-Si,2020,0.18,0.13425,0.22375,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
multi-Si,2020,0.17,0.126,0.21,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
perovskite,2020,0.25,0.1875,0.3125,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
GaAs,2020,0.28,0.21,0.35,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
CIGS,2020,0.14,0.105,0.175,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
CIS,2020,0.14,0.105,0.175,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
CdTe,2020,0.17,0.126,0.21,Current eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
single-Si,2023,0.22,0.174,0.235,https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
CdTe,2023,0.19,0.17,0.2,https://www.sciencedirect.com/science/article/pii/S0927024823001101; https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
CIGS,2023,0.15,0.11,0.19,https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
micro-Si,2050,0.13,0.09375,0.15625,https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
single-Si,2050,0.27,0.20475,0.34125,https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
multi-Si,2050,0.24,0.183,0.305,https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
CIGS,2050,0.23,0.1755,0.2925,"https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf. For future efficiency: own assumption, -+25%."
CIS,2050,0.23,0.1755,0.2925,Future eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
CdTe,2050,0.226,0.22,0.25,https://www.sciencedirect.com/science/article/pii/S0927024823001101
perovskite,2050,0.252,0.22,0.3125,https://pubs.rsc.org/en/content/articlelanding/2022/se/d2se00096b; https://www.csem.ch/en/news/photovoltaic-technology-breakthrough-achieving-31.25-efficiency/
GaAs,2050,0.28,0.25,0.28,https://link.springer.com/article/10.1007/s11367-020-01791-z
34 changes: 26 additions & 8 deletions premise/electricity.py
Original file line number Diff line number Diff line change
Expand Up @@ -1454,32 +1454,50 @@ def update_efficiency_of_solar_pv(self) -> None:
current_eff = power / max_power

if self.year in module_eff.coords["year"].values:
new_eff = module_eff.sel(technology=pv_tech, year=self.year).values
new_mean_eff = module_eff.sel(technology=pv_tech, year=self.year, efficiency_type="mean").values
new_min_eff = module_eff.sel(technology=pv_tech, year=self.year, efficiency_type="min").values
new_max_eff = module_eff.sel(technology=pv_tech, year=self.year, efficiency_type="max").values
else:
new_eff = (
module_eff.sel(technology=pv_tech)
new_mean_eff = (
module_eff.sel(technology=pv_tech, efficiency_type="mean")
.interp(year=self.year, kwargs={"fill_value": "extrapolate"})
.values
)
new_min_eff = (
module_eff.sel(technology=pv_tech, efficiency_type="min")
.interp(year=self.year, kwargs={"fill_value": "extrapolate"})
.values
)
new_max_eff = (
module_eff.sel(technology=pv_tech, efficiency_type="max")
.interp(year=self.year, kwargs={"fill_value": "extrapolate"})
.values
)

# in case self.year <10 or >2050
new_eff = np.clip(new_eff, 0.1, 0.27)
new_mean_eff = np.clip(new_mean_eff, 0.1, 0.30)
new_min_eff = np.clip(new_min_eff, 0.1, 0.30)
new_max_eff = np.clip(new_max_eff, 0.1, 0.30)

# We only update the efficiency if it is higher than the current one.
if new_eff.sum() > current_eff:
exc["amount"] *= float(current_eff / new_eff)
if new_mean_eff.sum() > current_eff:
exc["amount"] *= float(current_eff / new_mean_eff)
exc["uncertainty type"] = 5
exc["loc"] = exc["amount"]
exc["minimum"] = exc["amount"] * (new_min_eff / new_mean_eff)
exc["maximum"] = exc["amount"] * (new_max_eff / new_mean_eff)

dataset["comment"] = (
f"`premise` has changed the efficiency "
f"of this photovoltaic installation "
f"from {int(current_eff * 100)} pct. to {int(new_eff * 100)} pt."
f"from {int(current_eff * 100)} pct. to {int(new_mean_eff * 100)} pt."
)

if "log parameters" not in dataset:
dataset["log parameters"] = {}

dataset["log parameters"].update({"old efficiency": current_eff})
dataset["log parameters"].update({"new efficiency": new_eff})
dataset["log parameters"].update({"new efficiency": new_mean_eff})

# add to log
self.write_log(dataset=dataset, status="updated")
Expand Down
Loading

0 comments on commit 8979f2f

Please sign in to comment.