OpenPyTEA 3.2.0__tar.gz → 3.2.1__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (29) hide show
  1. {openpytea-3.2.0/src/OpenPyTEA.egg-info → openpytea-3.2.1}/PKG-INFO +5 -1
  2. {openpytea-3.2.0 → openpytea-3.2.1}/pyproject.toml +7 -1
  3. {openpytea-3.2.0 → openpytea-3.2.1/src/OpenPyTEA.egg-info}/PKG-INFO +5 -1
  4. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/analysis.py +132 -49
  5. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/data/cost_correlations.csv +27 -27
  6. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/equipment.py +29 -8
  7. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/helpers.py +125 -76
  8. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/plant.py +216 -78
  9. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/plotting.py +76 -28
  10. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_analysis.py +138 -8
  11. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_equipment.py +10 -0
  12. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_plant.py +65 -0
  13. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_plotting.py +105 -2
  14. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_run_tea.py +1 -0
  15. {openpytea-3.2.0 → openpytea-3.2.1}/LICENSE +0 -0
  16. {openpytea-3.2.0 → openpytea-3.2.1}/README.md +0 -0
  17. {openpytea-3.2.0 → openpytea-3.2.1}/setup.cfg +0 -0
  18. {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/SOURCES.txt +0 -0
  19. {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/dependency_links.txt +0 -0
  20. {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/entry_points.txt +0 -0
  21. {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/requires.txt +0 -0
  22. {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/top_level.txt +0 -0
  23. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/__init__.py +0 -0
  24. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/cli.py +0 -0
  25. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/data/cepci_values.csv +0 -0
  26. {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/io.py +0 -0
  27. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_cli.py +0 -0
  28. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_composite_equipment.py +0 -0
  29. {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_smoke.py +0 -0
@@ -1,9 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenPyTEA
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: OpenPyTEA: An open-source Python toolkit for techno-economic assessment of process plants with economic sensitivity and uncertainty evaluation
5
5
  Maintainer-email: "Panji B. Tamarona" <P.B.Tamarona@tudelft.nl>
6
6
  License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/pbtamarona/OpenPyTEA
8
+ Project-URL: Documentation, https://openpytea.readthedocs.io
9
+ Project-URL: Changelog, https://github.com/pbtamarona/OpenPyTEA/releases
10
+ Project-URL: Issues, https://github.com/pbtamarona/OpenPyTEA/issues
7
11
  Keywords: chemical-engineering,process-design,power-plant,techno-economic-analysis,process-plant
8
12
  Requires-Python: >=3.10
9
13
  Description-Content-Type: text/markdown
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "OpenPyTEA"
3
- version = "3.2.0"
3
+ version = "3.2.1"
4
4
  description = "OpenPyTEA: An open-source Python toolkit for techno-economic assessment of process plants with economic sensitivity and uncertainty evaluation"
5
5
  readme = "README.md"
6
6
  license = "MIT"
@@ -28,6 +28,12 @@ maintainers = [
28
28
  { name = "Panji B. Tamarona", email = "P.B.Tamarona@tudelft.nl" }
29
29
  ]
30
30
 
31
+ [project.urls]
32
+ Homepage = "https://github.com/pbtamarona/OpenPyTEA"
33
+ Documentation = "https://openpytea.readthedocs.io"
34
+ Changelog = "https://github.com/pbtamarona/OpenPyTEA/releases"
35
+ Issues = "https://github.com/pbtamarona/OpenPyTEA/issues"
36
+
31
37
  [project.scripts]
32
38
  openpytea = "openpytea.cli:main"
33
39
 
@@ -1,9 +1,13 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: OpenPyTEA
3
- Version: 3.2.0
3
+ Version: 3.2.1
4
4
  Summary: OpenPyTEA: An open-source Python toolkit for techno-economic assessment of process plants with economic sensitivity and uncertainty evaluation
5
5
  Maintainer-email: "Panji B. Tamarona" <P.B.Tamarona@tudelft.nl>
6
6
  License-Expression: MIT
7
+ Project-URL: Homepage, https://github.com/pbtamarona/OpenPyTEA
8
+ Project-URL: Documentation, https://openpytea.readthedocs.io
9
+ Project-URL: Changelog, https://github.com/pbtamarona/OpenPyTEA/releases
10
+ Project-URL: Issues, https://github.com/pbtamarona/OpenPyTEA/issues
7
11
  Keywords: chemical-engineering,process-design,power-plant,techno-economic-analysis,process-plant
8
12
  Requires-Python: >=3.10
9
13
  Description-Content-Type: text/markdown
@@ -1,9 +1,13 @@
1
+ import warnings
1
2
  from copy import deepcopy
2
3
  from tqdm.auto import tqdm
3
4
  from scipy import stats
4
5
  import numpy as np
5
6
 
7
+ from openpytea.plant import DEFAULT_OPERATOR_HOURLY_RATE
6
8
  from openpytea.helpers import (_make_label,
9
+ _legacy_label,
10
+ _tex_escape,
7
11
  _get_original_value,
8
12
  _update_and_evaluate,
9
13
  _default_metric_label,
@@ -199,6 +203,7 @@ def variable_opex_data(plants, pct=False):
199
203
 
200
204
  components_list = []
201
205
  xlabels = []
206
+ display_labels = {}
202
207
 
203
208
  for plant in plants:
204
209
  components = {}
@@ -212,14 +217,18 @@ def variable_opex_data(plants, pct=False):
212
217
  else:
213
218
  continue
214
219
 
215
- label = _make_label(name)
216
- components[label] = float(val)
220
+ # TODO(3.3.0): key by the name as typed and drop
221
+ # display_labels (see monte_carlo). 3.2.0 keys until then.
222
+ key = _legacy_label(name)
223
+ components[key] = float(val)
224
+ display_labels[key] = _make_label(name)
217
225
 
218
226
  components_list.append(components)
219
227
  xlabels.append(plant.name)
220
228
 
221
229
  return _build_bar_data(components_list, xlabels,
222
- "Annual variable OPEX", currency, pct)
230
+ "Annual variable OPEX", currency, pct,
231
+ display_labels=display_labels)
223
232
 
224
233
 
225
234
  def fixed_opex_data(plants, pct=False):
@@ -487,6 +496,20 @@ def _sensitivity_param_keys(plant, metric):
487
496
  return price_keys, quantity_keys
488
497
 
489
498
 
499
+ def _sensitivity_x_value(plant, parameter, value):
500
+ """
501
+ A sensitivity point's parameter value in its own units: the resulting
502
+ fixed capital / fixed OPEX for the fc / fp multipliers (computed, so
503
+ fixed_capital_components overrides are honoured), the value as set
504
+ for everything else.
505
+ """
506
+ if parameter == "fixed_capital":
507
+ return float(deepcopy(plant).calculate_fixed_capital(fc=value))
508
+ if parameter == "fixed_opex":
509
+ return float(deepcopy(plant).calculate_fixed_opex(fp=value))
510
+ return float(value)
511
+
512
+
490
513
  def sensitivity_data(plants,
491
514
  parameter,
492
515
  plus_minus_value,
@@ -547,12 +570,20 @@ def sensitivity_data(plants,
547
570
  Plant name or identifier
548
571
  - "x" : ndarray
549
572
  Percentage changes along the variation range
573
+ - "x_value" : ndarray or None
574
+ The parameter's value at each point, in its own units
575
+ (for "fixed_capital" / "fixed_opex": the resulting fixed
576
+ capital / annual fixed OPEX); None if the plant lacks the
577
+ parameter
550
578
  - "y" : ndarray or list
551
579
  Metric values corresponding to each point
552
580
  - "baseline" : float
553
581
  Metric value at the baseline (0% variation)
554
582
  - "xlabel" : str
555
583
  Label for the x-axis (parameter name with % unit)
584
+ - "xlabel_value" : str
585
+ Label for the x-axis in the parameter's own units, used by
586
+ ``plot_sensitivity(..., x_axis="value")``
556
587
  - "ylabel" : str
557
588
  Label for the y-axis (metric name and unit)
558
589
  - "parameter" : str
@@ -673,17 +704,37 @@ def sensitivity_data(plants,
673
704
 
674
705
  # --- X label ---
675
706
  label_clean = _make_label(parameter.split(".")[-1])
707
+ pm_unit = rf" / [$\pm$ {_tex_escape('%')}]"
676
708
  if parameter in top_level_keys:
677
- x_label = label_clean + r" / [$\pm$ \%]"
709
+ x_label = label_clean + pm_unit
678
710
  elif parameter in quantity_keys_all:
679
711
  # "variable_opex_inputs.steam.consumption" ->
680
712
  # "Steam consumption / [+- %]"
681
713
  item, field = parameter.split(".")[1:]
682
714
  x_label = (
683
- f"{_make_label(item)} {field}" + r" / [$\pm$ \%]"
715
+ f"{_make_label(item)} {field}" + pm_unit
716
+ )
717
+ else:
718
+ x_label = label_clean + " price" + pm_unit
719
+
720
+ # --- X label in the parameter's own units (x_axis="value") ---
721
+ currency = plants[0].currency if plants else _tex_escape("$")
722
+ if parameter in top_level_keys:
723
+ value_unit = {
724
+ "fixed_capital": currency,
725
+ "fixed_opex": rf"{currency}$\cdot$yr$^{{-1}}$",
726
+ "project_lifetime": "years",
727
+ "operator_hourly_rate": rf"{currency}$\cdot$h$^{{-1}}$",
728
+ }.get(parameter, "-") # fractions as stored
729
+ x_label_value = f"{label_clean} / [{value_unit}]"
730
+ elif parameter in quantity_keys_all:
731
+ x_label_value = (
732
+ f"{_make_label(item)} {field}" + r" / [unit$\cdot$day$^{-1}$]"
684
733
  )
685
734
  else:
686
- x_label = label_clean + r" price / [$\pm$ \%]"
735
+ x_label_value = (
736
+ f"{label_clean} price / [{currency}" + r"$\cdot$unit$^{-1}$]"
737
+ )
687
738
 
688
739
  # --- Core computation ---
689
740
  results = []
@@ -704,6 +755,7 @@ def sensitivity_data(plants,
704
755
  metric_values = np.full_like(
705
756
  pct_axis, fill_value=base_value, dtype=float
706
757
  )
758
+ x_values = None
707
759
  else:
708
760
  # fixed_capital/fixed_opex perturb the plant's actual
709
761
  # configured multiplier, not an assumed 1.0
@@ -720,11 +772,16 @@ def sensitivity_data(plants,
720
772
  )
721
773
  for v in param_values
722
774
  ]
775
+ x_values = np.array([
776
+ _sensitivity_x_value(plant, parameter, v)
777
+ for v in param_values
778
+ ])
723
779
 
724
780
  results.append(
725
781
  {
726
782
  "plant": getattr(plant, "name", f"Plant {i+1}"),
727
783
  "x": pct_axis,
784
+ "x_value": x_values,
728
785
  "y": metric_values,
729
786
  "baseline": base_value,
730
787
  }
@@ -733,6 +790,7 @@ def sensitivity_data(plants,
733
790
  return {
734
791
  "curves": results,
735
792
  "xlabel": x_label,
793
+ "xlabel_value": x_label_value,
736
794
  "ylabel": label,
737
795
  "parameter": parameter,
738
796
  "metric": metric,
@@ -744,7 +802,8 @@ def tornado_data(plant,
744
802
  metric="LCOP",
745
803
  label=None,
746
804
  additional_capex: bool = False,
747
- include_process_params: bool = False):
805
+ category: str | None = None,
806
+ include_process_params: bool | None = None):
748
807
  """
749
808
  Generate tornado plot data for sensitivity analysis (no plotting).
750
809
  This function performs a sensitivity analysis on a plant model by varying
@@ -768,19 +827,23 @@ def tornado_data(plant,
768
827
  additional_capex : bool, optional
769
828
  Whether to include additional capital expenditure in calculations.
770
829
  Default is False.
771
- include_process_params : bool, optional
772
- Whether to also rank the plant's *process* parameters -- every
773
- ``variable_opex_inputs`` item's consumption and every
774
- ``plant_products`` entry's production -- alongside the prices and
775
- economic scalars. Default is False, which keeps the factor list to
776
- prices and economic scalars.
830
+ category : {"economic", "process", "both"}, optional
831
+ Which parameters to rank. ``"economic"`` (default): prices and
832
+ economic scalars (fixed capital/OPEX, project lifetime, interest
833
+ rate, operator hourly rate). ``"process"``: the plant's process
834
+ quantities -- every ``variable_opex_inputs`` item's consumption and
835
+ every ``plant_products`` entry's production. ``"both"``: all of
836
+ them.
777
837
 
778
838
  This is independent of the dependency graph: process quantities are
779
839
  ordinary economic drivers (a plant's production rate moves LCOP
780
840
  whether or not anything is tied to it), so configuring a dependency
781
- does not switch them on, and switching them on does not require
782
- one. A quantity that is *set by* a dependency is excluded even when
783
- this is True -- see Notes.
841
+ does not switch them on, and ranking them does not require one. A
842
+ parameter that is *set by* a dependency is excluded in every
843
+ category -- see Notes.
844
+ include_process_params : bool, optional
845
+ Deprecated: use ``category``. ``True`` is ``category="both"``,
846
+ ``False`` is ``category="economic"``.
784
847
  dict
785
848
  Dictionary containing tornado plot data with keys:
786
849
  - factors : list[str]
@@ -814,11 +877,10 @@ def tornado_data(plant,
814
877
  - A parameter that is itself set by a dependency is never a factor --
815
878
  it has no value of its own to vary. This drops it from the top-level
816
879
  keys (e.g. ``"fixed_capital"`` when ``fixed_capital_factor`` is a
817
- dependent) and from whatever ``include_process_params`` would
818
- otherwise add.
880
+ dependent) and from the process quantities.
819
881
 
820
882
  Dependencies do not, however, change *which kinds* of parameter are
821
- ranked: that is ``include_process_params`` alone. See
883
+ ranked: that is ``category`` alone. See
822
884
  :func:`~openpytea.helpers._collect_sensitivity_keys`.
823
885
  Examples
824
886
  --------
@@ -827,13 +889,37 @@ def tornado_data(plant,
827
889
  >>> lows = tornado_data["lows"]
828
890
  >>> highs = tornado_data["highs"]
829
891
  """
892
+ if include_process_params is not None:
893
+ if category is not None:
894
+ raise ValueError(
895
+ "Pass either category or the deprecated "
896
+ "include_process_params, not both."
897
+ )
898
+ warnings.warn(
899
+ "include_process_params is deprecated; use "
900
+ "category='both' (for True) or category='economic' (for False).",
901
+ FutureWarning,
902
+ stacklevel=2,
903
+ )
904
+ category = "both" if include_process_params else "economic"
905
+ if category is None:
906
+ category = "economic"
907
+ if category not in ("economic", "process", "both"):
908
+ raise ValueError(
909
+ f"Invalid category {category!r}; must be 'economic', "
910
+ "'process', or 'both'."
911
+ )
912
+
830
913
  metric = metric.upper()
831
914
  if label is None:
832
915
  label = _default_metric_label(plant.currency, metric)
833
916
 
834
- keys = _collect_sensitivity_keys(
835
- plant, metric, include_process_params=include_process_params
836
- )
917
+ keys = _collect_sensitivity_keys(plant, metric, category=category)
918
+ if not keys:
919
+ raise ValueError(
920
+ f"Plant '{plant.name}' has no {category} parameters to rank "
921
+ "(parameters set by a dependency cannot be varied)."
922
+ )
837
923
 
838
924
  base_value = _evaluate_baseline_metric(plant, metric, additional_capex)
839
925
 
@@ -1655,7 +1741,7 @@ def monte_carlo(plant,
1655
1741
  ("fixed_opex_factor", _resolve_dist_params(
1656
1742
  cfg("fixed_opex_factor"), **factor_window), False),
1657
1743
  ("operator_hourly_rate", _resolve_item_dist_params(
1658
- op_cfg, "rate", 38.11, 10), False),
1744
+ op_cfg, "rate", DEFAULT_OPERATOR_HOURLY_RATE, 10), False),
1659
1745
  ("project_lifetime", _window_dist_params(
1660
1746
  cfg("project_lifetime"), plant.project_lifetime, 5, floor=5),
1661
1747
  False),
@@ -1767,24 +1853,20 @@ def monte_carlo(plant,
1767
1853
  )
1768
1854
 
1769
1855
  # ---- Economic calculations ----
1856
+ # The fc/fp calls set the sampled factors; one cash-flow build
1857
+ # then serves every metric below
1770
1858
  plant_copy.calculate_fixed_capital(fc=fixed_capitals[start:end])
1771
- plant_copy.calculate_variable_opex()
1772
1859
  plant_copy.calculate_fixed_opex(fp=fixed_opexs[start:end])
1773
1860
  plant_copy.calculate_cash_flow()
1774
- plant_copy.calculate_levelized_cost()
1775
1861
 
1776
1862
  # ---- Store LCOP always ----
1777
- mc_metrics["LCOP"][start:end] = plant_copy.levelized_cost
1863
+ mc_metrics["LCOP"][start:end] = plant_copy._levelized_cost()
1778
1864
 
1779
1865
  # ---- If revenue available, compute all other metrics ----
1780
1866
  if have_product_prices:
1781
- mc_metrics["NPV"][start:end] = plant_copy.calculate_npv()
1782
- mc_metrics["ROI"][start:end] = plant_copy.calculate_roi(
1783
- additional_capex=additional_capex
1784
- )
1785
- mc_metrics["PBT"][start:end] = (
1786
- plant_copy.calculate_payback_time()
1787
- )
1867
+ mc_metrics["NPV"][start:end] = plant_copy._npv()
1868
+ mc_metrics["ROI"][start:end] = plant_copy._roi(additional_capex)
1869
+ mc_metrics["PBT"][start:end] = plant_copy._payback_time()
1788
1870
 
1789
1871
  mc_inputs = {
1790
1872
  "Fixed capital factor": fixed_capitals,
@@ -1796,23 +1878,23 @@ def monte_carlo(plant,
1796
1878
  else {"Plant utilization": plant_utilizations}),
1797
1879
  **({} if tax_rates is None
1798
1880
  else {"Tax rate": tax_rates}),
1799
- **{
1800
- f"{k.replace('_', ' ').title()} price": v
1801
- for k, v in variable_opex_price_samples.items()
1802
- },
1803
- **{
1804
- f"{k.replace('_', ' ').title()} consumption": v
1805
- for k, v in variable_opex_consumption_samples.items()
1806
- },
1807
- **{
1808
- f"{k.replace('_', ' ').title()} product price": v
1809
- for k, v in product_price_samples.items()
1810
- },
1811
- **{
1812
- f"{k.replace('_', ' ').title()} production": v
1813
- for k, v in product_production_samples.items()
1814
- },
1815
1881
  }
1882
+ # Fixed inputs are shown as named; item inputs under _make_label(name)
1883
+ display_labels = {key: key for key in mc_inputs}
1884
+ # TODO(3.3.0): key the items by their names as typed ("cooling_water
1885
+ # consumption") and drop display_labels; plots then label from the
1886
+ # key. Kept on the 3.2.0 title-case keys until then so 3.2.x stays
1887
+ # compatible.
1888
+ for samples, suffix in (
1889
+ (variable_opex_price_samples, "price"),
1890
+ (variable_opex_consumption_samples, "consumption"),
1891
+ (product_price_samples, "product price"),
1892
+ (product_production_samples, "production"),
1893
+ ):
1894
+ for k, v in samples.items():
1895
+ key = f"{k.replace('_', ' ').title()} {suffix}"
1896
+ mc_inputs[key] = v
1897
+ display_labels[key] = f"{_make_label(k)} {suffix}"
1816
1898
 
1817
1899
  # ---- Store on plant ----
1818
1900
  plant.monte_carlo_metrics = mc_metrics
@@ -1822,6 +1904,7 @@ def monte_carlo(plant,
1822
1904
  "name": plant.name,
1823
1905
  "metrics": mc_metrics,
1824
1906
  "inputs": mc_inputs,
1907
+ "display_labels": display_labels,
1825
1908
  "num_samples": num_samples,
1826
1909
  "additional_capex": additional_capex,
1827
1910
  "currency": currency,
@@ -64,33 +64,33 @@ oscillating_screen_turton_2001,Centrifuges,Oscillating screen,"diameter, m",0.5,
64
64
  solid_bowl_centrifuge_without_motor_turton_2001,Centrifuges,"Solid bowl, without motor","diameter, m",0.3,2,,,,,,,,,,4.9697,1.1689,0.0038,,,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,
65
65
  vertical_auto_batch_seider_2013,Centrifuges,Vertical auto-batch,"bowl diameter, in.",20,70,,,0,6180,0.94,,,,,,,,,,offset power-law,2013,Stainless steel,Seider et al. (2016) Table 16.32,CE Index = 567 (rounded); precise 2013 annual average = 567.3 Default material 'Stainless steel' (unspecified grade) uses the 304 stainless steel material factor (fm=1.3) in Equipment.,f.o.b. purchase cost. Stainless steel.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
66
66
  mea_ccs_technology_2011,CO2 capture,MEA CCS technology,kg/s,,,,,0,2173693.911,0.8,,38.4,40.2405,0.8,,,,,,offset power-law,2011,n.a.,NREL (2011),,,https://docs.nrel.gov/docs/fy06osti/39947.pdf,
67
- air_blower_manzolini_2006,Compressors & blowers,Air blower,"electric power, MWe",,,,,0,289800,0.67,,1,0.2898,0.67,,,,,,offset power-law,2006,n.a.,Manzolini (2011) ,,,doi:10.1016/j.ijggc.2012.06.021,
68
- centrifugal_turbo_blower_seider_2013,Compressors & blowers,Centrifugal (turbo) blower,"horsepower, hp",5,1000,,,,,,,,,,7.0187,0.79,0,,,ln-ln quadratic,2013,Cast iron,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive. Compression ratio up to 2. Uses sheet metal blades.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
69
- centrifugal_compressor_electric_motor_seider_2013,Compressors & blowers,"Centrifugal compressor, electric motor drive","consumed power, horsepower, hp",200,30000,,,,,,,,,,9.1553,0.63,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.6,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
70
- centrifugal_compressor_gas_turbine_seider_2013,Compressors & blowers,"Centrifugal compressor, gas turbine drive","consumed power, horsepower, hp",200,30000,,,,,,,,,,9.378443551,0.63,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.8,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.36) with Driver Factor = 1.255 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a gas turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
71
- centrifugal_compressor_steam_turbine_seider_2013,Compressors & blowers,"Centrifugal compressor, steam turbine drive","consumed power, horsepower, hp",200,30000,,,,,,,,,,9.295061942,0.63,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.7,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.36) with Driver Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a steam turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
72
- centrifugal_backward_curved_fan_head_16-30_seider_2013,Compressors & blowers,"Centrifugal, backward curved fan, head 16-30 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.78676356,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.45 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
73
- centrifugal_backward_curved_fan_head_31-40_seider_2013,Compressors & blowers,"Centrifugal, backward curved fan, head 31-40 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.85345493,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.55 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
74
- centrifugal_backward_curved_fan_head__5-8_seider_2013,Compressors & blowers,"Centrifugal, backward curved fan, head 5-8 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.55496194,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
75
- centrifugal_backward_curved_fan_head_9-15_seider_2013,Compressors & blowers,"Centrifugal, backward curved fan, head 9-15 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.67756426,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.30 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
76
- centrifugal_backward_curved_fan_head_less_4_seider_2013,Compressors & blowers,"Centrifugal, backward curved fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.4152,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
77
- centrifugal_straight_radial_fan_head_16-30_seider_2013,Compressors & blowers,"Centrifugal, straight radial fan, head 16-30 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.53826356,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.26) with Head Factor = 1.45 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
78
- centrifugal_straight_radial_fan_head__5-8_seider_2013,Compressors & blowers,"Centrifugal, straight radial fan, head 5-8 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.30646194,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.26) with Head Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
79
- centrifugal_straight_radial_fan_head_9-15_seider_2013,Compressors & blowers,"Centrifugal, straight radial fan, head 9-15 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.42906426,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.26) with Head Factor = 1.30 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
80
- centrifugal_straight_radial_fan_head_less_4_seider_2013,Compressors & blowers,"Centrifugal, straight radial fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.1667,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
81
- co2_compressor_manzolini_2011,Compressors & blowers,CO2 compressor,"electric power, MWe",,,,,0,2480252.151,0.67,,13,13.8305,0.67,,,,,,offset power-law,2011,n.a.,Manzolini (2011) ,,,doi:10.1016/j.ijggc.2012.06.021,
82
- h2_compressor_pandolfo_1987,Compressors & blowers,H2 compressor,"electric power, MWe",,,,,0,1200,0.82,,1,0.0012,0.82,,,,,,offset power-law,1987,n.a.,Leal Perez (2021),,,doi.org/10.1016/j.ijhydene.2020.11.079,
83
- propeller_fan_seider_2023,Compressors & blowers,"Propeller fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,15000,,,,,,,,,,6.16328,-0.28635,0.04866,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
84
- reciprocating_compressor_electric_motor_seider_2013,Compressors & blowers,"Reciprocating compressor, electric motor drive","consumed power, horsepower, hp",100,20000,,,,,,,,,,4.6762,1.23,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.9,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
85
- reciprocating_compressor_gas_turbine_seider_2013,Compressors & blowers,"Reciprocating compressor, gas turbine drive","consumed power, horsepower, hp",100,20000,,,,,,,,,,4.899343551,1.23,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.11,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.37) with Driver Factor = 1.255 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a gas turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
86
- reciprocating_compressor_steam_turbine_seider_2013,Compressors & blowers,"Reciprocating compressor, steam turbine drive","consumed power, horsepower, hp",100,20000,,,,,,,,,,4.815961942,1.23,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.10,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.37) with Driver Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a steam turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
87
- rotary_straight_lobe_seider_2013,Compressors & blowers,Rotary straight-lobe blower,"horsepower, hp",1,1000,,,,,,,,,,7.71751,0.7932,-0.0129,,,ln-ln quadratic,2013,Cast iron,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive. Compression ratio up to 2.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
88
- screw_compressor_electric_motor_seider_2013,Compressors & blowers,"Screw compressor, electric motor drive","consumed power, horsepower, hp",10,750,,,,,,,,,,8.2496,0.7243,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.12,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
89
- screw_compressor_gas_turbine_seider_2013,Compressors & blowers,"Screw compressor, gas turbine drive","consumed power, horsepower, hp",10,750,,,,,,,,,,8.472743551,0.7243,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.14,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.38) with Driver Factor = 1.255 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a gas turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
90
- screw_compressor_steam_turbine_seider_2013,Compressors & blowers,"Screw compressor, steam turbine drive","consumed power, horsepower, hp",10,750,,,,,,,,,,8.389361942,0.7243,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.13,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.38) with Driver Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a steam turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
91
- vane_axial_fan_head__5-8_seider_2013,Compressors & blowers,"Vane-axial fan, head 5-8 in. H2O","Flow rate gas entering fan, ACFM",1000,800000,,,,,,,,,,9.788461942,-0.97566,0.08532,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.27) with Head Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
92
- vane_axial_fan_head_9-15_seider_2013,Compressors & blowers,"Vane-axial fan, head 9-15 in. H2O","Flow rate gas entering fan, ACFM",1000,800000,,,,,,,,,,10.05082621,-0.97566,0.08532,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.2) with Head Factor = 1.30 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
93
- vane_axial_fan_head_less_4_seider_2013,Compressors & blowers,"Vane-axial fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,800000,,,,,,,,,,9.6487,-0.97566,0.08532,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
67
+ air_blower_manzolini_2006,"Compressors, fans, & blowers",Air blower,"electric power, MWe",,,,,0,289800,0.67,,1,0.2898,0.67,,,,,,offset power-law,2006,n.a.,Manzolini (2011) ,,,doi:10.1016/j.ijggc.2012.06.021,
68
+ centrifugal_turbo_blower_seider_2013,"Compressors, fans, & blowers",Centrifugal (turbo) blower,"horsepower, hp",5,1000,,,,,,,,,,7.0187,0.79,0,,,ln-ln quadratic,2013,Cast iron,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive. Compression ratio up to 2. Uses sheet metal blades.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
69
+ centrifugal_compressor_electric_motor_seider_2013,"Compressors, fans, & blowers","Centrifugal compressor, electric motor drive","consumed power, horsepower, hp",200,30000,,,,,,,,,,9.1553,0.63,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.6,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
70
+ centrifugal_compressor_gas_turbine_seider_2013,"Compressors, fans, & blowers","Centrifugal compressor, gas turbine drive","consumed power, horsepower, hp",200,30000,,,,,,,,,,9.378443551,0.63,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.8,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.36) with Driver Factor = 1.255 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a gas turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
71
+ centrifugal_compressor_steam_turbine_seider_2013,"Compressors, fans, & blowers","Centrifugal compressor, steam turbine drive","consumed power, horsepower, hp",200,30000,,,,,,,,,,9.295061942,0.63,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.7,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.36) with Driver Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a steam turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
72
+ centrifugal_backward_curved_fan_head_16-30_seider_2013,"Compressors, fans, & blowers","Centrifugal, backward curved fan, head 16-30 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.78676356,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.45 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
73
+ centrifugal_backward_curved_fan_head_31-40_seider_2013,"Compressors, fans, & blowers","Centrifugal, backward curved fan, head 31-40 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.85345493,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.55 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
74
+ centrifugal_backward_curved_fan_head__5-8_seider_2013,"Compressors, fans, & blowers","Centrifugal, backward curved fan, head 5-8 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.55496194,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
75
+ centrifugal_backward_curved_fan_head_9-15_seider_2013,"Compressors, fans, & blowers","Centrifugal, backward curved fan, head 9-15 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.67756426,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.25) with Head Factor = 1.30 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
76
+ centrifugal_backward_curved_fan_head_less_4_seider_2013,"Compressors, fans, & blowers","Centrifugal, backward curved fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,100000,,,,,,,,,,11.4152,-1.3805,0.1139,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
77
+ centrifugal_straight_radial_fan_head_16-30_seider_2013,"Compressors, fans, & blowers","Centrifugal, straight radial fan, head 16-30 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.53826356,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.26) with Head Factor = 1.45 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
78
+ centrifugal_straight_radial_fan_head__5-8_seider_2013,"Compressors, fans, & blowers","Centrifugal, straight radial fan, head 5-8 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.30646194,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.26) with Head Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
79
+ centrifugal_straight_radial_fan_head_9-15_seider_2013,"Compressors, fans, & blowers","Centrifugal, straight radial fan, head 9-15 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.42906426,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.26) with Head Factor = 1.30 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
80
+ centrifugal_straight_radial_fan_head_less_4_seider_2013,"Compressors, fans, & blowers","Centrifugal, straight radial fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,20000,,,,,,,,,,12.1667,-1.6407,0.1328,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
81
+ co2_compressor_manzolini_2011,"Compressors, fans, & blowers",CO2 compressor,"electric power, MWe",,,,,0,2480252.151,0.67,,13,13.8305,0.67,,,,,,offset power-law,2011,n.a.,Manzolini (2011) ,,,doi:10.1016/j.ijggc.2012.06.021,
82
+ h2_compressor_pandolfo_1987,"Compressors, fans, & blowers",H2 compressor,"electric power, MWe",,,,,0,1200,0.82,,1,0.0012,0.82,,,,,,offset power-law,1987,n.a.,Leal Perez (2021),,,doi.org/10.1016/j.ijhydene.2020.11.079,
83
+ propeller_fan_seider_2023,"Compressors, fans, & blowers","Propeller fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,15000,,,,,,,,,,6.16328,-0.28635,0.04866,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
84
+ reciprocating_compressor_electric_motor_seider_2013,"Compressors, fans, & blowers","Reciprocating compressor, electric motor drive","consumed power, horsepower, hp",100,20000,,,,,,,,,,4.6762,1.23,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.9,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
85
+ reciprocating_compressor_gas_turbine_seider_2013,"Compressors, fans, & blowers","Reciprocating compressor, gas turbine drive","consumed power, horsepower, hp",100,20000,,,,,,,,,,4.899343551,1.23,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.11,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.37) with Driver Factor = 1.255 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a gas turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
86
+ reciprocating_compressor_steam_turbine_seider_2013,"Compressors, fans, & blowers","Reciprocating compressor, steam turbine drive","consumed power, horsepower, hp",100,20000,,,,,,,,,,4.815961942,1.23,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.10,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.37) with Driver Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a steam turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
87
+ rotary_straight_lobe_seider_2013,"Compressors, fans, & blowers",Rotary straight-lobe blower,"horsepower, hp",1,1000,,,,,,,,,,7.71751,0.7932,-0.0129,,,ln-ln quadratic,2013,Cast iron,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive. Compression ratio up to 2.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
88
+ screw_compressor_electric_motor_seider_2013,"Compressors, fans, & blowers","Screw compressor, electric motor drive","consumed power, horsepower, hp",10,750,,,,,,,,,,8.2496,0.7243,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.12,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
89
+ screw_compressor_gas_turbine_seider_2013,"Compressors, fans, & blowers","Screw compressor, gas turbine drive","consumed power, horsepower, hp",10,750,,,,,,,,,,8.472743551,0.7243,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.14,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.38) with Driver Factor = 1.255 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a gas turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
90
+ screw_compressor_steam_turbine_seider_2013,"Compressors, fans, & blowers","Screw compressor, steam turbine drive","consumed power, horsepower, hp",10,750,,,,,,,,,,8.389361942,0.7243,0,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.13,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.38) with Driver Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes a steam turbine drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
91
+ vane_axial_fan_head__5-8_seider_2013,"Compressors, fans, & blowers","Vane-axial fan, head 5-8 in. H2O","Flow rate gas entering fan, ACFM",1000,800000,,,,,,,,,,9.788461942,-0.97566,0.08532,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.27) with Head Factor = 1.15 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
92
+ vane_axial_fan_head_9-15_seider_2013,"Compressors, fans, & blowers","Vane-axial fan, head 9-15 in. H2O","Flow rate gas entering fan, ACFM",1000,800000,,,,,,,,,,10.05082621,-0.97566,0.08532,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,"CE Index = 567 (rounded); precise 2013 annual average = 567.3. Cost adapted from the base equipment (Eq. 16.2) with Head Factor = 1.30 applied, adjusted to the ln-ln quadratic form.",f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
93
+ vane_axial_fan_head_less_4_seider_2013,"Compressors, fans, & blowers","Vane-axial fan, head less than 4 in. H2O","Flow rate gas entering fan, ACFM",1000,800000,,,,,,,,,,9.6487,-0.97566,0.08532,,,ln-ln quadratic,2013,Carbon steel,Seider et al. (2016) Section 16.5,CE Index = 567 (rounded); precise 2013 annual average = 567.3.,f.o.b. purchase cost. Includes an electric motor drive.,https://www.wiley.com/en-us/shop/general-introductory-chemical-engineering/product-and-process-design-principles-synthesis-analysis-and-evaluation-4th-edition-p-9781119282631,
94
94
  axial_tube_fan_turton_2001,"Compressors, fans, & blowers",Axial tube fan,"gas flowrate, m3/s",1,100,,,,,,,,,,3.0414,-0.3375,0.4722,,,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,
