exerpy 0.0.2__py3-none-any.whl → 0.0.3__py3-none-any.whl
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.
- exerpy/__init__.py +2 -4
- exerpy/analyses.py +597 -297
- exerpy/components/__init__.py +3 -0
- exerpy/components/combustion/base.py +53 -35
- exerpy/components/component.py +8 -8
- exerpy/components/heat_exchanger/base.py +186 -119
- exerpy/components/heat_exchanger/condenser.py +96 -60
- exerpy/components/heat_exchanger/simple.py +237 -137
- exerpy/components/heat_exchanger/steam_generator.py +46 -41
- exerpy/components/helpers/cycle_closer.py +61 -34
- exerpy/components/helpers/power_bus.py +117 -0
- exerpy/components/nodes/deaerator.py +176 -58
- exerpy/components/nodes/drum.py +50 -39
- exerpy/components/nodes/flash_tank.py +218 -43
- exerpy/components/nodes/mixer.py +249 -69
- exerpy/components/nodes/splitter.py +173 -0
- exerpy/components/nodes/storage.py +130 -0
- exerpy/components/piping/valve.py +311 -115
- exerpy/components/power_machines/generator.py +105 -38
- exerpy/components/power_machines/motor.py +111 -39
- exerpy/components/turbomachinery/compressor.py +181 -63
- exerpy/components/turbomachinery/pump.py +182 -63
- exerpy/components/turbomachinery/turbine.py +182 -74
- exerpy/functions.py +388 -263
- exerpy/parser/from_aspen/aspen_config.py +57 -48
- exerpy/parser/from_aspen/aspen_parser.py +373 -280
- exerpy/parser/from_ebsilon/__init__.py +2 -2
- exerpy/parser/from_ebsilon/check_ebs_path.py +15 -19
- exerpy/parser/from_ebsilon/ebsilon_config.py +328 -226
- exerpy/parser/from_ebsilon/ebsilon_functions.py +205 -38
- exerpy/parser/from_ebsilon/ebsilon_parser.py +392 -255
- exerpy/parser/from_ebsilon/utils.py +16 -11
- exerpy/parser/from_tespy/tespy_config.py +32 -1
- exerpy/parser/from_tespy/tespy_parser.py +151 -0
- {exerpy-0.0.2.dist-info → exerpy-0.0.3.dist-info}/METADATA +43 -2
- exerpy-0.0.3.dist-info/RECORD +48 -0
- exerpy-0.0.2.dist-info/RECORD +0 -44
- {exerpy-0.0.2.dist-info → exerpy-0.0.3.dist-info}/WHEEL +0 -0
- {exerpy-0.0.2.dist-info → exerpy-0.0.3.dist-info}/licenses/LICENSE +0 -0
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
import functools
|
|
2
|
-
from
|
|
3
|
-
from typing import
|
|
4
|
-
from typing import TypeVar
|
|
5
|
-
from typing import cast
|
|
2
|
+
from collections.abc import Callable
|
|
3
|
+
from typing import Any, TypeVar, cast
|
|
6
4
|
|
|
7
5
|
from exerpy.parser.from_ebsilon import __ebsilon_available__
|
|
8
6
|
|
|
9
7
|
# Type variable for the decorated function
|
|
10
|
-
F = TypeVar(
|
|
8
|
+
F = TypeVar("F", bound=Callable[..., Any])
|
|
9
|
+
|
|
11
10
|
|
|
12
11
|
def require_ebsilon(func: F) -> F:
|
|
13
12
|
"""
|
|
14
13
|
Decorator to ensure that Ebsilon functionality is available.
|
|
15
|
-
|
|
14
|
+
|
|
16
15
|
Args:
|
|
17
16
|
func: The function that requires Ebsilon functionality
|
|
18
|
-
|
|
17
|
+
|
|
19
18
|
Returns:
|
|
20
19
|
The wrapped function that checks for Ebsilon availability
|
|
21
|
-
|
|
20
|
+
|
|
22
21
|
Raises:
|
|
23
22
|
RuntimeError: If Ebsilon functionality is not available
|
|
24
23
|
"""
|
|
24
|
+
|
|
25
25
|
@functools.wraps(func)
|
|
26
26
|
def wrapper(*args: Any, **kwargs: Any) -> Any:
|
|
27
27
|
if not __ebsilon_available__:
|
|
@@ -32,20 +32,21 @@ def require_ebsilon(func: F) -> F:
|
|
|
32
32
|
)
|
|
33
33
|
raise RuntimeError(error_msg)
|
|
34
34
|
return func(*args, **kwargs)
|
|
35
|
-
|
|
35
|
+
|
|
36
36
|
return cast(F, wrapper)
|
|
37
37
|
|
|
38
38
|
|
|
39
39
|
# Stub classes for when Ebsilon isn't available
|
|
40
40
|
class EpSubstanceStub:
|
|
41
41
|
"""Stub class for EpSubstance when Ebsilon is not available."""
|
|
42
|
+
|
|
42
43
|
epSubstanceN2 = 0
|
|
43
44
|
epSubstanceO2 = 1
|
|
44
45
|
epSubstanceCO2 = 2
|
|
45
46
|
epSubstanceH2O = 3
|
|
46
47
|
epSubstanceAR = 4
|
|
47
48
|
# Add other substance constants as needed with placeholder values
|
|
48
|
-
|
|
49
|
+
|
|
49
50
|
@staticmethod
|
|
50
51
|
def get_substance_name(substance_id: int) -> str:
|
|
51
52
|
"""Return placeholder substance name for the given ID."""
|
|
@@ -54,6 +55,7 @@ class EpSubstanceStub:
|
|
|
54
55
|
|
|
55
56
|
class EpFluidTypeStub:
|
|
56
57
|
"""Stub class for EpFluidType when Ebsilon is not available."""
|
|
58
|
+
|
|
57
59
|
epFluidTypeNONE = 0
|
|
58
60
|
epFluidTypeAir = 1
|
|
59
61
|
epFluidTypeFluegas = 2
|
|
@@ -64,16 +66,19 @@ class EpFluidTypeStub:
|
|
|
64
66
|
|
|
65
67
|
class EpSteamTableStub:
|
|
66
68
|
"""Stub class for EpSteamTable when Ebsilon is not available."""
|
|
69
|
+
|
|
67
70
|
epSteamTableFromSuperiorModel = 0
|
|
68
71
|
|
|
69
72
|
|
|
70
73
|
class EpGasTableStub:
|
|
71
74
|
"""Stub class for EpGasTable when Ebsilon is not available."""
|
|
75
|
+
|
|
72
76
|
epGasTableFromSuperiorModel = 0
|
|
73
77
|
|
|
74
78
|
|
|
75
79
|
class EpCalculationResultStatus2Stub:
|
|
76
80
|
"""Stub class for EpCalculationResultStatus2 when Ebsilon is not available."""
|
|
81
|
+
|
|
77
82
|
epCalculationResultStatus2OK = 0
|
|
78
83
|
epCalculationResultStatus2Warning = 1
|
|
79
|
-
epCalculationResultStatus2Error = 2
|
|
84
|
+
epCalculationResultStatus2Error = 2
|
|
@@ -3,7 +3,6 @@ EXERPY_TESPY_MAPPINGS = {
|
|
|
3
3
|
"HeatExchanger": "HeatExchanger",
|
|
4
4
|
"MovingBoundaryHeatExchanger": "HeatExchanger",
|
|
5
5
|
"Desuperheater": "HeatExchanger",
|
|
6
|
-
"MovingBoundaryHeatExchanger": "HeatExchanger",
|
|
7
6
|
"Condenser": "Condenser",
|
|
8
7
|
"SimpleHeatExchanger": "SimpleHeatExchanger",
|
|
9
8
|
"ParabolicTrough": "SimpleHeatExchanger",
|
|
@@ -20,4 +19,36 @@ EXERPY_TESPY_MAPPINGS = {
|
|
|
20
19
|
"Motor": "Motor",
|
|
21
20
|
"Drum": "Drum",
|
|
22
21
|
"CycleCloser": "CycleCloser",
|
|
22
|
+
"Splitter": "Splitter",
|
|
23
|
+
"DropletSeparator": "FlashTank",
|
|
24
|
+
"PowerBus": "PowerBus",
|
|
23
25
|
}
|
|
26
|
+
"""
|
|
27
|
+
This is the mapping of component groups to their name in TESPy:
|
|
28
|
+
|
|
29
|
+
- "SteamTurbine": "Turbine",
|
|
30
|
+
- "HeatExchanger": "HeatExchanger",
|
|
31
|
+
- "MovingBoundaryHeatExchanger": "HeatExchanger",
|
|
32
|
+
- "Desuperheater": "HeatExchanger",
|
|
33
|
+
- "MovingBoundaryHeatExchanger": "HeatExchanger",
|
|
34
|
+
- "Condenser": "Condenser",
|
|
35
|
+
- "SimpleHeatExchanger": "SimpleHeatExchanger",
|
|
36
|
+
- "ParabolicTrough": "SimpleHeatExchanger",
|
|
37
|
+
- "Pipe": "SimpleHeatExchanger",
|
|
38
|
+
- "SolarCollector": "SimpleHeatExchanger",
|
|
39
|
+
- "CombustionChamber": "CombustionChamber",
|
|
40
|
+
- "DiabaticCombustionChamber": "CombustionChamber",
|
|
41
|
+
- "Valve": "Valve",
|
|
42
|
+
- "Compressor": "Compressor",
|
|
43
|
+
- "Pump": "Pump",
|
|
44
|
+
- "Turbine": "Turbine",
|
|
45
|
+
- "Merge": "Mixer",
|
|
46
|
+
- "Generator": "Generator",
|
|
47
|
+
- "Motor": "Motor",
|
|
48
|
+
- "Drum": "Drum",
|
|
49
|
+
- "CycleCloser": "CycleCloser",
|
|
50
|
+
- "Splitter": "Splitter",
|
|
51
|
+
- "DropletSeparator": "FlashTank",
|
|
52
|
+
- "PowerBus": "PowerBus",
|
|
53
|
+
|
|
54
|
+
"""
|
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
from tespy.connections import Connection, PowerConnection
|
|
2
|
+
from tespy.networks import Network
|
|
3
|
+
|
|
4
|
+
from exerpy.parser.from_tespy.tespy_config import EXERPY_TESPY_MAPPINGS
|
|
5
|
+
|
|
6
|
+
|
|
7
|
+
def to_exerpy(nw: Network, Tamb: float, pamb: float) -> dict:
|
|
8
|
+
"""Export the network to exerpy
|
|
9
|
+
|
|
10
|
+
Parameters
|
|
11
|
+
----------
|
|
12
|
+
nw : tespy.networks.network.Network
|
|
13
|
+
Network to ber parsed
|
|
14
|
+
Tamb : float
|
|
15
|
+
Ambient temperature.
|
|
16
|
+
pamb : float
|
|
17
|
+
Ambient pressure.
|
|
18
|
+
|
|
19
|
+
Returns
|
|
20
|
+
-------
|
|
21
|
+
dict
|
|
22
|
+
exerpy compatible input dictionary
|
|
23
|
+
"""
|
|
24
|
+
component_results = nw._save_components()
|
|
25
|
+
component_json = {}
|
|
26
|
+
for comp_type in nw.comps["comp_type"].unique():
|
|
27
|
+
if comp_type not in EXERPY_TESPY_MAPPINGS:
|
|
28
|
+
continue
|
|
29
|
+
|
|
30
|
+
key = EXERPY_TESPY_MAPPINGS[comp_type]
|
|
31
|
+
if key not in component_json:
|
|
32
|
+
component_json[key] = {}
|
|
33
|
+
|
|
34
|
+
result = component_results[comp_type].dropna(axis=1)
|
|
35
|
+
|
|
36
|
+
for c in nw.comps.loc[nw.comps["comp_type"] == comp_type, "object"]:
|
|
37
|
+
parameters = {}
|
|
38
|
+
if c.label in result.index and not result.loc[c.label].dropna().empty:
|
|
39
|
+
parameters = result.loc[c.label].dropna().to_dict()
|
|
40
|
+
component_json[key][c.label] = {"name": c.label, "type": comp_type, "parameters": parameters}
|
|
41
|
+
|
|
42
|
+
connection_json = {}
|
|
43
|
+
for c in nw.conns["object"]:
|
|
44
|
+
if isinstance(c, Connection):
|
|
45
|
+
connection_json.update(_connection_to_exerpy(c, pamb, Tamb))
|
|
46
|
+
else:
|
|
47
|
+
connection_json.update(_powerconnection_to_exerpy(c, pamb, Tamb))
|
|
48
|
+
|
|
49
|
+
return {
|
|
50
|
+
"components": component_json,
|
|
51
|
+
"connections": connection_json,
|
|
52
|
+
"ambient_conditions": {"Tamb": Tamb, "Tamb_unit": "K", "pamb": pamb, "pamb_unit": "Pa"},
|
|
53
|
+
}
|
|
54
|
+
|
|
55
|
+
|
|
56
|
+
def _connection_to_exerpy(c: Connection, pamb: float, Tamb: float) -> dict:
|
|
57
|
+
"""Serialize a tespy Connection to exerpy
|
|
58
|
+
|
|
59
|
+
Parameters
|
|
60
|
+
----------
|
|
61
|
+
c : tespy.connections.connection.Connection
|
|
62
|
+
Connection object
|
|
63
|
+
Tamb : float
|
|
64
|
+
Ambient temperature.
|
|
65
|
+
pamb : float
|
|
66
|
+
Ambient pressure.
|
|
67
|
+
|
|
68
|
+
Returns
|
|
69
|
+
-------
|
|
70
|
+
dict
|
|
71
|
+
Serialization of connection data
|
|
72
|
+
"""
|
|
73
|
+
connection_json = {}
|
|
74
|
+
|
|
75
|
+
c._get_physical_exergy(pamb, Tamb)
|
|
76
|
+
|
|
77
|
+
connection_json[c.label] = {
|
|
78
|
+
"source_component": c.source.label,
|
|
79
|
+
"source_connector": int(c.source_id.removeprefix("out")) - 1,
|
|
80
|
+
"target_component": c.target.label,
|
|
81
|
+
"target_connector": int(c.target_id.removeprefix("in")) - 1,
|
|
82
|
+
}
|
|
83
|
+
connection_json[c.label].update({"mass_composition": c.fluid.val})
|
|
84
|
+
connection_json[c.label].update({"kind": "material"})
|
|
85
|
+
for param in ["m", "T", "p", "h", "s", "v"]:
|
|
86
|
+
connection_json[c.label].update({param: c.get_attr(param).val_SI})
|
|
87
|
+
connection_json[c.label].update({"e_T": c.ex_therm, "e_M": c.ex_mech, "e_PH": c.ex_physical})
|
|
88
|
+
|
|
89
|
+
return connection_json
|
|
90
|
+
|
|
91
|
+
|
|
92
|
+
def _powerconnection_to_exerpy(c: PowerConnection, pamb: float, Tamb: float) -> dict:
|
|
93
|
+
"""Serialize a tespy PowerConnection to exerpy
|
|
94
|
+
|
|
95
|
+
Parameters
|
|
96
|
+
----------
|
|
97
|
+
c : tespy.connections.powerconnection.PowerConnection
|
|
98
|
+
Connection object
|
|
99
|
+
Tamb : float
|
|
100
|
+
Ambient temperature.
|
|
101
|
+
pamb : float
|
|
102
|
+
Ambient pressure.
|
|
103
|
+
|
|
104
|
+
Returns
|
|
105
|
+
-------
|
|
106
|
+
dict
|
|
107
|
+
Serialization of connection data
|
|
108
|
+
"""
|
|
109
|
+
connection_json = {}
|
|
110
|
+
|
|
111
|
+
if c.source.__class__.__name__ in ["Motor", "Generator"]:
|
|
112
|
+
source_connector = 0
|
|
113
|
+
elif c.source.__class__.__name__ in ["Turbine"] or c.source.__class__.__name__ in ["SimpleHeatExchanger"]:
|
|
114
|
+
source_connector = 1
|
|
115
|
+
elif c.source.__class__.__name__ in ["PowerBus"]:
|
|
116
|
+
if c.source_id.startswith("power_out"):
|
|
117
|
+
s_id = c.source_id.removeprefix("power_out")
|
|
118
|
+
source_connector = 0 if s_id == "" else int(s_id) - 1
|
|
119
|
+
elif c.source_id.startswith("power_in"):
|
|
120
|
+
s_id = c.source_id.removeprefix("power_in")
|
|
121
|
+
source_connector = 0 if s_id == "" else int(s_id) - 1
|
|
122
|
+
else:
|
|
123
|
+
source_connector = 999
|
|
124
|
+
|
|
125
|
+
if c.target.__class__.__name__ in ["Motor", "Generator"]:
|
|
126
|
+
target_connector = 0
|
|
127
|
+
elif c.target.__class__.__name__ in ["Compressor", "Pump"] or c.target.__class__.__name__ in [
|
|
128
|
+
"SimpleHeatExchanger"
|
|
129
|
+
]:
|
|
130
|
+
target_connector = 1
|
|
131
|
+
elif c.target.__class__.__name__ in ["PowerBus"]:
|
|
132
|
+
if c.target_id.startswith("power_in"):
|
|
133
|
+
t_id = c.target_id.removeprefix("power_in")
|
|
134
|
+
target_connector = 0 if t_id == "" else int(t_id) - 1
|
|
135
|
+
elif c.target_id.startswith("power_out"):
|
|
136
|
+
t_id = c.target_id.removeprefix("power_out")
|
|
137
|
+
target_connector = 0 if t_id == "" else int(t_id) - 1
|
|
138
|
+
else:
|
|
139
|
+
target_connector = 999
|
|
140
|
+
|
|
141
|
+
connection_json[c.label] = {
|
|
142
|
+
"source_component": c.source.label,
|
|
143
|
+
"source_connector": source_connector,
|
|
144
|
+
"target_component": c.target.label,
|
|
145
|
+
"target_connector": target_connector,
|
|
146
|
+
}
|
|
147
|
+
kind = "heat" if c.source_id == "heat" or c.target_id == "heat" else "power"
|
|
148
|
+
|
|
149
|
+
connection_json[c.label].update({"kind": kind, "energy_flow": c.E.val_SI})
|
|
150
|
+
|
|
151
|
+
return connection_json
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: exerpy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.3
|
|
4
4
|
Summary: Exergy analysis for tabular input data
|
|
5
5
|
Author-email: Sergio Tomasinelli <s.tomasinelli@tu-berlin.de>, Robert Müller <robert.mueller.2@tu-berlin.de>, Francesco Witte <github@witte.sh>
|
|
6
6
|
Requires-Python: >=3.10
|
|
@@ -35,6 +35,8 @@ Requires-Dist: sphinx-design ; extra == "dev"
|
|
|
35
35
|
Requires-Dist: sphinxcontrib.bibtex ; extra == "dev"
|
|
36
36
|
Requires-Dist: tespy>=0.9 ; extra == "dev"
|
|
37
37
|
Requires-Dist: tox ; extra == "dev"
|
|
38
|
+
Requires-Dist: black>=24.10.0 ; extra == "dev"
|
|
39
|
+
Requires-Dist: ruff>=0.6.9 ; extra == "dev"
|
|
38
40
|
Requires-Dist: pywin32 ; extra == "ebsilon"
|
|
39
41
|
Requires-Dist: tespy>=0.9 ; extra == "tespy"
|
|
40
42
|
Project-URL: Changelog, https://exerpy.readthedocs.io/en/latest/whats_new.html
|
|
@@ -95,6 +97,45 @@ Quick Start Example
|
|
|
95
97
|
===================
|
|
96
98
|
Here's a simple example how to perform an exergy analysis using ExerPy:
|
|
97
99
|
|
|
100
|
+
Custom json
|
|
101
|
+
-----------
|
|
102
|
+
|
|
103
|
+
.. code:: python
|
|
104
|
+
|
|
105
|
+
from exerpy import ExergyAnalysis
|
|
106
|
+
|
|
107
|
+
model_path = 'my_model.json'
|
|
108
|
+
|
|
109
|
+
ean = ExergyAnalysis.from_json(model_path, chemExLib='Ahrendts')
|
|
110
|
+
|
|
111
|
+
fuel = {"inputs": ['Fuel'], "outputs": []}
|
|
112
|
+
product = {"inputs": ['Power'], "outputs": []}
|
|
113
|
+
|
|
114
|
+
ean.analyse(E_F=fuel, E_P=product)
|
|
115
|
+
ean.exergy_results()
|
|
116
|
+
|
|
117
|
+
Exported tespy model
|
|
118
|
+
--------------------
|
|
119
|
+
|
|
120
|
+
.. code:: python
|
|
121
|
+
|
|
122
|
+
from exerpy import ExergyAnalysis
|
|
123
|
+
|
|
124
|
+
model_path = 'tespy_model_export.json'
|
|
125
|
+
|
|
126
|
+
ean = ExergyAnalysis.from_tespy(model_path, chemExLib='Ahrendts')
|
|
127
|
+
|
|
128
|
+
fuel = {"inputs": ['Fuel'], "outputs": []}
|
|
129
|
+
product = {"inputs": ['Power'], "outputs": []}
|
|
130
|
+
|
|
131
|
+
ean.analyse(E_F=fuel, E_P=product)
|
|
132
|
+
ean.exergy_results()
|
|
133
|
+
|
|
134
|
+
You can also use a tespy network object instead!
|
|
135
|
+
|
|
136
|
+
Ebsilon model
|
|
137
|
+
-------------
|
|
138
|
+
|
|
98
139
|
.. code:: python
|
|
99
140
|
|
|
100
141
|
from exerpy import ExergyAnalysis
|
|
@@ -126,7 +167,7 @@ ongoing development. You can cite ExerPy using the following BibTeX entry:
|
|
|
126
167
|
title = {{ExerPy}: Exergy Analysis in Python},
|
|
127
168
|
note = {Supervision: Prof. Dr.-Ing. Fontina Petrakopoulou}
|
|
128
169
|
url = {https://github.com/oemof/exerpy},
|
|
129
|
-
version = {0.0.
|
|
170
|
+
version = {0.0.3},
|
|
130
171
|
year = {2025}
|
|
131
172
|
}
|
|
132
173
|
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
exerpy/__init__.py,sha256=UMZ5Cn7LQQ4A5F2Bc_jphc6UM0lCwvi_NO8fGo517dg,236
|
|
2
|
+
exerpy/analyses.py,sha256=uyqpTyx0WFXkd-w0m7rHixIDrYO1hSANagm-HKNuafg,91185
|
|
3
|
+
exerpy/functions.py,sha256=o510OaxpUaPDvRWTnrTBfaV2kC4BZG7UjF1U_FjN1wQ,32292
|
|
4
|
+
exerpy/components/__init__.py,sha256=hpaqxDL9DDACmQCkwxV5HgjzGYRNGP3-J78kxhwaaY8,824
|
|
5
|
+
exerpy/components/component.py,sha256=NVvLSyIbcOoXwoFGRgOYAINX-8BpCA-7lKWvhHPQGQs,4036
|
|
6
|
+
exerpy/components/combustion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
+
exerpy/components/combustion/base.py,sha256=Rs99qbCs3E4umpVk2NEPOid-6i5HU6ytAQQvAsK9zxw,11936
|
|
8
|
+
exerpy/components/heat_exchanger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
+
exerpy/components/heat_exchanger/base.py,sha256=_Acgk6y1sQd1ftl8BCksvmsQiSr6je56rX3gr3qpnL8,34339
|
|
10
|
+
exerpy/components/heat_exchanger/condenser.py,sha256=d28xrQ001o1TJYw4ivQQwKaBrAQ9aBLd9P7G4XlbKec,22436
|
|
11
|
+
exerpy/components/heat_exchanger/simple.py,sha256=A7JCi4flIp556KL6uGNB1xpB47tpf77sWLT63PGUnXo,25412
|
|
12
|
+
exerpy/components/heat_exchanger/steam_generator.py,sha256=9s0YlFbN6RhqQoI8ZMYhOFApc-U8ceE_9ecTJ5XQ9uc,12373
|
|
13
|
+
exerpy/components/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
+
exerpy/components/helpers/cycle_closer.py,sha256=ffMEo74ua7LGH8QgLR7vqWTg0UlZ8OXl3xQloedSXFs,4938
|
|
15
|
+
exerpy/components/helpers/power_bus.py,sha256=tMVCtn6gj18qG7mnZX2IEwK3Fuq6ghZugK94hIJH5_s,4398
|
|
16
|
+
exerpy/components/nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
17
|
+
exerpy/components/nodes/deaerator.py,sha256=RRxpfx0sGHVG6mPyfxijn2X1gOp3V57O8p36DdfsNpk,18115
|
|
18
|
+
exerpy/components/nodes/drum.py,sha256=1dMxgBnW16jm2VEdD6DOuw0yq4ISVVO3eFhdRSB7TTw,8063
|
|
19
|
+
exerpy/components/nodes/flash_tank.py,sha256=_UlKMT1VyIH3iI-zg4ip8DTqLo8SLZNuB61HLizIoXA,10543
|
|
20
|
+
exerpy/components/nodes/mixer.py,sha256=xhX7Rp_eEazWLT4-OPE0wKjiik0wSBM-J-B2G8Vqnuw,20932
|
|
21
|
+
exerpy/components/nodes/splitter.py,sha256=mH8n14TSYA7DvboJhYGX9KxbAR2M73gGVfMcsFA46io,6582
|
|
22
|
+
exerpy/components/nodes/storage.py,sha256=AMOf8heGe2NKQVaodC4aqqf8kCWoG4KK_B1HKzon6yU,4837
|
|
23
|
+
exerpy/components/piping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
24
|
+
exerpy/components/piping/valve.py,sha256=DfwZi5MuSyb42otFh2y_AAIx_v-0tJnqmoFrmHlzeZM,25470
|
|
25
|
+
exerpy/components/power_machines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
+
exerpy/components/power_machines/generator.py,sha256=w5d5-iEg7rZ287q2z0wDb4NZGvSufThnRAEE-IEWoII,8454
|
|
27
|
+
exerpy/components/power_machines/motor.py,sha256=wHPD33KeqgmqE6A0EWQAqYn3L7-WppVVZdD1U47_XUc,8890
|
|
28
|
+
exerpy/components/turbomachinery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
29
|
+
exerpy/components/turbomachinery/compressor.py,sha256=R5SU41XEMXwnE7XEpZP2lAX2h8MaW5G0WQ6mTJQUvVI,17806
|
|
30
|
+
exerpy/components/turbomachinery/pump.py,sha256=T7Tbqe2Jq51ObhgCFsoXUQuLZobL4-8ZKdX8Cpf2cJI,17211
|
|
31
|
+
exerpy/components/turbomachinery/turbine.py,sha256=u7MB_eFUId6ZbPHE9AJabLxroKWTNZUluPjvnWvRZgo,19364
|
|
32
|
+
exerpy/data/Ahrendts.json,sha256=Wy7iSBW2u9V_RSjI9nAAfqC9aMo2owNKnyf5ZRLxa0c,9263
|
|
33
|
+
exerpy/parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
34
|
+
exerpy/parser/from_aspen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
35
|
+
exerpy/parser/from_aspen/aspen_config.py,sha256=RK7LIY9HgSEj1z4FPdSwx6ma76z9YxmwqjVSr6ynSOE,2082
|
|
36
|
+
exerpy/parser/from_aspen/aspen_parser.py,sha256=TmpGVJbGnG1A6xWESrb6xIU2DTR77UJnVU9ISsj4O5o,42088
|
|
37
|
+
exerpy/parser/from_ebsilon/__init__.py,sha256=h1SgYi2Ffg2f3gkaGSLxj06aqRFgs8FHvNEwsNhJES4,1084
|
|
38
|
+
exerpy/parser/from_ebsilon/check_ebs_path.py,sha256=nW3VElt-QT7-T2nzep4bbmDfcu43hQkSLjT3v20lIAw,2462
|
|
39
|
+
exerpy/parser/from_ebsilon/ebsilon_config.py,sha256=fboACZbs2-ZBlJmOBvmic2oBbU6Wm2AGk6t9qGtuTLc,40175
|
|
40
|
+
exerpy/parser/from_ebsilon/ebsilon_functions.py,sha256=ffX_i5D9wsa12st_8mwJUYA9EZlAaAPR_lTHNj6FS8E,12536
|
|
41
|
+
exerpy/parser/from_ebsilon/ebsilon_parser.py,sha256=5memFmn6bvKXi3Q6DhpgLY7EXzF-rSrwJoyX3abw65M,37673
|
|
42
|
+
exerpy/parser/from_ebsilon/utils.py,sha256=45u2NuiKe8T0Xg6wscBSkfGjR3yunweNruO5zMAwrg0,2469
|
|
43
|
+
exerpy/parser/from_tespy/tespy_config.py,sha256=Ld0oH_l1F6hIPpMjmlaCjOOB4L44GTaZ2DkqFysHUBE,1828
|
|
44
|
+
exerpy/parser/from_tespy/tespy_parser.py,sha256=xo50zXh-a5QmqN1KP4vusxyCHtgzSnMHrsjzFr70ZEs,5227
|
|
45
|
+
exerpy-0.0.3.dist-info/licenses/LICENSE,sha256=AZCjT0DYrLExG_BV3UJnoFG1z3CACPxBk-rgcm1as8s,1091
|
|
46
|
+
exerpy-0.0.3.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
47
|
+
exerpy-0.0.3.dist-info/METADATA,sha256=Z1PXdyY5euasskx7tfsajIgLWYkKnbU9zIvY9tONpB8,7028
|
|
48
|
+
exerpy-0.0.3.dist-info/RECORD,,
|
exerpy-0.0.2.dist-info/RECORD
DELETED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
exerpy/__init__.py,sha256=-V_fDHpG3yIijO2UXXHY_EL8DLYGyQaagwWKrtM8hMY,280
|
|
2
|
-
exerpy/analyses.py,sha256=IXAtiJhVutig1PXIzPaxtL8BzetM4oDTmsvwYBQ_XA0,79098
|
|
3
|
-
exerpy/functions.py,sha256=STNgo7YyT0pZWSVOO0iJb_7Wh9qecNaujJF2eC6Jv7E,30142
|
|
4
|
-
exerpy/components/__init__.py,sha256=KbYJVGaQMlV1KqmQNOYLHa9cN1V9RicclwHPL3VieXU,709
|
|
5
|
-
exerpy/components/component.py,sha256=oWaE8WZ5t_RWlRjtPmgfzAxMO5UVDC3SlX9JPjBQ9hI,3899
|
|
6
|
-
exerpy/components/combustion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
7
|
-
exerpy/components/combustion/base.py,sha256=lclTpFEVQFOEQKFsTqsDrN_dWfF-6PyKpkJzwu2KbmU,11319
|
|
8
|
-
exerpy/components/heat_exchanger/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
9
|
-
exerpy/components/heat_exchanger/base.py,sha256=UwXq3ACnjVktU4zkHO_ng9kHaG96AQMMfKDOPu4QdTM,32371
|
|
10
|
-
exerpy/components/heat_exchanger/condenser.py,sha256=AKVzwK8NzQ4zX1Vr6Z9Z6aw7dfcXd0Jk4QQEYmZoY0E,21000
|
|
11
|
-
exerpy/components/heat_exchanger/simple.py,sha256=Q5gL3ye12HpypdncE3gYoqd1EnVKny-cT2-zAsIhags,20869
|
|
12
|
-
exerpy/components/heat_exchanger/steam_generator.py,sha256=psoTFHcQnIDHyKX2vnCBWPd6fMIAaGN5-prtvNQ7z_0,12347
|
|
13
|
-
exerpy/components/helpers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
14
|
-
exerpy/components/helpers/cycle_closer.py,sha256=FY4K-HzNIfd3HiiPluoFDFcv-HD1rNdXdqfVZZ0cnzE,3898
|
|
15
|
-
exerpy/components/nodes/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
16
|
-
exerpy/components/nodes/deaerator.py,sha256=XHWwG-D3VcCnIKFCiYtc0LrHbotTXsLxtxI_d3wzV4k,13753
|
|
17
|
-
exerpy/components/nodes/drum.py,sha256=VQHWDPICVI7zlqSO0n7V8dHGOTycZGs-5FVZASIPwFQ,7557
|
|
18
|
-
exerpy/components/nodes/flash_tank.py,sha256=y1e5hp8w_HcAo5IX_nsPleRcU0OcnRd55mScXUhtdR0,3582
|
|
19
|
-
exerpy/components/nodes/mixer.py,sha256=vCpCh-ORgnzAnF3LSG4UuCEadaCZU2Zeg-fkXJrL7gs,14432
|
|
20
|
-
exerpy/components/piping/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
21
|
-
exerpy/components/piping/valve.py,sha256=FM9f7PPWsDzWvX9lDFbDjYyQDlBssdMwNfe_R41zyOQ,17668
|
|
22
|
-
exerpy/components/power_machines/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
23
|
-
exerpy/components/power_machines/generator.py,sha256=fmCs0jzsPqG26fvR1N9DV38T-032RwEIgnXAj1rXmVg,6227
|
|
24
|
-
exerpy/components/power_machines/motor.py,sha256=_K73bN0tjD6kz1fvUU9rWI8yAHsQqI9GHwyRYCDGWHg,6306
|
|
25
|
-
exerpy/components/turbomachinery/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
26
|
-
exerpy/components/turbomachinery/compressor.py,sha256=HmQdUaYN3rxoq7-GxqomCHWCHnthS7We748I0wMkcPs,14074
|
|
27
|
-
exerpy/components/turbomachinery/pump.py,sha256=t5ZrolL0gU5K6uTeQFrSqmM9qahCSR-h7W1lfnIrK6w,13469
|
|
28
|
-
exerpy/components/turbomachinery/turbine.py,sha256=K7NThlNAvKSjvFl_RVMlOuYdzd0uiVaX7ErVrNYoNvE,15667
|
|
29
|
-
exerpy/data/Ahrendts.json,sha256=Wy7iSBW2u9V_RSjI9nAAfqC9aMo2owNKnyf5ZRLxa0c,9263
|
|
30
|
-
exerpy/parser/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
31
|
-
exerpy/parser/from_aspen/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
32
|
-
exerpy/parser/from_aspen/aspen_config.py,sha256=GkRJ7AZlglalPWXlbjM5eICLRG8CQuXOhF88zYzNAWM,1749
|
|
33
|
-
exerpy/parser/from_aspen/aspen_parser.py,sha256=QOrVIFeLBX8yvsoKUugDRjCYSxht2dKcpkSsZqXqLRc,38811
|
|
34
|
-
exerpy/parser/from_ebsilon/__init__.py,sha256=rzTkkko93YomWo0EYDnaPP5f7wITorcr5pztPwu54AI,1086
|
|
35
|
-
exerpy/parser/from_ebsilon/check_ebs_path.py,sha256=Ad49eggah8LQkn1hQrHjC_MAgeXkAlVd-YPrC2lpOpo,2618
|
|
36
|
-
exerpy/parser/from_ebsilon/ebsilon_config.py,sha256=VSSctCfzcDaThWUY3g0iWTnmQ9ymeWPvhJ8en-5Ly2k,39512
|
|
37
|
-
exerpy/parser/from_ebsilon/ebsilon_functions.py,sha256=mY25RPnKJHvBBsqOI87JU7DH-EttdGdAy-eOVqqdd0U,6557
|
|
38
|
-
exerpy/parser/from_ebsilon/ebsilon_parser.py,sha256=AFfoBiKDTvWRa8hr9ViqmtCIog4QUQZwtYZDnA_tNlQ,31209
|
|
39
|
-
exerpy/parser/from_ebsilon/utils.py,sha256=HB3PyzSN_UqgiScY_Cr4gOPOJdcAjL6hJmgQl4P8-fg,2510
|
|
40
|
-
exerpy/parser/from_tespy/tespy_config.py,sha256=_e8YwJNKAw0O5WRpO92GtVhj-PNziAoYluoOurwI9zs,796
|
|
41
|
-
exerpy-0.0.2.dist-info/licenses/LICENSE,sha256=AZCjT0DYrLExG_BV3UJnoFG1z3CACPxBk-rgcm1as8s,1091
|
|
42
|
-
exerpy-0.0.2.dist-info/WHEEL,sha256=G2gURzTEtmeR8nrdXUJfNiB3VYVxigPQ-bEQujpNiNs,82
|
|
43
|
-
exerpy-0.0.2.dist-info/METADATA,sha256=ccwrUjtGcM-5-m5WtgerFeDc_FNCBx0Z50OsK1pLTcg,6129
|
|
44
|
-
exerpy-0.0.2.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|