processforge 0.3.1__tar.gz → 0.3.3__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.

Potentially problematic release.


This version of processforge might be problematic. Click here for more details.

Files changed (124) hide show
  1. {processforge-0.3.1/src/processforge.egg-info → processforge-0.3.3}/PKG-INFO +4 -6
  2. {processforge-0.3.1 → processforge-0.3.3}/README.md +3 -4
  3. {processforge-0.3.1 → processforge-0.3.3}/flowsheets/closed-loop-chain.json +1 -1
  4. processforge-0.3.3/flowsheets/custom/crimson/MUWS_HB.json +216 -0
  5. processforge-0.3.3/flowsheets/custom/simple_hyrdaulic_scheme.json +202 -0
  6. {processforge-0.3.1 → processforge-0.3.3}/flowsheets/hydraulic-chain.json +3 -3
  7. {processforge-0.3.1 → processforge-0.3.3}/pyproject.toml +1 -2
  8. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/__init__.py +1 -1
  9. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/analysis/dof.py +2 -2
  10. processforge-0.3.3/src/processforge/cli/apply.py +238 -0
  11. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/common.py +48 -0
  12. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/diagram.py +2 -2
  13. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/plan.py +2 -1
  14. processforge-0.3.3/src/processforge/cli/run.py +137 -0
  15. processforge-0.3.3/src/processforge/compose.py +114 -0
  16. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/pump_eo.py +2 -2
  17. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/modelica/unit_equations.py +4 -4
  18. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/schemas/flowsheet_schema.json +1 -1
  19. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/state.py +1 -1
  20. processforge-0.3.3/src/processforge/units/base.py +38 -0
  21. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/cstr.py +2 -2
  22. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/pfr.py +2 -2
  23. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/pipes.py +2 -2
  24. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/pump.py +8 -8
  25. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/solver_unit.py +3 -3
  26. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/strainer.py +6 -6
  27. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/tank.py +2 -2
  28. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/valve.py +2 -2
  29. {processforge-0.3.1 → processforge-0.3.3/src/processforge.egg-info}/PKG-INFO +4 -6
  30. {processforge-0.3.1 → processforge-0.3.3}/src/processforge.egg-info/SOURCES.txt +3 -2
  31. {processforge-0.3.1 → processforge-0.3.3}/src/processforge.egg-info/requires.txt +0 -1
  32. processforge-0.3.3/tests/test_cli.py +684 -0
  33. {processforge-0.3.1 → processforge-0.3.3}/tests/test_state.py +19 -19
  34. processforge-0.3.1/src/processforge/cli/apply.py +0 -207
  35. processforge-0.3.1/src/processforge/cli/run.py +0 -106
  36. processforge-0.3.1/src/processforge/compose.py +0 -47
  37. processforge-0.3.1/src/processforge/units/provider_mixin.py +0 -33
  38. processforge-0.3.1/src/processforge/units/solver.py +0 -5
  39. processforge-0.3.1/tests/test_cli.py +0 -380
  40. {processforge-0.3.1 → processforge-0.3.3}/LICENSE +0 -0
  41. {processforge-0.3.1 → processforge-0.3.3}/MANIFEST.in +0 -0
  42. {processforge-0.3.1 → processforge-0.3.3}/flowsheets/festim/hydrogen_transport_1d.json +0 -0
  43. {processforge-0.3.1 → processforge-0.3.3}/flowsheets/openmc/msre_eigenvalue.json +0 -0
  44. {processforge-0.3.1 → processforge-0.3.3}/setup.cfg +0 -0
  45. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/__main__.py +0 -0
  46. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/_schema.py +0 -0
  47. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/analysis/__init__.py +0 -0
  48. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/__init__.py +0 -0
  49. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/display.py +0 -0
  50. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/export_fmu.py +0 -0
  51. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/export_modelica.py +0 -0
  52. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/init.py +0 -0
  53. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/cli/validate.py +0 -0
  54. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/__init__.py +0 -0
  55. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/backends/__init__.py +0 -0
  56. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/backends/base.py +0 -0
  57. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/backends/casadi_backend.py +0 -0
  58. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/backends/pyomo_backend.py +0 -0
  59. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/backends/scipy_backend.py +0 -0
  60. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/flowsheet.py +0 -0
  61. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/jacobian.py +0 -0
  62. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/mixin.py +0 -0
  63. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/solver.py +0 -0
  64. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/stream_var.py +0 -0
  65. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/__init__.py +0 -0
  66. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/flash_eo.py +0 -0
  67. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/heater_eo.py +0 -0
  68. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/pipes_eo.py +0 -0
  69. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/strainer_eo.py +0 -0
  70. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/eo/units/valve_eo.py +0 -0
  71. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/flowsheet.py +0 -0
  72. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/fmu/__init__.py +0 -0
  73. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/fmu/_fmi_vars.py +0 -0
  74. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/fmu/builder.py +0 -0
  75. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/fmu/slave_template.py +0 -0
  76. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/lock.py +0 -0
  77. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/modelica/__init__.py +0 -0
  78. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/modelica/mo_writer.py +0 -0
  79. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/modelica/omc_runner.py +0 -0
  80. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/modelica/transpiler.py +0 -0
  81. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/pcl/__init__.py +0 -0
  82. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/pcl/compiler.py +0 -0
  83. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/pcl/namespace.py +0 -0
  84. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/provenance.py +0 -0
  85. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/__init__.py +0 -0
  86. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/base.py +0 -0
  87. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/base_jacobian_mixin.py +0 -0
  88. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/cantera_jacobian.py +0 -0
  89. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/cantera_provider.py +0 -0
  90. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/coolprop_provider.py +0 -0
  91. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/festim_provider.py +0 -0
  92. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/jacobian_contributor.py +0 -0
  93. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/manager.py +0 -0
  94. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/modelica_jacobian.py +0 -0
  95. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/modelica_provider.py +0 -0
  96. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/openmc_provider.py +0 -0
  97. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/reference_state_registry.py +0 -0
  98. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/providers/registry.py +0 -0
  99. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/result.py +0 -0
  100. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/result_schema.py +0 -0
  101. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/schemas/__init__.py +0 -0
  102. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/schemas/openmc/openmc_model.py +0 -0
  103. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/simulate.py +0 -0
  104. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/solver.py +0 -0
  105. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/thermo.py +0 -0
  106. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/types.py +0 -0
  107. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/__init__.py +0 -0
  108. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/flash.py +0 -0
  109. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/heater.py +0 -0
  110. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/units/registry.py +0 -0
  111. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/__init__.py +0 -0
  112. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/flowsheet_diagram.py +0 -0
  113. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/mermaid_diagram.py +0 -0
  114. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/topology.py +0 -0
  115. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/unit_consistency.py +0 -0
  116. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/validate_flowsheet.py +0 -0
  117. {processforge-0.3.1 → processforge-0.3.3}/src/processforge/utils/validation.py +0 -0
  118. {processforge-0.3.1 → processforge-0.3.3}/src/processforge.egg-info/dependency_links.txt +0 -0
  119. {processforge-0.3.1 → processforge-0.3.3}/src/processforge.egg-info/entry_points.txt +0 -0
  120. {processforge-0.3.1 → processforge-0.3.3}/src/processforge.egg-info/top_level.txt +0 -0
  121. {processforge-0.3.1 → processforge-0.3.3}/tests/test_festim_provider.py +0 -0
  122. {processforge-0.3.1 → processforge-0.3.3}/tests/test_init.py +0 -0
  123. {processforge-0.3.1 → processforge-0.3.3}/tests/test_providers.py +0 -0
  124. {processforge-0.3.1 → processforge-0.3.3}/tests/test_types.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: processforge
