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.
- {openpytea-3.2.0/src/OpenPyTEA.egg-info → openpytea-3.2.1}/PKG-INFO +5 -1
- {openpytea-3.2.0 → openpytea-3.2.1}/pyproject.toml +7 -1
- {openpytea-3.2.0 → openpytea-3.2.1/src/OpenPyTEA.egg-info}/PKG-INFO +5 -1
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/analysis.py +132 -49
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/data/cost_correlations.csv +27 -27
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/equipment.py +29 -8
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/helpers.py +125 -76
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/plant.py +216 -78
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/plotting.py +76 -28
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_analysis.py +138 -8
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_equipment.py +10 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_plant.py +65 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_plotting.py +105 -2
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_run_tea.py +1 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/LICENSE +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/README.md +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/setup.cfg +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/SOURCES.txt +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/dependency_links.txt +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/entry_points.txt +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/requires.txt +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/OpenPyTEA.egg-info/top_level.txt +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/__init__.py +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/cli.py +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/data/cepci_values.csv +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/src/openpytea/io.py +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_cli.py +0 -0
- {openpytea-3.2.0 → openpytea-3.2.1}/tests/test_composite_equipment.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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
|
-
|
|
216
|
-
|
|
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 +
|
|
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}" +
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
772
|
-
|
|
773
|
-
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
|
|
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
|
|
782
|
-
|
|
783
|
-
|
|
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
|
|
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 ``
|
|
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
|
-
|
|
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",
|
|
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.
|
|
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.
|
|
1782
|
-
mc_metrics["ROI"][start:end] = plant_copy.
|
|
1783
|
-
|
|
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}"
|