Skip to content

Commit

Permalink
Align wrt master.
Browse files Browse the repository at this point in the history
  • Loading branch information
romainsacchi committed Sep 12, 2024
1 parent 9b73e70 commit d38f26d
Show file tree
Hide file tree
Showing 34 changed files with 8,730 additions and 8,097 deletions.
6 changes: 4 additions & 2 deletions docs/load.rst
Original file line number Diff line number Diff line change
Expand Up @@ -187,8 +187,10 @@ Finally, once imported, unlinked flows remain. They can be found under these hig
:align: center


To link them, you need to import an additional mapping flow that you can find here
("Tools" > "Flow mapping" > "Open file").
To link them, you need to import an additional mapping flow that you can find at the following path:
https://github.com/polca/premise/blob/master/premise/data/utils/export/flow_mapping_olca.csv

Then, you can import this file in OpenLCA: ("Tools" > "Flow mapping" > "Open file").

.. image:: olca_fig4.png
:width: 500pt
Expand Down
113 changes: 76 additions & 37 deletions docs/transform.rst
Original file line number Diff line number Diff line change
Expand Up @@ -535,19 +535,30 @@ improving its performance in the past, relative to today.
Photovoltaics panels
--------------------
Photovoltaic panels are expected to improve over time. The following module efficiencies
are considered for the different types of PV panels:
====================== =========== ============ =========== ======= ====== =======
% module efficiency micro-Si single-Si multi-Si CIGS CIS CdTe
====================== =========== ============ =========== ======= ====== =======
2010 10 15.1 14 11 11 10
2020 11.9 17.9 16.8 14 14 16.8
2050 12.5 26.7 24.4 23.4 23.4 21
====================== =========== ============ =========== ======= ====== =======
The sources for these efficiencies are given in the inventory file LCI_PV_:
Photovoltaic panels are expected to improve over time. The following module efficiencies (mena, minimum, maximum)
are considered for the different types of PV panels, applied as a triangular distribution on the panel surface
required to reach the peak power output of the dataset:
===================== ==================== ==================== =================== ================== ================== ================= ================== ================== =========================================
module efficiency micro-Si single-Si multi-Si CIGS CIS CdTe GaAs perovskite Source
===================== ==================== ==================== =================== ================== ================== ================= ================== ================== =========================================
2010 10.0 (7.5-12.5) 15.0 (11.3-18.9) 14.0 (10.5-17.5) 11.0 (8.3-13.8) 11.0 (8.3-13.8) 10.0 (8.8-12.0) 28.0 (21.0-35.0) 25.0 (19.0-31.0) [1], [2], [3], [4], [5], [6], [7], [8]
2020 11.9 (9.0-15.0) 17.9 (13.0-22.0) 16.8 (12.0-21.0) 14.0 (10.5-18.0) 14.0 (10.5-18.0) 16.8 (13.0-21.0) 28.0 (21.0-35.0) 25.0 (19.0-31.0) [1], [2], [3], [4], [5], [6], [7], [8]
2023 - 22.0 (17.0-24.0) - 15.0 (11.3-19.0) - 19.0 (15.0-20.0) - - [2], [4], [6]
2050 12.5 (9.0-16.0) 26.7 (20.0-34.0) 24.4 (16.0-30.0) 23.4 (17.3-29.0) 23.4 (17.3-29.0) 21.0 (17.5-25.0) 28.0 (25.0-28.0) 25.0 (22.0-31.0) [1], [2], [3], [4], [5], [6], [7], [8]
===================== ==================== ==================== =================== ================== ================== ================= ================== ================== =========================================
.. [1] https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
.. [2] https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
.. [3] https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf
.. [4] https://www.ise.fraunhofer.de/content/dam/ise/de/documents/publications/studies/Photovoltaics-Report.pdf. For future efficiency: own assumption, -+25%.
.. [5] Future eff: Fraunhofer ISE Photovoltaics Report 2019; Uncertainty: Own assumption: -+25%.
.. [6] https://www.sciencedirect.com/science/article/pii/S0927024823001101
.. [7] https://link.springer.com/article/10.1007/s11367-020-01791-z
.. [8] https://pubs.rsc.org/en/content/articlelanding/2022/se/d2se00096b; https://www.csem.ch/en/news/photovoltaic-technology-breakthrough-achieving-31.25-efficiency/
The sources for these efficiencies are also given in the inventory file LCI_PV_:
.. _LCI_PV: https://github.com/polca/premise/blob/master/premise/data/additional_inventories/lci-PV.xlsx
Expand Down Expand Up @@ -847,9 +858,45 @@ depends on the location of the consumer.
Cement production
+++++++++++++++++
The modelling of future improvements in the cement sector is relatively
simple at the moment, and does not involve the emergence of new
technologies (e.g., electric kilns).
The modelling of future improvements in the cement sector is dependent on the IAM model chosen.
When choosing IMAGE, scenarios include the emergence of a new, more efficient kiln, as well
as kilns fitted with three types of carbon capture technologies:
* using monoethanolamine (MEA) as a solvent,
* using oxyfuel combustion,
* using Direct Separation (Leilac process).
The implementation of the corresponding datasets for these new kiln technologies are based on the work of
Muller_ et al., 2024.
.. _Muller: https://doi.org/10.1016/j.jclepro.2024.141884
We differ slightly from the implementation of Muller_ et al., 2024, in that:
* the heat necessary for the regeneration of the MEA solvent is assumed to be provided by a natural gas boiler (instead of a fuel mix resembling that of the kiln itself), with up to 30% coming from recovered heat from the kiln by 2050,
* the amount of heat needed for the regeneration of the MEA solvent goes from 3.76 GJ/ton CO2 in 2020, to 2.6 GJ/ton CO2 in 2050,
* the provision of oxygen for the Direct Separation option comes from an existing air separation dataset from ecoinvent,
* the fuel mix for the kiln is that of ecoinvent, further scaled down by the change of efficiency of the kiln (in Müller et al., 2024, they use directly the fuel mix provided by the IMAGE scenario, which we do not find representative, as it also includes the fuel used by other activities in the non-metallic minerals, notably a large share of natural gas).
In a nutshell, *premise*:
* makes copies of the `clinker production` dataset,
* adjusts the fuel consumption and related CO2 emissions,
* adjusts specific hot pollutant emissions removed by the carbon capture process (Mercury, NOx, SOx),
* adds an input from the carbon capture process, based on a capture efficiency share,
* and removes a corresponding amount from the outgoing CO2 emissions.
The Direct Separation process only captures calcination emissions, while the other two technologies capture
both combustion and calcination emissions.
When choosing another IAM, the current implementation is relatively
simpler at the moment, and does not involve the emergence of new
technologies. In these scenarios, the production volumes of kilns
equipped with CCS is not given. Instead, the share of CO2 emissions
that is sequestered is given. We use the ratio of the CO2 emissions
sequestered over the total CO2 emissions to determine the share of
the CO2 emissions that is sequestered in the clinker production dataset
Run
Expand Down Expand Up @@ -887,17 +934,9 @@ Efficiency adjustment
---------------------
*premise* then adjusts the thermal efficiency of the process.
It does so by calculating the technology-weighted energy requirements
per ton of clinker.
Based on GNR/IEA roadmap data, *premise* uses:
* the share of kiln technology for a given region today (2020):
* wet,
* dry,
* dry with pre-heater,
* and dry with pre-heater and pre-calciner
* the energy requirement for each of these technologies today (2020).
It first calculates the energy input in teh current (original) dataset,
by looking up the fuel inputs and their respective lower heating values.
Once the energy required per ton clinker today (2020) is known, it is
multiplied by a *scaling factor* that represents a change in efficiency
Expand All @@ -916,15 +955,16 @@ between today and the scenario year.
.. note::
*premise* enforces a lower limit on the fuel consumption per ton of clinker.
This limit is set to 2.8 GJ/t clinker and corresponds to the minimum
This limit is set to 3.1 GJ/t clinker and is close to the minimum
theoretical fuel consumption with an moisture content of the raw materials,
as considered in the 2018 IEA_ cement roadmap report. Hence, regardless of the
scaling factor, the fuel consumption per ton of clinker will never be less than
2.8 GJ/t.
as considered in the 2018 IEA_ cement roadmap report (i.e., 2.8 GJ/t clinker).
Hence, regardless of the scaling factor, the fuel consumption per ton of clinker
will never be less than 3.1 GJ/t.
.. _IEA: https://iea.blob.core.windows.net/assets/cbaa3da1-fd61-4c2a-8719-31538f59b54f/TechnologyRoadmapLowCarbonTransitionintheCementIndustry.pdf
Once the new energy input is determined, *premise* scales down the fuel,
and the fossil and biogenic CO2 emissions accordingly, based on the Lower Heating Value
and CO2 emission factors for these fuels.
Expand All @@ -943,22 +983,21 @@ If the IAM scenario indicates that a share of the CO2 emissions
for the cement sector in a given region and year is sequestered and stored,
*premise* adds CCS to the corresponding clinker production dataset.
The CCS dataset used to that effect is from Meunier_ et al., 2020.
The dataset described the capture of CO2 from a cement plant.
The CCS dataset used to that effect is from Muller_ et al., 2024.
The dataset described the capture of CO2 from a cement plant,
using a monoethanolamine-based sorbent.
To that dataset, *premise* adds another dataset that models the storage
of the CO2 underground, from Volkart_ et al, 2013.
Besides electricity, the CCS process requires heat, water and others inputs
to regenerate the amine-based sorbent. We use two data points to approximate the heat
requirement: 3.66 MJ/kg CO2 captured in 2020, and 2.6 MJ/kg in 2050.
The first number is from Meunier_ et al., 2020, while the second number is described
requirement: 3.76 MJ/kg CO2 captured in 2020 (minus 30% coming from the kiln as recovered heat),
and 2.6 MJ/kg in 2050. The first number is from Muller_ et al., 2024, while the second number is described
as the best-performing pilot project today, according to the 2022 review of pilot
projects by the Global CCS Institute_. It is further assumed that the heat requirement
is fulfilled to an extent of 15% by the recovery of excess heat, as mentioned in
the 2018 IEA_ cement roadmap report.
is fulfilled to an extent of 30% by the recovery of excess heat, as found in numerous studies.
.. _Meunier: https://www.sciencedirect.com/science/article/pii/S0960148119310304
.. _Volkart: https://doi.org/10.1016/j.ijggc.2013.03.003
.. _Institute: https://www.globalccsinstitute.com/wp-content/uploads/2022/05/State-of-the-Art-CCS-Technologies-2022.pdf
Expand Down
2 changes: 1 addition & 1 deletion premise/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
"clear_inventory_cache",
"get_regions_definition",
)
__version__ = (2, 1, 1, "dev9")
__version__ = (2, 1, 3)