3
- Version: 0.3.1
3
+ Version: 0.3.3
4
4
  Summary: A Python-based process simulation framework for chemical engineering applications.
5
5
  Author-email: Processforge Team <team@processforge.dev>
6
6
  License-Expression: BSD-3-Clause
@@ -30,7 +30,6 @@ Requires-Dist: pandas>=2.2
30
30
  Requires-Dist: zarr>=3.0
31
31
  Requires-Dist: coolprop>=7.2.0
32
32
  Requires-Dist: typer>=0.12
33
- Requires-Dist: pip>=26.1.2
34
33
  Provides-Extra: eo
35
34
  Requires-Dist: pyomo>=6.7; extra == "eo"
36
35
  Provides-Extra: eo-casadi
@@ -103,9 +102,9 @@ uv tool install "processforge[modelica]"
103
102
  3. **Initialize, plan, and apply**
104
103
 
105
104
  ```bash
106
- pf init
107
- pf plan hydraulic-chain.json
108
- pf apply hydraulic-chain.json
105
+ pf init flowsheets/hydraulic-chain.json
106
+ pf plan flowsheets/hydraulic-chain.json
107
+ pf apply flowsheets/hydraulic-chain.json
109
108
  ```
110
109
 
111
110
  `plan` validates the flowsheet (schema, DOF, units) without running the solver; `apply` solves it and stores a snapshot.
