在Brightway2中分解ecoinvent流程

时间:2016-03-16 21:30:49

标签: brightway

让我们说我想要为汽车使用ecoinvent工艺,并且工艺模型包括对生产汽车,维护,道路维护,燃料等的影响。让我们假设我想要在没有燃料的情况下对汽车进行建模,因为我想模拟使用不同的燃料。我可以告诉Brightway计算汽车减去燃料的影响吗?

1 个答案:

答案 0 :(得分:2)

至少有两种方法可以获得您想要的结果。假设您的库存数据集如下所示:

[
    {
        'code': 'car',
        'database': 'example',
        'exchanges': [{
            'input': ('database', 'fuel'), 
            'amount': 1
        }]
    }, {
        'code': 'fuel',
        'database': 'example',
    }
]

然后你可以构建一个新的数据集并减去燃料:

{
    'code': 'car w/out fuel',
    'database': 'example',
    'exchanges': [{
        'input': ('example', 'car'), 
        'amount': 1
    }, {
        'input': ('example', 'fuel'), 
        'amount': -1
        }
    }]
}

然后使用此数据集作为您的功能单元。或者,您可以直接在传递到LCA类的功能单元中减去燃油输入:

LCA({('example', 'car'): 1, ('example', 'fuel'): -1)})

您还可以将此修改过的功能单元保存在calculation setup

回应关于操作数据集的简易性的评论,实际上没有一种简单的方法。定义处理库存数据集的通用规则非常困难,因为输入的结构与行业部门的结构截然不同。要回答具体评论,您可以执行以下操作:

from brightway2 import *
db = Database("ecoinvent 3.2 cutoff")
car = db.search('transport, passenger car, large size, diesel')[0]
new_car = car.copy()
for exc in new_car.exchanges():
    if 'diesel, low-sulfur' in exc.input['name']:
        exc.delete()

但这需要您手动检查搜索字词以确保获得所需的行为。在理想的世界中,我们将使用特定于域的语言以简单的方式操作数据集,但我不知道它会是什么样的。