95
95
  axial_vane_fan_turton_2001,"Compressors, fans, & blowers",Axial vane fan,"gas flowrate, m3/s",1,100,,,,,,,,,,3.1761,-0.1373,0.3414,,,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,
96
96
  backward_curve_fan_turton_2001,"Compressors, fans, & blowers",Backward curve fan,"gas flowrate, m3/s",1,100,,,,,,,,,,3.3471,-0.0734,0.309,,,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,
@@ -1,3 +1,5 @@
1
+ import warnings
2
+
1
3
  import numpy as np
2
4
  import pandas as pd
3
5
 
@@ -16,6 +18,25 @@ with as_file(
16
18
  ) as COST_DB_PATH:
17
19
  COST_DB_DF = pd.read_csv(COST_DB_PATH)
18
20
 
21
+ # Renamed categories: old name (lowercase, as lookups ignore case) -> current
22
+ _CATEGORY_ALIASES = {
23
+ "compressors & blowers": "Compressors, fans, & blowers",
24
+ }
25
+
26
+
27
+ def _current_category(category):
28
+ """Map a renamed category to its current name, with a warning."""
29
+ new = _CATEGORY_ALIASES.get(str(category).lower())
30
+ if new is not None:
31
+ warnings.warn(
32
+ f"Category '{category}' has been renamed to '{new}'; "
33
+ "the old name will be removed in a future release.",
34
+ FutureWarning,
35
+ stacklevel=3,
36
+ )
37
+ return new
38
+ return category
39
+
19
40
 