@@ -115,7 +114,6 @@ uv tool install "processforge[modelica]"
115
114
  `pf apply` writes results under `outputs/`:
116
115
  - `*_results.zarr` — simulation results store (per-variable arrays, composition flattened)
117
116
  - `*_results.zarr.schema.json` — schema file describing streams, variables, dtypes, units, shapes, and run provenance
118
- - `*_validation.xlsx` — validation report
119
117
  - `*.pfstate/` — versioned snapshot store with a `latest` pointer
120
118
 
121
119
  For flowsheets with Tank units (dynamic), use `pf run` instead of `pf apply` to solve with the SM solver.
@@ -43,9 +43,9 @@ uv tool install "processforge[modelica]"
43
43
  3. **Initialize, plan, and apply**
44
44
 
45
45
  ```bash
46
- pf init
47
- pf plan hydraulic-chain.json
48
- pf apply hydraulic-chain.json
46
+ pf init flowsheets/hydraulic-chain.json
47
+ pf plan flowsheets/hydraulic-chain.json
48
+ pf apply flowsheets/hydraulic-chain.json
49
49
  ```
50
50
 
51
51
  `plan` validates the flowsheet (schema, DOF, units) without running the solver; `apply` solves it and stores a snapshot.
@@ -55,7 +55,6 @@ uv tool install "processforge[modelica]"
55
55
  `pf apply` writes results under `outputs/`:
56
56
  - `*_results.zarr` — simulation results store (per-variable arrays, composition flattened)
57
57
  - `*_results.zarr.schema.json` — schema file describing streams, variables, dtypes, units, shapes, and run provenance
58
- - `*_validation.xlsx` — validation report
59
58
  - `*.pfstate/` — versioned snapshot store with a `latest` pointer
60
59
 
61
60
  For flowsheets with Tank units (dynamic), use `pf run` instead of `pf apply` to solve with the SM solver.
@@ -118,7 +118,7 @@
118
118
  "type": "Pump",
119
119
  "in": "before_pump_1",
120
120
  "out": "after_pump_1",
121
- "deltaP": 200000.0,
121
+ "delta_p": 200000.0,
122
122
  "efficiency": 0.75,
123
123
  "material": 3
124
124
  },
