为什么生物圈活动可能出现在技术圈矩阵中?

why biosphere activities may appear in the technosphere matrix?

我正在测试如何在 brightway 中向我的 biosphere3 矩阵添加一个新的“activity”,并且我在我的 technosphere 矩阵中得到了一个我没想到的新列,(对应于我的 id新的生物圈节点)。这种行为是预期的吗?并不是说我想坚持传统,但通常技术圈矩阵中的列不是“基本流”。我正在使用 bw2calc 版本 (2.0.DEV1) 和 bw2data 版本 (4.0.DEV1)

这里有一些代码可以重现这种行为:

b3 = bw2data.Database('biosphere3')

uwva_node = b3.new_activity(code='uwva_ppp',
            name='utility weighted value added (PPP)',
            categories=('social',),
            unit = 'Meuro_ppp',
            )
uwva_node.save()
act1_key=('test_db','activity_1')

biosphere_exchange_1={'amount':2,
                    'input':uwva_node.key,
                    'output':act1_key,
                    'type':'biosphere',
                    'uncertainty type': 0}

production_exchange_1={'amount':2,
                     'input':act1_key,
                     'output':act1_key,
                     'type':'production',
                     'uncertainty type':0}

act_1_dict={'name':'test_activity_1',
 'unit':'megajoule',
 'exchanges':[production_exchange_1,biosphere_exchange_1]}

act2_key=('test_db','activity_2')

production_exchange_2={'amount':10,
                     'input':act2_key,
                     'output':act2_key,
                     'type':'production',
                     'uncertainty type':0}

technosphere_exchange_1={
    'amount':10, # 
    'input':act1_key,
    'output':act2_key,
    'type':'technosphere',
}

act_2_dict={'name':'test_activity_2',
            'unit':'megajoule',
            'exchanges':[production_exchange_2,technosphere_exchange_1]}

database_dict={act1_key:act_1_dict,
               act2_key:act_2_dict}

db=bw2data.Database('test_db')

db.write(database_dict)

如果我计算库存,我会得到一个包含 3 列的技术圈矩阵。我的新生物圈 activity 也在技术圈矩阵中。

act2 = bw2data.get_activity(act2_key)

lca = bw2calc.LCA({act2:1})

lca.lci()

lca.technosphere_matrix.todense()

assert uwva_node.id in lca.dicts.activity
assert uwva_node.id in lca.dicts.biosphere

当您创建 uwva_node 时,您没有告诉 Brightway type 它是什么,所以它假定它是一个正常的 activity,应该适合技术领域。因此,因为你没有给它一个生产交换,它 assumed that there was an implicit production amount of 1,这就是你在技术领域看到的。

您可以通过将新的 activity 类型指定为 process 以外的任何类型来解决此问题,例如

uwva_node = b3.new_activity(code='uwva_ppp',
        name='utility weighted value added (PPP)',
        categories=('social',),
        unit = 'Meuro_ppp',
        type="social",
)