Polar Region

library(PlotSvalbard)

basemap("panarctic", limits = 60, bathymetry = TRUE, land.border.col = "red", land.col = "green1",
    label.offset = 1.1, label.font = 10, base_size = 13, bathy.size = 0.5)

Life Cycle Assessment (LCA) Framework in Brigthway2

Four levels of LCA Framework:

  • define goal and scope
  • life cycle inventory analysis,
  • life cycle impact assessment
  • interpretation

LCA can be expressed in a single formula: \[\mathrm{h = CBA^{-1}f}\]

where:

  • \(A\) = transaction matrix (dimensions \(p\) x \(q\))
  • \(B\) = environmental interventions matrix (dimensions \(r\) x \(q\))
  • \(C\) = characterisation matrix (dimensions \(p\) x \(q\))
  • \(f\) = final demand vector (dimensions \(p\) x \(1\))
  • \(h\) = characterised inventory matrix (dimensions \(1\) x \(1\))
  • \(p\) = number of products
  • \(q\) = number of activities/processes
  • \(r\) = number of elementary flows

Therefore,

  • demand array = \(f\)
  • supply array = \(A^{-1}f\)
  • inventory = \(BA^{-1}f\)
  • characterized inventory = \(CBA^{-1}f\)

Compute score per impact category

  • environmental impacts per Process:

\[\mathrm{h_{process} = CB~diag(A^{-1}f)}\]

  • total environmental impact to the stressors:

\[\mathrm{h_{stressor} = C~diag(BA^{-1}f)}\]

  • environmental stressors per activity for a specific impact category:

\[\mathrm{h_{category} = diag(C)~B~diag(A^{-1}f)}\]

Life Cycle Assessment(LCA): Brightway2 components:

Brightway2 is a open source framework for life cycle assessment (LCA) developed with Python. Brightway2 main package includes functionalities of :

  • handling data, storing and searching all data sources.
  • estimation and calcultion of LCA
  • analyzer to analyze the output of LCA calculations.
  • The country converter (coco) is a Python package to convert and match country names between different classifications and between different naming versions. Internally it uses regular expressions to match country names. Coco can also be used to build aggregation concordance matrices between different classification schemes.

  • MRIOLab suite: Virtual laboratories and MRIO analysis – an introduction. Compilation and operation of large-scale multi-regional input–output (MRIO) databases within virtual laboratories (VLs)

  • Cardellini et al. (2018)

  • Steubing et al. (2020)

The Hierarchy of Brightway2

sourced from  Brightway2

sourced from Brightway2

Database Parametrization

sourced from  Brightway2

sourced from Brightway2

Input Matrix Struction

sourced from  Brightway2

sourced from Brightway2

Demonstration: Example

Load database

from brightway2 import *
import numpy as np
import random

projects.set_current("databases demo")


db = Database("example")

example_data = {
    ("example", "A"): {
        "name": "A",
        "exchanges": [{
            "amount": 1.0,
            "input": ("example", "B"),
            "type": "technosphere"
            }],
        'unit': 'kilogram',
        'location': 'here',
        'categories': ("very", "interesting")
        },
    ("example", "B"): {
        "name": "B",
        "exchanges": [],
        'unit': 'microgram',
        'location': 'there',
        'categories': ('quite', 'boring')
        }
    }



db.write(example_data)

db.random()

num_exchanges = [(activity, len(activity.exchanges())) for activity in db]
num_exchanges

db.search("*")

Score Estimation Setup

from brightway2 import *


if "Calculation setups" not in projects:
  projects.set_current("BW2 introduction")
  projects.copy_project("Calculation setups")
else:projects.set_current("Calculation setups")
 
 
import random    
functional_units = [{Database('forwast').random(): 1} for _ in range(20)]


# 
# all_forwast_flows = {exc.input for ds in Database("forwast") for exc in ds.biosphere()}
# suitable_methods = [method 
#                     for method in methods 
#                     if {cf[0] for cf in Method(method).load()}.intersection(all_forwast_flows)]
# 
# print("Can use {} of {} LCIA methods".format(len(suitable_methods), len(methods)))
# chosen_methods = random.sample(suitable_methods, 8)
# 

LCA of Carbon Capture and Use

list_biosphere_flows_BW2.csv

LCI_CCU_2018_nt_final.csv

How to construct scenario_matrix_data

import numpy as np
scenario_array = np.array(
    [
        1,    # New value for exchange between ('bd1', 'a2') and ('bd1', 'b')
        0     # New value for exchange between ('bd1', 'a1') and ('bd1', 'b')
    ]).reshape(-1, 1)
    
scenario_indices = [
        (('bd1', 'a2'), ('bd1', 'b'), 'technosphere'),
        (('bd1', 'a1'), ('bd1', 'b'), 'technosphere')
    ]
    
scenario_matrix_data = [(scenario_array, scenario_indices, 'technosphere')]    


scenario_matrix_data
   
[(array([[1],
       [0]]), [(('bd1', 'a2'), ('bd1', 'b'), 'technosphere'), (('bd1', 'a1'), ('bd1', 'b'), 'technosphere')], 'technosphere')]

References

Cardellini, Giuseppe, Christopher L. Mutel, Estelle Vial, and Bart Muys. 2018. “Temporalis, a Generic Method and Tool for Dynamic Life Cycle Assessment.” Science of The Total Environment 645: 585–95. https://www.sciencedirect.com/science/article/pii/S0048969718325257.
Steubing, Bernhard, Daniel de Koning, Adrian Haas, and Christopher Lucien Mutel. 2020. “The Activity Browser – an Open Source LCA Software Building on Top of the Brightway Framework.” Software Impacts 3: 100012. https://www.sciencedirect.com/science/article/pii/S2665963819300120.