from premise.new_database import NewDatabase
Expand Down
70 changes: 46 additions & 24 deletions premise/biomass.py
Original file line number Diff line number Diff line change
Expand Up @@ -163,31 +163,38 @@ def create_biomass_markets(self) -> None:
if v in self.iam_data.production_volumes.variables.values
]

if self.year in self.iam_data.production_volumes.coords["year"].values:
total_prod_vol = np.clip(
(
self.iam_data.production_volumes.sel(
variables=available_biomass_vars,
region=region,
year=self.year,
).sum(dim="variables")
),
1e-6,
None,
)
else:
total_prod_vol = np.clip(
(
self.iam_data.production_volumes.sel(
variables=available_biomass_vars, region=region
)
.interp(year=self.year)
.sum(dim="variables")
),
1e-6,
None,
)

for biomass_type, biomass_act in biomass_map.items():
if self.year in self.iam_data.production_volumes.coords["year"].values:
total_prod_vol = np.clip(
(
self.iam_data.production_volumes.sel(
variables=available_biomass_vars,
region=region,
year=self.year,
).sum(dim="variables")
),
1e-6,
None,
)
else:
total_prod_vol = np.clip(
(
self.iam_data.production_volumes.sel(
variables=available_biomass_vars, region=region
)
.interp(year=self.year)
.sum(dim="variables")
),
1e-6,
None,
)

