processforge 0.3.11__tar.gz → 0.3.13__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.
- {processforge-0.3.11/src/processforge.egg-info → processforge-0.3.13}/PKG-INFO +2 -3
- processforge-0.3.13/flowsheets/custom/crimson/MUWS_HB.json +216 -0
- processforge-0.3.13/flowsheets/custom/simple_hyrdaulic_scheme.json +202 -0
- {processforge-0.3.11 → processforge-0.3.13}/flowsheets/festim/hydrogen_transport_1d.json +24 -25
- processforge-0.3.13/flowsheets/festim/tds_tungsten.json +136 -0
- {processforge-0.3.11 → processforge-0.3.13}/pyproject.toml +2 -4
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/__init__.py +1 -1
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/api/serve.py +11 -22
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/apply.py +24 -10
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/common.py +9 -9
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/run.py +64 -22
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/flowsheet.py +36 -1
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/jacobian.py +9 -5
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/flowsheet.py +50 -1
- processforge-0.3.13/src/processforge/output_collector.py +97 -0
- processforge-0.3.13/src/processforge/persistence/__init__.py +7 -0
- processforge-0.3.13/src/processforge/persistence/archive.py +166 -0
- processforge-0.3.13/src/processforge/persistence/artifact_store.py +132 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/base.py +5 -4
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/container_client.py +34 -16
- processforge-0.3.13/src/processforge/providers/festim_provider.py +925 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/openmc_provider.py +85 -41
- processforge-0.3.13/src/processforge/quantity.py +104 -0
- processforge-0.3.13/src/processforge/schemas/festim/festim_model.py +717 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/types.py +154 -23
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/__init__.py +3 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/solver_unit.py +9 -4
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/validate_flowsheet.py +31 -89
- {processforge-0.3.11 → processforge-0.3.13/src/processforge.egg-info}/PKG-INFO +2 -3
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge.egg-info/SOURCES.txt +10 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge.egg-info/requires.txt +1 -3
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_cli.py +5 -5
- processforge-0.3.13/tests/test_festim_provider.py +873 -0
- processforge-0.3.13/tests/test_festim_schema.py +341 -0
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_types.py +40 -21
- processforge-0.3.11/src/processforge/providers/festim_provider.py +0 -411
- processforge-0.3.11/tests/test_festim_provider.py +0 -596
- {processforge-0.3.11 → processforge-0.3.13}/LICENSE +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/MANIFEST.in +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/README.md +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/flowsheets/closed-loop-chain.json +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/flowsheets/hydraulic-chain.json +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/flowsheets/openmc/msre_eigenvalue.json +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/setup.cfg +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/__main__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/_schema.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/analysis/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/analysis/dof.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/api/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/diagram.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/display.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/export_fmu.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/export_modelica.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/init.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/plan.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/cli/validate.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/compose.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/backends/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/backends/base.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/backends/casadi_backend.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/backends/pyomo_backend.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/backends/scipy_backend.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/mixin.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/solver.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/stream_var.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/flash_eo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/heater_eo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/pipes_eo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/pump_eo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/strainer_eo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/eo/units/valve_eo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/fmu/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/fmu/_fmi_vars.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/fmu/builder.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/fmu/slave_template.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/lock.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/modelica/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/modelica/mo_writer.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/modelica/omc_runner.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/modelica/transpiler.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/modelica/unit_equations.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/pcl/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/pcl/compiler.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/pcl/namespace.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/provenance.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/base_jacobian_mixin.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/cantera_jacobian.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/cantera_provider.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/coolprop_provider.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/jacobian_contributor.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/manager.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/modelica_jacobian.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/modelica_provider.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/reference_state_registry.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/providers/registry.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/result.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/result_schema.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/schemas/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/schemas/flowsheet_schema.json +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/schemas/openmc/openmc_model.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/simulate.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/solver.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/state.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/thermo.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/base.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/cstr.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/flash.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/heater.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/pfr.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/pipes.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/pump.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/registry.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/strainer.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/tank.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/units/valve.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/__init__.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/flowsheet_diagram.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/mermaid_diagram.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/s3_upload.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/topology.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/unit_consistency.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge/utils/validation.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge.egg-info/dependency_links.txt +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge.egg-info/entry_points.txt +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/src/processforge.egg-info/top_level.txt +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_init.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_openmc_provider.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_providers.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_s3_upload.py +0 -0
- {processforge-0.3.11 → processforge-0.3.13}/tests/test_state.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: processforge
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.13
|
|
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
|
|
@@ -28,6 +28,7 @@ Requires-Dist: jsonschema>=4.20
|
|
|
28
28
|
Requires-Dist: graphviz>=0.20
|
|
29
29
|
Requires-Dist: pandas>=2.2
|
|
30
30
|
Requires-Dist: zarr>=3.0
|
|
31
|
+
Requires-Dist: pint<1.0,>=0.24
|
|
31
32
|
Requires-Dist: coolprop>=7.2.0
|
|
32
33
|
Requires-Dist: typer>=0.12
|
|
33
34
|
Provides-Extra: api
|
|
@@ -48,8 +49,6 @@ Provides-Extra: cantera
|
|
|
48
49
|
Requires-Dist: cantera>=3.0; extra == "cantera"
|
|
49
50
|
Provides-Extra: coolprop
|
|
50
51
|
Requires-Dist: coolprop>=6.6; extra == "coolprop"
|
|
51
|
-
Provides-Extra: pcl
|
|
52
|
-
Requires-Dist: pint>=0.24; extra == "pcl"
|
|
53
52
|
Provides-Extra: dev
|
|
54
53
|
Requires-Dist: pytest>=7.0; extra == "dev"
|
|
55
54
|
Requires-Dist: black; extra == "dev"
|
|
@@ -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
|
+
}
|
|
@@ -25,31 +25,30 @@
|
|
|
25
25
|
"festim_solver": {
|
|
26
26
|
"type": "SolverUnit",
|
|
27
27
|
"provider": "festim",
|
|
28
|
-
"sim_type": "
|
|
29
|
-
"mesh": {
|
|
30
|
-
"vertices": [0.0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01]
|
|
31
|
-
},
|
|
32
|
-
"species": [
|
|
33
|
-
{ "name": "H" }
|
|
34
|
-
],
|
|
35
|
-
"subdomains": {
|
|
36
|
-
"volume": [
|
|
37
|
-
{ "id": 1, "borders": [0.0, 0.01], "material": "default" }
|
|
38
|
-
],
|
|
39
|
-
"surface": [
|
|
40
|
-
{ "id": 2, "x": 0.0 },
|
|
41
|
-
{ "id": 3, "x": 0.01 }
|
|
42
|
-
]
|
|
43
|
-
},
|
|
44
|
-
"boundary_conditions": [
|
|
45
|
-
{ "type": "fixed_concentration", "subdomain_id": 2, "species": "H", "value": 1 },
|
|
46
|
-
{ "type": "fixed_concentration", "subdomain_id": 3, "species": "H", "value": 0 }
|
|
47
|
-
],
|
|
48
|
-
"exports": [
|
|
49
|
-
{ "type": "vtx_species", "field": "H", "filename": "hydrogen_concentration.bp", "times": "milestones" },
|
|
50
|
-
{ "type": "profile_1d", "field": "H", "volume_id": 1, "times": "milestones" }
|
|
51
|
-
],
|
|
28
|
+
"sim_type": "hydrogen_transport_tds",
|
|
52
29
|
"solver_config": {
|
|
30
|
+
"mesh": {
|
|
31
|
+
"vertices": [0.0, 0.001, 0.002, 0.003, 0.004, 0.005, 0.006, 0.007, 0.008, 0.009, 0.01]
|
|
32
|
+
},
|
|
33
|
+
"subdomains": {
|
|
34
|
+
"volume": [
|
|
35
|
+
{ "id": 1, "borders": [0.0, 0.01], "material": "default" }
|
|
36
|
+
],
|
|
37
|
+
"surface": [
|
|
38
|
+
{ "id": 2, "x": 0.0 },
|
|
39
|
+
{ "id": 3, "x": 0.01 }
|
|
40
|
+
]
|
|
41
|
+
},
|
|
42
|
+
"species": [
|
|
43
|
+
{ "name": "H", "mobile": true }
|
|
44
|
+
],
|
|
45
|
+
"boundary_conditions": [
|
|
46
|
+
{ "type": "fixed_concentration", "subdomain": 2, "species": "H", "value": 1 },
|
|
47
|
+
{ "type": "fixed_concentration", "subdomain": 3, "species": "H", "value": 0 }
|
|
48
|
+
],
|
|
49
|
+
"exports": [
|
|
50
|
+
{ "type": "profile_1d", "field": "H", "volume": 1, "times": [0.05, 0.1, 0.2, 0.5, 1] }
|
|
51
|
+
],
|
|
53
52
|
"atol": 1e-10,
|
|
54
53
|
"rtol": 1e-10,
|
|
55
54
|
"final_time": 2,
|
|
@@ -67,4 +66,4 @@
|
|
|
67
66
|
"simulation": {
|
|
68
67
|
"mode": "steady"
|
|
69
68
|
}
|
|
70
|
-
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
{
|
|
2
|
+
"metadata": {
|
|
3
|
+
"name": "FESTIM TDS — Tungsten Thermal Desorption",
|
|
4
|
+
"description": "Thermo-desorption spectra (TDS) for a tungsten sample. Gaussian implantation source (400 s), resting phase, then a temperature ramp from 300 K at 8 K/s to desorb trapped hydrogen. Two trapping sites modelled via implicit empty-trap species. Reproduces notebooks_task02.ipynb.py.",
|
|
5
|
+
"version": "1.0"
|
|
6
|
+
},
|
|
7
|
+
"providers": {
|
|
8
|
+
"festim": {
|
|
9
|
+
"type": "festim",
|
|
10
|
+
"url": "http://localhost:9002",
|
|
11
|
+
"output_dir": "festim"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"materials": {
|
|
15
|
+
"tungsten": {
|
|
16
|
+
"id": 1,
|
|
17
|
+
"extra": {
|
|
18
|
+
"D_0": 4.1e-7,
|
|
19
|
+
"E_D": 0.39
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
},
|
|
23
|
+
"streams": {},
|
|
24
|
+
"units": {
|
|
25
|
+
"tds_solver": {
|
|
26
|
+
"type": "SolverUnit",
|
|
27
|
+
"provider": "festim",
|
|
28
|
+
"sim_type": "hydrogen_transport_tds",
|
|
29
|
+
"solver_config": {
|
|
30
|
+
"mesh": {
|
|
31
|
+
"segments": [
|
|
32
|
+
{ "start": 0.0, "stop": 30e-9, "num": 200 },
|
|
33
|
+
{ "start": 30e-9, "stop": 3e-6, "num": 300 },
|
|
34
|
+
{ "start": 3e-6, "stop": 20e-6, "num": 200 }
|
|
35
|
+
]
|
|
36
|
+
},
|
|
37
|
+
"subdomains": {
|
|
38
|
+
"volume": [
|
|
39
|
+
{ "id": 1, "borders": [0.0, 20e-6], "material": "tungsten" }
|
|
40
|
+
],
|
|
41
|
+
"surface": [
|
|
42
|
+
{ "id": 1, "x": 0.0 },
|
|
43
|
+
{ "id": 2, "x": 20e-6 }
|
|
44
|
+
]
|
|
45
|
+
},
|
|
46
|
+
"species": [
|
|
47
|
+
{ "name": "H", "mobile": true },
|
|
48
|
+
{ "name": "trapped_H1", "mobile": false },
|
|
49
|
+
{ "name": "trapped_H2", "mobile": false }
|
|
50
|
+
],
|
|
51
|
+
"implicit_species": [
|
|
52
|
+
{ "name": "empty_trap1", "n": 135.99814960153805, "others": ["trapped_H1"] },
|
|
53
|
+
{ "name": "empty_trap2", "n": 41.84558449278094, "others": ["trapped_H2"] }
|
|
54
|
+
],
|
|
55
|
+
"reactions": [
|
|
56
|
+
{
|
|
57
|
+
"type": "arrhenius",
|
|
58
|
+
"reactant": ["H", "empty_trap1"],
|
|
59
|
+
"product": ["trapped_H1"],
|
|
60
|
+
"k_0": 53983071.22305305,
|
|
61
|
+
"E_k": 0.39,
|
|
62
|
+
"p_0": 1e13,
|
|
63
|
+
"E_p": 0.87,
|
|
64
|
+
"volume": 1
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
"type": "arrhenius",
|
|
68
|
+
"reactant": ["H", "empty_trap2"],
|
|
69
|
+
"product": ["trapped_H2"],
|
|
70
|
+
"k_0": 53983071.22305305,
|
|
71
|
+
"E_k": 0.39,
|
|
72
|
+
"p_0": 1e13,
|
|
73
|
+
"E_p": 1.0,
|
|
74
|
+
"volume": 1
|
|
75
|
+
}
|
|
76
|
+
],
|
|
77
|
+
"sources": [
|
|
78
|
+
{
|
|
79
|
+
"type": "particle",
|
|
80
|
+
"species": "H",
|
|
81
|
+
"volume": 1,
|
|
82
|
+
"value": {
|
|
83
|
+
"type": "gaussian",
|
|
84
|
+
"amplitude": 4.151347667934617e-05,
|
|
85
|
+
"center": 4.5e-9,
|
|
86
|
+
"width": 2.5e-9,
|
|
87
|
+
"active_until": 400
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
],
|
|
91
|
+
"boundary_conditions": [
|
|
92
|
+
{ "type": "fixed_concentration", "subdomain": 1, "species": "H", "value": 0 },
|
|
93
|
+
{ "type": "fixed_concentration", "subdomain": 2, "species": "H", "value": 0 }
|
|
94
|
+
],
|
|
95
|
+
"temperature": {
|
|
96
|
+
"type": "ramp",
|
|
97
|
+
"T0": 300,
|
|
98
|
+
"start_t": 450,
|
|
99
|
+
"ramp_rate": 8
|
|
100
|
+
},
|
|
101
|
+
"exports": [
|
|
102
|
+
{ "type": "surface_flux", "field": "H", "surface": 1, "filename": "flux_left.csv" },
|
|
103
|
+
{ "type": "surface_flux", "field": "H", "surface": 2, "filename": "flux_right.csv" },
|
|
104
|
+
{ "type": "total_volume", "field": "H", "volume": 1, "filename": "total_mobile_H.csv" },
|
|
105
|
+
{ "type": "total_volume", "field": "trapped_H1", "volume": 1, "filename": "total_trapped_H1.csv" },
|
|
106
|
+
{ "type": "total_volume", "field": "trapped_H2", "volume": 1, "filename": "total_trapped_H2.csv" },
|
|
107
|
+
{ "type": "profile_1d", "field": "H", "volume": 1, "times": [400, 450, 500] },
|
|
108
|
+
{ "type": "profile_1d", "field": "trapped_H1", "volume": 1, "times": [400, 450, 500] },
|
|
109
|
+
{ "type": "profile_1d", "field": "trapped_H2", "volume": 1, "times": [400, 450, 500] }
|
|
110
|
+
],
|
|
111
|
+
"atol": 1e-10,
|
|
112
|
+
"rtol": 1e-10,
|
|
113
|
+
"max_iterations": 30,
|
|
114
|
+
"transient": true,
|
|
115
|
+
"final_time": 500,
|
|
116
|
+
"element_degree": 1,
|
|
117
|
+
"stepsize": {
|
|
118
|
+
"initial_value": 0.5,
|
|
119
|
+
"growth_factor": 1.1,
|
|
120
|
+
"cutback_factor": 0.9,
|
|
121
|
+
"target_nb_iterations": 4,
|
|
122
|
+
"max_stepsize": {
|
|
123
|
+
"type": "after_t",
|
|
124
|
+
"after_t": 450,
|
|
125
|
+
"value": 0.5
|
|
126
|
+
},
|
|
127
|
+
"milestones": [400, 450, 500]
|
|
128
|
+
},
|
|
129
|
+
"convergence_criterion": "residual"
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
},
|
|
133
|
+
"simulation": {
|
|
134
|
+
"mode": "steady"
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "processforge"
|
|
7
|
-
version = "0.3.
|
|
7
|
+
version = "0.3.13"
|
|
8
8
|
description = "A Python-based process simulation framework for chemical engineering applications."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "BSD-3-Clause"
|
|
@@ -34,6 +34,7 @@ dependencies = [
|
|
|
34
34
|
"graphviz>=0.20",
|
|
35
35
|
"pandas>=2.2",
|
|
36
36
|
"zarr>=3.0",
|
|
37
|
+
"pint>=0.24,<1.0",
|
|
37
38
|
"coolprop>=7.2.0",
|
|
38
39
|
"typer>=0.12",
|
|
39
40
|
]
|
|
@@ -64,9 +65,6 @@ cantera = [
|
|
|
64
65
|
coolprop = [
|
|
65
66
|
"coolprop>=6.6",
|
|
66
67
|
]
|
|
67
|
-
pcl = [
|
|
68
|
-
"pint>=0.24",
|
|
69
|
-
]
|
|
70
68
|
dev = [
|
|
71
69
|
"pytest>=7.0",
|
|
72
70
|
"black",
|