Пример #1
0
class BiofuelInventory(BaseInventoryImport):
    """
    Biofuel datasets from the master thesis of Francesco Cozzolino (2018).
    """
    def load_inventory(self, path):
        self.import_db = ExcelImporter(path)

    def prepare_inventory(self):

        # Migrations for 3.6
        if self.version == 3.6:
            migrations = {
                'fields': ['name', 'reference product', 'location'],
                'data':
                [(('market for transport, freight, sea, transoceanic tanker', (
                    'transport, freight, sea, transoceanic tanker',
                ), 'GLO'), {
                    'name':
                    ('market for transport, freight, sea, tanker for liquid goods other than petroleum and liquefied natural gas'
                     ),
                    'reference product':
                    ('transport, freight, sea, tanker for liquid goods other than petroleum and liquefied natural gas'
                     ),
                }),
                 (('market for water, decarbonised, at user',
                   ('water, decarbonised, at user', ), 'GLO'), {
                       'name': ('market for water, decarbonised'),
                       'reference product': ('water, decarbonised'),
                       'location': ('DE'),
                   }),
                 (('market for water, completely softened, from decarbonised water, at user',
                   ('water, completely softened, from decarbonised water, at user',
                    ), 'GLO'), {
                        'name': ('market for water, completely softened'),
                        'reference product': ('water, completely softened'),
                        'location': ('RER'),
                    }),
                 (('market for concrete block', ('concrete block', ), 'GLO'), {
                     'location': ('DE'),
                 })]
            }

            Migration("biofuels_ecoinvent_36").write(
                migrations,
                description=
                "Change technosphere names due to change from 3.5 to 3.6")
            self.import_db.migrate("biofuels_ecoinvent_36")

        self.add_biosphere_links()
        self.add_product_field_to_exchanges()
Пример #2
0
class CarmaCCSInventory(BaseInventoryImport):
    def load_inventory(self, path):
        self.import_db = ExcelImporter(path)

    def prepare_inventory(self):
        if (self.version == 3.6):
            # apply some updates to comply with ei 3.6
            new_technosphere_data = {
                'fields': ['name', 'reference product', 'location'],
                'data':
                [(('market for water, decarbonised, at user', (), 'GLO'), {
                    'name': ('market for water, decarbonised'),
                    'reference product': ('water, decarbonised'),
                    'location': ('DE'),
                }),
                 (('market for water, completely softened, from decarbonised water, at user',
                   (), 'GLO'), {
                       'name': ('market for water, completely softened'),
                       'reference product': ('water, completely softened'),
                       'location': ('RER'),
                   }),
                 (('market for steam, in chemical industry', (), 'GLO'), {
                     'location': ('RER'),
                     'reference product': ('steam, in chemical industry'),
                 }),
                 (('market for steam, in chemical industry', (), 'RER'), {
                     'reference product': ('steam, in chemical industry'),
                 }),
                 (('zinc-lead mine operation', ('zinc concentrate', ), 'GLO'),
                  {
                      'name': ('zinc mine operation'),
                      'reference product': ('bulk lead-zinc concentrate'),
                  }),
                 (('market for aluminium oxide', ('aluminium oxide', ), 'GLO'),
                  {
                      'name':
                      ('market for aluminium oxide, non-metallurgical'),
                      'reference product':
                      ('aluminium oxide, non-metallurgical'),
                      'location': ('IAI Area, EU27 & EFTA'),
                  }),
                 (('platinum group metal mine operation, ore with high rhodium content',
                   ('nickel, 99.5%', ), 'ZA'),
                  {
                      'name':
                      ('platinum group metal, extraction and refinery operations'
                       ),
                  })]
            }

            Migration("migration_36").write(
                new_technosphere_data,
                description=
                "Change technosphere names due to change from 3.5 to 3.6")
            self.import_db.migrate("migration_36")

        self.add_biosphere_links()
        self.add_product_field_to_exchanges()

        # Add carbon storage for CCS technologies
        print("Add fossil carbon dioxide storage for CCS technologies.")
        self.add_negative_CO2_flows_for_biomass_CCS()

    def add_negative_CO2_flows_for_biomass_CCS(self):
        """
        Rescale the amount of all exchanges of carbon dioxide, non-fossil by a factor -9 (.9/-.1),
        to account for sequestered CO2.

        All CO2 capture and storage in the Carma datasets is assumed to be 90% efficient.
        Thus, we can simply find out what the new CO2 emission is and then we know how much gets stored in the ground.
        It's very important that we ONLY do this for biomass CCS plants, as only they will have negative emissions!

        Modifies in place (does not return anything).

        """
        for ds in ws.get_many(self.db, ws.contains('name', 'storage'),
                              ws.equals('database', 'Carma CCS')):
            for exc in ws.biosphere(
                    ds, ws.equals('name', 'Carbon dioxide, non-fossil')):
                wurst.rescale_exchange(exc, (0.9 / -0.1),
                                       remove_uncertainty=True)