Skip to content

Add 25 equipment cost correlations (H2, CCUS, biomass, separations) - #9

Open
marwenchaabouni wants to merge 11 commits into
pbtamarona:mainfrom
marwenchaabouni:feat/equipment-cost-correlations
Open

marwenchaabouni wants to merge 11 commits into
pbtamarona:mainfrom
marwenchaabouni:feat/equipment-cost-correlations

Conversation

@marwenchaabouni

@marwenchaabouni marwenchaabouni commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor

Contribution Notes : 25 New Equipment Cost Correlations for OpenPyTEA

This document explains, for maintainers and for our own records, exactly what this contribution adds, why, how the values were derived, and the CSV-format detail that had to be fixed before the pull request could be opened.


1. What this contribution is

A pure data addition to the OpenPyTEA equipment cost database:
src/openpytea/data/cost_correlations.csv.

  • 25 new cost correlations, appended at the end of the file.
  • No existing row was modified (values, keys, or sources).
  • No Python code was changed. OpenPyTEA reads this CSV at runtime; adding rows is all
    that is required, as stated in the official contributing guide
    (https://openpytea.readthedocs.io/en/latest/contributing.html).

The new rows fill gaps in areas relevant to energy-transition and low-carbon process TEA:
hydrogen production and storage, electrolysis, carbon capture (DAC, DOC, CO2 CPU), biomass gasification and combustion, biogas upgrading, gas separation (ASU, PSA), water treatment, and several drive/compression and loading-unit correlations.

2. Why we added them

OpenPyTEA's built-in database is strong on classic (petro)chemical equipment (Seider, Turton, Towler & Sinnott, Perry). Those sources predate, or only partially cover, the equipment that dominates current energy-system studies. These 25 correlations let users cost hydrogen, CCUS, biomass and separation equipment directly, from published academic and industry sources, instead of hand-typing a purchased cost. Each row is traceable to a citable source, in line with OpenPyTEA's transparency and FAIR-research goals.

3. What was added (overview)

Category Key Type Form cost_year
Gas separation asu_cryogenic_intechopen_2015 Air separation, cryogenic (whole plant) power-sizing 2015
Water treatment oil_water_separator_ust_2025 API / coalescing oil-water separator power-sizing 2025
Gasification gasifier_gti_liu_2011 Biomass gasifier, pressurised fluidised bed (GTI), incl. gas cooling and cleaning power-sizing 2007
Gas separation biogas_water_scrubber_sgc_2013 Biogas upgrading, water scrubber power-sizing 2013
Gas separation biogas_amine_scrubber_sgc_2013 Biogas upgrading, amine scrubber power-sizing 2013
Adsorption & membrane separation biogas_psa_sgc_2013 Biogas upgrading, PSA power-sizing 2013
Adsorption & membrane separation biogas_membrane_separation_sgc_2013 Biogas upgrading, membrane separation power-sizing 2013
Gas separation biogas_organic_scrubber_sgc_2013 Biogas upgrading, organic physical scrubber power-sizing 2013
CO2 capture dac_liquid_nas_2019 Direct air capture, liquid solvent power-sizing 2019
Fuel cell fuel_cell_pem_doe_2022 PEM fuel cell system power-sizing 2017
Solids-handling systems biomass_handling_irena_2012 Feedstock preparation and handling power-sizing 2010
CO2 capture dac_climeworks_hinwil_2024 Direct air capture, solid sorbent power-sizing 2024
Electrolysis electrolyzer_matthes_2023 Electrolyser, specific investment power-sizing 2023
Loading loading_arm_technavio_2026 Marine loading arm, hydraulic power-sizing 2025
Hydrogen production smr_ccs_plant_doe_2023 Steam methane reformer with CCS, whole plant power-sizing 2020
Pressure vessels hydrogen_storage_low_pressure_nrel_2007 Hydrogen storage vessel, low pressure (160 bar) power-sizing 2007
Pressure vessels hydrogen_storage_type1_nrel_2007 Hydrogen storage vessel, high pressure (860 bar), Type 1 steel power-sizing 2007
Pressure vessels hydrogen_storage_type2_nrel_2007 Hydrogen storage vessel, high pressure (875 bar), Type 2 power-sizing 2007
Pressure vessels hydrogen_storage_type4_nrel_2007 Hydrogen storage vessel, high pressure (875 bar), Type 4 power-sizing 2007
Compressors, fans, & blowers compressor_luyben_2018 Compressor, Douglas correlation power-sizing 2018
Compressors, fans, & blowers compressor_energy_2025 Compressor, gas-turbine driven centrifugal power-sizing 2020
Motors & generators electric_motor_calado_2012 Electric motor, Calado correlation offset power-law 2012
Adsorption & membrane separation psa_h2_purification_2023 Hydrogen purification, PSA power-sizing 2023
CO2 capture co2_purification_unit_ieaghg_2015 CO2 purification unit (CPU), cryogenic power-sizing 2014
CO2 capture doc_alkalinity_2024 Direct ocean capture, alkalinity power-sizing 2024

4. Correlation forms used

Two of the forms documented in the contributing guide are used. Both were already
supported, so no parser change is needed.

Offset power-law — C = a + b · S^n (1 row: electric_motor_calado_2012). Columns used: a, b, n.

Power-sizing — C = C0 · (S / S0)^f (24 rows). Columns used: s0, c0, f.

5. Methodology: how raw sources were turned into rows

Most sources report a unit cost (cost per kg/h, per kW, per t/day, per Nm3/h, ...)
rather than a reference-size reference-cost pair. To express those in OpenPyTEA's power-sizing form we used a consistent conversion, noted in the notes column of each affected row:

c0 -> c0 * s0 and f -> f + 1

In words: a unit cost c0 at a unit size s0 is written as a total cost at that reference size, and the exponent is increased by one (because multiplying a unit cost by the size adds one power of S). This keeps the physical meaning intact while conforming to the C = C0 · (S / S0)^f definition.

Where a source is truly linear in size (unit cost constant, total cost proportional to size), the row keeps f = 1. Where a source is a flat per-unit cost (e.g. a marine loading arm priced per arm), f = 0 so the cost is constant per unit.

Every row carries:

  • the reference cost year (cost_year), used by OpenPyTEA's CEPCI escalation;
  • the CE Index / annual-average CEPCI value used, in notes;
  • currency and price-level remarks (USD/EUR and year) in notes;
  • the default material where the source specifies one;
  • a direct source citation and a DOI/link;
  • a distinction between purchased / installed / bare-module cost in Remarks.

5.1 Why some key years differ from cost_year or the source year

Some keys are named after the study or edition in which the correlation is most often cited, while cost_year is the price level actually used for the numbers, and the source is the actual publication. These are not errors and not inconsistencies:
they are intentional. Examples:

  • fuel_cell_pem_doe_2022 — the row is aligned with the PEM fuel-cell system context; the numeric fit comes from Contini et al. (2017) and is expressed in 2017 dollars.
  • compressor_energy_2025 — key carries the publication year; cost_year is 2020 because the source's price basis is 2020 (fueled by an M&S index point from 2018).
  • dac_liquid_nas_2019 — key references the NAS study year; the source points at the later write-up used for the figures.

The naming convention is meant to help users find a correlation; the authoritative economic information is always cost_year + source + notes.

6. CSV format detail: the trailing comma (what was "missing")

This is the formatting issue that had to be resolved before opening the pull request.

6.1 The upstream file has 28 fields per line

The OpenPyTEA CSV header ends with a trailing comma:

...,source,notes,Remarks,doi /  link,

That trailing comma creates an extra, unnamed 28th field that is empty on every line.
So every official row parses to 28 fields (27 named columns + 1 empty trailing field).

6.2 Our working file had 27 fields per line

The working file we started from had no trailing comma on any line (header and all rows), so every line parsed to 27 fields. This happens when a CSV is re-saved by a spreadsheet or a database export: the trailing empty column is silently dropped.

Important: no named column was missing. All 27 named columns (key … doi / link) were present and correctly populated in every new row. The only thing "lost" was the empty 28th field produced by the trailing comma. The data itself is intact and parses correctly.

6.3 Why this matters for the pull request

If we had sent the working file as-is, the diff would show every one of the ~421 existing lines as changed (only its trailing comma), plus the 25 additions. That is noise and would make review painful. We therefore rebuilt the contribution as:

  1. the current upstream file, byte-for-byte unchanged, plus
  2. the 25 new rows appended at the end, each carrying the trailing comma so every line has 28 fields like the rest of the file.

Incidental whitespace differences that also existed in the working file (a handful of trailing spaces inside a few existing cells) were likewise discarded, again to keep the diff to pure additions.

6.4 Verification performed on the final file

  • 446 data rows total (421 upstream + 25 new).
  • Every line parses to exactly 28 fields.
  • No duplicate keys; all 25 new keys are unique and absent from upstream.
  • Line-level diff against upstream = 25 added lines, 0 removed, 0 modified.
  • New form values (power-sizing, offset power-law) are both already supported.

7. Source citations for this contribution

Grouped by source, as requested by the contributing guide:

8. How to use a new correlation

from openpytea.equipment import Equipment

# power-sizing example (PEM electrolyzer, current)
el = Equipment(
    name="EL",
    param=30000,                 # hydrogen production, kg/day
    process_type="Fluids",
    category="Electrolysis",
    type="PEM electrolyzer, current (2019)",
    material="n.a.",
)
print(el.direct_cost)

# offset power-law example (NREL electrolyzer)
el2 = Equipment(
    name="EL2",
    param=50,                    # hydrogen production, kg/h
    process_type="Fluids",
    category="Electrolysis",
    type="Electrolyzer (PEM / alkaline)",
    material="n.a.",
)
print(el2.direct_cost)

9. CPU row: co2_purification_unit_ieaghg_2015

Replaces co2_purification_cpu_2024 in src/openpytea/data/cost_correlations.csv.

co2_purification_unit_ieaghg_2015,CO2 capture,"CO2 purification unit (CPU), cryogenic","CO2 product to storage, t/h",59.7,878.4,,,,,,,283.8,78800000,0.633,,,,,,power-sizing,2014,n.a.,"IEAGHG (2015) Ch. E Tables 4 and 6, Ch. G unit cost tables","Direct materials (equipment estimate) basis, EUR 2Q2014 at 1.371 USD/EUR; six cases, ln fit R2 = 0.988",Purchased cost.,https://ieaghg.org/publications/2015-05%20Oxy-combustion%20turbines.pdf,

Source: IEAGHG (2015), Oxy-Combustion Turbine Power Plants, Report 2015/05, August 2015, prepared by Amec Foster Wheeler with Politecnico di Milano.

The correlation is fitted on six design cases in that report. The cost is row 1 DIRECT MATERIAL of the unit cost table for each case, in the Unit 4000 column that the page header labels CO2 PURIFICATION UNIT. The size is the CO2 product to storage in the report's own flow tables.

Design case CPU direct materials, M EUR 2Q2014 CO2 product to storage Cost table Size table
Case 3b, Modified S-Graz, two F-class gas turbines 59.3 283.8 t/h Ch. E Table 6, p. 491 Ch. A Table 2, p. 42
Case 1, SCOC-CC, two F-class gas turbines 64.2 285.4 t/h Ch. E Table 4, p. 489 Ch. A Table 2, p. 42
Case 3, 10% CO2 in the natural gas 62.4 307.8 t/h Ch. G unit cost table, p. 555 Ch. G Table 3, p. 550
Case 3, 70% CO2 in the natural gas 106.4 878.4 t/h Ch. G unit cost table, p. 556 Ch. G Table 3, p. 550
SCOC-CC for EOR, one E-class gas turbine 21.5 60.0 t/h Ch. G unit cost table, p. 562 Ch. G Table 5, p. 559
Modified S-Graz for EOR, one E-class gas turbine 20.0 59.7 t/h Ch. G unit cost table, p. 563 Ch. G Table 6, p. 560

The Modified S-Graz baseline is Case 3 in Chapter E and Case 3b in Chapter G, the same plant. Flow in the last two rows is reported as captured CO2 in kmol/h, converted at 44.0095 kg/kmol.

c0 and f are one least-squares fit of ln C on ln S over those six cases, f = sum((x - xbar)(y - ybar)) / sum((x - xbar)^2) with x = ln S and y = ln C: f = 0.633, one standard error 0.036, R2 = 0.988, over 59.7 to 878.4 t/h. c0 is the value the fitted line predicts at 283.8 t/h, 57.5 M EUR, not the Case 3b observation of 59.3 M EUR, converted at 1.371 USD/EUR to 78.8 M USD 2Q2014.

Cost basis: the row uses the report's DIRECT MATERIAL line. The report derives it from the equipment estimate (p. 485, "a K-base ... run has been made for the equipment estimate") and factors construction and EPC services on top of it, so its installation-type contributions sit above that line, and it does not split the line into equipment and bulk materials. That is the layer mapped to the library's c0, a purchased cost before the library's own installation factors. The report's multiples of direct materials, 1.51x to installed cost and 1.66x to total plant cost, against 3.2x from the library's default Fluids factors, show where the two conventions part. To use the source's installed cost, override the factors or pass purchased_cost.

Excluded, with the reason:

  • NET Power and revised CES: the report states their CPU omits the raw gas compression section (p. 509). Those CPUs are about 40% cheaper per unit at the same size
  • Supercritical CES: its CPU cost is only reachable from the Chapter E table by column numbering, not from a row labelled CO2 purification unit
  • IGCC: the CO2 comes from gasification syngas (p. 631)
  • Cases A and B: same CPU cost at the same size as Case 3b, so not independent cases

Uncertainty: the source declares the estimate AACE Class 4, +/-35% (p. 69), wider than the fit's own error. Currency basis is EUR, 2Q2014 price level (p. 69).

10. Biogas upgrading rows (split of biogas_upgrading_sgc_2013)

The single biogas_upgrading_sgc_2013 row assumed a constant unit cost (f = 1), which no curve in the source supports. It is replaced by five rows, one per upgrading technology in Bauer, Hulteberg, Persson & Tamm (2013), SGC Rapport 2013:270.

10.1 What was added

Technology Key Figure s_lower s_upper c0 (USD 2013) f
Water scrubber biogas_water_scrubber_sgc_2013 23 100 2,000 2,435,514 0.5148
Amine scrubber biogas_amine_scrubber_sgc_2013 5 550 1,850 3,148,688 0.4004
PSA biogas_psa_sgc_2013 10 440 1,950 2,635,171 0.5204
Membrane separation biogas_membrane_separation_sgc_2013 17 140 1,350 2,492,696 0.5943
Organic physical scrubber biogas_organic_scrubber_sgc_2013 28 190 1,970 2,718,806 0.4126

10.2 Method

The source plots specific investment cost U (EUR 2013 per Nm3/h) against raw biogas capacity S (Nm3/h), once per technology and once as the overlaid summary Figure 31. Each technology curve is a band, the min-max specific investment across the projects surveyed. The bands in Figure 31 cross, so each curve was digitised from its own per-technology figure (5, 10, 17, 23, 28), which carry the same data without overlap.

The band centreline was digitised point by point and fit by least squares on the log-log form:

U(S) = A * S^g          <=>      ln U = ln A + g * ln S

To express the unit cost in OpenPyTEA's total-cost power-sizing form C = c0 * (S / s0)^f:

c0 = U(s0) * s0          (unit cost at the reference size, times the size)
f  = g + 1               (multiplying a unit cost by the size adds one power of S)

with s0 = 1,000 Nm3/h. c0 is then converted EUR 2013 to USD 2013 at 1.3281 USD/EUR (ECB annual average, series EXR.A.USD.EUR.SP00.A), the same basis already used for this row in commit 1f92a4b. cost_year = 2013 is assumed, since the report states no price year (it is dated 2012 and the data is current-at-publication).

10.3 Fits

Technology A g f = g + 1 R2 fitted range (Nm3/h)
Water scrubber 52,346 -0.4852 0.5148 0.961 77-1,967
Amine scrubber 149,200 -0.5996 0.4004 0.989 546-1,854
PSA 54,487 -0.4796 0.5204 0.999 439-1,958
Membrane separation 30,933 -0.4057 0.5943 0.971 140-1,346
Organic physical scrubber 118,400 -0.5874 0.4126 0.988 192-1,967

The fits reproduce the report's own summary (p. 70): about 1,500-2,000 EUR per (Nm3/h) above 800-1,000 Nm3/h, and about 5,500 at 100 Nm3/h.

10.4 Cost basis

Remarks = Installed cost., the source's own wording: the investment cost covers the upgrading unit delivered and installed, and for some technologies also transport, commissioning and a heat recovery system. The band half-width (about 10-15% at mid range, up to about 25% at the low end) is a cross-project spread, not a fit residual, and is recorded in notes.

11. ASU row: asu_cryogenic_intechopen_2015 refit to Figure 11

The original row used one design point (184,000 $/(t/d) at 260 t/d, f = 1, bounds 100-5,000 t/d) and labelled it a bare-module cost. The value is a specific investment built on TCI (Table 6), and one plant size cannot support an exponent.

The y axis of Figure 11 is TCI per tonne of gaseous oxygen per day. The two squares read 0.184 and 0.181, the values quoted in section 6.3. Divided by 260 t/d, the Table 6 TCI values give 0.180 and 0.183, so the quoted figures sit about 2% above the ratios; the fit uses the quoted ones.

11.1 The nine plotted points

point oxygen, t/d U, 10^6 $/(t/d) U x S, M$ used
Case A (square) 260 0.184 47.8 yes
Case B (square) 260 0.181 47.1 yes
A 189 0.500 94.5 no
B 148 0.485 71.8 no
C 160 0.250 40.0 no
D 1,997 0.044 87.5 yes
E 2,401 0.025 59.6 yes
F 2,996 0.033 99.2 yes
G 8,979 0.0024 21.5 no

Figure 11 uses two naming series: the literature points are marked A to G (refs 43 to 49), and the squares are the chapter's own Cases A and B. The fit uses the squares and literature points D, E and F.

Four points contradict the rest: A, B and C imply 40-95 M$ of total capital at 150-190 t/d where the chapter's own estimate at 260 t/d is 47 M$, and G implies 21.5 M$ at 8,980 t/d, below every plant in the 2,000-3,000 t/d range. They are press-release figures for plants of different scope, which explains the 2.5x spread between A and C at the same size.

11.2 Fit used

Least squares on ln U against ln S over the five consistent points:

U = 12.68 S^-0.763, standard error of the exponent 0.085, R2 0.964

In OpenPyTEA's total-cost form, c0 = U(s0) x s0 and f = g + 1, at s0 = 1,000 t/d:

c0 = 65,118,664 USD 2015, f = 0.237, bounds 260-2,996 t/d

11.3 Checks

size, t/d correlation, M$ reference
260 47.3 46.9 and 47.7 M$ TCI, Table 6
1,000 65.1
2,000 76.7
2,996 84.4
11,000 (parallel units) 331 437 M$ total plant cost at 10,940 t/d, IEAGHG 2015/05

11.4 Fit with the excluded points included

For completeness, fitting all nine points (the five above plus A, B, C and G) gives U = 124.1 S^-1.105, R2 0.926, f = -0.105: total capital falls from 74 M$ at 150 t/d to 46 M$ at 9,000 t/d. Not used, since a negative exponent returns a cheaper plant at larger size.

12. SMR row: reformer_smr_matthes_2023 replaced by smr_ccs_plant_doe_2023

12.1 Why the row is replaced

The review raised the kW basis and the plant size. Both are answered by the sources, and answering the second exposed a third problem: the range itself does not reconcile.

Table A-2 attributes the SMR range to IEA (2020a) and DOE (2023). IEA (2020a), p. 3, gives natural gas reforming with carbon capture at 1,680 USD 2017 per kW of H2 output. Escalated with CEPCI (567.5 to 797.9) and converted at the 2023 rate (1.0813), that is 2,184 EUR 2023 per kW, which is 29% above the 1,700 upper bound.

The report documents no conversion basis. Chapter 2.3 and Chapter 5.3 discuss the range without deriving it, Appendix A-2 carries only the attribution, and there is no annex on price levels or exchange rates.

DOE gives what is needed in one figure. Figure 12 of the Pathways report, p. 28: footnote 2 puts the reformer at 215 MUSD, footnote 3 puts the capture unit at 140 MUSD, both at 100,000 Nm3/h capacity, and footnote 1 sets the price basis at 2020 USD.

12.2 The correlation

Field Value
key smr_ccs_plant_doe_2023
type Steam methane reformer with CCS, whole plant
units hydrogen output, kW (LHV)
s_lower, s_upper 300,000 and 795,000 kW
s0, c0, f 1, 1,184, 1
cost_year 2020
Remarks Installed cost.
100,000 Nm3/h x 0.089939 kg/Nm3 (0 C, 101.325 kPa)  = 8,993.9 kg/h
8,993.9 kg/h x 33.3333 kWh/kg (LHV)                 = 299,795 kW
215 MUSD + 140 MUSD                                 = 355 MUSD
355,000,000 / 299,795                               = 1,184 USD/kW H2

The density and the LHV are ours. DOE works in $/kg and in Nm3/h and needs neither, so both are declared in the notes cell.

12.3 Cross-check against the same figure

The 2025 bar of Figure 12 prices the capex at 0.4 $/kg, 0.2 for the plant and 0.2 for capture.

annual output          = 8,993.9 kg/h x 8,760 h x 0.90 = 70,908 t/yr
implied capital charge = 0.4 x 70,908,000 / 355,000,000 = 8.0 %

An 8% charge is the report's own WACC, so the capex and the capacity reproduce the charted segment. If the 100,000 Nm3/h were feed gas, output would be roughly a tenth and the same capex would chart at 4.0 $/kg.

12.4 Bounds, scope and caveats

The lower bound is the reference plant of the derivation, 300 MW. The upper bound is the SMR with CCS size Argus models, 187,975 t/yr at a 90% capacity factor, which is 795 MW of hydrogen output.

The figure covers reformer, capture and balance of plant, so the row is keyed and typed as a whole plant and the notes say not to pair it with separate capture equipment.

Two points DOE leaves open, recorded in notes: whether the 355 MUSD is overnight or total installed cost, labelled installed in the absence of a split between equipment and installation, and whether the 100,000 Nm3/h is hydrogen output, which is assumed.

12.5 What changes on the electrolyser row

The value is untouched. The row gains two bounds and a notes cell that states the basis, the source of the bounds and the superseded E-Bridge parameter.

Field Before After
s_lower empty 176,000
s_upper empty 1,367,000
notes value, FX, midpoint adds basis, short-term column, source of bounds, retired E-Bridge parameter

@marwenchaabouni

marwenchaabouni commented Oct 12, 2026 •

Copy link
Copy Markdown
Contributor Author

Motivation: why these 23 correlations

While integrating OpenPyTEA with our process simulation tool Plant Builder (https://greenearthx.io/products/plant-builder), we hit a gap: several equipment items in our database did not map to any existing OpenPyTEA cost correlation, so they could not be costed automatically.

To close that gap we are contributing 23 new correlations covering exactly those unmapped equipment items:

Electrolysis

  • Electrolyzer (PEM / alkaline)
  • Electrolyser, specific investment
  • PEM electrolyzer, current (2019)
  • PEM electrolyzer, future (2035)

Carbon capture

  • Direct air capture, liquid solvent
  • Direct air capture, solid sorbent
  • Direct ocean capture, alkalinity

Gas separation

  • Air separation, cryogenic
  • Biogas upgrading (membrane / water scrubbing / amine)
  • Hydrogen purification, PSA

Hydrogen production & storage

  • Steam methane reformer with CCS
  • Hydrogen storage tank, high pressure

Biomass

  • Biomass gasifier
  • Feedstock preparation and handling
  • CFB CHP

Compression & drives

  • Compressor, Douglas correlation
  • Compressor, gas-turbine driven centrifugal
  • Electric motor, Calado correlation

Other

  • PEM fuel cell system
  • API / coalescing oil-water separator
  • CO2 CPU compressor
  • Acid gas removal, DEA
  • Marine loading arm, hydraulic

Each row is fully documented (source, cost year, CEPCI basis, default material, purchased vs. installed cost basis). All sources are listed in Section 7 of the PR description.

@pbtamarona

Copy link
Copy Markdown
Owner

Thanks for this contribution. The coverage is useful and the sourcing is well documented. I'm going through it in a few parts, starting with currency.

EUR-denominated rows

OpenPyTEA assumes every cost in cost_correlations.csv is in USD. Only cost_year is used, to escalate costs with CEPCI, and CEPCI is a US-dollar index. The equipment classes never read the notes column. A plant can be reported in another currency through Plant(currency=..., exchange_rate=...), but that conversion is applied on top of costs it already treats as USD. So a EUR figure in the CSV is silently treated as the same number of dollars.

These rows are affected:

Key Currency in notes
electrolyzer_matthes_2023 EUR 2023
reformer_smr_matthes_2023 EUR 2023
biogas_upgrading_sgc_2013 EUR 2012–2013
co2_purification_cpu_2024 kEUR 2018

Could you convert c0 (or a/b) for these rows to USD before merging?

  • Use the annual-average EUR→USD rate for the row's cost_year, not today's rate. CEPCI then takes care of escalation in USD.
  • Record the rate and its source in notes, e.g. Converted from EUR 2023 at 1.081 USD/EUR (ECB annual average)., so the original value can be traced.
  • co2_purification_cpu_2024 is also in thousands of EUR (c0 = 16.2), so it needs ×1000 as well as the currency conversion.

I'll follow up separately on the other points. Thanks!

Comment thread src/openpytea/data/cost_correlations.csv Outdated
Comment thread src/openpytea/data/cost_correlations.csv Outdated
Comment thread src/openpytea/data/cost_correlations.csv Outdated
Comment thread src/openpytea/data/cost_correlations.csv Outdated
@marwenchaabouni

Copy link
Copy Markdown
Contributor Author

All review points addressed in commit 1f92a4b, ready for re-review. Diff is 8 lines changed (+8 -8), no other rows touched.

Unit / value fixes

  • electrolyzer_nrel_2008: b = 224490 (source is in thousand USD); remark corrected from Installed cost. to Purchased cost. (the value is the uninstalled electrolyzer capital cost).
  • biomass_cfb_chp_irena_2012: c0 = 7,395,000 (14,790 USD/kW x 500 kW); source corrected to IRENA (2012) Section 5.2, p. 32.
  • electrolyzer_pem_19009_2019: c0 = 2,132,440, f = 0.9255.
  • electrolyzer_pem_19009_2035: c0 = 1,337,870, f = 0.8621.

Currency (EUR to USD)
Converted c0 at the ECB annual-average EUR/USD rate for each row's cost_year, with the rate and source recorded in notes:

  • biogas_upgrading_sgc_2013: 2013 rate 1.3281 (1750 to 2324.18)
  • electrolyzer_matthes_2023: 2023 rate 1.0813 (1450 to 1567.89)
  • reformer_smr_matthes_2023: 2023 rate 1.0813 (1500 to 1621.95)
  • co2_purification_cpu_2024: 2018 rate 1.1810 plus x1000 for kEUR (16.2 to 19132.2)

ECB series: EXR.A.USD.EUR.SP00.A (https://data.ecb.europa.eu/data/datasets/EXR/EXR.A.USD.EUR.SP00.A).

@pbtamarona pbtamarona left a comment

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Thanks for the fixes in 1f92a4b. To get part of this merged quickly, could you open a separate PR with just the rows that are now verified:

  • electrolyzer_pem_19009_2019
  • electrolyzer_pem_19009_2035
  • biomass_cfb_chp_irena_2012
  • electrolyzer_nrel_2008

I need more time to review the remaining cost correlations, so let's keep this PR open for those. I've left inline comments on the ones I've gone through so far.

compressor_energy_2025,Compression,"Compressor, gas-turbine driven centrifugal","power, kW",,,,,,,,,1,2737,0.82,,,,,,power-sizing,2020,n.a.,"Ojo, Hegab & Pilidis (2025) Eq. 7",CE Index = 596 (rounded); precise 2020 annual average = 596.2. Source uses M&S index = 1638.2 (2018); gas compressor purchased cost (installation Eq. 8).,Purchased cost.,https://doi.org/10.3390/en18164243,
electric_motor_calado_2012,Drives,"Electric motor, Calado correlation","motor power, hp",,,,,2049,668.16,1,,,,,,,,,,offset power-law,2012,n.a.,Calado (2012) via Luyben (2018) Section 2,CE Index = 585 (rounded); precise 2012 annual average = 584.6. Costs in USD; electric motor drive cost; no cost index stated in source.,Purchased cost.,https://doi.org/10.1016/j.cep.2018.01.020,
psa_h2_purification_2023,Gas separation,"Hydrogen purification, PSA","feed flow, Nm3/h",,,,,,,,,1,293.6,1,,,,,,power-sizing,2023,Stainless steel,Shabbani et al. (2024) Section 1,"CE Index = 798 (rounded); precise 2023 annual average = 797.9. Costs in kUSD; no reference year stated by source; PSA beds of stainless steel; ~176.182 kUSD at 600 Nm3/h; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Purchased cost.,https://doi.org/10.1016/j.ijhydene.2023.11.069,
co2_purification_cpu_2024,CO2 purification,CO2 CPU compressor,"duty, MW",,,,,,,,,27.4,19132.2,0.65,,,,,,power-sizing,2018,n.a.,Sala et al. (2024) Table 6,"CE Index = 603 (rounded); precise 2018 annual average = 603.1. Converted from EUR 2018 at 1.1810 USD/EUR (ECB annual average); Cref 16.20 kEUR (x1000) at Sref 27.40 MW, IF 0.67, SF 0.65.",Purchased cost.,https://doi.org/10.1016/j.ijggc.2024.104193,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looking at Sala et al. (2024) Table 6 more closely, the units don't seem consistent. The header says k€₂₀₁₈, but read that way the compressor costs €16,200 for 27.4 MW (~€0.6/kW). The pump (21 k€ for 5 MW) and intercooler (0.3 k€ for 500 m²) are similarly implausible, while the other rows look reasonable. The paper also says these values come from Aspen In-Plant Cost Estimator, so they can't be traced to an open primary source.

Could you look for another source for this correlation, or drop the row from this PR?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

co2_purification_cpu_2024 is withdrawn and replaced by co2_purification_unit_ieaghg_2015, from IEAGHG Report 2015/05, Oxy-Combustion Turbine Power Plants.

The change is one line, in commit 333f93a

The report prices the CPU as one named unit, with its own direct materials and installed cost, in six of its design cases, on one Amec Foster Wheeler estimate at 2Q2014 prices. The six range from 59.7 to 878.4 t/h of CO2 product to storage, and one least-squares fit of ln C on ln S over them gives f = 0.633, one standard error 0.036, R2 0.988. c0 is on the report's direct materials basis, the equipment estimate, because the library treats c0 as a purchased cost and applies its own installation factors on top

I excluded the NET Power and revised CES cases because the report states their CPU omits the raw gas compression section, the supercritical CES case because its CPU cost is only reachable through column numbering, and the gasification case because the CO2 comes from syngas. The six cases, their table and page locations, and the currency conversion are in the PR body

electrolyzer_nrel_2008,Electrolysis,Electrolyzer (PEM / alkaline),"hydrogen production, kg/h",0.1,100,,,0,224490,0.6156,,,,,,,,,,offset power-law,2008,n.a.,"Saur (2008) Section 5.1, Eq. 1",CE Index = 575 (rounded); precise 2008 annual average = 575.4. Costs in USD 2008 (H2A basis).,Purchased cost.,https://doi.org/10.2172/944892,
asu_cryogenic_intechopen_2015,Gas separation,"Air separation, cryogenic","oxygen production, t/day",100,5000,,,,,,,1,184000,1,,,,,,power-sizing,2015,n.a.,"Tesch, Morosuk & Tsatsaronis (2019) Table 6","CE Index = 557 (rounded); precise 2015 annual average = 556.8. Costs in USD 2015; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Bare-module cost,https://doi.org/10.5772/intechopen.85765,
oil_water_separator_ust_2025,Water treatment,API / coalescing oil-water separator,"separator volume, gal",500,5000,,,,,,,500,3500,0.879,,,,,,power-sizing,2025,Carbon steel,UST Contractors (2026) Section: Cost to Install and Operate,"CE Index = 813 (rounded); precise 2025 annual average = 813 (provisional). Costs in USD; source labels them 2026 reference points; steel tank (fiberglass or stainless for chemical service); vendor price, order-of-magnitude, not installed.",Purchased cost.,https://www.ustcontractors.com/oil-water-separator-guide/,
gasifier_usda_2008,Gasification,Biomass gasifier,"dry biomass feed, t/day",1,5000,,,,,,,1,72569,1,,,,,,power-sizing,2008,n.a.,"Ince, Bilek & Dietenberger (2011) Table 12","CE Index = 575 (rounded); precise 2008 annual average = 575.4. Costs in USD 2008 price levels; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1). Source scale factor n=0.75 for off-reference sizes.",Installed cost.,https://research.fs.usda.gov/treesearch/39549,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The $72,569/daily ton in Ince et al. (2011) Table 12 (p. 17) is a placeholder input for the paper's worked example, not a sourced cost. The table is titled "Capital cost parameters and hypothetical data", and its footnote marks the bold values as "Hypothetical input data". The paper also scales the gasifier with economies of scale via Eq. A-3 (p. 29), not linearly.

Could you look for another source for the gasifier, or drop this row from this PR?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbtamarona agreed on both points, and thank you for the catch. The 72,569 USD per t/day is a hypothetical input in Ince et al. Table 12, and the paper scales the gasifier through Eq. A-3 rather than linearly, so the row is not supportable as written.

gasifier_usda_2008 is dropped and replaced by gasifier_gti_liu_2011. The change is one line, in commit b40d8d0, and no other row is touched.

The new row comes from Liu, Larson, Williams, Kreutz & Guo (2011), Energy & Fuels 25(1), Supporting Information Table B1, row "GTI gasifier, gas cooling, cleaning": scaling parameter as-received biomass in MW LHV, reference capacity 482.8 MW, which the table also gives as the maximum single-train size, reference cost 173.3 M$ (2007) with balance of plant and indirect costs included, exponent f = 0.5. Note (c) documents how both were obtained: the 0.5 follows from a fluidised bed's throughput scaling with cross-sectional area while reactor cost scales with diameter, and the cost is built as a ratio to the same-capacity GE coal gasifier from two Fluor IGCC studies published as EPRI reports AP-2029-4 and AP-3486, then cross-checked against DeLong's NREL estimate by a second route. Because balance of plant and indirects sit inside the figure, the row is labelled Installed cost. The upper bound is set to 482.8 MW, the source's documented maximum unit size. The source gives no lower bound.

asu_cryogenic_intechopen_2015,Gas separation,"Air separation, cryogenic","oxygen production, t/day",100,5000,,,,,,,1,184000,1,,,,,,power-sizing,2015,n.a.,"Tesch, Morosuk & Tsatsaronis (2019) Table 6","CE Index = 557 (rounded); precise 2015 annual average = 556.8. Costs in USD 2015; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Bare-module cost,https://doi.org/10.5772/intechopen.85765,
oil_water_separator_ust_2025,Water treatment,API / coalescing oil-water separator,"separator volume, gal",500,5000,,,,,,,500,3500,0.879,,,,,,power-sizing,2025,Carbon steel,UST Contractors (2026) Section: Cost to Install and Operate,"CE Index = 813 (rounded); precise 2025 annual average = 813 (provisional). Costs in USD; source labels them 2026 reference points; steel tank (fiberglass or stainless for chemical service); vendor price, order-of-magnitude, not installed.",Purchased cost.,https://www.ustcontractors.com/oil-water-separator-guide/,
gasifier_usda_2008,Gasification,Biomass gasifier,"dry biomass feed, t/day",1,5000,,,,,,,1,72569,1,,,,,,power-sizing,2008,n.a.,"Ince, Bilek & Dietenberger (2011) Table 12","CE Index = 575 (rounded); precise 2008 annual average = 575.4. Costs in USD 2008 price levels; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1). Source scale factor n=0.75 for off-reference sizes.",Installed cost.,https://research.fs.usda.gov/treesearch/39549,
biogas_upgrading_sgc_2013,Gas separation,Biogas upgrading (membrane / water scrubbing / amine),"raw biogas flow, Nm3/h",100,5000,,,,,,,1,2324.18,1,,,,,,power-sizing,2013,n.a.,"Bauer, Hulteberg, Persson & Tamm (2013) Section 3.4, Figure 31","CE Index = 567 (rounded); precise 2013 annual average = 567.3. Converted from EUR 2013 at 1.3281 USD/EUR (ECB annual average); unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1). Range 1,500-2,000 EUR per Nm3/h, mid 1,750.",Installed cost.,http://vav.griffel.net/filer/c_sgc2013-270.pdf,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Bauer et al. (2013) Figure 31 (p. 53) gives the specific investment cost separately for each technology (water scrubber, amine scrubber, PSA and membrane), and the curves differ in both shape and size range. A single generic row with a constant unit cost (f = 1) doesn't represent any of them: the source range of 1,500–2,000 €/(Nm³/h) only holds above ~800–1,000 Nm³/h, and below that the cost rises steeply (~5,500 €/(Nm³/h) at 100 Nm³/h).

Please split this into one row per technology:

  • fit c0 and f for each curve in Figure 31 (e.g. by digitising it),
  • set s_lower/s_upper to each curve's plotted range (≤ 2,000 Nm³/h),
  • name the technology in type, e.g. "Biogas upgrading, water scrubber",
  • convert EUR to USD as before, and note in notes that cost_year = 2013 is assumed, since the report doesn't give a price year.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbtamarona agreed, one generic constant-cost row does not represent Figure 31, because each technology has its own curve in shape and size range. The single biogas_upgrading_sgc_2013 row is now split into one row per technology, in commit 9b0f820. The equation, the fits and the cost basis are in section 10 of the PR description.

Two notes on the source. Figure 31 is the summary plot; the same curves are drawn separately and without overlap in Figures 5 (amine), 10 (PSA), 17 (membrane separation), 23 (water scrubber) and 28 (organic physical scrubber), so each curve was fit from its own figure rather than from the overlaid summary. And the source covers five upgrading technologies, not four: the Figure 31 caption also carries the organic physical scrubber (with RTO), so it is included as a fifth row. Happy to drop it if you would rather keep the split to four.

Each curve is a band (the min-max specific investment across the projects surveyed); it was fit as U = A * S^g at the band midpoint. Converting to OpenPyTEA's total-cost power-sizing form (c0 = U(s0) * s0, f = g + 1) at s0 = 1,000 Nm3/h, in USD 2013 at 1.3281 USD/EUR (ECB annual average):

technology key s_lower s_upper c0 (USD 2013) f
Water scrubber biogas_water_scrubber_sgc_2013 100 2,000 2,435,514 0.5148
Amine scrubber biogas_amine_scrubber_sgc_2013 550 1,850 3,148,688 0.4004
PSA biogas_psa_sgc_2013 440 1,950 2,635,171 0.5204
Membrane separation biogas_membrane_separation_sgc_2013 140 1,350 2,492,696 0.5943
Organic physical scrubber biogas_organic_scrubber_sgc_2013 190 1,970 2,718,806 0.4126

cost_year = 2013 is assumed, since the report gives no price year (it is dated 2012 and the data is current-at-publication). Each curve's band half-width is about 10-15% at mid range and up to about 25% at the low end; it is recorded in notes rather than folded into f. The fits reproduce the report's own summary: about 5,500 EUR per (Nm3/h) at 100 Nm3/h, converging on 1,500-2,000 EUR per (Nm3/h) above roughly 1,000 Nm3/h.

biomass_handling_irena_2012,Biomass handling,Feedstock preparation and handling,"biomass throughput, t/day",90,800,,,,,,,90,2619000,0.4474,,,,,,power-sizing,2010,n.a.,IRENA (2012) Figure 5.2,"CE Index = 551 (rounded); precise 2010 annual average = 550.8. Costs in USD 2010; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1). Specific capital 29,100 USD per t/day at 90 t/day, 8,700 at 800 t/day.",Purchased cost.,https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2012/RE_Technologies_Cost_Analysis-BIOMASS.pdf,
biomass_cfb_chp_irena_2012,Biomass combustion,CFB CHP,"electrical capacity, MWe",0.5,8.8,,,,,,,0.5,7395000,0.544,,,,,,power-sizing,2010,n.a.,"IRENA (2012) Section 5.2, p. 32","CE Index = 551 (rounded); precise 2010 annual average = 550.8. Costs in USD 2010; specific cost 14,790 USD/kW at 0.5 MWe, 4,000 at 8.8 MWe; unit cost per kW converted using the study's MW rating; two-point fit.",Purchased cost.,https://www.irena.org/-/media/Files/IRENA/Agency/Publication/2012/RE_Technologies_Cost_Analysis-BIOMASS.pdf,
dac_climeworks_hinwil_2024,Carbon capture,"Direct air capture, solid sorbent","CO2 captured, t/yr",900,900,,,,,,,1,3889,1,,,,,,power-sizing,2024,n.a.,Al Yafiee et al. (2024) Section 4,"CE Index = 800 (rounded); precise 2024 annual average = 800.0. Costs in USD 2024 (Climeworks Hinwil, 900 t/yr, US$3-4M); unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://doi.org/10.1016/j.cej.2024.154421,
electrolyzer_matthes_2023,Electrolysis,"Electrolyser, specific investment","electrical input, kW",,,,,,,,,1,1567.89,1,,,,,,power-sizing,2023,n.a.,Matthes & Brauer (2025) Table 1,"CE Index = 798 (rounded); precise 2023 annual average = 797.9. Converted from EUR 2023 at 1.0813 USD/EUR (ECB annual average); investment cost 1,200-1,700 EUR/kW, mid 1,450; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://www.oeko.de/en/publications/translate-to-english-wasserstoff-erzeugungskosten-englische-version/,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few issues with the two Matthes & Brauer rows (electrolyzer_matthes_2023, reformer_smr_matthes_2023):

  • kW basis: the report doesn't say whether EUR/kW refers to electrical input or H2 output (pp. 12, 17). The rows assume electrical input for the electrolyser and H2 output for SMR. Could you confirm this from the original sources (Argus 2024 / E-Bridge 2025; IEA 2020a / DOE 2023)?
  • No scaling or size range: these are generic per-kW investment figures, not size correlations, so f = 1 with blank bounds scales linearly to any size. Please add the plant size range the figures apply to.
  • Scope: the SMR value covers SMR plus CCS as a whole plant, which should be clear in type/notes.
  • Time horizon: only the short-term column of Tables 1 and 3 is used. Please say so in notes.

If the original sources can't settle the kW basis and size range, I'd suggest dropping these two rows from this PR.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbtamarona both points are settled by the sources, and one of them changes a row.

kW basis. E-Bridge prints it beside the parameter: since 1 January 2025, electrolysis is 1,970 EUR/kW el, blue hydrogen 1,600 EUR/kW H2, grey 900 EUR/kW H2. IEA (2020a), p. 3, does the same in its column headers: water electrolysis CAPEX USD/kWe, natural gas reforming with carbon capture CAPEX USD/kWH2. Electrical input for the electrolyser, hydrogen output for the reformer.

Size range. Argus models electrolysers at 20,000 and 100,000 t/yr, which is 176-327 MW and 959-1,367 MW of capacity, and SMR with CCS at 187,975 t/yr at a 90% capacity factor, which is 795 MW of hydrogen output. Both rows now carry bounds. f = 1 stays, since a per-kW figure is linear in size.

The electrolyser row stays. Its 1,200 lower bound is E-Bridge's parameter to the euro, and 1,200-1,700 EUR 2023 is 1,298-1,838 USD 2023, inside the 1,259-1,919 USD/kW that Argus publishes for OECD electrolysis. The 1,200 is the set E-Bridge used until 31 December 2024, now 1,970 EUR/kW el. The row keeps the report's number and records the change in the notes.

The SMR row is replaced, because the range cannot be reproduced from the two sources the table cites. IEA gives 1,680 USD 2017 per kW H2, which is 2,184 EUR 2023 and sits 29% above the table's 1,700. DOE states capex, size and price year: 215 MUSD for the reformer and 140 MUSD for the capture, in 2020 USD, at 100,000 Nm3/h. That is 8,994 kg/h and 299,795 kW at 33.3333 kWh/kg, so 1,184 USD/kW H2, and 1,466 EUR 2023 against the table's 1,500 midpoint.

The replacement is smr_ccs_plant_doe_2023, cost_year 2020, whole plant with capture included, bounds 300-795 MW, the lower end the DOE reference plant and the upper the SMR with CCS size Argus models. The key names the plant, because the figure covers reformer, capture and balance of plant, and the notes say not to pair it with separate capture equipment. DOE does not say whether that capex is overnight or installed, or whether the 100,000 Nm3/h is hydrogen output, which we assumed.

Method, the reconciliation and the checks against DOE's own figure are in PR section 12.

dac_climeworks_hinwil_2024,Carbon capture,"Direct air capture, solid sorbent","CO2 captured, t/yr",900,900,,,,,,,1,3889,1,,,,,,power-sizing,2024,n.a.,Al Yafiee et al. (2024) Section 4,"CE Index = 800 (rounded); precise 2024 annual average = 800.0. Costs in USD 2024 (Climeworks Hinwil, 900 t/yr, US$3-4M); unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://doi.org/10.1016/j.cej.2024.154421,
electrolyzer_matthes_2023,Electrolysis,"Electrolyser, specific investment","electrical input, kW",,,,,,,,,1,1567.89,1,,,,,,power-sizing,2023,n.a.,Matthes & Brauer (2025) Table 1,"CE Index = 798 (rounded); precise 2023 annual average = 797.9. Converted from EUR 2023 at 1.0813 USD/EUR (ECB annual average); investment cost 1,200-1,700 EUR/kW, mid 1,450; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://www.oeko.de/en/publications/translate-to-english-wasserstoff-erzeugungskosten-englische-version/,
loading_arm_technavio_2026,Loading,"Marine loading arm, hydraulic","loading arm, unit",,,,,,,,,1,150000,0,,,,,,power-sizing,2025,Carbon steel,Technavio (2026) Section: Market challenges,"CE Index = 813 (rounded); precise 2025 annual average = 813 (provisional). Costs in USD 2025; construction primarily carbon steel; single hydraulic arm USD 50,000-250,000, mid 150,000; constant cost per unit (f=0).",Purchased cost.,https://www.technavio.com/report/marine-loading-arms-market-industry-analysis,
reformer_smr_matthes_2023,Hydrogen production,Steam methane reformer with CCS,"hydrogen output, kW",,,,,,,,,1,1621.95,1,,,,,,power-sizing,2023,n.a.,Matthes & Brauer (2025) Table 3,"CE Index = 798 (rounded); precise 2023 annual average = 797.9. Converted from EUR 2023 at 1.0813 USD/EUR (ECB annual average); SMR with CCS investment 1,300-1,700 EUR/kW, mid 1,500; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://www.oeko.de/en/publications/translate-to-english-wasserstoff-erzeugungskosten-englische-version/,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

See my comment on electrolyzer_matthes_2023

internal_coils_vaporizers_turton_2001,Vaporizers,Internal coils/jackets,"volume, m^3",1,100,,,,,,,,,,4,0.4321,0.17,,,log-log quadratic,2001,Carbon steel,Turton et al. (2018) Table A.1,,"Purchased cost, ambient pressure",https://richardturton.faculty.wvu.edu/publications/analysis-synthesis-and-design-of-chemical-processes-5th-edition,
jacketed_vessels_vaporizers_turton_2001,Vaporizers,Jacketed vessels,"volume, m^3",1,100,,,,,,,,,,3.8751,0.3328,0.1901,,,log-log quadratic,2001,Carbon steel,Turton et al. (2018) Table A.1,,"Purchased cost, ambient pressure",https://richardturton.faculty.wvu.edu/publications/analysis-synthesis-and-design-of-chemical-processes-5th-edition,
electrolyzer_nrel_2008,Electrolysis,Electrolyzer (PEM / alkaline),"hydrogen production, kg/h",0.1,100,,,0,224490,0.6156,,,,,,,,,,offset power-law,2008,n.a.,"Saur (2008) Section 5.1, Eq. 1",CE Index = 575 (rounded); precise 2008 annual average = 575.4. Costs in USD 2008 (H2A basis).,Purchased cost.,https://doi.org/10.2172/944892,
asu_cryogenic_intechopen_2015,Gas separation,"Air separation, cryogenic","oxygen production, t/day",100,5000,,,,,,,1,184000,1,,,,,,power-sizing,2015,n.a.,"Tesch, Morosuk & Tsatsaronis (2019) Table 6","CE Index = 557 (rounded); precise 2015 annual average = 556.8. Costs in USD 2015; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Bare-module cost,https://doi.org/10.5772/intechopen.85765,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

A few issues with this row from Tesch, Morosuk & Tsatsaronis (2019):

  • Basis: the 184,000 $/(t/d) in §6.3 is a specific investment derived from the plant's capital investment (Table 6), not a bare-module cost, so the Remarks label is wrong.
  • Single design point: both cases are one plant size (260 t/d gaseous O2), so f = 1 and the 100–5,000 t/d bounds aren't supported by the source.

Using the component bare-module costs from Table 5 wouldn't add much either: they're built from classical chemical engineering textbook correlations, which OpenPyTEA already covers for the individual components.

A more useful addition would be a correlation for the specific investment cost vs. oxygen production shown in Figure 11. Could you fit c0 and f from that figure (e.g. by digitising it) and set the bounds to its plotted range, as a whole-plant ASU correlation?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbtamarona refit from Figure 11. The fit uses the chapter's own two squares at 260 t/d (0.184 and 0.181) and three literature plants at 2,000-3,000 t/d (0.024 to 0.044). The squares are one plant size, so they set the level of the curve and the slope comes from the larger plants. We excluded the three literature points at 150-190 t/d because they imply 40-95 M$ of total capital where the chapter's estimate at 260 t/d is 47 M$, and the point at 8,979 t/d because it implies 21.5 M$, below every plant in the 2,000-3,000 t/d range. All four are press releases for plants of different scope.

On units: the y axis is TCI per tonne of gaseous oxygen per day. The squares read 0.184 and 0.181 on the axis, the values quoted in section 6.3. Divided by 260 t/d, the Table 6 TCI values give 0.180 and 0.183, so the quoted figures sit about 2% above the ratios. The fit uses the quoted ones.

Fit: U = 12.68 S^-0.763, standard error of the exponent 0.085, R2 0.964. In library form at s0 = 1,000 t/d: c0 = 65,118,664 USD 2015, f = 0.237, bounds 260-2,996 t/d, Remarks Installed cost since the basis is TCI.

The row returns 47.3 M$ at 260 t/d against 46.9 and 47.7 in Table 6, 65.1 M$ at 1,000, 76.7 at 2,000, 84.4 at 3,000. Above 2,996 t/d the library uses parallel units, which gives about 331 M$ at 11,000 t/d against the 437 M$ total plant cost for 10,940 t/d in IEAGHG 2015/05.

The point table and the digitisation method are in section 11 of the PR description. Change in 851aa7d.

Comment thread src/openpytea/data/cost_correlations.csv Outdated
electrolyzer_matthes_2023,Electrolysis,"Electrolyser, specific investment","electrical input, kW",,,,,,,,,1,1567.89,1,,,,,,power-sizing,2023,n.a.,Matthes & Brauer (2025) Table 1,"CE Index = 798 (rounded); precise 2023 annual average = 797.9. Converted from EUR 2023 at 1.0813 USD/EUR (ECB annual average); investment cost 1,200-1,700 EUR/kW, mid 1,450; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://www.oeko.de/en/publications/translate-to-english-wasserstoff-erzeugungskosten-englische-version/,
loading_arm_technavio_2026,Loading,"Marine loading arm, hydraulic","loading arm, unit",,,,,,,,,1,150000,0,,,,,,power-sizing,2025,Carbon steel,Technavio (2026) Section: Market challenges,"CE Index = 813 (rounded); precise 2025 annual average = 813 (provisional). Costs in USD 2025; construction primarily carbon steel; single hydraulic arm USD 50,000-250,000, mid 150,000; constant cost per unit (f=0).",Purchased cost.,https://www.technavio.com/report/marine-loading-arms-market-industry-analysis,
reformer_smr_matthes_2023,Hydrogen production,Steam methane reformer with CCS,"hydrogen output, kW",,,,,,,,,1,1621.95,1,,,,,,power-sizing,2023,n.a.,Matthes & Brauer (2025) Table 3,"CE Index = 798 (rounded); precise 2023 annual average = 797.9. Converted from EUR 2023 at 1.0813 USD/EUR (ECB annual average); SMR with CCS investment 1,300-1,700 EUR/kW, mid 1,500; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://www.oeko.de/en/publications/translate-to-english-wasserstoff-erzeugungskosten-englische-version/,
hydrogen_storage_nrel_2007,Storage,"Hydrogen storage tank, high pressure","hydrogen stored, kg",,,,,,,,,1,1450,1,,,,,,power-sizing,2007,Stainless steel,"Parks, Boyd, Cornish & Remick (2014) Table A-1","CE Index = 525 (rounded); precise 2007 annual average = 525.4. Costs in USD 2007 (NREL/BK-6A10-58564); high-pressure reference vessel (875 bar, Type 1) is 316L stainless steel; tankage 1,450 USD per kg H2; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Purchased cost.,https://www.osti.gov/biblio/1130621,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The 1,450 USD/kg value matches Table A-1 (PDF p. 54, "High-Pressure (860-bar) Purchased Capital Cost"), and the purchased basis and 2007 USD are right. A few points:

  • Material: Type 1 steel matches the H2A assumption, but the report never mentions 316L, so please remove that claim. The table also gives 860 bar, not 875.

  • The report questions this value: the panel says the H2A Type 1 vessels "are not based on known manufacturing methods available to the pressure vessel industry" (PDF p. 31).

  • More cost data is available: the report gives costs by vessel type and pressure level, so a single row loses a lot. Could you split it, e.g.:

    • low pressure (160 bar): 1,000 USD/kg (Table A-1)
    • high pressure, Type 1 steel: 1,450 USD/kg (Table A-1, H2A assumption)
    • high pressure, Type 2: 1,100 USD/kg and Type 4: 940 USD/kg (§6.2.2, PDF p. 39, panel's market prices, 2007 USD)

    Please name the pressure and vessel type in type, and note in notes which values are H2A model assumptions and which are the panel's market prices. I'd leave out the §6.2.1 low-pressure figures (635 USD/kg, and 450 USD/kg at 250 bar), since those are the panel's expectations rather than observed prices.

  • Bounds: the report gives no explicit range, but all values are for fueling-station storage. The worked examples are ~140–200 kg for the high-pressure cascade and ~370–450 kg for low-pressure storage. Please set bounds around these sizes, or at least note in notes that the values are for station-scale storage and shouldn't be extrapolated to large-scale storage.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbtamarona all four points worked in. One line replaced by four, in commit 315e83b.

key type s_lower-s_upper (kg) c0 (USD/kg) basis
hydrogen_storage_low_pressure_nrel_2007 low pressure (160 bar) 368-1,600 1,000 H2A/HDSAM assumption, Table A-1
hydrogen_storage_type1_nrel_2007 high pressure (860 bar), Type 1 steel 130-236 1,450 H2A/HDSAM assumption, Table A-1
hydrogen_storage_type2_nrel_2007 high pressure (875 bar), Type 2 130-236 1,100 panel market price, Section 6.2.2
hydrogen_storage_type4_nrel_2007 high pressure (875 bar), Type 4 130-236 940 panel market price, Section 6.2.2

The 316L claim is gone and the vessel is now labelled ASME Type 1 steel, and the pressure in that row is corrected to 860 bar to match Table A-1. notes marks the two Table A-1 values as H2A/HDSAM model assumptions and the two Type 2/Type 4 values as the panel's observed market prices, and records your point on the Type 1 vessel (Section 5.1): the value is the model's assumption, and the two market rows sit next to it as the observed alternatives. Each row also carries the appendix's corroborating figures (1,455 and 1,448 USD/kg for the high-pressure assumption; 1,218/1,096 USD/kg vendor Type 2; 911 USD/kg Vendor D Type 4). The bounds are the report's documented station sizes (cascade 130-236 kg across Tables A-6 and A-7; low pressure 368-1,600 kg, Table 1 and Section 3.3), not your round numbers, so they are traceable to the source; notes says the values are station-scale and should not be extrapolated. The §6.2.1 low-pressure figures (635 USD/kg and 450 USD/kg at 250 bar) are left out, as you suggested, since they are the panel's expectations rather than observed prices. The row also moves to the existing Pressure vessels category.

co2_purification_cpu_2024,CO2 purification,CO2 CPU compressor,"duty, MW",,,,,,,,,27.4,19132.2,0.65,,,,,,power-sizing,2018,n.a.,Sala et al. (2024) Table 6,"CE Index = 603 (rounded); precise 2018 annual average = 603.1. Converted from EUR 2018 at 1.1810 USD/EUR (ECB annual average); Cref 16.20 kEUR (x1000) at Sref 27.40 MW, IF 0.67, SF 0.65.",Purchased cost.,https://doi.org/10.1016/j.ijggc.2024.104193,
syngas_cleanup_dea_2006,Syngas cleanup,"Acid gas removal, DEA","gas flow, MMscf/day",,,,,,,,,1,213000,1,,,,,,power-sizing,2006,n.a.,Hobbs (2006) Slide 20,CE Index = 500 (rounded); precise 2006 annual average = 499.6. Costs in USD 2006; conventional DEA AGR $4.5-5M capital for 22.3 MMcf/d.,Installed cost.,https://www.epa.gov/gasstar,
doc_alkalinity_2024,Carbon capture,"Direct ocean capture, alkalinity","CO2 captured, t (lifetime)",,,,,,,,,1,152.43,1,,,,,,power-sizing,2024,Carbon steel,Gregorich et al. (2026) Table 10,"CE Index = 800 (rounded); precise 2024 annual average = 800.0. Costs in USD; mixing tanks of galvanized steel; total capital $108.5M, CapEx 152.43 USD per t CO2; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://doi.org/10.1016/j.ccst.2026.100629,
electrolyzer_pem_19009_2019,Electrolysis,"PEM electrolyzer, current (2019)","hydrogen production, kg/day",1500,50000,,,,,,,1500,2132440,0.9255,,,,,,power-sizing,2016,n.a.,"Peterson, Vickers & DeSantis (2019) Table 2","CE Index = 542 (rounded); precise 2016 annual average = 541.7. Costs in USD 2016; total uninstalled capital; 599 USD/kW at 1,500 and 460 at 50,000 kg H2/day (current); unit cost per kW converted using the study's MW rating (3.56 MW at 1,500 kg/day, 119 MW at 50,000 kg/day); two-point fit.",Purchased cost.,https://www.energy.gov/eere/fuelcells/hydrogen-production-cost-pem-electrolysis,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

• The link in doi / link (energy.gov/eere/fuelcells/...) returns 404. Please use the record PDF instead: https://www.hydrogen.energy.gov/docs/hydrogenprogramlibraries/pdfs/19009_h2_production_cost_pem_electrolysis_2019.pdf
• Please rename the keys after the source (DOE) and cost year (2016), in line with the rest of the file: electrolyzer_pem_current_doe_2016 and electrolyzer_pem_future_doe_2016.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@pbtamarona both points done, in commit 738efbf:

These two rows also sit in #11, so the same change is applied there in 8916bcb, keeping the two PRs identical.

syngas_cleanup_dea_2006,Syngas cleanup,"Acid gas removal, DEA","gas flow, MMscf/day",,,,,,,,,1,213000,1,,,,,,power-sizing,2006,n.a.,Hobbs (2006) Slide 20,CE Index = 500 (rounded); precise 2006 annual average = 499.6. Costs in USD 2006; conventional DEA AGR $4.5-5M capital for 22.3 MMcf/d.,Installed cost.,https://www.epa.gov/gasstar,
doc_alkalinity_2024,Carbon capture,"Direct ocean capture, alkalinity","CO2 captured, t (lifetime)",,,,,,,,,1,152.43,1,,,,,,power-sizing,2024,Carbon steel,Gregorich et al. (2026) Table 10,"CE Index = 800 (rounded); precise 2024 annual average = 800.0. Costs in USD; mixing tanks of galvanized steel; total capital $108.5M, CapEx 152.43 USD per t CO2; unit-cost source converted to total cost (c0 -> c0*s0, f -> f+1).",Installed cost.,https://doi.org/10.1016/j.ccst.2026.100629,
electrolyzer_pem_19009_2019,Electrolysis,"PEM electrolyzer, current (2019)","hydrogen production, kg/day",1500,50000,,,,,,,1500,2132440,0.9255,,,,,,power-sizing,2016,n.a.,"Peterson, Vickers & DeSantis (2019) Table 2","CE Index = 542 (rounded); precise 2016 annual average = 541.7. Costs in USD 2016; total uninstalled capital; 599 USD/kW at 1,500 and 460 at 50,000 kg H2/day (current); unit cost per kW converted using the study's MW rating (3.56 MW at 1,500 kg/day, 119 MW at 50,000 kg/day); two-point fit.",Purchased cost.,https://www.energy.gov/eere/fuelcells/hydrogen-production-cost-pem-electrolysis,
electrolyzer_pem_19009_2035,Electrolysis,"PEM electrolyzer, future (2035)","hydrogen production, kg/day",1500,50000,,,,,,,1500,1337870,0.8621,,,,,,power-sizing,2016,n.a.,"Peterson, Vickers & DeSantis (2019) Table 2","CE Index = 542 (rounded); precise 2016 annual average = 541.7. Costs in USD 2016; total uninstalled capital; 379 USD/kW at 1,500 and 233 at 50,000 kg H2/day (future 2035); unit cost per kW converted using the study's MW rating (3.53 MW at 1,500 kg/day, 118 MW at 50,000 kg/day); two-point fit.",Purchased cost.,https://www.energy.gov/eere/fuelcells/hydrogen-production-cost-pem-electrolysis,

Copy link
Copy Markdown
Owner

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

see comment on electrolyzer_pem_19009_2019

marwenchaabouni added a commit to marwenchaabouni/OpenPyTEA that referenced this pull request Oct 27, 2026
@marwenchaabouni
marwenchaabouni force-pushed the feat/equipment-cost-correlations branch from 95fb31a to 333f93a Compare October 27, 2026 15:35
… scrubber, PSA, membrane separation, organic physical scrubber), each fit from its own curve in Bauer et al. (2013). Method, equation and digitised fits in PR pbtamarona#9 section 10.
The Ince et al. (2011) value is a hypothetical input (Table 12) and the
paper scales the gasifier through Eq. A-3, not linearly.

Replacement: Liu, Larson, Williams, Kreutz & Guo (2011), Energy & Fuels
25(1), Supporting Information Table B1, row "GTI gasifier, gas cooling,
cleaning": as-received biomass in MW LHV, S0 = 482.8, c0 = 173.3 M$2007,
f = 0.5, installed basis.

One line removed, one added. No other row touched.
- electrolyzer_pem_19009_2019 -> electrolyzer_pem_current_doe_2016
- electrolyzer_pem_19009_2035 -> electrolyzer_pem_future_doe_2016
- doi / link: energy.gov page returns 404, now the record PDF (DOE 19009)

Two lines changed, one per row. No other field or row touched.
@pbtamarona

Copy link
Copy Markdown
Owner

Thanks for the updates. Two general points before I go through the rows themselves:

1. Rebase on main

#11 is now merged, so electrolyzer_pem_current_doe_2016, electrolyzer_pem_future_doe_2016, biomass_cfb_chp_irena_2012 and electrolyzer_nrel_2008 are already on main. This PR still contains them and now conflicts with main. Could you rebase onto main and drop those four rows from this PR?

2. Use existing categories

Several rows introduce new category names that overlap with categories already in the file. Equipment is looked up by category and type, so please reuse the existing ones where they fit:

Category in this PR Existing category on main
Compression Compressors, fans, & blowers
Drives Motors & generators
Carbon capture CO2 capture
Gas separation (PSA, membrane rows) Adsorption & membrane separation
Storage Tanks or Pressure vessels
Biomass handling Solids-handling systems

For rows that don't fit any existing category (e.g. gasifier, ASU, water/amine scrubbers), a new category is fine. Just keep the naming consistent with the style of the existing ones.

marwenchaabouni and others added 3 commits October 28, 2026 11:24
…feedback)

- Remove the unsourced 316L claim; the H2A vessel is ASME Type 1 steel (Section 5.1)
- Correct the H2A high-pressure basis to 860 bar (Table A-1), not 875
- Split into four rows: low pressure (160 bar), high pressure Type 1 (860 bar),
  Type 2 and Type 4 (875 bar), the last two from the panel's market prices (Section 6.2.2)
- Record that the report questions the Type 1 value (Section 5.1)
- Bounds set to the report's documented station sizes (130-236 kg cascade, 368-1600 kg low pressure)

One line replaced by four; no other row touched.
…ng equipment categories

- ASU: whole-plant correlation, c0 = 65,118,664 USD 2015, f = 0.237 over 260-2,996 t/d, fitted to the five consistent points of Figure 11 (Tesch et al. 2019). Method, exclusions and fits in PR pbtamarona#9 section 11.

- Categories: compressors, motors, CO2 capture, adsorption and membrane separation, solids handling now use the names already in the file (review comment 6464708936).
@marwenchaabouni marwenchaabouni changed the title Add 23 equipment cost correlations (H2, CCUS, biomass, separations) Add 26 equipment cost correlations (H2, CCUS, biomass, separations) Oct 28, 2026
@marwenchaabouni

Copy link
Copy Markdown
Contributor Author

@pbtamarona both done.

  1. Rebased onto main and the four rows now upstream are dropped (electrolyzer_pem_current_doe_2016, electrolyzer_pem_future_doe_2016, biomass_cfb_chp_irena_2012, electrolyzer_nrel_2008). The diff against main is now 26 rows, with no conflicts.

  2. Categories reused where they fit: compressors, motors, CO2 capture, adsorption and membrane separation, and solids handling. The hydrogen storage rows sit under Pressure vessels rather than Tanks, since they are the 850 bar vessels. Rows that fit no existing category keep a new one: gasifier, ASU, the biogas scrubbers, water treatment, fuel cell, hydrogen production, loading, syngas cleanup.

The ASU row was also refit to Figure 11 in the same commit, see the reply in that thread.

…sis (review feedback)

- smr_ccs_plant_doe_2023 replaces reformer_smr_matthes_2023: 1,184 USD 2020/kW H2 from DOE Figure 12 footnotes (215 MUSD reformer + 140 MUSD capture at 100,000 Nm3/h), bounds 300,000 to 795,000 kW, whole plant with capture. The Matthes range could not be reproduced from the sources it cites.
- electrolyzer_matthes_2023: bounds 176,000 to 1,367,000 kW from the plant sizes Argus models; notes state the kW_el basis, the short-term column and the retired E-Bridge parameter.
- Method, checks and the reconciliation are in PR pbtamarona#9 section 12.
Slide 20 of Hobbs (2006) is a single capital estimate for one natural gas
plant (2003 project), so there is no size range to fit, the basis is
natural gas and not syngas cleanup, and the cost year does not fit. No
size-based amine AGR correlation with two or more syngas-basis points was
found, so the row is dropped rather than replaced.

One line removed, none added. No other row touched.
@marwenchaabouni marwenchaabouni changed the title Add 26 equipment cost correlations (H2, CCUS, biomass, separations) Add 25 equipment cost correlations (H2, CCUS, biomass, separations) Oct 28, 2026

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants