From e30f181dd4d133df7f48e04c418782607822b126 Mon Sep 17 00:00:00 2001 From: romainsacchi Date: Fri, 12 Jul 2024 19:16:20 +0200 Subject: [PATCH] Update MtO inventories --- dev/Untitled1.ipynb | 925 +++++------------- premise/cement.py | 28 +- .../lci-carbon-capture.xlsx | Bin 33008 -> 32988 bytes 3 files changed, 289 insertions(+), 664 deletions(-) diff --git a/dev/Untitled1.ipynb b/dev/Untitled1.ipynb index d08b284e..e80d539d 100644 --- a/dev/Untitled1.ipynb +++ b/dev/Untitled1.ipynb @@ -2,50 +2,63 @@ "cells": [ { "cell_type": "code", - "execution_count": 1, "id": "5018b7ee-0169-49d7-9455-2f1aea562e9e", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2024-07-12T17:04:00.715857Z", + "start_time": "2024-07-12T17:03:59.205224Z" + } + }, "source": [ "from premise import *\n", "from datapackage import Package\n", "import bw2io as bw" - ] + ], + "outputs": [], + "execution_count": 1 }, { "cell_type": "code", - "execution_count": 2, "id": "0ca27c06-948c-4584-bebe-d505cb72d4f9", - "metadata": {}, - "outputs": [], + "metadata": { + "ExecuteTime": { + "end_time": "2024-07-12T17:04:01.762440Z", + "start_time": "2024-07-12T17:04:01.531095Z" + } + }, "source": [ "import bw2data\n", "bw2data.projects.set_current(\"ei310\")" - ] - }, - { - "cell_type": "code", - "execution_count": 3, - "id": "776096ec-6e11-42ba-9604-4876ae234207", - "metadata": {}, - "outputs": [ - { - "name": "stdout", - "output_type": "stream", - "text": [ - "Inventory cache cleared!\n" - ] - } ], - "source": [ - "clear_inventory_cache()" - ] + "outputs": [], + "execution_count": 2 }, { "cell_type": "code", - "execution_count": 4, "id": "bee86950-ac96-49e0-8a9c-43920ae26096", - "metadata": {}, + "metadata": { + "ExecuteTime": { + "end_time": "2024-07-12T17:04:06.171795Z", + "start_time": "2024-07-12T17:04:02.324492Z" + } + }, + "source": [ + "ndb = NewDatabase(\n", + " scenarios=[\n", + " #{\"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\":\"remind\", \"pathway\":\"SSP2-RCP26\", \"year\":2050},\n", + " #{\"model\":\"remind\", \"pathway\":\"SSP2-Base\", \"year\":2040},\n", + " #{\"model\":\"image\", \"pathway\":\"SSP2-RCP19\", \"year\":2050},\n", + " {\"model\":\"image\", \"pathway\":\"SSP2-RCP26\", \"year\":2050},\n", + " ],\n", + " source_db=\"ecoinvent-3.10-cutoff\", # <-- name of the database in the BW2 project. Must be a string.\n", + " source_version=\"3.10\", # <-- version of ecoinvent. Can be \"3.5\", \"3.6\", \"3.7\" or \"3.8\". Must be a string.\n", + " key=\"tUePmX_S5B8ieZkkM7WUU2CnO8SmShwmAeWK9x2rTFo=\",\n", + " biosphere_name=\"ecoinvent-3.10-biosphere\"\n", + ")" + ], "outputs": [ { "name": "stdout", @@ -87,664 +100,258 @@ "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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 7 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Could not find a biosphere flow for ('Iron, 72% in magnetite, 14% in crude ore', 'natural resource', 'in ground', 'kilogram') in lci-vanadium.xlsx. Exchange deleted.\n", - "Could not find a biosphere flow for ('TiO2, 54% in ilmenite, 18% in crude ore, in ground', 'natural resource', 'in ground', 'kilogram') in lci-vanadium.xlsx. Exchange deleted.\n", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.36 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", - "Remove uncertainty data.\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.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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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.00 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.00 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.00 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.07 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.51 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 39 worksheets in 0.36 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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.20 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", - "Remove uncertainty data.\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", - "Remove uncertainty data.\n", - "Extracted 1 worksheets in 0.84 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", - "Remove uncertainty data.\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" ] } ], - "source": [ - "ndb = NewDatabase(\n", - " scenarios=[\n", - " #{\"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\":\"remind\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", - " #{\"model\":\"remind\", \"pathway\":\"SSP2-Base\", \"year\":2040},\n", - " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", - " #{\"model\":\"image\", \"pathway\":\"SSP2-Base\", \"year\":2050},\n", - " ],\n", - " source_db=\"ecoinvent-3.10-cutoff\", # <-- name of the database in the BW2 project. Must be a string.\n", - " source_version=\"3.10\", # <-- version of ecoinvent. Can be \"3.5\", \"3.6\", \"3.7\" or \"3.8\". Must be a string.\n", - " key=\"tUePmX_S5B8ieZkkM7WUU2CnO8SmShwmAeWK9x2rTFo=\",\n", - " biosphere_name=\"ecoinvent-3.10-biosphere\"\n", - ")" - ] + "execution_count": 3 }, { "cell_type": "code", - "execution_count": 5, - "id": "3e88c655-ddb1-409d-b84f-c2c4e1976542", - "metadata": {}, + "id": "0c80994c-cbac-4143-81ee-1de1531a6f95", + "metadata": { + "ExecuteTime": { + "end_time": "2024-07-12T17:04:21.365439Z", + "start_time": "2024-07-12T17:04:06.172553Z" + } + }, + "source": "ndb.update(\"cement\")", "outputs": [ + { + "name": "stderr", + "output_type": "stream", + "text": [ + "Processing scenarios: 0%| | 0/1 [00:00. at 0x3e0545480>,\n", + " {'market for hard coal': {'amount': 0.0354,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 934.56,\n", + " 'fossil CO2': 91.58688},\n", + " 'market for heavy fuel oil': {'amount': 0.0255,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 981.7499999999999,\n", + " 'fossil CO2': 72.55132499999998},\n", + " 'market for light fuel oil': {'amount': 0.000374,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 15.9324,\n", + " 'fossil CO2': 1.0929626399999999},\n", + " 'market for meat and bone meal': {'amount': 0.00961,\n", + " 'biogenic CO2': 11.186232200000003,\n", + " 'energy': 137.42300000000003,\n", + " 'fossil CO2': 0.0},\n", + " 'market for petroleum coke': {'amount': 0.00391,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 122.38300000000001,\n", + " 'fossil CO2': 11.9323425},\n", + " 'market group for natural gas, high pressure': {'amount': 0.00017462,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 6.28632,\n", + " 'fossil CO2': 0.3771792}})\n", + "2832.788501512605\n", + "0.97397502595931\n", + "new 2759.065254297974\n", + "new scaling factor 1.0943280793270356\n", + "WEU 2198.33472\n", + "defaultdict(. at 0x3e0545480>,\n", + " {'market for hard coal': {'amount': 0.0354,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 934.56,\n", + " 'fossil CO2': 91.58688},\n", + " 'market for heavy fuel oil': {'amount': 0.0255,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 981.7499999999999,\n", + " 'fossil CO2': 72.55132499999998},\n", + " 'market for light fuel oil': {'amount': 0.000374,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 15.9324,\n", + " 'fossil CO2': 1.0929626399999999},\n", + " 'market for meat and bone meal': {'amount': 0.00961,\n", + " 'biogenic CO2': 11.186232200000003,\n", + " 'energy': 137.42300000000003,\n", + " 'fossil CO2': 0.0},\n", + " 'market for petroleum coke': {'amount': 0.00391,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 122.38300000000001,\n", + " 'fossil CO2': 11.9323425},\n", + " 'market group for natural gas, high pressure': {'amount': 0.00017462,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 6.28632,\n", + " 'fossil CO2': 0.3771792}})\n", + "2832.788501512605\n", + "0.8335910807752474\n", + "new 2361.3872285835855\n", + "new scaling factor 1.0943280793270356\n", + "WEU 2198.33472\n", + "defaultdict(. at 0x3e05455a0>,\n", + " {'market for hard coal': {'amount': 0.0354,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 934.56,\n", + " 'fossil CO2': 91.58688},\n", + " 'market for heavy fuel oil': {'amount': 0.0255,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 981.7499999999999,\n", + " 'fossil CO2': 72.55132499999998},\n", + " 'market for light fuel oil': {'amount': 0.000374,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 15.9324,\n", + " 'fossil CO2': 1.0929626399999999},\n", + " 'market for meat and bone meal': {'amount': 0.00961,\n", + " 'biogenic CO2': 11.186232200000003,\n", + " 'energy': 137.42300000000003,\n", + " 'fossil CO2': 0.0},\n", + " 'market for petroleum coke': {'amount': 0.00391,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 122.38300000000001,\n", + " 'fossil CO2': 11.9323425},\n", + " 'market group for natural gas, high pressure': {'amount': 0.00017462,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 6.28632,\n", + " 'fossil CO2': 0.3771792}})\n", + "2832.788501512605\n", + "1.0\n", + "new 2832.788501512605\n", + "new scaling factor 1.0943280793270356\n", + "WEU 2198.33472\n", + "defaultdict(. at 0x3a6cb9f30>,\n", + " {'market for hard coal': {'amount': 0.0354,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 934.56,\n", + " 'fossil CO2': 91.58688},\n", + " 'market for heavy fuel oil': {'amount': 0.0255,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 981.7499999999999,\n", + " 'fossil CO2': 72.55132499999998},\n", + " 'market for light fuel oil': {'amount': 0.000374,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 15.9324,\n", + " 'fossil CO2': 1.0929626399999999},\n", + " 'market for meat and bone meal': {'amount': 0.00961,\n", + " 'biogenic CO2': 11.186232200000003,\n", + " 'energy': 137.42300000000003,\n", + " 'fossil CO2': 0.0},\n", + " 'market for petroleum coke': {'amount': 0.00391,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 122.38300000000001,\n", + " 'fossil CO2': 11.9323425},\n", + " 'market group for natural gas, high pressure': {'amount': 0.00017462,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 6.28632,\n", + " 'fossil CO2': 0.3771792}})\n", + "2832.788501512605\n", + "1.0\n", + "new 2832.788501512605\n", + "new scaling factor 1.0943280793270356\n", + "WEU 2198.33472\n", + "defaultdict(. at 0x3e05455a0>,\n", + " {'market for hard coal': {'amount': 0.0354,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 934.56,\n", + " 'fossil CO2': 91.58688},\n", + " 'market for heavy fuel oil': {'amount': 0.0255,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 981.7499999999999,\n", + " 'fossil CO2': 72.55132499999998},\n", + " 'market for light fuel oil': {'amount': 0.000374,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 15.9324,\n", + " 'fossil CO2': 1.0929626399999999},\n", + " 'market for meat and bone meal': {'amount': 0.00961,\n", + " 'biogenic CO2': 11.186232200000003,\n", + " 'energy': 137.42300000000003,\n", + " 'fossil CO2': 0.0},\n", + " 'market for petroleum coke': {'amount': 0.00391,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 122.38300000000001,\n", + " 'fossil CO2': 11.9323425},\n", + " 'market group for natural gas, high pressure': {'amount': 0.00017462,\n", + " 'biogenic CO2': 0.0,\n", + " 'energy': 6.28632,\n", + " 'fossil CO2': 0.3771792}})\n", + "2832.788501512605\n", + "1.0\n", + "new 2832.788501512605\n", + "new scaling factor 1.0943280793270356\n" ] - } - ], - "source": [ - "ndb.generate_scenario_report()" - ] - }, - { - "cell_type": "code", - "execution_count": null, - "id": "0c80994c-cbac-4143-81ee-1de1531a6f95", - "metadata": {}, - "outputs": [ + }, { "name": "stderr", "output_type": "stream", "text": [ - "Processing scenarios: 0%| | 0/1 [00:00.'", "output_type": "error", "traceback": [ - "\u001b[0;31m---------------------------------------------------------------------------\u001b[0m", - "\u001b[0;31mAttributeError\u001b[0m Traceback (most recent call last)", - "Cell \u001b[0;32mIn[9], line 31\u001b[0m\n\u001b[1;32m 28\u001b[0m process\u001b[38;5;241m.\u001b[39mjoin()\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mif\u001b[39;00m \u001b[38;5;18m__name__\u001b[39m \u001b[38;5;241m==\u001b[39m \u001b[38;5;124m\"\u001b[39m\u001b[38;5;124m__main__\u001b[39m\u001b[38;5;124m\"\u001b[39m:\n\u001b[0;32m---> 31\u001b[0m \u001b[43mmain\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n", - "Cell \u001b[0;32mIn[9], line 25\u001b[0m, in \u001b[0;36mmain\u001b[0;34m()\u001b[0m\n\u001b[1;32m 23\u001b[0m process \u001b[38;5;241m=\u001b[39m Process(target\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mlambda\u001b[39;00m: configure_logging(current_process()\u001b[38;5;241m.\u001b[39mpid)\u001b[38;5;241m.\u001b[39minfo(\u001b[38;5;124mf\u001b[39m\u001b[38;5;124m\"\u001b[39m\u001b[38;5;124mThis is an info message from process \u001b[39m\u001b[38;5;132;01m{\u001b[39;00mcurrent_process()\u001b[38;5;241m.\u001b[39mpid\u001b[38;5;132;01m}\u001b[39;00m\u001b[38;5;124m.\u001b[39m\u001b[38;5;124m\"\u001b[39m))\n\u001b[1;32m 24\u001b[0m processes\u001b[38;5;241m.\u001b[39mappend(process)\n\u001b[0;32m---> 25\u001b[0m \u001b[43mprocess\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mstart\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 27\u001b[0m \u001b[38;5;28;01mfor\u001b[39;00m process \u001b[38;5;129;01min\u001b[39;00m processes:\n\u001b[1;32m 28\u001b[0m process\u001b[38;5;241m.\u001b[39mjoin()\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/process.py:121\u001b[0m, in \u001b[0;36mBaseProcess.start\u001b[0;34m(self)\u001b[0m\n\u001b[1;32m 118\u001b[0m \u001b[38;5;28;01massert\u001b[39;00m \u001b[38;5;129;01mnot\u001b[39;00m _current_process\u001b[38;5;241m.\u001b[39m_config\u001b[38;5;241m.\u001b[39mget(\u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdaemon\u001b[39m\u001b[38;5;124m'\u001b[39m), \\\n\u001b[1;32m 119\u001b[0m \u001b[38;5;124m'\u001b[39m\u001b[38;5;124mdaemonic processes are not allowed to have children\u001b[39m\u001b[38;5;124m'\u001b[39m\n\u001b[1;32m 120\u001b[0m _cleanup()\n\u001b[0;32m--> 121\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_popen \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_Popen\u001b[49m\u001b[43m(\u001b[49m\u001b[38;5;28;43mself\u001b[39;49m\u001b[43m)\u001b[49m\n\u001b[1;32m 122\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_sentinel \u001b[38;5;241m=\u001b[39m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_popen\u001b[38;5;241m.\u001b[39msentinel\n\u001b[1;32m 123\u001b[0m \u001b[38;5;66;03m# Avoid a refcycle if the target function holds an indirect\u001b[39;00m\n\u001b[1;32m 124\u001b[0m \u001b[38;5;66;03m# reference to the process object (see bpo-30775)\u001b[39;00m\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/context.py:224\u001b[0m, in \u001b[0;36mProcess._Popen\u001b[0;34m(process_obj)\u001b[0m\n\u001b[1;32m 222\u001b[0m \u001b[38;5;129m@staticmethod\u001b[39m\n\u001b[1;32m 223\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_Popen\u001b[39m(process_obj):\n\u001b[0;32m--> 224\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43m_default_context\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mget_context\u001b[49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mProcess\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_Popen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/context.py:288\u001b[0m, in \u001b[0;36mSpawnProcess._Popen\u001b[0;34m(process_obj)\u001b[0m\n\u001b[1;32m 285\u001b[0m \u001b[38;5;129m@staticmethod\u001b[39m\n\u001b[1;32m 286\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m_Popen\u001b[39m(process_obj):\n\u001b[1;32m 287\u001b[0m \u001b[38;5;28;01mfrom\u001b[39;00m \u001b[38;5;21;01m.\u001b[39;00m\u001b[38;5;21;01mpopen_spawn_posix\u001b[39;00m \u001b[38;5;28;01mimport\u001b[39;00m Popen\n\u001b[0;32m--> 288\u001b[0m \u001b[38;5;28;01mreturn\u001b[39;00m \u001b[43mPopen\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/popen_spawn_posix.py:32\u001b[0m, in \u001b[0;36mPopen.__init__\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m 30\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21m__init__\u001b[39m(\u001b[38;5;28mself\u001b[39m, process_obj):\n\u001b[1;32m 31\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39m_fds \u001b[38;5;241m=\u001b[39m []\n\u001b[0;32m---> 32\u001b[0m \u001b[38;5;28;43msuper\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[38;5;21;43m__init__\u001b[39;49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/popen_fork.py:19\u001b[0m, in \u001b[0;36mPopen.__init__\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m 17\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mreturncode \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[1;32m 18\u001b[0m \u001b[38;5;28mself\u001b[39m\u001b[38;5;241m.\u001b[39mfinalizer \u001b[38;5;241m=\u001b[39m \u001b[38;5;28;01mNone\u001b[39;00m\n\u001b[0;32m---> 19\u001b[0m \u001b[38;5;28;43mself\u001b[39;49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43m_launch\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m)\u001b[49m\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/popen_spawn_posix.py:47\u001b[0m, in \u001b[0;36mPopen._launch\u001b[0;34m(self, process_obj)\u001b[0m\n\u001b[1;32m 45\u001b[0m \u001b[38;5;28;01mtry\u001b[39;00m:\n\u001b[1;32m 46\u001b[0m reduction\u001b[38;5;241m.\u001b[39mdump(prep_data, fp)\n\u001b[0;32m---> 47\u001b[0m \u001b[43mreduction\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdump\u001b[49m\u001b[43m(\u001b[49m\u001b[43mprocess_obj\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mfp\u001b[49m\u001b[43m)\u001b[49m\n\u001b[1;32m 48\u001b[0m \u001b[38;5;28;01mfinally\u001b[39;00m:\n\u001b[1;32m 49\u001b[0m set_spawning_popen(\u001b[38;5;28;01mNone\u001b[39;00m)\n", - "File \u001b[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/reduction.py:60\u001b[0m, in \u001b[0;36mdump\u001b[0;34m(obj, file, protocol)\u001b[0m\n\u001b[1;32m 58\u001b[0m \u001b[38;5;28;01mdef\u001b[39;00m \u001b[38;5;21mdump\u001b[39m(obj, file, protocol\u001b[38;5;241m=\u001b[39m\u001b[38;5;28;01mNone\u001b[39;00m):\n\u001b[1;32m 59\u001b[0m \u001b[38;5;250m \u001b[39m\u001b[38;5;124;03m'''Replacement for pickle.dump() using ForkingPickler.'''\u001b[39;00m\n\u001b[0;32m---> 60\u001b[0m \u001b[43mForkingPickler\u001b[49m\u001b[43m(\u001b[49m\u001b[43mfile\u001b[49m\u001b[43m,\u001b[49m\u001b[43m \u001b[49m\u001b[43mprotocol\u001b[49m\u001b[43m)\u001b[49m\u001b[38;5;241;43m.\u001b[39;49m\u001b[43mdump\u001b[49m\u001b[43m(\u001b[49m\u001b[43mobj\u001b[49m\u001b[43m)\u001b[49m\n", - "\u001b[0;31mAttributeError\u001b[0m: Can't pickle local object 'main..'" + "\u001B[0;31m---------------------------------------------------------------------------\u001B[0m", + "\u001B[0;31mAttributeError\u001B[0m Traceback (most recent call last)", + "Cell \u001B[0;32mIn[9], line 31\u001B[0m\n\u001B[1;32m 28\u001B[0m process\u001B[38;5;241m.\u001B[39mjoin()\n\u001B[1;32m 30\u001B[0m \u001B[38;5;28;01mif\u001B[39;00m \u001B[38;5;18m__name__\u001B[39m \u001B[38;5;241m==\u001B[39m \u001B[38;5;124m\"\u001B[39m\u001B[38;5;124m__main__\u001B[39m\u001B[38;5;124m\"\u001B[39m:\n\u001B[0;32m---> 31\u001B[0m \u001B[43mmain\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n", + "Cell \u001B[0;32mIn[9], line 25\u001B[0m, in \u001B[0;36mmain\u001B[0;34m()\u001B[0m\n\u001B[1;32m 23\u001B[0m process \u001B[38;5;241m=\u001B[39m Process(target\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mlambda\u001B[39;00m: configure_logging(current_process()\u001B[38;5;241m.\u001B[39mpid)\u001B[38;5;241m.\u001B[39minfo(\u001B[38;5;124mf\u001B[39m\u001B[38;5;124m\"\u001B[39m\u001B[38;5;124mThis is an info message from process \u001B[39m\u001B[38;5;132;01m{\u001B[39;00mcurrent_process()\u001B[38;5;241m.\u001B[39mpid\u001B[38;5;132;01m}\u001B[39;00m\u001B[38;5;124m.\u001B[39m\u001B[38;5;124m\"\u001B[39m))\n\u001B[1;32m 24\u001B[0m processes\u001B[38;5;241m.\u001B[39mappend(process)\n\u001B[0;32m---> 25\u001B[0m \u001B[43mprocess\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mstart\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 27\u001B[0m \u001B[38;5;28;01mfor\u001B[39;00m process \u001B[38;5;129;01min\u001B[39;00m processes:\n\u001B[1;32m 28\u001B[0m process\u001B[38;5;241m.\u001B[39mjoin()\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/process.py:121\u001B[0m, in \u001B[0;36mBaseProcess.start\u001B[0;34m(self)\u001B[0m\n\u001B[1;32m 118\u001B[0m \u001B[38;5;28;01massert\u001B[39;00m \u001B[38;5;129;01mnot\u001B[39;00m _current_process\u001B[38;5;241m.\u001B[39m_config\u001B[38;5;241m.\u001B[39mget(\u001B[38;5;124m'\u001B[39m\u001B[38;5;124mdaemon\u001B[39m\u001B[38;5;124m'\u001B[39m), \\\n\u001B[1;32m 119\u001B[0m \u001B[38;5;124m'\u001B[39m\u001B[38;5;124mdaemonic processes are not allowed to have children\u001B[39m\u001B[38;5;124m'\u001B[39m\n\u001B[1;32m 120\u001B[0m _cleanup()\n\u001B[0;32m--> 121\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_popen \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_Popen\u001B[49m\u001B[43m(\u001B[49m\u001B[38;5;28;43mself\u001B[39;49m\u001B[43m)\u001B[49m\n\u001B[1;32m 122\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_sentinel \u001B[38;5;241m=\u001B[39m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_popen\u001B[38;5;241m.\u001B[39msentinel\n\u001B[1;32m 123\u001B[0m \u001B[38;5;66;03m# Avoid a refcycle if the target function holds an indirect\u001B[39;00m\n\u001B[1;32m 124\u001B[0m \u001B[38;5;66;03m# reference to the process object (see bpo-30775)\u001B[39;00m\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/context.py:224\u001B[0m, in \u001B[0;36mProcess._Popen\u001B[0;34m(process_obj)\u001B[0m\n\u001B[1;32m 222\u001B[0m \u001B[38;5;129m@staticmethod\u001B[39m\n\u001B[1;32m 223\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m_Popen\u001B[39m(process_obj):\n\u001B[0;32m--> 224\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43m_default_context\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mget_context\u001B[49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mProcess\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_Popen\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprocess_obj\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/context.py:288\u001B[0m, in \u001B[0;36mSpawnProcess._Popen\u001B[0;34m(process_obj)\u001B[0m\n\u001B[1;32m 285\u001B[0m \u001B[38;5;129m@staticmethod\u001B[39m\n\u001B[1;32m 286\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m_Popen\u001B[39m(process_obj):\n\u001B[1;32m 287\u001B[0m \u001B[38;5;28;01mfrom\u001B[39;00m \u001B[38;5;21;01m.\u001B[39;00m\u001B[38;5;21;01mpopen_spawn_posix\u001B[39;00m \u001B[38;5;28;01mimport\u001B[39;00m Popen\n\u001B[0;32m--> 288\u001B[0m \u001B[38;5;28;01mreturn\u001B[39;00m \u001B[43mPopen\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprocess_obj\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/popen_spawn_posix.py:32\u001B[0m, in \u001B[0;36mPopen.__init__\u001B[0;34m(self, process_obj)\u001B[0m\n\u001B[1;32m 30\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21m__init__\u001B[39m(\u001B[38;5;28mself\u001B[39m, process_obj):\n\u001B[1;32m 31\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39m_fds \u001B[38;5;241m=\u001B[39m []\n\u001B[0;32m---> 32\u001B[0m \u001B[38;5;28;43msuper\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[38;5;21;43m__init__\u001B[39;49m\u001B[43m(\u001B[49m\u001B[43mprocess_obj\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/popen_fork.py:19\u001B[0m, in \u001B[0;36mPopen.__init__\u001B[0;34m(self, process_obj)\u001B[0m\n\u001B[1;32m 17\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mreturncode \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[1;32m 18\u001B[0m \u001B[38;5;28mself\u001B[39m\u001B[38;5;241m.\u001B[39mfinalizer \u001B[38;5;241m=\u001B[39m \u001B[38;5;28;01mNone\u001B[39;00m\n\u001B[0;32m---> 19\u001B[0m \u001B[38;5;28;43mself\u001B[39;49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43m_launch\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprocess_obj\u001B[49m\u001B[43m)\u001B[49m\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/popen_spawn_posix.py:47\u001B[0m, in \u001B[0;36mPopen._launch\u001B[0;34m(self, process_obj)\u001B[0m\n\u001B[1;32m 45\u001B[0m \u001B[38;5;28;01mtry\u001B[39;00m:\n\u001B[1;32m 46\u001B[0m reduction\u001B[38;5;241m.\u001B[39mdump(prep_data, fp)\n\u001B[0;32m---> 47\u001B[0m \u001B[43mreduction\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdump\u001B[49m\u001B[43m(\u001B[49m\u001B[43mprocess_obj\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mfp\u001B[49m\u001B[43m)\u001B[49m\n\u001B[1;32m 48\u001B[0m \u001B[38;5;28;01mfinally\u001B[39;00m:\n\u001B[1;32m 49\u001B[0m set_spawning_popen(\u001B[38;5;28;01mNone\u001B[39;00m)\n", + "File \u001B[0;32m~/anaconda3/envs/premise/lib/python3.10/multiprocessing/reduction.py:60\u001B[0m, in \u001B[0;36mdump\u001B[0;34m(obj, file, protocol)\u001B[0m\n\u001B[1;32m 58\u001B[0m \u001B[38;5;28;01mdef\u001B[39;00m \u001B[38;5;21mdump\u001B[39m(obj, file, protocol\u001B[38;5;241m=\u001B[39m\u001B[38;5;28;01mNone\u001B[39;00m):\n\u001B[1;32m 59\u001B[0m \u001B[38;5;250m \u001B[39m\u001B[38;5;124;03m'''Replacement for pickle.dump() using ForkingPickler.'''\u001B[39;00m\n\u001B[0;32m---> 60\u001B[0m \u001B[43mForkingPickler\u001B[49m\u001B[43m(\u001B[49m\u001B[43mfile\u001B[49m\u001B[43m,\u001B[49m\u001B[43m \u001B[49m\u001B[43mprotocol\u001B[49m\u001B[43m)\u001B[49m\u001B[38;5;241;43m.\u001B[39;49m\u001B[43mdump\u001B[49m\u001B[43m(\u001B[49m\u001B[43mobj\u001B[49m\u001B[43m)\u001B[49m\n", + "\u001B[0;31mAttributeError\u001B[0m: Can't pickle local object 'main..'" ] } ], diff --git a/premise/cement.py b/premise/cement.py index 9a4848d6..90cdb9c6 100644 --- a/premise/cement.py +++ b/premise/cement.py @@ -235,8 +235,8 @@ def rescale_emissions(self, dataset: dict, energy_details: dict) -> dict: } ) - # remove 525 kg for calcination - exc["amount"] = 0.525 + (total_fossil_CO2 / 1000) + # remove 543 kg for calcination + exc["amount"] = 0.543 + (total_fossil_CO2 / 1000) dataset["log parameters"].update( { "new fossil CO2": exc["amount"], @@ -286,7 +286,7 @@ def build_CCS_datasets(self): for region, dataset in datasets.items(): for exc in ws.technosphere( - dataset, ws.contains("name", "heat production") + dataset, ws.contains("unit", "megajoule") ): exc["amount"] = fossil_heat_input @@ -342,6 +342,9 @@ def build_clinker_production_datasets(self) -> list: name="clinker production", ref_prod="clinker", production_variable="cement, dry feed rotary kiln", + geo_mapping={ + r: "Europe without Switzerland" for r in self.regions + } ) for variable in variables: @@ -375,6 +378,11 @@ def build_clinker_production_datasets(self) -> list: d["energy"] for d in energy_details.values() ) + if region=="WEU": + from pprint import pprint + print(region, current_energy_input_per_ton_clinker) + pprint(energy_details) + # fetch the amount of biogenic CO2 emissions bio_CO2 = sum( e["amount"] @@ -419,6 +427,8 @@ def build_clinker_production_datasets(self) -> list: current_energy_input_per_ton_clinker += ( energy_input_waste_fuel * 1000 ) + if region=="WEU": + print(current_energy_input_per_ton_clinker) # add the waste fuel input to the dataset if amount_waste_fuel != 0: @@ -456,6 +466,9 @@ def build_clinker_production_datasets(self) -> list: location=dataset["location"], ) + if region=="WEU": + print(scaling_factor) + new_energy_input_per_ton_clinker = 0 if not np.isnan(scaling_factor) and scaling_factor > 0.0: @@ -464,6 +477,8 @@ def build_clinker_production_datasets(self) -> list: new_energy_input_per_ton_clinker = ( current_energy_input_per_ton_clinker * scaling_factor ) + if region=="WEU": + print("new", new_energy_input_per_ton_clinker) # put a floor value of 3100 kj/kg clinker if new_energy_input_per_ton_clinker < 3100: @@ -477,6 +492,9 @@ def build_clinker_production_datasets(self) -> list: / current_energy_input_per_ton_clinker ) + if region=="WEU": + print("new scaling factor", scaling_factor) + # but if efficient kiln, set the energy input to 3100 kJ/kg clinker if variable.startswith( "cement, dry feed rotary kiln, efficient" @@ -556,7 +574,7 @@ def build_clinker_production_datasets(self) -> list: "cement, dry feed rotary kiln, efficient, with on-site CCS": { "name": "carbon dioxide, captured at cement production plant, using direct separation", "reference product": "carbon dioxide, captured at cement plant", - "capture share": 0.9, # only 90% of process emissions (calcination) are captured + "capture share": 0.95, # 95% of process emissions (calcination) are captured }, "cement, dry feed rotary kiln, efficient, with oxyfuel CCS": { "name": "carbon dioxide, captured at cement production plant, using oxyfuel", @@ -584,7 +602,7 @@ def build_clinker_production_datasets(self) -> list: ): # only 90% of process emissions (calcination) are captured CCS_amount = ( - 0.525 * ccs_datasets[variable]["capture share"] + 0.543 * ccs_datasets[variable]["capture share"] ) else: CCS_amount = ( diff --git a/premise/data/additional_inventories/lci-carbon-capture.xlsx b/premise/data/additional_inventories/lci-carbon-capture.xlsx index 9a93d8950cea6b637c4f321a7cbaf499231103a4..d64ba88c37ce861012cbd9b3564f054b6ca7168c 100644 GIT binary patch delta 6512 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 delta 6530 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