与光明路各单位交流

exchanges with different units in brightway

是否可以在 Brightway 中定义一个 activity 与不同单位交换? (例如太焦耳而不是兆焦耳)。我写了一些代码来测试这个,但我天真的方法似乎不起作用:

co2_f=[f for f in bw.Database('biosphere3')
if 'Carbon dioxide' in f['name']
and ' fossil' in f['name']
and f['categories']==('air', 'low population density, long-term')
][0]
co2_f

for act in bw.Database('ei_35cutoff'):
    if act['unit']=='megajoule':
       break

db = bw.Database("a&e")

db.write({
("a&e", "cat1"): 
    {
    'name': 'cat1',
    'unit': 'kilogram',
    'exchanges': [
        {'input': act.key  ,'amount': 10,'type': 'technosphere','unit':'megajoule'},
        {'input': co2_f.key,'amount': 1,'type': 'biosphere','unit':'kilogram'}]
    },

("a&e", "cat2"): 
    {
    'name': 'cat2',
    'unit': 'kilogram',
    'exchanges': [
        {'input': act.key  ,'amount': 10,'type': 'technosphere','unit':'terajoule'},
        {'input': co2_f.key,'amount': 1,'type': 'biosphere','unit':'kilogram'}]
    },
("a&e", "cat3"): 
    {
    'name': 'cat3',
    'unit': 'kilogram',
    'exchanges': [
        {'input': act.key  ,'amount': 10,'type': 'technosphere','unit':'megajoule'},
        {'input': co2_f.key,'amount': 1,'type': 'biosphere','unit':'ton'}]
    },
})

ipcc2013 = ('IPCC 2013', 'climate change', 'GWP 100a')

for a in db:
    actlca=bw.LCA({a:1},method=ipcc2013)
    actlca.lci()
    actlca.lcia()
    print(a['name'],actlca.score)

并且都产生相同的结果。就好像 CO2 是千克,act 是兆焦耳。

如果你的意思是"does Brightway2 scale exchanges based on the 'units' attribute",答案是否定的。

就像 Brightway2 中的几乎所有其他内容一样,这并非不可能。但是,单位不是 Brightway 存储的 processed 数据的一部分(即它不是 MatrixBuilder 构建 A 的存储结构化数组的一部分和 B 矩阵)。

有关处理数据和构建矩阵的详细信息,请参阅 here and here