Ich bin sehr neu zu bw2 und ich versuche, eine einfache LCA ohne Verwendung von Datenbanken, sondern nur mit einem manuell definierten Inventar und LCIA-Methode. Ich habe die Werte aus dem Beispiel in Kapitel 11 von "Die Numerische Struktur der Ökobilanz" Buch verwendet.Erstellen Sie sehr einfache LCIA-Methode in Brightway2
konnte ich eine Bestandsaufnahme und führen Sie die LCI Berechnung erstellen:
t_db = Database("testdb")
t_db.write({
("testdb", "Electricity production"):{
'name':'Electricity production',
'unit': 'kWh',
'exchanges': [{
'input': ('testdb', 'Fuel production'),
'amount': 2,
'unit': 'kg',
'type': 'technosphere'
},{
'input': ('testdb', 'Carbon dioxide'),
'amount': 1,
'unit': 'kg',
'type': 'biosphere'
},{
'input': ('testdb', 'Sulphur dioxide'),
'amount': 0.1,
'unit': 'kg',
'type': 'biosphere'
},{
'input': ('testdb', 'Electricity production'), #important to write the same process name in output
'amount': 10,
'unit': 'kWh',
'type': 'production'
}]
},
('testdb', 'Fuel production'):{
'name': 'Fuel production',
'unit': 'kg',
'exchanges':[{
'input': ('testdb', 'Carbon dioxide'),
'amount': 10,
'unit': 'kg',
'type': 'biosphere'
},{
'input': ('testdb', 'Sulphur dioxide'),
'amount': 2,
'unit': 'kg',
'type': 'biosphere'
},{
'input': ('testdb', 'Crude oil'),
'amount': -50,
'unit': 'kg',
'type': 'biosphere'
},{
'input': ('testdb', 'Fuel production'),
'amount': 100,
'unit': 'kg',
'type': 'production'
}]
},
('testdb', 'Carbon dioxide'):{'name': 'Carbon dioxide', 'unit':'kg', 'type': 'biosphere'},
('testdb', 'Sulphur dioxide'):{'name': 'Sulphur dioxide', 'unit':'kg', 'type': 'biosphere'},
('testdb', 'Crude oil'):{'name': 'Crude oil', 'unit':'kg', 'type': 'biosphere'}
})
functional_unit = {t_db.get("Electricity production") : 1000}
lca = LCA(functional_unit)
lca.lci()
print(lca.inventory)
Doch die Probleme beginnen, wenn ich die fiktive LCIA Methode (mit allen CFs auf 1 der Einfachheit halber) erstellen. Dies ist der Code, den ich benutzt habe, aber eindeutig funktioniert es nicht. Das Hauptproblem scheint ein Fehler zu sein, die Börsen von dem Inventar mit der LCIA-Methode zu verknüpfen.
myLCIAdata = [[('biosphere', 'Carbon dioxide'), 1.0],
[('biosphere', 'Sulphur dioxide'), 1.0],
[('biosphere', 'Crude oil'), 1.0]]
method_key = ('simplemethod', 'imaginaryendpoint', 'imaginarymidpoint')
Method(method_key).validate(myLCIAdata) #returns "TRUE"
Method(method_key).register()
Method(method_key).write(myLCIAdata)
Method(method_key).load() #check everything works
lca = LCA(functional_unit, method_key) #run LCA calculations again with method
lca.characterized_inventory
Das Ergebnis ist <3x2 sparse matrix of type '<class 'numpy.float64'>' with 0 stored elements in Compressed Sparse Row format>
So eine leere Matrix. Irgendeine Idee von welchem Fehler ich mache? Soll ich für jeden Austausch eine eindeutige Kennung wie in den vorhandenen Datenbanken erhalten? Ich habe die bw2 Tutorials, die Dokumentation und die vorherigen Fragen auf dieser Seite überprüft, kann aber keine Antwort finden. Danke im Voraus.
Vielen Dank. Ich sehe den Fehler, ich war verwirrt von dem "Biosphären" -Teil in der LCIA-Methodendefinition, ich dachte, es sei die Art des Flusses, stattdessen bezieht er sich auf die Datenbank. Ich habe den Code wie folgt geändert: 'myLCIAdata = [[('testdb', 'Carbon dioxide'), 1.0] ...', fügte 'lca.lcia()' hinzu, und es funktionierte. (Haben den eleganten Punkt, danke für den Vorschlag). – Bax