if (
total_prod_vol < 1e-5
and biomass_type != "biomass crops - purpose grown"
):
continue

if biomass_type in available_biomass_vars:
if (
Expand Down Expand Up @@ -227,6 +234,12 @@ def create_biomass_markets(self) -> None:
else:
share = 0

if (
total_prod_vol < 1e-5
and biomass_type == "biomass crops - purpose grown"
):
share = 1

if share > 0:
ecoinvent_regions = self.geo.iam_to_ecoinvent_location(
dataset["location"]
Expand Down Expand Up @@ -288,6 +301,15 @@ def create_biomass_markets(self) -> None:
}
)

# check that dataset has exchanges
number_tech_exchanges = len(
[exc for exc in dataset["exchanges"] if exc["type"] == "technosphere"]
)
if number_tech_exchanges == 0:
raise ValueError(
f"Dataset {dataset['name']} has no technosphere exchanges."
)

self.database.append(dataset)

# add log
Expand Down
Binary file modified premise/data/additional_inventories/lci-PV-perovskite.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-buses.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-fuel_cell.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-pass_cars.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-trucks.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-two_wheelers.xlsx
Binary file not shown.
Binary file modified premise/data/additional_inventories/lci-waste-CHP.xlsx
Binary file not shown.
Loading

0 comments on commit d38f26d

Please sign in to comment.