From 8979f2faa05c0c25d73fb70fbb572cc3baf6526f Mon Sep 17 00:00:00 2001 From: romainsacchi Date: Sun, 18 Aug 2024 21:22:09 +0200 Subject: [PATCH] Adding uncertainty to PV and electrolyzers --- dev/Untitled1.ipynb | 1571 +++++++++++------ .../additional_inventories/lci-PV-GaAs.xlsx | Bin 28120 -> 28179 bytes .../lci-PV-perovskite.xlsx | Bin 48487 -> 48304 bytes .../lci-hydrogen-electrolysis.xlsx | Bin 66961 -> 66948 bytes ...drogen-thermochemical-water-splitting.xlsx | Bin 17627 -> 17622 bytes premise/data/fuels/fuel_groups.yaml | 2 +- .../fuels/hydrogen_efficiency_parameters.yml | 81 +- .../data/renewables/efficiency_solar_PV.csv | 51 +- premise/electricity.py | 34 +- premise/fuels.py | 500 +++--- .../fuels_variables.yaml | 27 +- premise/utils.py | 10 +- 12 files changed, 1394 insertions(+), 882 deletions(-) diff --git a/dev/Untitled1.ipynb b/dev/Untitled1.ipynb index c7ddfd8e..0b8a1a0f 100644 --- a/dev/Untitled1.ipynb +++ b/dev/Untitled1.ipynb @@ -2,31 +2,22 @@ "cells": [ { "cell_type": "code", - "execution_count": 5, + "execution_count": 1, "id": "5018b7ee-0169-49d7-9455-2f1aea562e9e", "metadata": {}, "outputs": [], "source": [ "from premise import *\n", "from datapackage import Package\n", - "import bw2io as bw" - ] - }, - { - "cell_type": "code", - "execution_count": 6, - "id": "0ca27c06-948c-4584-bebe-d505cb72d4f9", - "metadata": {}, - "outputs": [], - "source": [ + "import bw2io as bw\n", "import bw2data\n", "bw2data.projects.set_current(\"ei310\")" ] }, { "cell_type": "code", - "execution_count": 7, - "id": "e408d76b-8288-4661-9089-f8c3f6191743", + "execution_count": 2, + "id": "a7e06058-5dac-4823-9666-356705977382", "metadata": {}, "outputs": [ { @@ -43,7 +34,7 @@ }, { "cell_type": "code", - "execution_count": 8, + "execution_count": 2, "id": "bee86950-ac96-49e0-8a9c-43920ae26096", "metadata": {}, "outputs": [ @@ -51,7 +42,7 @@ "name": "stdout", "output_type": "stream", "text": [ - "premise v.(2, 1, 1, 'dev6')\n", + "premise v.(2, 1, 1, 'dev8')\n", "+------------------------------------------------------------------+\n", "| Warning |\n", "+------------------------------------------------------------------+\n", @@ -87,507 +78,6 @@ "NewDatabase(..., quiet=True)\n", "- Extracting source database\n", "- Extracting inventories\n", - "Cannot find cached inventories. Will create them now for next time...\n", - "Importing default inventories...\n", - "\n", - "Extracted 1 worksheets in 0.09 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 4 worksheets in 0.17 seconds\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 7 worksheets in 0.03 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.03 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.03 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.03 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 2 worksheets in 0.02 seconds\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.32 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "The following datasets to import already exist in the source database. They will not be imported\n", - "+--------------------------------+--------------------------------+----------+-------------+\n", - "| Name | Reference product | Location | File |\n", - "+--------------------------------+--------------------------------+----------+-------------+\n", - "| fluorspar production, 97% puri | fluorspar, 97% purity | GLO | lci-PV.xlsx |\n", - "| metallization paste production | metallization paste, back side | RER | lci-PV.xlsx |\n", - "| metallization paste production | metallization paste, back side | RER | lci-PV.xlsx |\n", - "| metallization paste production | metallization paste, front sid | RER | lci-PV.xlsx |\n", - "| photovoltaic module production | photovoltaic module, building- | RER | lci-PV.xlsx |\n", - "| photovoltaic module production | photovoltaic module, building- | RER | lci-PV.xlsx |\n", - "| photovoltaic mounting system p | photovoltaic mounting system, | RER | lci-PV.xlsx |\n", - "| photovoltaic mounting system p | photovoltaic mounting system, | RER | lci-PV.xlsx |\n", - "| photovoltaic mounting system p | photovoltaic mounting system, | RER | lci-PV.xlsx |\n", - "| photovoltaic panel factory con | photovoltaic panel factory | GLO | lci-PV.xlsx |\n", - "| polyvinylfluoride production | polyvinylfluoride | US | lci-PV.xlsx |\n", - "| polyvinylfluoride production, | polyvinylfluoride, dispersion | US | lci-PV.xlsx |\n", - "| polyvinylfluoride, film produc | polyvinylfluoride, film | US | lci-PV.xlsx |\n", - "| silicon production, metallurgi | silicon, metallurgical grade | NO | lci-PV.xlsx |\n", - "| vinyl fluoride production | vinyl fluoride | US | lci-PV.xlsx |\n", - "| wafer factory construction | wafer factory | DE | lci-PV.xlsx |\n", - "+--------------------------------+--------------------------------+----------+-------------+\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.04 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "The following datasets to import already exist in the source database. They will not be imported\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| Name | Reference product | Location | File |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| carbon dioxide, captured at ce | carbon dioxide, captured and r | RER | lci-synfuels-from-methanol-fro |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "The following datasets to import already exist in the source database. They will not be imported\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| Name | Reference product | Location | File |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| hydrogen production, coal gasi | hydrogen, gaseous, low pressur | RoW | lci-hydrogen-coal-gasification |\n", - "| methanol production, coal gasi | methanol | RoW | lci-hydrogen-coal-gasification |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "The following datasets to import already exist in the source database. They will not be imported\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| Name | Reference product | Location | File |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| hydrogen production, steam met | hydrogen, gaseous, low pressur | RER | lci-hydrogen-smr-atr-natgas.xl |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "The following datasets to import already exist in the source database. They will not be imported\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| Name | Reference product | Location | File |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "| methanol production facility, | methanol production facility, | RER | lci-synfuels-from-methanol-fro |\n", - "+--------------------------------+--------------------------------+----------+--------------------------------+\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 5 worksheets in 0.14 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.03 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.07 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.04 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.01 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 19 worksheets in 0.30 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.21 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.16 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 1.57 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.03 seconds\n", - "Migrating to 3.8 first\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Applying strategy: migrate_datasets\n", - "Applying strategy: migrate_exchanges\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Extracted 1 worksheets in 0.02 seconds\n", - "Data cached. It is advised to restart your workflow at this point.\n", - "This allows premise to use the cached data instead, which results in\n", - "a faster workflow.\n", "- Fetching IAM data\n", "Done!\n" ] @@ -599,7 +89,7 @@ " #{\"model\":\"remind\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", " #{\"model\":\"remind\", \"pathway\":\"SSP2-Base\", \"year\":2010},\n", " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2020},\n", - " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", + " {\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", " {\"model\":\"remind\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2040},\n", " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", @@ -619,7 +109,7 @@ }, { "cell_type": "code", - "execution_count": null, + "execution_count": 3, "id": "0c80994c-cbac-4143-81ee-1de1531a6f95", "metadata": {}, "outputs": [ @@ -627,36 +117,69 @@ "name": "stderr", "output_type": "stream", "text": [ - "Processing scenarios: 0%| | 0/1 [00:00\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'efficiency' (year: 4, technology: 8, efficiency_type: 3)> Size: 768B\n",
+       "array([[[0.1375 , 0.11   , 0.0825 ],\n",
+       "        [0.1375 , 0.11   , 0.0825 ],\n",
+       "        [0.125  , 0.1    , 0.075  ],\n",
+       "        [0.35   , 0.28   , 0.21   ],\n",
+       "        [0.125  , 0.1    , 0.075  ],\n",
+       "        [0.175  , 0.14   , 0.105  ],\n",
+       "        [0.3125 , 0.25   , 0.1875 ],\n",
+       "        [0.18875, 0.15   , 0.11325]],\n",
+       "\n",
+       "       [[0.175  , 0.14   , 0.105  ],\n",
+       "        [0.175  , 0.14   , 0.105  ],\n",
+       "        [0.21   , 0.17   , 0.126  ],\n",
+       "        [0.35   , 0.28   , 0.21   ],\n",
+       "        [0.14875, 0.12   , 0.08925],\n",
+       "        [0.21   , 0.17   , 0.126  ],\n",
+       "        [0.3125 , 0.25   , 0.1875 ],\n",
+       "        [0.22375, 0.18   , 0.13425]],\n",
+       "\n",
+       "       [[0.19   , 0.15   , 0.11   ],\n",
+       "        [0.18675, 0.149  , 0.11205],\n",
+       "        [0.2    , 0.19   , 0.17   ],\n",
+       "        [0.343  , 0.28   , 0.214  ],\n",
+       "        [0.1495 , 0.121  , 0.0897 ],\n",
+       "        [0.2195 , 0.177  , 0.1317 ],\n",
+       "        [0.3125 , 0.2502 , 0.19075],\n",
+       "        [0.235  , 0.22   , 0.174  ]],\n",
+       "\n",
+       "       [[0.2925 , 0.23   , 0.1755 ],\n",
+       "        [0.2925 , 0.23   , 0.1755 ],\n",
+       "        [0.25   , 0.226  , 0.22   ],\n",
+       "        [0.28   , 0.28   , 0.25   ],\n",
+       "        [0.15625, 0.13   , 0.09375],\n",
+       "        [0.305  , 0.24   , 0.183  ],\n",
+       "        [0.3125 , 0.252  , 0.22   ],\n",
+       "        [0.34125, 0.27   , 0.20475]]])\n",
+       "Coordinates:\n",
+       "  * year             (year) int64 32B 2010 2020 2023 2050\n",
+       "  * technology       (technology) object 64B 'CIGS' 'CIS' ... 'single-Si'\n",
+       "  * efficiency_type  (efficiency_type) object 24B 'max efficiency' ... 'min e...
" + ], + "text/plain": [ + " Size: 768B\n", + "array([[[0.1375 , 0.11 , 0.0825 ],\n", + " [0.1375 , 0.11 , 0.0825 ],\n", + " [0.125 , 0.1 , 0.075 ],\n", + " [0.35 , 0.28 , 0.21 ],\n", + " [0.125 , 0.1 , 0.075 ],\n", + " [0.175 , 0.14 , 0.105 ],\n", + " [0.3125 , 0.25 , 0.1875 ],\n", + " [0.18875, 0.15 , 0.11325]],\n", + "\n", + " [[0.175 , 0.14 , 0.105 ],\n", + " [0.175 , 0.14 , 0.105 ],\n", + " [0.21 , 0.17 , 0.126 ],\n", + " [0.35 , 0.28 , 0.21 ],\n", + " [0.14875, 0.12 , 0.08925],\n", + " [0.21 , 0.17 , 0.126 ],\n", + " [0.3125 , 0.25 , 0.1875 ],\n", + " [0.22375, 0.18 , 0.13425]],\n", + "\n", + " [[0.19 , 0.15 , 0.11 ],\n", + " [0.18675, 0.149 , 0.11205],\n", + " [0.2 , 0.19 , 0.17 ],\n", + " [0.343 , 0.28 , 0.214 ],\n", + " [0.1495 , 0.121 , 0.0897 ],\n", + " [0.2195 , 0.177 , 0.1317 ],\n", + " [0.3125 , 0.2502 , 0.19075],\n", + " [0.235 , 0.22 , 0.174 ]],\n", + "\n", + " [[0.2925 , 0.23 , 0.1755 ],\n", + " [0.2925 , 0.23 , 0.1755 ],\n", + " [0.25 , 0.226 , 0.22 ],\n", + " [0.28 , 0.28 , 0.25 ],\n", + " [0.15625, 0.13 , 0.09375],\n", + " [0.305 , 0.24 , 0.183 ],\n", + " [0.3125 , 0.252 , 0.22 ],\n", + " [0.34125, 0.27 , 0.20475]]])\n", + "Coordinates:\n", + " * year (year) int64 32B 2010 2020 2023 2050\n", + " * technology (technology) object 64B 'CIGS' 'CIS' ... 'single-Si'\n", + " * efficiency_type (efficiency_type) object 24B 'max efficiency' ... 'min e..." + ] + }, + "execution_count": 3, + "metadata": {}, + "output_type": "execute_result" + } + ], + "source": [ + "arr" + ] + }, + { + "cell_type": "code", + "execution_count": 7, + "id": "76069a0c-6bf1-49ed-a57b-e042026aa2b4", + "metadata": {}, + "outputs": [ + { + "data": { + "text/html": [ + "
\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "\n", + "
<xarray.DataArray 'efficiency' ()> Size: 8B\n",
+       "array(0.1375)\n",
+       "Coordinates:\n",
+       "    year             int64 8B 2010\n",
+       "    technology       <U4 16B 'CIGS'\n",
+       "    efficiency_type  <U14 56B 'max efficiency'
" + ], + "text/plain": [ + " Size: 8B\n", + "array(0.1375)\n", + "Coordinates:\n", + " year int64 8B 2010\n", + " technology 3\u001B[0m scenario \u001B[38;5;241m=\u001B[39m \u001B[43mload_database\u001B[49m\u001B[43m(\u001B[49m\u001B[43mscenario\u001B[49m\u001B[43m)\u001B[49m\n", - "File \u001B[0;32m~/GitHub/premise/premise/utils.py:388\u001B[0m, in \u001B[0;36mload_database\u001B[0;34m(scenario)\u001B[0m\n\u001B[1;32m 385\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m scenario\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mdatabase\u001B[39m\u001B[38;5;124m\"\u001B[39m) \u001B[38;5;129;01mis\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m \u001B[38;5;28;01mNone\u001B[39;00m:\n\u001B[1;32m 386\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m scenario\n\u001B[0;32m--> 388\u001B[0m filepath \u001B[38;5;241m=\u001B[39m \u001B[43mscenario\u001B[49m\u001B[43m[\u001B[49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[38;5;124;43mdatabase filepath\u001B[39;49m\u001B[38;5;124;43m\"\u001B[39;49m\u001B[43m]\u001B[49m\n\u001B[1;32m 390\u001B[0m \u001B[38;5;66;03m# load pickle\u001B[39;00m\n\u001B[1;32m 391\u001B[0m \u001B[38;5;28;01mwith\u001B[39;00m \u001B[38;5;28mopen\u001B[39m(filepath, \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mrb\u001B[39m\u001B[38;5;124m\"\u001B[39m) \u001B[38;5;28;01mas\u001B[39;00m f:\n", - "\u001B[0;31mKeyError\u001B[0m: 'database filepath'" + "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[0;31mKeyError\u001b[0m Traceback (most recent call last)", + "Cell \u001b[0;32mIn[12], line 3\u001b[0m\n\u001b[1;32m 1\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01mpremise\u001b[39;00m\u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mutils\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m load_database\n\u001b[1;32m 2\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m scenario \u001b[38;5;129;01min\u001b[39;00m ndb\u001b[38;5;241m.\u001b[39mscenarios:\n\u001b[0;32m----> 3\u001b[0m scenario \u001b[38;5;241m=\u001b[39m \u001b[43mload_database\u001b[49m\u001b[43m(\u001b[49m\u001b[43mscenario\u001b[49m\u001b[43m)\u001b[49m\n", + "File \u001b[0;32m~/GitHub/premise/premise/utils.py:388\u001b[0m, in \u001b[0;36mload_database\u001b[0;34m(scenario)\u001b[0m\n\u001b[1;32m 385\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m scenario\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mdatabase\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;129;01mis\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m \u001b[38;5;28;01mNone\u001b[39;00m:\n\u001b[1;32m 386\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m scenario\n\u001b[0;32m--> 388\u001b[0m filepath \u001b[38;5;241m=\u001b[39m \u001b[43mscenario\u001b[49m\u001b[43m[\u001b[49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[38;5;124;43mdatabase filepath\u001b[39;49m\u001b[38;5;124;43m\"\u001b[39;49m\u001b[43m]\u001b[49m\n\u001b[1;32m 390\u001b[0m \u001b[38;5;66;03m# load pickle\u001b[39;00m\n\u001b[1;32m 391\u001b[0m \u001b[38;5;28;01mwith\u001b[39;00m \u001b[38;5;28mopen\u001b[39m(filepath, \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mrb\u001b[39m\u001b[38;5;124m\"\u001b[39m) \u001b[38;5;28;01mas\u001b[39;00m f:\n", + "\u001b[0;31mKeyError\u001b[0m: 'database filepath'" ] } ], @@ -1883,13 +2322,13 @@ "evalue": "", "output_type": "error", "traceback": [ - "\u001B[1;31m---------------------------------------------------------------------------\u001B[0m", - "\u001B[1;31mKeyboardInterrupt\u001B[0m Traceback (most recent call last)", - "\u001B[1;32m~\\AppData\\Local\\Temp/ipykernel_20348/44398783.py\u001B[0m in \u001B[0;36m\u001B[1;34m\u001B[0m\n\u001B[0;32m 18\u001B[0m \u001B[0mprint\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;34m\"1\"\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mdataset\u001B[0m\u001B[1;33m[\u001B[0m\u001B[1;34m\"name\"\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mi\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mj\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mtype\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mj\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mfloat\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mj\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 19\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 20\u001B[1;33m \u001B[1;32mfor\u001B[0m \u001B[0me\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mdataset\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mexchanges\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 21\u001B[0m \u001B[1;32mfor\u001B[0m \u001B[0mk\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mv\u001B[0m \u001B[1;32min\u001B[0m \u001B[0me\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mitems\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 22\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0misinstance\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mv\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mnp\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfloat64\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", - "\u001B[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\bw2data\\backends\\peewee\\proxies.py\u001B[0m in \u001B[0;36m__iter__\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 74\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 75\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0m__iter__\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m---> 76\u001B[1;33m \u001B[1;32mfor\u001B[0m \u001B[0mobj\u001B[0m \u001B[1;32min\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0m_get_queryset\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 77\u001B[0m \u001B[1;32myield\u001B[0m \u001B[0mExchange\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mobj\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 78\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n", - "\u001B[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001B[0m in \u001B[0;36mnext\u001B[1;34m(self)\u001B[0m\n\u001B[0;32m 4376\u001B[0m \u001B[0mobj\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrow_cache\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mindex\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4377\u001B[0m \u001B[1;32melif\u001B[0m \u001B[1;32mnot\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpopulated\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 4378\u001B[1;33m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0miterate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 4379\u001B[0m \u001B[0mobj\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor_wrapper\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mrow_cache\u001B[0m\u001B[1;33m[\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mindex\u001B[0m\u001B[1;33m]\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4380\u001B[0m \u001B[1;32melse\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", - "\u001B[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001B[0m in \u001B[0;36miterate\u001B[1;34m(self, cache)\u001B[0m\n\u001B[0;32m 4286\u001B[0m \u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4287\u001B[0m \u001B[1;32mdef\u001B[0m \u001B[0miterate\u001B[0m\u001B[1;33m(\u001B[0m\u001B[0mself\u001B[0m\u001B[1;33m,\u001B[0m \u001B[0mcache\u001B[0m\u001B[1;33m=\u001B[0m\u001B[1;32mTrue\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[1;32m-> 4288\u001B[1;33m \u001B[0mrow\u001B[0m \u001B[1;33m=\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mcursor\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mfetchone\u001B[0m\u001B[1;33m(\u001B[0m\u001B[1;33m)\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0m\u001B[0;32m 4289\u001B[0m \u001B[1;32mif\u001B[0m \u001B[0mrow\u001B[0m \u001B[1;32mis\u001B[0m \u001B[1;32mNone\u001B[0m\u001B[1;33m:\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n\u001B[0;32m 4290\u001B[0m \u001B[0mself\u001B[0m\u001B[1;33m.\u001B[0m\u001B[0mpopulated\u001B[0m \u001B[1;33m=\u001B[0m \u001B[1;32mTrue\u001B[0m\u001B[1;33m\u001B[0m\u001B[1;33m\u001B[0m\u001B[0m\n", - "\u001B[1;31mKeyboardInterrupt\u001B[0m: " + "\u001b[1;31m---------------------------------------------------------------------------\u001b[0m", + "\u001b[1;31mKeyboardInterrupt\u001b[0m Traceback (most recent call last)", + "\u001b[1;32m~\\AppData\\Local\\Temp/ipykernel_20348/44398783.py\u001b[0m in \u001b[0;36m\u001b[1;34m\u001b[0m\n\u001b[0;32m 18\u001b[0m \u001b[0mprint\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;34m\"1\"\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m[\u001b[0m\u001b[1;34m\"name\"\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mi\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mj\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mtype\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mfloat\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 19\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 20\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0me\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mdataset\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mexchanges\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 21\u001b[0m \u001b[1;32mfor\u001b[0m \u001b[0mk\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mv\u001b[0m \u001b[1;32min\u001b[0m \u001b[0me\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mitems\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 22\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0misinstance\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mv\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mnp\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfloat64\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\bw2data\\backends\\peewee\\proxies.py\u001b[0m in \u001b[0;36m__iter__\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 74\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 75\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0m__iter__\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m---> 76\u001b[1;33m \u001b[1;32mfor\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;32min\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0m_get_queryset\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 77\u001b[0m \u001b[1;32myield\u001b[0m \u001b[0mExchange\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mobj\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 78\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001b[0m in \u001b[0;36mnext\u001b[1;34m(self)\u001b[0m\n\u001b[0;32m 4376\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrow_cache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4377\u001b[0m \u001b[1;32melif\u001b[0m \u001b[1;32mnot\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpopulated\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4378\u001b[1;33m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0miterate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4379\u001b[0m \u001b[0mobj\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor_wrapper\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mrow_cache\u001b[0m\u001b[1;33m[\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mindex\u001b[0m\u001b[1;33m]\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4380\u001b[0m \u001b[1;32melse\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;32m~\\AppData\\Local\\Continuum\\miniconda3\\envs\\main_env\\lib\\site-packages\\peewee.py\u001b[0m in \u001b[0;36miterate\u001b[1;34m(self, cache)\u001b[0m\n\u001b[0;32m 4286\u001b[0m \u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4287\u001b[0m \u001b[1;32mdef\u001b[0m \u001b[0miterate\u001b[0m\u001b[1;33m(\u001b[0m\u001b[0mself\u001b[0m\u001b[1;33m,\u001b[0m \u001b[0mcache\u001b[0m\u001b[1;33m=\u001b[0m\u001b[1;32mTrue\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[1;32m-> 4288\u001b[1;33m \u001b[0mrow\u001b[0m \u001b[1;33m=\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mcursor\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mfetchone\u001b[0m\u001b[1;33m(\u001b[0m\u001b[1;33m)\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0m\u001b[0;32m 4289\u001b[0m \u001b[1;32mif\u001b[0m \u001b[0mrow\u001b[0m \u001b[1;32mis\u001b[0m \u001b[1;32mNone\u001b[0m\u001b[1;33m:\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n\u001b[0;32m 4290\u001b[0m \u001b[0mself\u001b[0m\u001b[1;33m.\u001b[0m\u001b[0mpopulated\u001b[0m \u001b[1;33m=\u001b[0m \u001b[1;32mTrue\u001b[0m\u001b[1;33m\u001b[0m\u001b[1;33m\u001b[0m\u001b[0m\n", + "\u001b[1;31mKeyboardInterrupt\u001b[0m: " ] } ], @@ -3541,7 +3980,7 @@ "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", - "version": "3.10.13" + "version": "3.11.8" } }, "nbformat": 4, diff --git a/premise/data/additional_inventories/lci-PV-GaAs.xlsx b/premise/data/additional_inventories/lci-PV-GaAs.xlsx index 5f8053842e14cb6a7f670718abaadc6506b9b293..3a304ee26a05801f5242d73105bfc882053678a1 100644 GIT binary patch delta 16501 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 z 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 aL;wFCpqT37C=5QDTJJ~+lWq5(>VE-YBRe$! delta 16425 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

e*%B`%i!UD-o)< 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 delta 39550 zcmV)qK$^d>`2y$q0Ni~}PzSkt=W3pOhJBtzmx z#5`feTVMY=iwsZKDoKijWW1n#{he0&=fSVP+-RKNA4{rq*WRZc{Tin&Q0)7tsu?daUo&-x5 zN98OQyy8oF3(#ms`oex}B8<;mu)Tlu!F5PB5_HW}3=gb?^Fdb50n0gpVe_ZaFi5M> ziVx2FAX@jp&C&;VOP0}>opd!)mS0G&B9-Y{Mk*O5Owy#UyD;P%dYk~OL|u+*mcc4E zJ&biUILLV-U;wcnW|E46NIK?)1gY(*|E#PU>~YFL#M+epRWm^$cR)g54zzzH_Q|4} z5SePV$oe|^T7i8?aFr4|LH6>R!7 zOO7hcO9^A(=5EQM5cYcV_NoM z?w+!@6xd?V^HeSfOR?(fXKaEUn+P65HD_$l37w{n07Ni2?jK?Hfvgsi$ z7|t`bo7e~XtQ7duKpC?C`rkG_gY`BUy>fH(a^=SHm#5j& zm3tq<+59!ScJuIQ6b!H5Kb%g7f6l@`+9S|EI&>Fs)iyFktxN`g1Ct<*6tm6>L;?w5XavS_8o-Y$F}Umc_2v{EoFr=#=3{sihNE) zEz6UXCf(?F-${N*p)isLM<+|Z-~DxWT3#JhMV`P|sp}PGQ9=pSLKm{$uIP{Nx1$*) z*73UFm9Ak$pTW|r^~Vp(gEo(L2jB=2YP+I4=bA+vTd@PhZKNBhaet@OMsbI)W*gha z055`*s^Tp?M)0VI>=P-0xN&z=o>=o3mg&3%~L;ZFq8{5;AI0vV=dE7T6p;d#3 zjjW`54p2&zSln%EZTP0bb06853vx90r1;PJFk$^oBqfE>R+lb9a@=Zud;EDkkGU8~ zZ_j@ghK*wbPtq6ggnvrkCy7l4R(gVE?}X(8%%{sN_Oe*fze)ESp=EwZPD8)GxKAxhc;e5eZ}5@b+^(ZDG__?wCYuLtd@ce z5h!RoO2(pWP=ELzPpp3MMB90?^z!)Qj)JzQ%p**~ney?=Ai`I;O+uPSEFUMi&+nO# zyn~?aHDniPz-|c|(01zP)?j&p3gWm$3Fl70RR6000960w4K|M97l4dUj@di z(O^)lJZFv#X(n_xfSWyBtnEFG18Qg*5nK=&t=@h=&ws40ir+mVs)NEpW@A*vDZ@L$ zY|dG&w0@rNJ({MY|{ z{P^3CAAkAs-8bh`|IPP*`O&)mv-RCa@cVE4`j79=fBE(w-~Z*?A1^)L(&O6JP1nY6 zS?s#vpnog=jRDs{RZU3~8H?d5hp>?_!y=U*Pf zFHhl@cj1@!;g=8TFLK$tCjJr`OcyvzrqAtA?tj^beNiQj`{O@mx^%q~@F~;BUBGv_ zX#XeT>o*9{6&8ePNhiK67_}`u;6n_LFh#Uq62S^pD^E_2(}iU;W1q zKYxAv{OZ@wpZ@yqKYsc7(=YxE*>c}~Gq}5dA+wvFL%&b|+yD9ZA3lG4^=}`)eEjT5 z>W08%_8|}dT|2((gxB9V!M^hQ=ho+q@z>36EYCnX_X5@5JUZW=G|xl!slNMW-03?^ z^SYe6c{thI*Pp0q3$!^OY2bJ z;hlRJ>tvzx^;5@l;62A8`su5*YaF<0uuZ?V6EJzgD!oy&E0Ss`eB^Hd6`e$)~AG-GUp{-YYFE?(0_ry zUote%MLLwL7q6po8c^-Pv|?d%o})7tmpymY6n?>Qsx{6EP2krV=K!re(* zmq3fOb-0}`Jt8dts7p~!A09ZH>Uu<$aq8yNJdH!|ug-E>hJ>GNTkeFUOGUDzt?}x} z*g%%Fbtpi!t_7=E=NtNTZ~EJPs(&k4I32^Zt*5mcmm6We9ZtNg`%8e>a-PE>Nmp3i z3Qw|rf~NN;=bg01Ln7bqfW!x#xx{5!ux6J6%0AG_rh2B;)=lTrG)>(&`V-WjrbSK= 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 E0Qxte0RR91 delta 2055 zcmV+i2>AEbi2>V*0kGxZ6qs>%X6w%tP|VU@W>2*f!UJj+-@Bc9YHt<)Ao(1IwSFLSn%9a@>316LC9 zQm?Fpmn(o+vVy6%2GlglB)ERAxFE{{%-&$%*a-Ob;E!!+obDu8IytIjiQtlF>Jp&Q zmh_4J*hUy1xnOhZgY%F)Bg}+4doXPOF&YMGHChS4dGAE?cibFv ze3h|+K5nIJkk#rlDRra@(^Cj?6v``I_!0z$#I%!kQJZifspD6ODIrz7sHj z*iQ;YMMV^y@=Af!TIzo)s|I_Ta}cp{PrueoP{~h@@aI#Ge!kR=omYE*O>QK&0d}BYs1sB+*_%;F&G^ z?fZ{j0wYAwN%2kz1KzKr8wke(d4=GB1kyHlueJBxMU{vEFTM??ei(<7p%vL~Y~j8) zvj))=Ti(naL~h@4qe=7~j1j#c;iP|7c^h{PJu*EA^2yRI*>o$|4r-R}X?(NW$I|@| zO}F-48>}nbBcp4%SBM@On+Omn^v2=691|868>L}1^dZTKzUnC5wwJxxYcR}cZK0sWjjmCdb_f1MO zR?$=^3?LkgTAanEsLIPl%ybe&Ag?8nROeAbiiZv!OvqW9QhjZhV>tTXi^&BJF6I}W zbA=8-K`O@w0!nfx4Ba(6hmeIs?QObIH&Qh{=%0aWuxC&D_RzEJnd@8LVCYx_&vmS+ z7dbP(KZ|CeuXUmCpx|#*;wFC$gYI(EEOR2%T#)1iuEcwqh2RQpvCanIdq_6)2chi( zMK8v&<>8@ig<;RL{3v$)K8~g{Ki-qo=4bD$g9FrjO^K?Zfau!Mj04@q?d)zc+fKBx zJ<9puKGKG?U;k?316W_sGdIVNXKtK+zMbEmx%Xx^Up&R^5$8_o3dKkx+FF`RI=`~ciGS^0v zo(&!WsFS@7CKc17(uU0>_PtNLjFY{=Z-&3Tl?n5c_zfR_2Y5nd?<*7{qCC#+@`?5 z*f6qgl=izx-*sEG9ejbn_QfAaV4eSP%s`#xVewJ27OV|Nj600RR8I zUF)-T4LSjDK{2gtf|3z2`&mG?I^EjXzP7VF?M_lin$~>bP(6ZD(1s~ z(Qa_f_>OG=XK6aY3Op0cGu#5>x+kJDQt%#G?`_oq1jkT;0_`0p3Bf;J4_3K92Rdco zRMH>o(CHj^$QJx0_U?m|y|HPUq#1QFLVkijmd~rMYAkiTD-Nj01*hBs^Trk>*vjmi zs5B~C${pl*AhwIFnDfi9^R)!=a4cR@jbc(qE5`X&=J>ZEz`HJ|7eGWI9X)lqDDR`k zr*eUcEX~rGWHFhRgwVT;rs-$<{?&Y&_H?1nDgGyp<1~x2tRz!9p3pHF5HEnD%YFSr zif@zQ3>C9WIH3cRUO|YHBSIPi*ank7LM$ogdY$;60{{RN2><{O000000000000000 z02~Pb0C;RKcW-iQVsCG2lNm!U0_Y5rNkc#a))AA7Lp76@Ef5R<00000000000N4_f z4nrRW6W+H^sgrO*6#|_XlZQe?0(>!(;3gH5f 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") diff --git a/premise/fuels.py b/premise/fuels.py index 92e7705a..54ec1f00 100644 --- a/premise/fuels.py +++ b/premise/fuels.py @@ -126,32 +126,50 @@ def get_pre_cooling_energy( return energy_pre_cooling -@lru_cache() -def adjust_electrolysis_electricity_requirement(year: int) -> ndarray: +def adjust_electrolysis_electricity_requirement( + year: int, + projected_efficiency: dict +) -> [float, float, float]: """ Calculate the adjusted electricity requirement for hydrogen electrolysis based on the given year. :param year: the year for which to calculate the adjusted electricity requirement - :return: the adjusted electricity requirement in kWh/kg H2 + :param hydrogen_type: the type of hydrogen production + :param projected_efficiency: the projected efficiency of the electrolysis process + :return: the adjusted mena, min and max electricity requirement in kWh/kg H2 """ - # Constants - MIN_ELECTRICITY_REQUIREMENT = 48 - MAX_ELECTRICITY_REQUIREMENT = 60 # no maximum - # Calculate adjusted electricity requirement - electricity_requirement = -0.3538 * (year - 2010) + 58.589 + if year < 2020: + mean = projected_efficiency[2020]["mean"] + min = projected_efficiency[2020]["minimum"] + max = projected_efficiency[2020]["maximum"] - # Clip to minimum and maximum values - adjusted_requirement = np.clip( - electricity_requirement, - MIN_ELECTRICITY_REQUIREMENT, - MAX_ELECTRICITY_REQUIREMENT, - ) + elif year > 2050: + mean = projected_efficiency[2050]["mean"] + min = projected_efficiency[2050]["minimum"] + max = projected_efficiency[2050]["maximum"] + + else: + mean = np.interp( + year, + [2020, 2050], + [projected_efficiency[2020]["mean"], projected_efficiency[2050]["mean"]] + ) + min = np.interp( + year, + [2020, 2050], + [projected_efficiency[2020]["minimum"], projected_efficiency[2050]["minimum"]] + ) + max = np.interp( + year, + [2020, 2050], + [projected_efficiency[2020]["maximum"], projected_efficiency[2050]["maximum"]] + ) - return adjusted_requirement + return mean, min, max def is_fuel_production(name): @@ -285,7 +303,6 @@ def _update_fuels(scenario, version, system_model): ) ): fuels.generate_fuel_markets() - fuels.adjust_fuel_conversion_efficiency() fuels.relink_datasets() scenario["database"] = fuels.database scenario["cache"] = fuels.cache @@ -378,6 +395,16 @@ def __init__( dim="variables", ) + # create fuel filters + mapping = InventorySet(self.database) + self.fuel_map = mapping.generate_fuel_map() + # reverse fuel map + self.rev_fuel_map = {} + for fuel, activities in self.fuel_map.items(): + for activity in activities: + self.rev_fuel_map[activity] = fuel + + def find_suppliers( self, name: str, @@ -454,12 +481,12 @@ def generate_hydrogen_activities(self) -> None: Defines regional variants for hydrogen production, but also different supply chain designs: * by truck (500 km), gaseous, liquid and LOHC - * by reassigned CNG pipeline (500 km), gaseous, with and without inhibitors * by dedicated H2 pipeline (500 km), gaseous * by ship, liquid (2000 km) - For truck and pipeline supply chains, we assume a transmission and a distribution part, for which - we have specific pipeline designs. We also assume a means for regional storage in between (salt cavern). + For truck and pipeline supply chains, we assume a transmission and + a distribution part, for which we have specific pipeline designs. + We also assume a means for regional storage in between (salt cavern). We apply distance-based losses along the way. Most of these supply chain design options are based on the work of: @@ -471,96 +498,130 @@ def generate_hydrogen_activities(self) -> None: Sustain Energy Fuels 2020;4:2256–73. https://doi.org/10.1039/d0se00067a. * Petitpas G. Boil-off losses along the LH2 pathway. US Dep Energy Off Sci Tech Inf 2018. - """ - hydrogen_sources = fetch_mapping(HYDROGEN_SOURCES) + hydrogen_parameters = fetch_mapping(HYDROGEN_SOURCES) - for hydrogen_type, hydrogen_vars in hydrogen_sources.items(): - hydrogen_activity_name = hydrogen_sources[hydrogen_type].get("name") - hydrogen_efficiency_variable = hydrogen_sources[hydrogen_type].get("var") - hydrogen_feedstock_name = hydrogen_sources[hydrogen_type].get( - "feedstock name" - ) - hydrogen_feedstock_unit = hydrogen_sources[hydrogen_type].get( - "feedstock unit" - ) - efficiency_floor_value = hydrogen_sources[hydrogen_type].get("floor value") + for fuel_type, dataset_name in self.fuel_map.items(): + if fuel_type in hydrogen_parameters: + hydrogen_feedstock_name = hydrogen_parameters[fuel_type].get("feedstock name") + hydrogen_feedstock_unit = hydrogen_parameters[fuel_type].get("feedstock unit") + projected_efficiency = hydrogen_parameters[fuel_type].get("efficiency") + floor_value = hydrogen_parameters[fuel_type].get("floor value") - new_ds = self.fetch_proxies( - name=hydrogen_activity_name, - ref_prod="hydrogen", - production_variable=hydrogen_efficiency_variable, - exact_name_match=True, - ) + if isinstance(dataset_name, set): + if len(dataset_name) > 1: + print(f"Multiple datasets found for {fuel_type}.") - for region, dataset in new_ds.items(): - # find current energy consumption in dataset - initial_energy_consumption = sum( - exc["amount"] - for exc in dataset["exchanges"] - if exc["unit"] == hydrogen_feedstock_unit - and hydrogen_feedstock_name in exc["name"] - and exc["type"] != "production" + new_ds = self.fetch_proxies( + name=list(dataset_name)[0], + ref_prod="hydrogen", + production_variable=fuel_type, + exact_name_match=True, ) - # add it to "log parameters" - if "log parameters" not in dataset: - dataset["log parameters"] = {} + for region, dataset in new_ds.items(): + # find current energy consumption in dataset + initial_energy_use = sum( + exc["amount"] + for exc in dataset["exchanges"] + if exc["unit"] == hydrogen_feedstock_unit + and hydrogen_feedstock_name in exc["name"] + and exc["type"] != "production" + ) - dataset["log parameters"].update( - { - "initial energy input for hydrogen production": initial_energy_consumption - } - ) + if initial_energy_use is None or initial_energy_use == 0: + print(f"Initial energy consumption for {fuel_type} in {region} is None.") - # Fetch the efficiency change of the - # electrolysis process over time, - # according to the IAM scenario, - # if available. + # add it to "log parameters" + if "log parameters" not in dataset: + dataset["log parameters"] = {} - if ( - hydrogen_efficiency_variable - in self.fuel_efficiencies.variables.values - ): - # Find scaling factor compared to 2020 - scaling_factor = 1 / self.find_iam_efficiency_change( - data=self.fuel_efficiencies, - variable=hydrogen_efficiency_variable, - location=region, + dataset["log parameters"].update( + { + "initial energy input for hydrogen production": initial_energy_use + } ) - # new energy consumption - new_energy_consumption = scaling_factor * initial_energy_consumption + # Fetch the efficiency change of the + # electrolysis process over time, + # according to the IAM scenario, + # if available. - # set a floor value/kg H2 - new_energy_consumption = max( - new_energy_consumption, efficiency_floor_value - ) + new_energy_use, min_energy_use, max_energy_use = None, None, None - else: - if "from electrolysis" in hydrogen_type: - # get the electricity consumption - new_energy_consumption = ( - adjust_electrolysis_electricity_requirement(self.year) + if ( + fuel_type + in self.fuel_efficiencies.variables.values + ): + # Find scaling factor compared to 2020 + scaling_factor = 1 / self.find_iam_efficiency_change( + data=self.fuel_efficiencies, + variable=fuel_type, + location=region, ) + + if scaling_factor != 1: + # new energy consumption + new_energy_use = scaling_factor * initial_energy_use + + # set a floor value/kg H2 + new_energy_use = max( + new_energy_use, floor_value + ) + + else: + if "from electrolysis" in fuel_type: + + # get the electricity consumption + new_energy_use, min_energy_use, max_energy_use = ( + adjust_electrolysis_electricity_requirement( + self.year, + projected_efficiency + ) + ) + else: - new_energy_consumption = None + if "from electrolysis" in fuel_type: + # get the electricity consumption + new_energy_use, min_energy_use, max_energy_use = ( + adjust_electrolysis_electricity_requirement( + self.year, + projected_efficiency + ) + ) - if new_energy_consumption is not None: # recalculate scaling factor - scaling_factor = new_energy_consumption / initial_energy_consumption - - if not np.isnan(scaling_factor) and scaling_factor > 0.0: - # rescale the fuel consumption exchange - dataset = rescale_exchanges( - dataset, - scaling_factor, - technosphere_filters=[ + try: + scaling_factor = new_energy_use / initial_energy_use + except ZeroDivisionError: + scaling_factor = 1 + except TypeError: + scaling_factor = 1 + + if scaling_factor != 1: + if min_energy_use is not None: + for exc in ws.technosphere( + dataset, ws.contains("name", hydrogen_feedstock_name), ws.equals("unit", hydrogen_feedstock_unit), - ], - ) + ): + exc["amount"] = new_energy_use + exc["uncertainty type"] = 5 + exc["loc"] = new_energy_use + exc["minimum"] = min_energy_use + exc["maximum"] = max_energy_use + + else: + # rescale the fuel consumption exchange + rescale_exchanges( + dataset, + scaling_factor, + technosphere_filters=[ + ws.contains("name", hydrogen_feedstock_name), + ws.equals("unit", hydrogen_feedstock_unit), + ], + ) # add it to "log parameters" if "log parameters" not in dataset: @@ -569,7 +630,7 @@ def generate_hydrogen_activities(self) -> None: # add it to "log parameters" dataset["log parameters"].update( { - "new energy input for hydrogen production": new_energy_consumption + "new energy input for hydrogen production": new_energy_use } ) @@ -586,8 +647,8 @@ def generate_hydrogen_activities(self) -> None: "generated by `premise`. " ) - self.database.extend(new_ds.values()) - self.add_to_index(new_ds.values()) + self.database.extend(new_ds.values()) + self.add_to_index(new_ds.values()) # loss coefficients for hydrogen supply losses = fetch_mapping(HYDROGEN_SUPPLY_LOSSES) @@ -618,21 +679,32 @@ def generate_hydrogen_activities(self) -> None: # add it to list of created datasets self.add_to_index(dataset) - datasets = ( - [ + datasets = [ "hydrogenation of hydrogen", "dehydrogenation of hydrogen", "market group for electricity, low voltage", "hydrogen embrittlement inhibition", "hydrogen refuelling station", ] - + [ + + datasets.extend( + [ c.get("regional storage", {}).get("name") for c in supply_chain_scenarios.values() if c.get("regional storage", {}).get("name") ] - + [x["name"] for x in hydrogen_sources.values()] - + [ + ) + + datasets.extend( + [ + x for k, v in self.fuel_map.items() + for x in v + if k.startswith("hydrogen, from") + ] + ) + + datasets.extend( + [ v["name"] for config in supply_chain_scenarios.values() for v in config["vehicle"] @@ -645,105 +717,98 @@ def generate_hydrogen_activities(self) -> None: ) for region in self.regions: - for hydrogen_type, hydrogen_vars in hydrogen_sources.items(): - for vehicle, config in supply_chain_scenarios.items(): - for state in config["state"]: - for distance in config["distance"]: - # dataset creation - dataset: dict[ - str, - Union[ - Union[ - str, list[dict[str, Union[int, str]]], ndarray + for hydrogen_type, hydrogen_datasets in self.fuel_map.items(): + if "hydrogen, from" in hydrogen_type: + for vehicle, config in supply_chain_scenarios.items(): + for state in config["state"]: + for distance in config["distance"]: + # dataset creation + dataset = { + "location": region, + "name": f"hydrogen supply, {hydrogen_type}, by {vehicle}, as {state}, over {distance} km", + "reference product": "hydrogen, 700 bar", + "unit": "kilogram", + "database": self.database[1]["database"], + "code": str(uuid.uuid4().hex), + "comment": "Dataset representing hydrogen supply, generated by `premise`.", + "exchanges": [ + { + "uncertainty type": 0, + "loc": 1, + "amount": 1, + "type": "production", + "production volume": 1, + "product": "hydrogen, 700 bar", + "name": f"hydrogen supply, {hydrogen_type}, " + f"by {vehicle}, as {state}, over {distance} km", + "unit": "kilogram", + "location": region, + } ], - Any, - ], - ] = { - "location": region, - "name": f"hydrogen supply, {hydrogen_type}, by {vehicle}, as {state}, over {distance} km", - "reference product": "hydrogen, 700 bar", - "unit": "kilogram", - "database": self.database[1]["database"], - "code": str(uuid.uuid4().hex), - "comment": "Dataset representing hydrogen supply, generated by `premise`.", - "exchanges": [ - { - "uncertainty type": 0, - "loc": 1, - "amount": 1, - "type": "production", - "production volume": 1, - "product": "hydrogen, 700 bar", - "name": f"hydrogen supply, {hydrogen_type}, " - f"by {vehicle}, as {state}, over {distance} km", - "unit": "kilogram", - "location": region, - } - ], - } - - # transport - dataset = self.add_hydrogen_transport( - dataset, config, region, distance, vehicle, subset - ) + } - # need for inhibitor and purification if CNG pipeline - # electricity for purification: 2.46 kWh/kg H2 - if vehicle == "CNG pipeline": - dataset = self.add_hydrogen_inhibitor( - dataset, region, subset + # transport + dataset = self.add_hydrogen_transport( + dataset, config, region, distance, vehicle, subset ) - if "regional storage" in config: - dataset = self.add_hydrogen_regional_storage( - dataset, region, config, subset - ) + # need for inhibitor and purification if CNG pipeline + # electricity for purification: 2.46 kWh/kg H2 + if vehicle == "CNG pipeline": + dataset = self.add_hydrogen_inhibitor( + dataset, region, subset + ) - # electricity for compression - if state in ["gaseous", "liquid"]: - dataset = self.add_compression_electricity( - state, vehicle, distance, region, dataset, subset - ) + if "regional storage" in config: + dataset = self.add_hydrogen_regional_storage( + dataset, region, config, subset + ) - # electricity for hydrogenation, dehydrogenation and - # compression at delivery - if state == "liquid organic compound": - dataset = self.add_hydrogenation_energy( - region, dataset, subset - ) + # electricity for compression + if state in ["gaseous", "liquid"]: + dataset = self.add_compression_electricity( + state, vehicle, distance, region, dataset, subset + ) - dataset = self.add_hydrogen_input_and_losses( - hydrogen_vars, - region, - losses, - vehicle, - state, - distance, - dataset, - subset, - ) + # electricity for hydrogenation, dehydrogenation and + # compression at delivery + if state == "liquid organic compound": + dataset = self.add_hydrogenation_energy( + region, dataset, subset + ) - # add fuelling station, including storage tank - dataset["exchanges"].append( - self.add_h2_fuelling_station(region, subset) - ) + dataset = self.add_hydrogen_input_and_losses( + list(hydrogen_datasets)[0], + region, + losses, + vehicle, + state, + distance, + dataset, + subset, + ) - # add pre-cooling - dataset = self.add_pre_cooling_electricity( - dataset, region, subset - ) + # add fuelling station, including storage tank + dataset["exchanges"].append( + self.add_h2_fuelling_station(region, subset) + ) - dataset = self.relink_technosphere_exchanges( - dataset, - ) + # add pre-cooling + dataset = self.add_pre_cooling_electricity( + dataset, region, subset + ) - self.database.append(dataset) + dataset = self.relink_technosphere_exchanges( + dataset, + ) - # add to log - self.write_log(dataset) + self.database.append(dataset) - # add it to list of created datasets - self.add_to_index(dataset) + # add to log + self.write_log(dataset) + + # add it to list of created datasets + self.add_to_index(dataset) def add_hydrogen_transport( self, @@ -821,7 +886,7 @@ def add_hydrogen_input_and_losses( # fetch the H2 production activity h2_ds = list( self.find_suppliers( - name=hydrogen_activity["name"], + name=hydrogen_activity, ref_prod="hydrogen", unit="kilogram", loc=region, @@ -1668,68 +1733,6 @@ def adjust_land_use_change_emissions( return dataset - def adjust_fuel_conversion_efficiency(self): - """ - Adjust the input to output fuel conversion efficiency. - """ - - for fuel, activities in self.fuel_map.items(): - for activity in activities: - for ds in ws.get_many(self.database, ws.equals("name", activity)): - variable = self.rev_fuel_map.get(activity) - scaling_factor = 1.0 - if variable in self.fuel_efficiencies.coords["variables"]: - if ds["location"] in self.regions: - region = ds["location"] - else: - region = self.ecoinvent_to_iam_loc[ds["location"]] - - if self.year in self.fuel_efficiencies.coords["year"].values: - scaling_factor = self.fuel_efficiencies.sel( - variables=variable, - region=region, - year=self.year, - ).values - else: - scaling_factor = ( - self.fuel_efficiencies.sel( - variables=variable, - region=region, - ) - .interp(year=self.year) - .values - ) - if ( - scaling_factor != 1.0 - and "market for" not in ds["name"] - and "fuel conversion efficiency" - not in ds.get("log parameters", {}) - ): - rescale_exchanges( - ds, - 1 / scaling_factor, - ) - - if "log parameters" not in ds: - ds["log parameters"] = {} - - ds["log parameters"].update( - { - "fuel conversion efficiency": 1 / scaling_factor, - } - ) - - # update comment section - txt = ( - f" The inputs of this dataset have been multiplied by {1 / scaling_factor}" - f"to reflect changes in efficiency according to {self.model.upper()} - {self.scenario.upper()}." - ) - if "comment" in ds: - ds["comment"] += txt - else: - ds["comment"] = txt - self.write_log(ds, status="updated") - def get_production_label(self, crop_type: str) -> [str, None]: """ Get the production label for the dataset. @@ -1917,7 +1920,8 @@ def fetch_fuel_share( else: start_period = self.year end_period = self.year + period - # make sure end_period is not greater than the last year in the dataset + # make sure end_period is not greater than + # the last year in the dataset end_period = min( end_period, self.iam_fuel_markets.coords["year"].values[-1] ) @@ -2419,8 +2423,10 @@ def generate_fuel_markets(self): for activity in activities: self.rev_fuel_map[activity] = fuel + d_fuels = self.get_fuel_mapping() + datasets = [ item for key in d_fuels diff --git a/premise/iam_variables_mapping/fuels_variables.yaml b/premise/iam_variables_mapping/fuels_variables.yaml index d01793fd..0d5feb42 100644 --- a/premise/iam_variables_mapping/fuels_variables.yaml +++ b/premise/iam_variables_mapping/fuels_variables.yaml @@ -514,7 +514,7 @@ hydrogen, from petroleum: fltr: - hydrogen production, gaseous, petroleum refinery operation -hydrogen, from electrolysis: +hydrogen, from electrolysis, PEM: lhv: 120 co2: 0 biogenic_share: 1 @@ -528,8 +528,28 @@ hydrogen, from electrolysis: remind: Tech|Hydrogen|Electricity|Efficiency tiam-ucl: Efficiency|Hydrogen|Electrolysis ecoinvent_aliases: - fltr: - - hydrogen production, gaseous, 30 bar, from PEM electrolysis, from grid electricity + fltr: hydrogen production, gaseous, 30 bar, from PEM electrolysis, from grid electricity + mask: + - carbon dioxide + +hydrogen, from electrolysis, AEC: + lhv: 120 + co2: 0 + biogenic_share: 1 + ecoinvent_aliases: + fltr: hydrogen production, gaseous, 20 bar, from AEC electrolysis, from grid electricity + mask: + - carbon dioxide + +hydrogen, from electrolysis, SOEC: + lhv: 120 + co2: 0 + biogenic_share: 1 + ecoinvent_aliases: + fltr: hydrogen production, gaseous, 1 bar, from SOEC electrolysis, from grid electricity + mask: + - steam + - carbon dioxide hydrogen, from solar: lhv: 120 @@ -596,6 +616,7 @@ hydrogen, from coal: remind: Tech|Hydrogen|Coal|w/o CC|Efficiency ecoinvent_aliases: fltr: hydrogen production, coal gasification + mask: CCS hydrogen, from coal, with CCS: lhv: 120 diff --git a/premise/utils.py b/premise/utils.py index 1c7f7147..6d1569fe 100644 --- a/premise/utils.py +++ b/premise/utils.py @@ -164,7 +164,15 @@ def get_efficiency_solar_photovoltaics() -> xr.DataArray: EFFICIENCY_RATIO_SOLAR_PV, sep=get_delimiter(filepath=EFFICIENCY_RATIO_SOLAR_PV) ) - return dataframe.groupby(["technology", "year"]).mean()["efficiency"].to_xarray() + dataframe = dataframe.melt(id_vars=["technology", "year"], + value_vars=["mean", "min", "max"], + var_name="efficiency_type", value_name="efficiency") + + # Convert the DataFrame to an xarray Dataset + array = dataframe.set_index(["year", "technology", "efficiency_type"])["efficiency"].to_xarray() + array = array.interpolate_na(dim="year", method="linear") + + return array def default_global_location(database):