20
41
  def inflation_adjustment(equipment_cost, cost_year, target_year=2024):
21
42
  """
@@ -524,7 +545,7 @@ class Equipment:
524
545
  self.param = (
525
546
  None if purchased_cost is not None else param
526
547
  )
527
- self.category = category
548
+ self.category = _current_category(category)
528
549
  self.type = type
529
550
  self.num_units = num_units
530
551
  self.cost_year = cost_year
@@ -752,8 +773,8 @@ class Equipment:
752
773
  f"Category={self.category}, Sub-type={self.type}, "
753
774
  f"Material={self.material}, Process Type={self.process_type}, "
754
775
  f"Parameter={self.param}, Number of units={self.num_units}, "
755
- f"Purchased Cost={self.purchased_cost}, "
756
- f"Direct Cost={self.direct_cost})"
776
+ f"Purchased Cost={self.purchased_cost:.3f}, "
777
+ f"Direct Cost={self.direct_cost:.3f})"
757
778
  )
758
779
 
759
780
 
@@ -923,7 +944,7 @@ class CompositeEquipment:
923
944
 
924
945
  self.name = name
925
946
  self.process_type = process_type
926
- self.category = category
947
+ self.category = _current_category(category)
927
948
  self.type = type
928
949
  self.installation = installation
929
950
  self.target_year = target_year
@@ -1126,13 +1147,13 @@ class CompositeEquipment:
1126
1147
  f"Process Type={self.process_type}, "
1127
1148
  f"Installation={self.installation}, "
1128
1149
  f"Number of units={self.num_units}, "
1129
- f"Purchased Cost={self.purchased_cost}, "
1130
- f"Direct Cost={self.direct_cost})"
1150
+ f"Purchased Cost={self.purchased_cost:.3f}, "
1151
+ f"Direct Cost={self.direct_cost:.3f})"
1131
1152
  )
1132
1153
  body = "\n".join(
1133
1154
  f" - {obj.name} (x{obj.num_units}): "
1134
- f"Purchased Cost={obj.purchased_cost}, "
1135
- f"Direct Cost={obj.direct_cost}"
1155
+ f"Purchased Cost={obj.purchased_cost:.3f}, "
1156
+ f"Direct Cost={obj.direct_cost:.3f}"
1136
1157
  for obj in self.components
1137
1158
  )
1138
1159
  return f"{head}\n{body}"