@@ -0,0 +1,216 @@
1
+ {
2
+ "metadata": {
3
+ "name": "Make-up Water System",
4
+ "description": "A two-pump, five-valve, one-strainer, one tank steady-state make-up water system.",
5
+ "version": "2.0"
6
+ },
7
+ "providers": {
8
+ "coolprop": {
9
+ "type": "coolprop"
10
+ }
11
+ },
12
+ "materials": {
13
+ "Water": {
14
+ "id": 1
15
+ },
16
+ "Steel": {
17
+ "id": 2
18
+ }
19
+ },
20
+ "streams": {
21
+ "feed": {
22
+ "T": 313.00,
23
+ "P": 101325,
24
+ "flowrate": 1,
25
+ "z": { "Water": 1.0 }
26
+ }
27
+ },
28
+
29
+ "units": {
30
+
31
+ "tank_1": {
32
+ "type": "Tank",
33
+ "in": ["feed", "recycle_to_tank"],
34
+ "out": "after_tank_1",
35
+ "outlet_flow": 1.0,
36
+ "initial_n": {
37
+ "Benzene": 9.0,
38
+ "Toluene": 1.0
39
+ },
40
+ "initial_T": 298.15,
41
+ "P": 101325,
42
+ "duty": 0.0,
43
+ "material": 1
44
+ },
45
+
46
+ "pipe_1": {
47
+ "type": "Pipes",
48
+ "in": "after_tank_1",
49
+ "out": "after_pipe_1",
50
+ "delta_p": 1000.0,
51
+ "diameter": 0.05,
52
+ "material": 2
53
+ },
54
+ "global_valve_1": {
55
+ "type": "Valve",
56
+ "in": "after_pipe_1",
57
+ "out": "after_global_valve_1",
58
+ "opening": 50,
59
+ "pressure_ratio": 0.5,
60
+ "q_flowrate": 50,
61
+ "material": 2
62
+ },
63
+ "pipe_2": {
64
+ "type": "Pipes",
65
+ "in": "after_global_valve_1",
66
+ "out": "after_pipe_2",
67
+ "delta_p": 1000.0,
68
+ "diameter": 0.05,
69
+ "material": 2
70
+ },
71
+
72
+ "low_pressure_pump":{
73
+ "type": "Pump",
74
+ "in": "after_pipe_2",
75
+ "out": "after_low_pressure_pump",
76
+ "q_flowrate": 4,
77
+ "head": 57,
78
+ "efficiency": 36,
79
+ "power": 1.3,
80
+ "cap": 2.5,
81
+ "motor_rating": 370,
82
+ "design_press": 6,
83
+ "material": 2,
84
+ "delta_p": 1000.0
85
+ },
86
+ "pipe_3": {
87
+ "type": "Pipes",
88
+ "in": "after_low_pressure_pump",
89
+ "out": "after_pipe_3",
90
+ "delta_p": 1000.0,
91
+ "diameter": 0.05,
92
+ "material": 2
93
+ },
94
+ "non_return_valve_1": {
95
+ "type": "Valve",
96
+ "in": "after_pipe_3",
97
+ "out": "after_non_return_valve_1",
98
+ "q_flowrate": 4,
99
+ "pressure_ratio": 0.5,
100
+ "pressure_drop": 0.72,
101
+ "material": 2
102
+ },
103
+ "pipe_4": {
104
+ "type": "Pipes",
105
+ "in": "after_non_return_valve_1",
106
+ "out": "after_pipe_4",
107
+ "delta_p": 1000.0,
108
+ "diameter": 0.05,
109
+ "material": 2
110
+ },
111
+ "strainer": {
112
+ "type": "Strainer",
113
+ "in": "after_pipe_4",
114
+ "out": "after_strainer",
115
+ "q_flowrate": 4,
116
+ "pressure_drop": 0.192,
117
+ "material": 2,
118
+ "delta_p": 1000.0
119
+ },
120
+ "pipe_5": {
121
+ "type": "Pipes",
122
+ "in": "after_strainer",
123
+ "out": "after_pipe_5",
124
+ "delta_p": 1000.0,
125
+ "diameter": 0.05,
126
+ "material": 2
127
+ },
128
+ "global_valve_2": {
129
+ "type": "Valve",
130
+ "in": "after_pipe_5",
131
+ "out": "after_global_valve_2",
132
+ "opening": 50,
133
+ "q_flowrate": 50,
134
+ "material": 2,
135
+ "pressure_ratio": 0.5
136
+ },
137
+ "pipe_6": {
138
+ "type": "Pipes",
139
+ "in": "after_global_valve_2",
140
+ "out": "after_pipe_6",
141
+ "delta_p": 1000.0,
142
+ "diameter": 0.05,
143
+ "material": 2
144
+ },
145
+ "high_pressure_pump":{
146
+ "type": "Pump",
147
+ "in": "after_pipe_6",
148
+ "out": "after_high_pressure_pump",
149
+ "q_flowrate": 35,
150
+ "head": 32,
151
+ "efficiency": 25,
152
+ "power": 4.75,
153
+ "cap": 600,
154
+ "discharge_press": 50,
155
+ "motor_rating": 7.5,
156
+ "relief_press": 200,
157
+ "material": 2,
158
+ "delta_p": 1000.0
159
+ },
160
+ "pipe_7": {
161
+ "type": "Pipes",
162
+ "in": "after_high_pressure_pump",
163
+ "out": "after_pipe_7",
164
+ "delta_p": 1000.0,
165
+ "diameter": 0.05,
166
+ "material": 2
167
+ },
168
+ "non_return_valve_2": {
169
+ "type": "Valve",
170
+ "in": "after_pipe_7",
171
+ "out": "after_non_return_valve_2",
172
+ "q_flowrate": 4,
173
+ "pressure_drop": 0.72,
174
+ "material": 2,
175
+ "pressure_ratio": 0.5
176
+ },
177
+ "pipe_8": {
178
+ "type": "Pipes",
179
+ "in": "after_non_return_valve_2",
180
+ "out": "after_pipe_8",
181
+ "delta_p": 1000.0,
182
+ "diameter": 0.05,
183
+ "material": 2
184
+ },
185
+ "global_valve_3": {
186
+ "type": "Valve",
187
+ "in": "after_pipe_8",
188
+ "out": "after_valve_3",
189
+ "opening": 50,
190
+ "q_flowrate": 50,
191
+ "material": 2,
192
+ "pressure_ratio": 0.5
193
+ },
194
+
195
+
196
+ "pipe_9": {
197
+ "type": "Pipes",
198
+ "in": "after_valve_3",
199
+ "out": "recycle_to_tank",
200
+ "delta_p": 1000.0,
201
+ "diameter": 0.08,
202
+ "material": 2
203
+ }
204
+
205
+ },
206
+ "simulation": {
207
+ "mode": "dynamic",
208
+ "t0": 0.0,
209
+ "tf": 17.0,
210
+ "dt": 1.0,
211
+ "backend": "scipy"
212
+ }
213
+ }
214
+
215
+
216
+
@@ -0,0 +1,202 @@
1
+ {
2
+ "metadata": {
3
+ "name": "Hydraulic Chain Example",
4
+ "description": "A two-pump, one-valve, one-strainer steady-state hydraulic system.",
5
+ "version": "2.0"
6
+ },
7
+ "providers": {
8
+ "coolprop": {
9
+ "type": "coolprop"
10
+ }
11
+ },
12
+ "materials": {
13
+ "Benzene": {
14
+ "id": 1
15
+ },
16
+ "Toluene": {
17
+ "id": 2
18
+ },
19
+ "Steel": {
20
+ "id": 3
21
+ }
22
+ },
23
+ "material_mixes": {
24
+ "Benzene_Toluene_Mix": {
25
+ "friendly_material_mix_id": 1,
26
+ "percent_type": "ao",
27
+ "components": [
28
+ {"name": "Benzene", "fraction": 0.8},
29
+ {"name": "Toluene", "fraction": 0.2}
30
+ ]
31
+ }
32
+ },
33
+ "streams": {
34
+ "feed": {
35
+ "T": 298.15,
36
+ "P": 101325,
37
+ "flowrate": 38,
38
+ "material_mix": 1
39
+ }
40
+ },
41
+ "units": {
42
+ "pipe_1": {
43
+ "type": "Pipes",
44
+ "in": "feed",
45
+ "out": "after_pipe_1",
46
+ "delta_p": 1000.0,
47
+ "diameter": 0.040,
48
+ "material": 3
49
+ },
50
+ "valve_1": {
51
+ "type": "Valve",
52
+ "in": "after_pipe_1",
53
+ "out": "after_valve_1",
54
+ "pressure_ratio": 0.5,
55
+ "material": 3
56
+ },
57
+ "pipe_2": {
58
+ "type": "Pipes",
59
+ "in": "after_valve_1",
60
+ "out": "after_pipe_2",
61
+ "delta_p": 1000.0,
62
+ "diameter": 0.08,
63
+ "material": 3
64
+ },
65
+ "pump_1": {
66
+ "type": "Pump",
67
+ "in": "after_pipe_2",
68
+ "out": "after_pump_1",
69
+ "delta_p": 600000.0,
70
+ "efficiency": 0.75,
71
+ "material": 3
72
+ },
73
+ "pipe_3": {
74
+ "type": "Pipes",
75
+ "in": "after_pump_1",
76
+ "out": "after_pipe_3",
77
+ "delta_p": 1000.0,
78
+ "diameter": 0.08,
79
+ "material": 3
80
+ },
81
+ "strainer_1": {
82
+ "type": "Strainer",
83
+ "in": "after_pipe_3",
84
+ "out": "after_strainer_1",
85
+ "delta_p": 5000.0,
86
+ "material": 3
87
+ },
88
+ "pipe_4": {
89
+ "type": "Pipes",
90
+ "in": "after_strainer_1",
91
+ "out": "after_pipe_4",
92
+ "delta_p": 1000.0,
93
+ "diameter": 0.08,
94
+ "material": 3
95
+ },
96
+ "pipe_1a": {
97
+ "type": "Pipes",
98
+ "in": "after_strainer_1",
99
+ "out": "after_pipe_1a",
100
+ "delta_p": 1000.0,
101
+ "diameter": 0.08,
102
+ "material": 3
103
+ },
104
+ "valve_1a": {
105
+ "type": "Valve",
106
+ "in": "after_pipe_1a",
107
+ "out": "after_valve_1a",
108
+ "pressure_ratio": 0.5,
109
+ "material": 3
110
+ },
111
+ "pipe_2a": {
112
+ "type": "Pipes",
113
+ "in": "after_valve_1a",
114
+ "out": "after_pipe_2a",
115
+ "delta_p": 1000.0,
116
+ "diameter": 0.08,
117
+ "material": 3
118
+ },
119
+ "valve_2": {
120
+ "type": "Valve",
121
+ "in": "after_pipe_4",
122
+ "out": "after_valve_2",
123
+ "pressure_ratio": 0.5,
124
+ "material": 3
125
+ },
126
+ "pipe_5": {
127
+ "type": "Pipes",
128
+ "in": "after_valve_2",
129
+ "out": "after_pipe_5",
130
+ "delta_p": 1000.0,
131
+ "diameter": 0.08,
132
+ "material": 3
133
+ },
134
+ "pump_2": {
135
+ "type": "Pump",
136
+ "in": "after_pipe_5",
137
+ "out": "after_pump_2",
138
+ "delta_p": 600000.0,
139
+ "efficiency": 0.75,
140
+ "material": 3
141
+ },
142
+ "pipe_6": {
143
+ "type": "Pipes",
144
+ "in": "after_pump_2",
145
+ "out": "after_pipe_6",
146
+ "delta_p": 1000.0,
147
+ "diameter": 0.08,
148
+ "material": 3
149
+ },
150
+ "valve_3": {
151
+ "type": "Valve",
152
+ "in": "after_pipe_6",
153
+ "out": "after_valve_3",
154
+ "pressure_ratio": 0.5,
155
+ "material": 3
156
+ },
157
+ "pipe_7": {
158
+ "type": "Pipes",
159
+ "in": "after_valve_3",
160
+ "out": "after_pipe_7",
161
+ "delta_p": 1000.0,
162
+ "diameter": 0.08,
163
+ "material": 3
164
+ },
165
+ "valve_4": {
166
+ "type": "Valve",
167
+ "in": "after_pipe_7",
168
+ "out": "after_valve_4",
169
+ "pressure_ratio": 0.5,
170
+ "material": 3
171
+ },
172
+ "pipe_8": {
173
+ "type": "Pipes",
174
+ "in": "after_valve_4",
175
+ "out": "after_pipe_8",
176
+ "delta_p": 1000.0,
177
+ "diameter": 0.08,
178
+ "material": 3
179
+ },
180
+ "valve_5": {
181
+ "type": "Valve",
182
+ "in": ["after_pipe_8","after_pipe_2a"],
183
+ "out": "after_valve_5",
184
+ "pressure_ratio": 0.5,
185
+ "material": 3
186
+ },
187
+ "pipe_9": {
188
+ "type": "Pipes",
189
+ "in": "after_valve_5",
190
+ "out": "after_pipe_9",
191
+ "delta_p": 1000.0,
192
+ "diameter": 0.025,
193
+ "material": 3
194
+ }
195
+
196
+ },
197
+ "simulation": {
198
+ "mode":"dynamic",
199
+ "t_final": 20,
200
+ "t_step": 1
201
+ }
202
+ }
@@ -43,7 +43,7 @@
43
43
  "type": "Pump",
44
44
  "in": "feed",
45
45
  "out": "after_pump_1",
46
- "deltaP": 100000.0,
46
+ "delta_p": 100000.0,
47
47
  "efficiency": 0.75,
48
48
  "material": 3
49
49
  },
@@ -74,7 +74,7 @@
74
74
  "type": "Strainer",
75
75
  "in": "after_pipe_2",
76
76
  "out": "after_strainer_1",
77
- "deltaP": 5000.0,
77
+ "delta_p": 5000.0,
78
78
  "material": 3
79
79
  },
80
80
  "pipe_3": {
@@ -89,7 +89,7 @@
89
89
  "type": "Pump",
90
90
  "in": "after_pipe_3",
91
91
  "out": "after_pump_2",
92
- "deltaP": 200000.0,
92
+ "delta_p": 200000.0,
93
93
  "efficiency": 0.8,
94
94
  "material": 3
95
95
  },
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "processforge"
7
- version = "0.3.1"
7
+ version = "0.3.3"
8
8
  description = "A Python-based process simulation framework for chemical engineering applications."
9
9
  readme = "README.md"
10
10
  license = "BSD-3-Clause"
@@ -36,7 +36,6 @@ dependencies = [
36
36
  "zarr>=3.0",
37
37
  "coolprop>=7.2.0",
38
38
  "typer>=0.12",
39
- "pip>=26.1.2",
40
39
  ]
41
40
 
42
41
  [project.optional-dependencies]
@@ -29,7 +29,7 @@ from .units.flash import Flash
29
29
  from .units.heater import Heater
30
30
  from .eo import EOFlowsheet, EOSolver
31
31
 
32
- __version__ = "0.3.0"
32
+ __version__ = "0.3.2"
33
33
 
34
34
  __all__ = [
35
35
  "Flowsheet",
@@ -29,9 +29,9 @@ class SystemDOFReport:
29
29
  # - a string means the key must be present
30
30
  # - a tuple means at least one of the keys must be present
31
31
  _UNIT_REQUIRED: dict[str, list] = {
32
- "Pump": ["deltaP"],
32
+ "Pump": ["delta_p"],
33
33
  "Valve": ["pressure_ratio"],
34
- "Strainer": ["deltaP"],
34
+ "Strainer": ["delta_p"],
35
35
  "Pipes": ["delta_p", "diameter"],
36
36
  "Heater": [("duty", "outlet_T")], # at least one of these
37
37
  "Flash": ["P"],