exerpy 0.0.1__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.
Files changed (44) hide show
  1. exerpy/__init__.py +12 -0
  2. exerpy/analyses.py +1711 -0
  3. exerpy/components/__init__.py +16 -0
  4. exerpy/components/combustion/__init__.py +0 -0
  5. exerpy/components/combustion/base.py +248 -0
  6. exerpy/components/component.py +126 -0
  7. exerpy/components/heat_exchanger/__init__.py +0 -0
  8. exerpy/components/heat_exchanger/base.py +449 -0
  9. exerpy/components/heat_exchanger/condenser.py +323 -0
  10. exerpy/components/heat_exchanger/simple.py +358 -0
  11. exerpy/components/heat_exchanger/steam_generator.py +264 -0
  12. exerpy/components/helpers/__init__.py +0 -0
  13. exerpy/components/helpers/cycle_closer.py +104 -0
  14. exerpy/components/nodes/__init__.py +0 -0
  15. exerpy/components/nodes/deaerator.py +318 -0
  16. exerpy/components/nodes/drum.py +164 -0
  17. exerpy/components/nodes/flash_tank.py +89 -0
  18. exerpy/components/nodes/mixer.py +332 -0
  19. exerpy/components/piping/__init__.py +0 -0
  20. exerpy/components/piping/valve.py +394 -0
  21. exerpy/components/power_machines/__init__.py +0 -0
  22. exerpy/components/power_machines/generator.py +168 -0
  23. exerpy/components/power_machines/motor.py +173 -0
  24. exerpy/components/turbomachinery/__init__.py +0 -0
  25. exerpy/components/turbomachinery/compressor.py +318 -0
  26. exerpy/components/turbomachinery/pump.py +310 -0
  27. exerpy/components/turbomachinery/turbine.py +351 -0
  28. exerpy/data/Ahrendts.json +90 -0
  29. exerpy/functions.py +637 -0
  30. exerpy/parser/__init__.py +0 -0
  31. exerpy/parser/from_aspen/__init__.py +0 -0
  32. exerpy/parser/from_aspen/aspen_config.py +61 -0
  33. exerpy/parser/from_aspen/aspen_parser.py +721 -0
  34. exerpy/parser/from_ebsilon/__init__.py +38 -0
  35. exerpy/parser/from_ebsilon/check_ebs_path.py +74 -0
  36. exerpy/parser/from_ebsilon/ebsilon_config.py +1055 -0
  37. exerpy/parser/from_ebsilon/ebsilon_functions.py +181 -0
  38. exerpy/parser/from_ebsilon/ebsilon_parser.py +660 -0
  39. exerpy/parser/from_ebsilon/utils.py +79 -0
  40. exerpy/parser/from_tespy/tespy_config.py +23 -0
  41. exerpy-0.0.1.dist-info/METADATA +158 -0
  42. exerpy-0.0.1.dist-info/RECORD +44 -0
  43. exerpy-0.0.1.dist-info/WHEEL +4 -0
  44. exerpy-0.0.1.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,1055 @@
1
+ """
2
+ Ebsilon Configuration Data
3
+
4
+ This script contains the configuration data used by the Ebsilon model parser,
5
+ including lists of component types, fluid types, fluid composition parameters,
6
+ and groups for sorting components into functional categories.
7
+ """
8
+ from . import __ebsilon_available__
9
+ from .utils import EpSubstanceStub
10
+
11
+ # Import actual Ebsilon classes if available, otherwise use stubs
12
+ if __ebsilon_available__:
13
+ from EbsOpen import EpSubstance
14
+ else:
15
+ EpSubstance = EpSubstanceStub
16
+
17
+ # Dictionary mapping Ebsilon component numbers to their label
18
+ ebs_objects = {
19
+ 1: "Boundary Input Value",
20
+ 2: "Throttle",
21
+ 3: "Mixer with Throttle",
22
+ 4: "Splitter (Mass defined)",
23
+ 5: "Steam Generator (Boiler)",
24
+ 6: "Steam Turbine / General expander",
25
+ 7: "Steam Turbine Condenser",
26
+ 8: "Pump (fixed speed)",
27
+ 9: "Feed Water Container / De Aerator",
28
+ 10: "Feed Water Preheater / Heating Condenser",
29
+ 11: "Generator",
30
+ 12: "Controller (with external default value)",
31
+ 13: "Piping",
32
+ 14: "Control Valve",
33
+ 15: "Heat Extraction",
34
+ 16: "Heat Injection",
35
+ 17: "Splitter (with characteristic line)",
36
+ 18: "Splitter with ratio specification",
37
+ 19: "Drain",
38
+ 20: "Steam Drum",
39
+ 21: "Combustion Chamber with Heat Output",
40
+ 22: "Combustion Chamber of Gas Turbine",
41
+ 23: "Gas turbine (Turbine only)",
42
+ 24: "Compressor / Fan",
43
+ 25: "Air Preheater",
44
+ 26: "Economizer / Evaporator / Super Heater (with characteristic lines)",
45
+ 27: "Aftercooler",
46
+ 28: "Tank (mixing point)",
47
+ 29: "Motor",
48
+ 30: "Difference Meter",
49
+ 31: "Power Summarizer",
50
+ 32: "Efficiency Meter",
51
+ 33: "Start Value",
52
+ 34: "Expander",
53
+ 35: "Heat Consumer",
54
+ 36: "Value Transmitter",
55
+ 37: "Simple Mixer",
56
+ 38: "Water Injection",
57
+ 39: "Controller (Type 2: internal set value)",
58
+ 40: "Gas Turbine (Macro, simple characteristic lines)",
59
+ 41: "Duct Burner (for waste-heat boiler)",
60
+ 42: "Condensate Valve",
61
+ 43: "Desuperheater",
62
+ 44: "Extraction Pump",
63
+ 45: "Value Indicator",
64
+ 46: "Value Input (Measuring Point)",
65
+ 47: "Wet Cooling Tower (with Klenke coefficients)",
66
+ 48: "Value Transmitter Switch",
67
+ 49: "Three Way Valve",
68
+ 50: "Coal Gasifier",
69
+ 51: "High Temperature Heat Exchanger",
70
+ 52: "Selective Splitter (Filter)",
71
+ 53: "Water Saturizer of Gas Streams",
72
+ 54: "Drain of Gas Streams",
73
+ 55: "Universal Heat Exchanger",
74
+ 56: "Steam Turbine (extended)",
75
+ 57: "Gas Turbine (detailed characteristic field)",
76
+ 58: "Governing Stage (nozzle section control)",
77
+ 59: "Control Valve (Ffed pressure limit)",
78
+ 60: "General Mixer",
79
+ 61: "Economizer/Evaporator/Superheater (with exponents)",
80
+ 62: "DUPLEX Heat Exchanger",
81
+ 63: "Feed Water Tank / Deaerator (extended)",
82
+ 64: "Debug Switch - outdated!",
83
+ 65: "Programmable Component",
84
+ 66: "Feed Water Preheater with Measurement Input- outdated!",
85
+ 67: "Condenser with Measurement Input- outdated!",
86
+ 68: "Control Valve (external pressure limit)",
87
+ 69: "Controller (external set value and switch)",
88
+ 70: "Evaporator with Steam Drum",
89
+ 71: "Heat Exchanger (once through boiler)",
90
+ 72: "Gas Turbine with Warranty Calculation- outdated!",
91
+ 73: "Economizer/Evaporator/Superheater (finned tubes)",
92
+ 74: "Block Heating Power Plant (BHPP)",
93
+ 75: "Air Cooled Condenser (with polynomial)",
94
+ 76: "Alstom Reheat Gas Turbine (DLL required)",
95
+ 77: "Calculator",
96
+ 78: "Natural Draft Cooling Tower (with characteristic field)",
97
+ 79: "Forced Draft Cooling Tower (with characteristic field)",
98
+ 80: "Separator (logical)",
99
+ 81: "Pipe Coupling",
100
+ 82: "Fuel Cell",
101
+ 83: "Pump (variable speed)",
102
+ 84: "Coal Dehumidifier",
103
+ 85: "Electrostatic Precipitator",
104
+ 86: "SCR-DeNOX-Plant (NOX-removal)",
105
+ 87: "Boiler Efficiency Meter according to DIN EN 12952-15 8.4",
106
+ 88: "Flue Gas Zone of Steam Generator",
107
+ 89: "Main Heating Surface of Steam Generator",
108
+ 90: "Reaction Zone of Steam Generator",
109
+ 91: "Auxiliary Heating Surface of Steam Generator",
110
+ 92: "Desalination - MSF-Stage",
111
+ 93: "Kernel Scripting",
112
+ 94: "Compressor or Fan (with characteristic field)",
113
+ 95: "Reformer / Shift Reactor",
114
+ 96: "Extended Coal Gasifier",
115
+ 97: "Extended Saturizer",
116
+ 98: "Evaporator for Binary Mixtures",
117
+ 99: "Separator for Binary Mixtures",
118
+ 100: "Fluid Converter",
119
+ 101: "Fluid Reconverter",
120
+ 102: "Mixer with Specified Concentration",
121
+ 103: "Absorber",
122
+ 104: "Coupled Rectifying Column",
123
+ 105: "Library Specification",
124
+ 106: "ENEXSA Gas Turbine (OEM GT)",
125
+ 107: "Condenser for Binary Mixtures",
126
+ 108: "Elementary Analyzer",
127
+ 109: "Selective Splitter for Universal Fluid",
128
+ 110: "Mass Multiplier",
129
+ 111: "Natural Draft Cooling Tower (Merkel)",
130
+ 112: "Forced Draft Cooling Tower (Merkel)",
131
+ 113: "Line Focusing Solar Collector",
132
+ 114: "Distributing Header",
133
+ 115: "Collecting Header",
134
+ 116: "Solar Field",
135
+ 117: "The Sun (environmental data)",
136
+ 118: "Direct Storage",
137
+ 119: "Indirect Storage",
138
+ 120: "Solar Tower Receiver",
139
+ 121: "Heliostat Field",
140
+ 122: "Steam Turbine (SCC)",
141
+ 123: "Shaft Sealing",
142
+ 124: "Heat Exchanger with Phase Transition",
143
+ 125: "Diesel / Gas Motor (reciprocating engine)",
144
+ 126: "Transient Heat Exchanger",
145
+ 127: "Air Cooled Condenser / Air-Cooled Fluid Cooler",
146
+ 128: "Hard Coal Mill",
147
+ 129: "Lignite Mill",
148
+ 130: "PID-Controller",
149
+ 131: "Transient Separator",
150
+ 132: "Automatic Connector",
151
+ 133: "Control Valve with Flow Coefficient KV",
152
+ 134: "Gibbs Reactor (equilibrium calculation)",
153
+ 135: "Stack",
154
+ 136: "Emission Display",
155
+ 137: "PV System",
156
+ 138: "Dynamic Piping",
157
+ 139: "Steam Generator with 2 Reheats",
158
+ 140: "Splitter with 3 Outlets",
159
+ 141: "Mixer with 3 Inlets",
160
+ 142: "Wind Data",
161
+ 143: "Wind Turbine",
162
+ 144: "Multivalue Transmitter",
163
+ 145: "Stratified Storage",
164
+ 146: "Gearbox/Bearing",
165
+ 147: "Limiter",
166
+ 148: "Header Admission",
167
+ 149: "Header Extraction",
168
+ 150: "Header Connecting Pipe",
169
+ 151: "Evaporative Cooler",
170
+ 152: "Electric Compression Chiller",
171
+ 153: "ENEXSA Reciprocating Engine (Library)",
172
+ 154: "Steam Jet Vacuum Pump",
173
+ 155: "Transformer",
174
+ 156: "Power Converter",
175
+ 157: "Phase Splitter (TREND)",
176
+ 158: "Battery",
177
+ 159: "Map Based Compressor",
178
+ 160: "Storage for Compressible Fluids",
179
+ 161: "Injection with Temperature Control",
180
+ 162: "Electric Boiler",
181
+ 163: "Fuel Cell",
182
+ 164: "Map Based Turbine",
183
+ 165: "Thermal Regenerator / Bulk Material Storage",
184
+ 166: "Phase Change Material Storage",
185
+ 167: "Electrolysis Cell",
186
+ 168: "Quantity Converter",
187
+ 169: "Biomass Gasifier"
188
+ }
189
+
190
+ # Neglected components
191
+ non_thermodynamic_unit_operators = [
192
+ 1, # Boundary Input Value
193
+ 12, # Controller (with external default value)
194
+ 30, # Difference Meter
195
+ 31, # Power Summarizer
196
+ 32, # Efficiency Meter
197
+ 33, # Start Value
198
+ 36, # Value Transmitter
199
+ 39, # Controller (Type 2: internal set value)
200
+ 45, # Value Indicator
201
+ 46, # Value Input (Measuring Point)
202
+ 48, # Value Transmitter Switch
203
+ 64, # Debug Switch - outdated!
204
+ 65, # Programmable Component
205
+ 66, # Feed Water Preheater with Measurement Input- outdated!
206
+ 67, # Condenser with Measurement Input- outdated!
207
+ 69, # Controller (external set value and switch)
208
+ 77, # Calculator
209
+ # 80, # Separator (logical) is considered a thermodynamic component
210
+ 93, # Kernel Scripting
211
+ 105, # Library Specification
212
+ 108, # Elementary Analyzer
213
+ 110, # Mass Multiplier
214
+ 117, # The Sun (environmental data)
215
+ 130, # PID-Controller
216
+ 132, # Automatic Connector
217
+ 136, # Emission Display
218
+ 142, # Wind Data
219
+ 144, # Multivalue Transmitter
220
+ 147, # Limiter
221
+ 168 # Quantity Converter
222
+ ]
223
+
224
+ # Fluid types of Ebsilon
225
+ fluid_type_index = {
226
+ 0: "None", # epFluidTypeNONE
227
+ 1: "Air", # epFluidTypeAir
228
+ 2: "Fluegas", # epFluidTypeFluegas
229
+ 3: "Steam", # epFluidTypeSteam
230
+ 4: "Water", # epFluidTypeWater
231
+ 5: "Scheduled", # epFluidTypeScheduled
232
+ 6: "Actual", # epFluidTypeActual
233
+ 7: "Crudegas", # epFluidTypeCrudegas
234
+ 8: "Oil", # epFluidTypeOil
235
+ 9: "Electric", # epFluidTypeElectric
236
+ 10: "Shaft", # epFluidTypeShaft
237
+ 11: "Coal", # epFluidTypeCoal
238
+ 12: "Gas", # epFluidTypeGas
239
+ 13: "Logic", # epFluidTypeLogic
240
+ 14: "User", # epFluidTypeUser
241
+ 15: "2PhaseLiquid", # epFluidType2PhaseLiquid
242
+ 16: "2PhaseGaseous", # epFluidType2PhaseGaseous
243
+ 17: "Saltwater", # epFluidTypeSaltwater
244
+ 18: "UniversalFluid", # epFluidTypeUniversalFluid
245
+ 19: "BinaryMixture", # epFluidTypeBinaryMixture
246
+ 20: "ThermoLiquid", # epFluidTypeThermoLiquid
247
+ 21: "HumidAir", # epFluidTypeHumidAir
248
+ 22: "NASA" # epFluidTypeNASA
249
+ }
250
+
251
+ # Mapping fluid types to categories
252
+ connection_kinds = {
253
+ "Air": "material",
254
+ "Fluegas": "material",
255
+ "Steam": "material",
256
+ "Water": "material",
257
+ "Crudegas": "material",
258
+ "Oil": "material",
259
+ "Coal": "material",
260
+ "Gas": "material",
261
+ "2PhaseLiquid": "material",
262
+ "2PhaseGaseous": "material",
263
+ "Saltwater": "material",
264
+ "UniversalFluid": "material",
265
+ "BinaryMixture": "material",
266
+ "ThermoLiquid": "material",
267
+ "HumidAir": "material",
268
+ "Electric": "power",
269
+ "Shaft": "power",
270
+ "Logic": "heat"
271
+ }
272
+
273
+ # Dictionary mapping stream substance names to EpSubstance identifiers
274
+ substance_mapping = {}
275
+ if __ebsilon_available__:
276
+ substance_mapping = {
277
+ "XN2": EpSubstance.epSubstanceN2,
278
+ "XO2": EpSubstance.epSubstanceO2,
279
+ "XCO2": EpSubstance.epSubstanceCO2,
280
+ "XH2O": EpSubstance.epSubstanceH2O,
281
+ "XAR": EpSubstance.epSubstanceAR,
282
+ "XSO2": EpSubstance.epSubstanceSO2,
283
+ "XCO": EpSubstance.epSubstanceCO,
284
+ "XCH4": EpSubstance.epSubstanceCH4,
285
+ "XH2S": EpSubstance.epSubstanceH2S,
286
+ "XH2": EpSubstance.epSubstanceH2,
287
+ "XNH3": EpSubstance.epSubstanceNH3,
288
+ "XNO": EpSubstance.epSubstanceNO,
289
+ "XNO2": EpSubstance.epSubstanceNO2,
290
+ "XC": EpSubstance.epSubstanceC,
291
+ "XS": EpSubstance.epSubstanceS,
292
+ "XCL": EpSubstance.epSubstanceCL,
293
+ "XASH": EpSubstance.epSubstanceASH,
294
+ "XLIME": EpSubstance.epSubstanceLIME,
295
+ "XCA": EpSubstance.epSubstanceCA,
296
+ "XCAO": EpSubstance.epSubstanceCAO,
297
+ "XCACO3": EpSubstance.epSubstanceCACO3,
298
+ "XCASO4": EpSubstance.epSubstanceCASO4,
299
+ "XMG": EpSubstance.epSubstanceMG,
300
+ "XMGO": EpSubstance.epSubstanceMGO,
301
+ "XMGCO3": EpSubstance.epSubstanceMGCO3,
302
+ "XHCL": EpSubstance.epSubstanceHCL,
303
+ "XHCN": EpSubstance.epSubstanceHCN,
304
+ "XCS2": EpSubstance.epSubstanceCS2,
305
+ "XH2OB": EpSubstance.epSubstanceH2OB,
306
+ "XN2O": EpSubstance.epSubstanceN2O,
307
+ "XHE": EpSubstance.epSubstanceHE,
308
+ "XNE": EpSubstance.epSubstanceNE,
309
+ "XKR": EpSubstance.epSubstanceKR,
310
+ "XXE": EpSubstance.epSubstanceXE,
311
+ "XASHG": EpSubstance.epSubstanceASHG,
312
+ "XACET": EpSubstance.epSubstanceACET,
313
+ "XBENZ": EpSubstance.epSubstanceBENZ,
314
+ "XC2BUTEN": EpSubstance.epSubstanceC2BUTEN,
315
+ "XCYCPENT": EpSubstance.epSubstanceCYCPENT,
316
+ "XDEC": EpSubstance.epSubstanceDEC,
317
+ "XEBENZ": EpSubstance.epSubstanceEBENZ,
318
+ "XETH": EpSubstance.epSubstanceETH,
319
+ "XETHL": EpSubstance.epSubstanceETHL,
320
+ "XH": EpSubstance.epSubstanceH,
321
+ "XO": EpSubstance.epSubstanceO,
322
+ "XMETHL": EpSubstance.epSubstanceMETHL,
323
+ "XNEOPENT": EpSubstance.epSubstanceNEOPENT,
324
+ "XTOLUEN": EpSubstance.epSubstanceTOLUEN,
325
+ "XIBUT": EpSubstance.epSubstanceIBUT,
326
+ "XIPENT": EpSubstance.epSubstanceIPENT,
327
+ "XIBUTEN": EpSubstance.epSubstanceIBUTEN,
328
+ "X1BUTEN": EpSubstance.epSubstance1BUTEN,
329
+ "X3MPENT": EpSubstance.epSubstance3MPENT,
330
+ "XPROP": EpSubstance.epSubstancePROP,
331
+ "XPROPEN": EpSubstance.epSubstancePROPEN,
332
+ "XHEX": EpSubstance.epSubstanceHEX,
333
+ "XHEPT": EpSubstance.epSubstanceHEPT,
334
+ "XOXYLEN": EpSubstance.epSubstanceOXYLEN,
335
+ "XTDECALIN": EpSubstance.epSubstanceTDECALIN,
336
+ "XT2BUTEN": EpSubstance.epSubstanceT2BUTEN
337
+ }
338
+
339
+ # ebsilon_config.py
340
+
341
+ # Mapping dictionary for fluid types to their mass composition.
342
+ two_phase_fluids_mapping = {
343
+ -1: {"NH3": 1}, # LIBNH3_NH3
344
+ -2: {"H2O": 1}, # LIBICE_H2O
345
+ -3: {"CO2": 1}, # LIBCO2_CO2
346
+ -4: {"N-Butane": 1}, # LIBBUTAN_N_NBUTAN
347
+ -5: {"Iso-Butane": 1}, # LIBBUTAN_ISO_IBUT
348
+ -6: {"Methanol": 1}, # LIBCH3OH_METHL
349
+ -7: {"Ethanol": 1}, # LIBC2H5OH_ETHL
350
+ -8: {"D4": 1}, # LIBD4_D4
351
+ -9: {"D5": 1}, # LIBD5_D5
352
+ -10: {"D6": 1}, # LIBD6_D6
353
+ -11: {"H2": 1}, # LIBH2_H2
354
+ -12: {"Parahydrogen": 1}, # LIBH2_PARAHYD
355
+ -13: {"HE": 1}, # LIBHE_HE
356
+ -14: {"MDM": 1}, # LIBMDM_MDM
357
+ -15: {"MD2M": 1}, # LIBMD2M_MD2M
358
+ -16: {"MD3M": 1}, # LIBMD3M_MD3M
359
+ -17: {"MD4M": 1}, # LIBMD4M_MD4M
360
+ -18: {"MM": 1}, # LIBMM_MM
361
+ -19: {"N2": 1}, # LIBN2_N2
362
+ -20: {"Propane": 1}, # LIBPROPAN_PROP
363
+ -21: {"R134a": 1}, # LIBR134A_R134A
364
+ -22: {"Air": 1}, # LIBREALAIR_AIR_Lemmon
365
+ -23: {"Acetone": 1}, # LIBC3H6O_ACETONE
366
+ -24: {"Cyclopentane": 1}, # LIBC5H10_CYCPENT
367
+ -25: {"Iso-Pentane": 1}, # LIBC5H12_ISO_IPENT
368
+ -26: {"Neopentane": 1}, # LIBC5H12_NEO_NEOPENT
369
+ -27: {"Iso-Hexane": 1}, # LIBC6H14_IHEX
370
+ -28: {"Toluene": 1}, # LIBC7H8_TOLUEN
371
+ -29: {"Nonane": 1}, # LIBC9H20_NON
372
+ -30: {"Decane": 1}, # LIBC10H22_DEC
373
+ -31: {"CO": 1}, # LIBCO_CO
374
+ -32: {"COS": 1}, # LIBCOS_COS
375
+ -33: {"H2S": 1}, # LIBH2S_H2S
376
+ -34: {"N2O": 1}, # LIBN2O_N2O
377
+ -35: {"SO2": 1}, # LIBSO2_SO2
378
+ -36: {"H2O": 1}, # LIBIF97_H2O
379
+ -37: {"H2O": 1}, # IFC67_H2O
380
+ -38: {"H2O": 1}, # LIBIF97_SBTL_H2O
381
+ -39: {"O2": 1}, # LIBO2_O2
382
+ -1000: {"1-Butene": 1}, # REFPROP_1BUTEN
383
+ -1001: {"Acetone": 1}, # REFPROP_ACETONE
384
+ -1002: {"Air": 1}, # REFPROP_AIR_Lemmon
385
+ -1003: {"NH3": 1}, # REFPROP_NH3
386
+ -1004: {"Ar": 1}, # REFPROP_AR
387
+ -1005: {"Benzene": 1}, # REFPROP_BENZENE
388
+ -1006: {"Butane": 1}, # REFPROP_BUT
389
+ -1007: {"Dodecane": 1}, # REFPROP_DODEC
390
+ -1008: {"2-Butene": 1}, # REFPROP_C2BUTEN
391
+ -1009: {"C4F10": 1}, # REFPROP_C4F10
392
+ -1010: {"C5F12": 1}, # REFPROP_C5F12
393
+ -1011: {"CF3I": 1}, # REFPROP_CF3I
394
+ -1012: {"CO": 1}, # REFPROP_CO
395
+ -1013: {"CO2": 1}, # REFPROP_CO2
396
+ -1014: {"COS": 1}, # REFPROP_COS
397
+ -1015: {"Cyclohexane": 1}, # REFPROP_CYCHEX
398
+ -1016: {"Cyclopropane": 1}, # REFPROP_CYCPRO
399
+ -1017: {"D2": 1}, # REFPROP_D2
400
+ -1018: {"D2O": 1}, # REFPROP_D2O
401
+ -1019: {"Decane": 1}, # REFPROP_DEC
402
+ -1020: {"DME": 1}, # REFPROP_DME
403
+ -1021: {"Ethane": 1}, # REFPROP_ETH
404
+ -1022: {"Ethanol": 1}, # REFPROP_ETHL
405
+ -1023: {"Ethene": 1}, # REFPROP_ETHEN
406
+ -1024: {"Fluorine": 1}, # REFPROP_FLUORINE
407
+ -1025: {"H2S": 1}, # REFPROP_H2S
408
+ -1026: {"HE": 1}, # REFPROP_HE
409
+ -1027: {"Heptane": 1}, # REFPROP_HEPT
410
+ -1028: {"Hexane": 1}, # REFPROP_HEX
411
+ -1029: {"H2": 1}, # REFPROP_H2
412
+ -1030: {"Iso-Butene": 1}, # REFPROP_IBUTEN
413
+ -1031: {"Iso-Hexane": 1}, # REFPROP_IHEX
414
+ -1032: {"Iso-Pentane": 1}, # REFPROP_IPENT
415
+ -1033: {"Iso-Butane": 1}, # REFPROP_IBUT
416
+ -1034: {"Kr": 1}, # REFPROP_KR
417
+ -1035: {"CH4": 1}, # REFPROP_CH4
418
+ -1036: {"Methanol": 1}, # REFPROP_METHL
419
+ -1037: {"N2O": 1}, # REFPROP_N2O
420
+ -1038: {"NE": 1}, # REFPROP_NE
421
+ -1039: {"Neopentane": 1}, # REFPROP_NEOPENT
422
+ -1040: {"NF3": 1}, # REFPROP_NF3
423
+ -1041: {"N2": 1}, # REFPROP_N2
424
+ -1042: {"Nonane": 1}, # REFPROP_NON
425
+ -1043: {"Octane": 1}, # REFPROP_OCT
426
+ -1044: {"O2": 1}, # REFPROP_O2
427
+ -1045: {"Parahydrogen": 1}, # REFPROP_PARAHYD
428
+ -1046: {"Pentane": 1}, # REFPROP_PENT
429
+ -1047: {"Propane": 1}, # REFPROP_PROP
430
+ -1048: {"Propene": 1}, # REFPROP_PROPEN
431
+ -1049: {"Propyne": 1}, # REFPROP_PROPYNE
432
+ -1050: {"R11": 1}, # REFPROP_R11
433
+ -1051: {"R113": 1}, # REFPROP_R113
434
+ -1052: {"R114": 1}, # REFPROP_R114
435
+ -1053: {"R115": 1}, # REFPROP_R115
436
+ -1054: {"R116": 1}, # REFPROP_R116
437
+ -1055: {"R12": 1}, # REFPROP_R12
438
+ -1056: {"R123": 1}, # REFPROP_R123
439
+ -1057: {"R124": 1}, # REFPROP_R124
440
+ -1058: {"R125": 1}, # REFPROP_R125
441
+ -1059: {"R13": 1}, # REFPROP_R13
442
+ -1060: {"R134a": 1}, # REFPROP_R134A
443
+ -1061: {"R14": 1}, # REFPROP_R14
444
+ -1062: {"R141b": 1}, # REFPROP_R141B
445
+ -1063: {"R142B": 1}, # REFPROP_R142B
446
+ -1064: {"R143A": 1}, # REFPROP_R143A
447
+ -1065: {"R152A": 1}, # REFPROP_R152A
448
+ -1066: {"R21": 1}, # REFPROP_R21
449
+ -1067: {"R218": 1}, # REFPROP_R218
450
+ -1068: {"R22": 1}, # REFPROP_R22
451
+ -1069: {"R227EA": 1}, # REFPROP_R227EA
452
+ -1070: {"R23": 1}, # REFPROP_R23
453
+ -1071: {"R236EA": 1}, # REFPROP_R236EA
454
+ -1072: {"R236FA": 1}, # REFPROP_R236FA
455
+ -1073: {"R245CA": 1}, # REFPROP_R245CA
456
+ -1074: {"R245FA": 1}, # REFPROP_R245FA
457
+ -1075: {"R32": 1}, # REFPROP_R32
458
+ -1076: {"R365MFC": 1}, # REFPROP_R365MFC
459
+ -1077: {"R404A": 1}, # REFPROP_R404A
460
+ -1078: {"R407C": 1}, # REFPROP_R407C
461
+ -1079: {"R41": 1}, # REFPROP_R41
462
+ -1080: {"R410A": 1}, # REFPROP_R410A
463
+ -1081: {"R507A": 1}, # REFPROP_R507A
464
+ -1082: {"RC318": 1}, # REFPROP_RC318
465
+ -1083: {"SF6": 1}, # REFPROP_SF6
466
+ -1084: {"SO2": 1}, # REFPROP_SO2
467
+ -1085: {"T2Butene": 1},# REFPROP_T2BUTEN
468
+ -1086: {"Toluene": 1}, # REFPROP_TOLUEN
469
+ -1087: {"H2O": 1}, # REFPROP_H2O
470
+ -1088: {"XE": 1}, # REFPROP_XE
471
+ -1090: {"MCyclohex": 1}, # REFPROP_MCYCHEX
472
+ -1091: {"C3CC6": 1}, # REFPROP_C3CC6
473
+ -1092: {"Cyclopentane": 1}, # REFPROP_CYCPENT
474
+ -1093: {"D4": 1}, # REFPROP_D4
475
+ -1094: {"D5": 1}, # REFPROP_D5
476
+ -1095: {"D6": 1}, # REFPROP_D6
477
+ -1096: {"DMC": 1}, # REFPROP_DMC
478
+ -1097: {"MD2M": 1}, # REFPROP_MD2M
479
+ -1098: {"MD3M": 1}, # REFPROP_MD3M
480
+ -1099: {"MD4M": 1}, # REFPROP_MD4M
481
+ -1100: {"MDM": 1}, # REFPROP_MDM
482
+ -1101: {"MLinolea": 1},# REFPROP_MLINOLEA
483
+ -1102: {"MLinolEN": 1},# REFPROP_MLINOLEN
484
+ -1103: {"MM": 1}, # REFPROP_MM
485
+ -1104: {"Moleate": 1}, # REFPROP_MOLEATE
486
+ -1105: {"MPalmita": 1},# REFPROP_MPALMITA
487
+ -1106: {"MStearat": 1},# REFPROP_MSTEARAT
488
+ -1107: {"OrthoHyd": 1}, # REFPROP_ORTHOHYD
489
+ -1108: {"R1234YF": 1}, # REFPROP_R1234YF
490
+ -1109: {"R1234ZE": 1}, # REFPROP_R1234ZE
491
+ -1110: {"R161": 1}, # REFPROP_R161
492
+ -1111: {"UD_01": 1}, # REFPROP_REFPROP_UD_01
493
+ -1112: {"UD_02": 1}, # REFPROP_REFPROP_UD_02
494
+ -1113: {"UD_03": 1}, # REFPROP_REFPROP_UD_03
495
+ -1114: {"UD_04": 1}, # REFPROP_REFPROP_UD_04
496
+ -1115: {"UD_05": 1}, # REFPROP_REFPROP_UD_05
497
+ -1116: {"UD_06": 1}, # REFPROP_REFPROP_UD_06
498
+ -1117: {"UD_07": 1}, # REFPROP_REFPROP_UD_07
499
+ -1118: {"UD_08": 1}, # REFPROP_REFPROP_UD_08
500
+ -1119: {"UD_09": 1}, # REFPROP_REFPROP_UD_09
501
+ -1120: {"UD_10": 1}, # REFPROP_REFPROP_UD_10
502
+ -1121: {"UD_11": 1}, # REFPROP_REFPROP_UD_11
503
+ -1122: {"UD_12": 1}, # REFPROP_REFPROP_UD_12
504
+ -1123: {"UD_13": 1}, # REFPROP_REFPROP_UD_13
505
+ -1124: {"UD_14": 1}, # REFPROP_REFPROP_UD_14
506
+ -1125: {"UD_15": 1}, # REFPROP_REFPROP_UD_15
507
+ -1126: {"UD_16": 1}, # REFPROP_REFPROP_UD_16
508
+ -1127: {"UD_17": 1}, # REFPROP_REFPROP_UD_17
509
+ -1128: {"UD_18": 1}, # REFPROP_REFPROP_UD_18
510
+ -1129: {"UD_19": 1}, # REFPROP_REFPROP_UD_19
511
+ -1130: {"UD_20": 1}, # REFPROP_REFPROP_UD_20
512
+ -1131: {"C11": 1}, # REFPROP_C11
513
+ -1132: {"DEE": 1}, # REFPROP_DEE
514
+ -1133: {"EBenzene": 1}, # REFPROP_EBENZ
515
+ -1134: {"HCL": 1}, # REFPROP_HCL
516
+ -1135: {"IOctane": 1}, # REFPROP_IOCTANE
517
+ -1136: {"MXYlene": 1}, # REFPROP_MXYLENE
518
+ -1137: {"Novec649": 1}, # REFPROP_NOVEC649
519
+ -1138: {"Oxylene": 1}, # REFPROP_OXYLEN
520
+ -1139: {"PXylene": 1}, # REFPROP_PXYLENE
521
+ -1140: {"R1216": 1}, # REFPROP_R1216
522
+ -1141: {"R1233ZD": 1}, # REFPROP_R1233ZD
523
+ -1142: {"R40": 1}, # REFPROP_R40
524
+ -1143: {"RE143A": 1}, # REFPROP_RE143A
525
+ -1144: {"RE245CB2": 1}, # REFPROP_RE245CB2
526
+ -1145: {"RE245FA2": 1}, # REFPROP_RE245FA2
527
+ -1146: {"RE347MCC": 1}, # REFPROP_RE347MCC
528
+ -1147: {"EthyleneOxide": 1}, # REFPROP_EthyleneOxide
529
+ -1148: {"13Butadien": 1}, # REFPROP_13BUTADIEN
530
+ -1149: {"1-Butyne": 1}, # REFPROP_1BUTYNE
531
+ -1150: {"1Penten": 1}, # REFPROP_1PENTEN
532
+ -1151: {"22DMBut": 1}, # REFPROP_22DMBUT
533
+ -1152: {"23DMBut": 1}, # REFPROP_23DMBUT
534
+ -1153: {"3MPent": 1}, # REFPROP_3MPENT
535
+ -1154: {"Acet": 1}, # REFPROP_ACET
536
+ -1155: {"C16": 1}, # REFPROP_C16
537
+ -1156: {"C22": 1}, # REFPROP_C22
538
+ -1157: {"C6F14": 1}, # REFPROP_C6F14
539
+ -1158: {"Chlorine": 1}, # REFPROP_CHLORINE
540
+ -1159: {"Chlorobenzene": 1}, # REFPROP_CHLOROBENZENE
541
+ -1160: {"Cyclobutene": 1}, # REFPROP_CYCLOBUTENE
542
+ -1161: {"Propadien": 1}, # REFPROP_PROPADIEN
543
+ -1162: {"PropyleneOxide": 1}, # REFPROP_PROPYLENEOXIDE
544
+ -1163: {"R1123": 1}, # REFPROP_R1123
545
+ -1164: {"R1224YDZ": 1}, # REFPROP_R1224YDZ
546
+ -1165: {"R1234zeZ": 1}, # REFPROP_R1234zeZ
547
+ -1166: {"R1243ZF": 1}, # REFPROP_R1243ZF
548
+ -1167: {"R1336MZZZ": 1}, # REFPROP_R1336MZZZ
549
+ -1168: {"Dichloroethane": 1}, # REFPROP_Dichloroethane
550
+ -1169: {"Vinylchloride": 1}, # REFPROP_VINYLCHLORIDE
551
+ -1170: {"Diethanolamine": 1}, # REFPROP_DIETHANOLAMINE
552
+ -1171: {"Ethylene_glycol": 1}, # REFPROP_Ethylene_glycol
553
+ -1172: {"Monoethanolamine": 1}, # REFPROP_MONOETHANOLAMINE
554
+ -2000: {"AIR_dry": 1}, # REFPROPMIXTURE_AIR_dry
555
+ -2001: {"R401A": 1}, # REFPROPMIXTURE_R401A
556
+ -2002: {"R401B": 1}, # REFPROPMIXTURE_R401B
557
+ -2003: {"R401C": 1}, # REFPROPMIXTURE_R401C
558
+ -2004: {"R402A": 1}, # REFPROPMIXTURE_R402A
559
+ -2005: {"R402B": 1}, # REFPROPMIXTURE_R402B
560
+ -2006: {"R403A": 1}, # REFPROPMIXTURE_R403A
561
+ -2007: {"R403B": 1}, # REFPROPMIXTURE_R403B
562
+ -2008: {"R404A": 1}, # REFPROPMIXTURE_R404A
563
+ -2009: {"R405A": 1}, # REFPROPMIXTURE_R405A
564
+ -2010: {"R406A": 1}, # REFPROPMIXTURE_R406A
565
+ -2011: {"R407A": 1}, # REFPROPMIXTURE_R407A
566
+ -2012: {"R407B": 1}, # REFPROPMIXTURE_R407B
567
+ -2013: {"R407C": 1}, # REFPROPMIXTURE_R407C
568
+ -2014: {"R407D": 1}, # REFPROPMIXTURE_R407D
569
+ -2015: {"R407E": 1}, # REFPROPMIXTURE_R407E
570
+ -2016: {"R408A": 1}, # REFPROPMIXTURE_R408A
571
+ -2017: {"R409A": 1}, # REFPROPMIXTURE_R409A
572
+ -2018: {"R409B": 1}, # REFPROPMIXTURE_R409B
573
+ -2019: {"R410A": 1}, # REFPROPMIXTURE_R410A
574
+ -2020: {"R410B": 1}, # REFPROPMIXTURE_R410B
575
+ -2021: {"R411A": 1}, # REFPROPMIXTURE_R411A
576
+ -2022: {"R411B": 1}, # REFPROPMIXTURE_R411B
577
+ -2023: {"R412A": 1}, # REFPROPMIXTURE_R412A
578
+ -2024: {"R413A": 1}, # REFPROPMIXTURE_R413A
579
+ -2025: {"R414A": 1}, # REFPROPMIXTURE_R414A
580
+ -2026: {"R414B": 1}, # REFPROPMIXTURE_R414B
581
+ -2027: {"R415A": 1}, # REFPROPMIXTURE_R415A
582
+ -2028: {"R415B": 1}, # REFPROPMIXTURE_R415B
583
+ -2029: {"R416A": 1}, # REFPROPMIXTURE_R416A
584
+ -2030: {"R417A": 1}, # REFPROPMIXTURE_R417A
585
+ -2031: {"R418A": 1}, # REFPROPMIXTURE_R418A
586
+ -2032: {"R419A": 1}, # REFPROPMIXTURE_R419A
587
+ -2033: {"R420A": 1}, # REFPROPMIXTURE_R420A
588
+ -2034: {"R421A": 1}, # REFPROPMIXTURE_R421A
589
+ -2035: {"R421B": 1}, # REFPROPMIXTURE_R421B
590
+ -2036: {"R422A": 1}, # REFPROPMIXTURE_R422A
591
+ -2037: {"R422B": 1}, # REFPROPMIXTURE_R422B
592
+ -2038: {"R422C": 1}, # REFPROPMIXTURE_R422C
593
+ -2039: {"R422D": 1}, # REFPROPMIXTURE_R422D
594
+ -2040: {"R423A": 1}, # REFPROPMIXTURE_R423A
595
+ -2041: {"R424A": 1}, # REFPROPMIXTURE_R424A
596
+ -2042: {"R425A": 1}, # REFPROPMIXTURE_R425A
597
+ -2043: {"R426A": 1}, # REFPROPMIXTURE_R426A
598
+ -2044: {"R427A": 1}, # REFPROPMIXTURE_R427A
599
+ -2045: {"R428A": 1}, # REFPROPMIXTURE_R428A
600
+ -2046: {"R500": 1}, # REFPROPMIXTURE_R500
601
+ -2047: {"R501": 1}, # REFPROPMIXTURE_R501
602
+ -2048: {"R502": 1}, # REFPROPMIXTURE_R502
603
+ -2049: {"R503": 1}, # REFPROPMIXTURE_R503
604
+ -2050: {"R504": 1}, # REFPROPMIXTURE_R504
605
+ -2051: {"R507A": 1}, # REFPROPMIXTURE_R507A
606
+ -2052: {"R508A": 1}, # REFPROPMIXTURE_R508A
607
+ -2053: {"R508B": 1}, # REFPROPMIXTURE_R508B
608
+ -2054: {"R509A": 1}, # REFPROPMIXTURE_R509A
609
+ -2055: {"AMARILLO": 1}, # REFPROPMIXTURE_AMARILLO
610
+ -2056: {"EKOFISK": 1}, # REFPROPMIXTURE_EKOFISK
611
+ -2057: {"GLFCOAST": 1}, # REFPROPMIXTURE_GLFCOAST
612
+ -2058: {"HIGHCO2": 1}, # REFPROPMIXTURE_HIGHCO2
613
+ -2059: {"HIGHN2": 1}, # REFPROPMIXTURE_HIGHN2
614
+ -2060: {"R429A": 1}, # REFPROPMIXTURE_R429A
615
+ -2061: {"R430A": 1}, # REFPROPMIXTURE_R430A
616
+ -2062: {"R431A": 1}, # REFPROPMIXTURE_R431A
617
+ -2063: {"R432A": 1}, # REFPROPMIXTURE_R432A
618
+ -2064: {"R433A": 1}, # REFPROPMIXTURE_R433A
619
+ -2065: {"R434A": 1}, # REFPROPMIXTURE_R434A
620
+ -2066: {"R438A": 1}, # REFPROPMIXTURE_R438A
621
+ -2067: {"R435A": 1}, # REFPROPMIXTURE_R435A
622
+ -2068: {"R436A": 1}, # REFPROPMIXTURE_R436A
623
+ -2069: {"R436B": 1}, # REFPROPMIXTURE_R436B
624
+ -2070: {"R437A": 1}, # REFPROPMIXTURE_R437A
625
+ -2071: {"R510A": 1}, # REFPROPMIXTURE_R510A
626
+ -2072: {"NGSAMPLE": 1}, # REFPROPMIXTURE_NGSAMPLE
627
+ -2073: {"R407F": 1}, # REFPROPMIXTURE_R407F
628
+ -2074: {"R441A": 1}, # REFPROPMIXTURE_R441A
629
+ -2075: {"R442A": 1}, # REFPROPMIXTURE_R442A
630
+ -2076: {"R443A": 1}, # REFPROPMIXTURE_R443A
631
+ -2077: {"R444A": 1}, # REFPROPMIXTURE_R444A
632
+ -2078: {"R512A": 1}, # REFPROPMIXTURE_R512A
633
+ -2079: {"R407G": 1}, # REFPROPMIXTURE_R407G
634
+ -2080: {"R407H": 1}, # REFPROPMIXTURE_R407H
635
+ -2081: {"R417B": 1}, # REFPROPMIXTURE_R417B
636
+ -2082: {"R417C": 1}, # REFPROPMIXTURE_R417C
637
+ -2083: {"R419B": 1}, # REFPROPMIXTURE_R419B
638
+ -2084: {"R422E": 1}, # REFPROPMIXTURE_R422E
639
+ -2085: {"R433B": 1}, # REFPROPMIXTURE_R433B
640
+ -2086: {"R433C": 1}, # REFPROPMIXTURE_R433C
641
+ -2087: {"R439A": 1}, # REFPROPMIXTURE_R439A
642
+ -2088: {"R440A": 1}, # REFPROPMIXTURE_R440A
643
+ -2089: {"R444B": 1}, # REFPROPMIXTURE_R444B
644
+ -2090: {"R445A": 1}, # REFPROPMIXTURE_R445A
645
+ -2091: {"R446A": 1}, # REFPROPMIXTURE_R446A
646
+ -2092: {"R447A": 1}, # REFPROPMIXTURE_R447A
647
+ -2093: {"R447B": 1}, # REFPROPMIXTURE_R447B
648
+ -2094: {"R448A": 1}, # REFPROPMIXTURE_R448A
649
+ -2095: {"R449A": 1}, # REFPROPMIXTURE_R449A
650
+ -2096: {"R449B": 1}, # REFPROPMIXTURE_R449B
651
+ -2097: {"R449C": 1}, # REFPROPMIXTURE_R449C
652
+ -2098: {"R450A": 1}, # REFPROPMIXTURE_R450A
653
+ -2099: {"R451A": 1}, # REFPROPMIXTURE_R451A
654
+ -2100: {"R451B": 1}, # REFPROPMIXTURE_R451B
655
+ -2101: {"R452A": 1}, # REFPROPMIXTURE_R452A
656
+ -2102: {"R452B": 1}, # REFPROPMIXTURE_R452B
657
+ -2103: {"R452C": 1}, # REFPROPMIXTURE_R452C
658
+ -2104: {"R453A": 1}, # REFPROPMIXTURE_R453A
659
+ -2105: {"R454A": 1}, # REFPROPMIXTURE_R454A
660
+ -2106: {"R454B": 1}, # REFPROPMIXTURE_R454B
661
+ -2107: {"R454C": 1}, # REFPROPMIXTURE_R454C
662
+ -2108: {"R455A": 1}, # REFPROPMIXTURE_R455A
663
+ -2109: {"R456A": 1}, # REFPROPMIXTURE_R456A
664
+ -2110: {"R457A": 1}, # REFPROPMIXTURE_R457A
665
+ -2111: {"R458A": 1}, # REFPROPMIXTURE_R458A
666
+ -2112: {"R459A": 1}, # REFPROPMIXTURE_R459A
667
+ -2113: {"R459B": 1}, # REFPROPMIXTURE_R459B
668
+ -2114: {"R460A": 1}, # REFPROPMIXTURE_R460A
669
+ -2115: {"R460B": 1}, # REFPROPMIXTURE_R460B
670
+ -2116: {"R511A": 1}, # REFPROPMIXTURE_R511A
671
+ -2117: {"R513A": 1}, # REFPROPMIXTURE_R513A
672
+ -2118: {"R513B": 1}, # REFPROPMIXTURE_R513B
673
+ -2119: {"R515A": 1}, # REFPROPMIXTURE_R515A
674
+ }
675
+
676
+
677
+
678
+ unit_id_to_string = {
679
+ 0: "INVALID",
680
+ 1: "NONE",
681
+ 2: "1",
682
+ 3: "bar",
683
+ 4: "C",
684
+ 5: "kJ / kg",
685
+ 6: "kg / s",
686
+ 7: "kW",
687
+ 8: "m3 / kg",
688
+ 9: "m3 / s",
689
+ 12: "K",
690
+ 13: "kmol / kmol",
691
+ 14: "kg / kg",
692
+ 15: "kW / K",
693
+ 16: "W / m2K",
694
+ 17: "1 / min",
695
+ 18: "kJ / kWh",
696
+ 21: "kJ / m3",
697
+ 22: "kJ / m3K",
698
+ 23: "kg / m3",
699
+ 24: "m",
700
+ 26: "kJ / kgK",
701
+ 27: "m2",
702
+ 28: "kJ / kgK",
703
+ 29: "kg / kg",
704
+ 30: "kg / kg",
705
+ 31: "kg / kmol",
706
+ 32: "kJ / kg",
707
+ 33: "m / s",
708
+ 34: "kg / kg",
709
+ 35: "FTYP_8",
710
+ 36: "FTYP_9",
711
+ 37: "mg / Nm3",
712
+ 38: "EUR / h",
713
+ 39: "kW / kg",
714
+ 40: "1 / m6",
715
+ 41: "A",
716
+ 42: "EUR / kWh",
717
+ 43: "EUR / kg",
718
+ 44: "V",
719
+ 45: "m3 / m3",
720
+ 46: "kg",
721
+ 47: "EUR",
722
+ 48: "m3",
723
+ 49: "ph",
724
+ 51: "m2K / W",
725
+ 52: "W / m2",
726
+ 53: "TEXT",
727
+ 54: "Grd",
728
+ 55: "kVA",
729
+ 56: "kVAr",
730
+ 57: "kg / ms",
731
+ 58: "W / mK",
732
+ 59: "m / geopot",
733
+ 60: "1 / Grd",
734
+ 61: "1 / Grd2",
735
+ 62: "1 / Grd3",
736
+ 63: "1 / Grd4",
737
+ 64: "1 / Grd5",
738
+ 65: "1 / K",
739
+ 66: "1 / K2",
740
+ 67: "1 / K3",
741
+ 68: "1 / K4",
742
+ 69: "W / m",
743
+ 70: "s",
744
+ 71: "K / m",
745
+ 72: "kJ / kgm",
746
+ 73: "datetime",
747
+ 74: "kW / kgK",
748
+ 75: "bar / m",
749
+ 76: "mN / m",
750
+ 77: "W / mK2",
751
+ 78: "W / mK3",
752
+ 79: "W / mK4",
753
+ 80: "m / K",
754
+ 81: "m / K2",
755
+ 82: "m2 / s",
756
+ 83: "kJ",
757
+ 84: "Nm3 / s",
758
+ 85: "kg / m3K",
759
+ 86: "kJ / kgK2",
760
+ 87: "kg2 / kJs",
761
+ 88: "INTEGRAL",
762
+ 89: "W / mC",
763
+ 90: "W / mC2",
764
+ 91: "W / mC3",
765
+ 92: "W / mC4",
766
+ 93: "m / C",
767
+ 94: "m / C2",
768
+ 95: "bars / kg",
769
+ 96: "barkg / kJ",
770
+ 97: "barK / kW",
771
+ 98: "N",
772
+ 99: "1 / m",
773
+ 100: "m2 / W",
774
+ 101: "kJ / Nm3",
775
+ 102: "PATH",
776
+ 103: "FOLDER",
777
+ 104: "KERNELEXPRESSION",
778
+ 105: "kJ / mol",
779
+ 106: "mSQRT / K / W",
780
+ 107: "A / K",
781
+ 108: "V / K",
782
+ 109: "Ohm",
783
+ 110: "Farad",
784
+ 111: "Henry",
785
+ 112: "Nm",
786
+ 113: "kJ / m2",
787
+ 114: "W / m3",
788
+ 115: "1 / W",
789
+ 116: "1 / V",
790
+ 117: "STRING",
791
+ 118: "Coul",
792
+ 119: "A / Ah",
793
+ 120: "mol / s",
794
+ 121: "m3 / K",
795
+ 122: "1 / Coul",
796
+ 123: "1 / J",
797
+ 124: "1 / s",
798
+ 125: "kW / A",
799
+ 126: "S / m",
800
+ 127: "S / m2",
801
+ 128: "A / m2",
802
+ 129: "SK / m",
803
+ 130: "m2 / kg",
804
+ 131: "SK / m2",
805
+ 132: "m2 / s",
806
+ 133: "VARIANT",
807
+ 134: "kJ / kmolK",
808
+ 135: "kJ / kgK",
809
+ 136: "mol",
810
+ 137: "K / bar",
811
+ 138: "kg / m2"
812
+ }
813
+
814
+
815
+ # List of fluid composition materials to include in the JSON file
816
+ composition_params = [
817
+ 'X12BUTADIEN', 'X13BUTADIEN', 'X1BUTEN', 'X1PENTEN', 'X22DMBUT',
818
+ 'X23DMBUT', 'X3MPENT', 'XACET', 'XAIR', 'XAR', 'XASH', 'XASHG',
819
+ 'XBENZ', 'XBUT', 'XC', 'XC2BUTEN', 'XCA', 'XCACO3', 'XCAO', 'XCASO4',
820
+ 'XCDECALIN', 'XCH3SH', 'XCH4', 'XCL', 'XCO', 'XCO2', 'XCOS', 'XCS2',
821
+ 'XCYCHEX', 'XCYCPENT', 'XDEC', 'XDODEC', 'XEBENZ', 'XECYCHEX',
822
+ 'XECYCPENT', 'XETH', 'XETHEN', 'XETHL', 'XH', 'XH2', 'XH2O', 'XH2OB',
823
+ 'XH2OG', 'XH2OL', 'XH2S', 'XHCL', 'XHCN', 'XHE', 'XHEPT', 'XHEX',
824
+ 'XI', 'XIBUT', 'XIBUTEN', 'XIHEX', 'XIPENT', 'XKR', 'XLIME', 'XL_CO2',
825
+ 'XL_H2O', 'XL_NH3', 'XMCYCHEX', 'XMCYCPENT', 'XMETHL', 'XMG',
826
+ 'XMGCO3', 'XMGO', 'XN', 'XN2', 'XN2O', 'XNE', 'XNEOPENT', 'XNH3',
827
+ 'XNO', 'XNO2', 'XNON', 'XO', 'XO2', 'XOCT', 'XOXYLEN', 'XPENT',
828
+ 'XPROP', 'XPROPADIEN', 'XPROPEN', 'XS', 'XSO2', 'XT2BUTEN',
829
+ 'XTDECALIN', 'XTOLUEN', 'XXE'
830
+ ]
831
+
832
+ # Define the component groups via unique labels
833
+ grouped_components = {
834
+ "Turbine": [6, 23, 56, 57, 58, 68, 122],
835
+ "HeatExchanger": [10, 15, 16, 25, 26, 27, 43, 51, 55, 61, 62, 70, 71, 124, 126],
836
+ "CombustionChamber": [22, 90],
837
+ "Valve": [2, 13, 14, 39, 42, 59, 68, 133],
838
+ "Pump": [8, 44, 83, 159],
839
+ "Compressor": [24, 94],
840
+ "Condenser": [7, 47, 78],
841
+ "Deaerator": [9, 63],
842
+ "SimpleHeatExchanger": [15, 16, 35],
843
+ "SteamGenerator": [5],
844
+ "Mixer": [3, 28, 37, 38, 49, 60, 102, 141, 161],
845
+ "FlashTank" : [34],
846
+ "Splitter": [4, 17, 18, 52, 109, 140, 157],
847
+ "Separator": [19, 99],
848
+ "CycleCloser": [80]
849
+ }
850
+
851
+ # Connector mapping rules for different component types
852
+ connector_mapping = {
853
+ 2: { # Throttle
854
+ 1: 0, # Input
855
+ 2: 0, # Output
856
+ },
857
+ 3: { # Mixer
858
+ 1: 0, # Input 1
859
+ 2: 0, # Output
860
+ 3: 1, # Input 2
861
+ },
862
+ 4: { # Splitter
863
+ 1: 0, # Input
864
+ 2: 0, # Output 1
865
+ 3: 1, # Output 2
866
+ },
867
+ 5: { # Steam Geenerator
868
+ 1: 0, # Feed water inlet (high pressure)
869
+ 2: 0, # Superheated steam outlet (high pressure)
870
+ 3: 1, # Steam inlet (intermediate pressure)
871
+ 4: 1, # Superheated steam outlet (intermediate pressure)
872
+ 5: 2, # Heat source (counted as outlet!!!)
873
+ 6: 2, # Water injection (high pressure)
874
+ 7: 3, # Water injection (intermediate pressure)
875
+ 8: 3, # Drain / Blow down outlet
876
+ },
877
+ 6: { # Steam turbine
878
+ 1: 0, # Steam inlet
879
+ 2: 0, # Steam outlet 1
880
+ 3: 1, # Steam outlet 2
881
+ 4: 2, # Steam outlet 3
882
+ 5: 1, # Shaft power inlet (from previous stage)
883
+ 6: 3, # Shaft power outlet (to next stage)
884
+ },
885
+ 7: { # Condenser
886
+ 1: 1, # Inlet cold stream
887
+ 2: 1, # Outlet cold stream
888
+ 3: 0, # Inlet hot stream
889
+ 4: 0, # Outlet hot stream
890
+ 5: 2, # Second outlet hot stream (if present)
891
+ },
892
+ 8: { # Pump
893
+ 1: 0, # Connector 1 in Ebsilon is inlet(0)
894
+ 2: 0, # Connector 2 in Ebsilon is outlet(0)
895
+ },
896
+ 9: { # Feed Water Container / De Aerator
897
+ 1: 0, # Inlet boiling water
898
+ 2: 0, # Outlet condensate stream
899
+ 3: 1, # Inlet steam
900
+ 4: 2, # Inlet secondary condensate
901
+ 5: 1, # Outlet steam losses (if present)
902
+ },
903
+ 10: { # Feed Water Preheater / Heating Condenser
904
+ 1: 1, # Inlet cold stream
905
+ 2: 1, # Outlet cold stream
906
+ 3: 0, # Inlet hot stream
907
+ 4: 0, # Outlet hot stream
908
+ 5: 2, # Second inlet cold stream (if present)
909
+ },
910
+ 11: { # Generator
911
+ 1: 0, # Connector 1 in Ebsilon is inlet(0)
912
+ 2: 0, # Connector 2 in Ebsilon is outlet(0)
913
+ },
914
+ 13: { # Piping
915
+ 1: 0, # Inlet
916
+ 2: 0, # Outlet
917
+ },
918
+ 14: { # Control valve
919
+ 1: 0, # Inlet
920
+ 2: 0, # Outlet
921
+ },
922
+ 15: { # Heat Extraction
923
+ 1: 0, # Inlet (hot) stream
924
+ 2: 0, # Outlet (cold) stream
925
+ 3: 1, # Outlet heat flow
926
+ },
927
+ 16: { # Heat Injection
928
+ 1: 0, # Inlet (cold) stream
929
+ 2: 0, # Outlet (hot) stream
930
+ 3: 1, # Inlet heat flow
931
+ },
932
+ 17: { # Splitter with characteristic
933
+ 1: 0, # Input
934
+ 2: 0, # Output 1
935
+ 3: 1, # Output 2
936
+ },
937
+ 18: { # Splitter with ratio specification
938
+ 1: 0, # Input
939
+ 2: 0, # Output 1
940
+ 3: 1, # Output 2
941
+ },
942
+ 22: { # Combustion Chamber of Gas Turbine
943
+ 1: 0, # Inlet air
944
+ 2: 0, # Outlet combustion gas
945
+ 3: 2, # Inlet secondary air
946
+ 4: 1, # Inlet fuel gas
947
+ },
948
+ 23: { # Gas turbine (Turbine only)
949
+ 1: 0, # Connector 1 in Ebsilon is inlet(0): inlet gas
950
+ 2: 0, # Connector 2 in Ebsilon is outlet(0): outlet gas
951
+ 3: 1, # Connector 3 in Ebsilon is outlet(1): shaft power to compressor
952
+ 4: 2, # Connector 4 in Ebsilon is outlet(2): shaft power to generator
953
+ },
954
+ 24: { # Compressor / Fan
955
+ 1: 0, # Connector 1 in Ebsilon is inlet(0)
956
+ 2: 0, # Connector 2 in Ebsilon is outlet(0)
957
+ },
958
+ 25: { # Air Preheater
959
+ 1: 1, # Inlet cold stream
960
+ 2: 1, # Outlet cold stream
961
+ 3: 0, # Inlet hot stream
962
+ 4: 0, # Outlet hot stream
963
+ },
964
+ 26: { # Economizer / Superheater
965
+ 1: 1, # Inlet cold stream
966
+ 2: 1, # Outlet cold stream
967
+ 3: 0, # Inlet hot stream
968
+ 4: 0, # Outlet hot stream
969
+ },
970
+ 27: { # Aftercooler / Superheater
971
+ 1: 1, # Inlet cold stream
972
+ 2: 1, # Outlet cold stream
973
+ 3: 0, # Inlet hot stream
974
+ 4: 0, # Outlet hot stream
975
+ },
976
+ 28: { # Tank
977
+ 1: 0, # Main inlet
978
+ 2: 0, # Main outlet
979
+ 3: 1, # Substream inlet 1
980
+ 4: 2, # Substream inlet 2
981
+ 5: 3, # Substream inlet 3
982
+ 6: 4, # Substream inlet 4
983
+ 7: 1, # Substream outlet 1
984
+ 8: 2, # Substream outlet 2
985
+ 9: 3, # Substream outlet 3
986
+ 10: 4, # Substream outlet 4
987
+ },
988
+ 29: { # Motor
989
+ 1: 0, # Connector 1 in Ebsilon is inlet(0)
990
+ 2: 0, # Connector 2 in Ebsilon is outlet(0)
991
+ },
992
+ 34: { # Flash box
993
+ 1: 0, # General inlet
994
+ 2: 0, # Vaporous outlet
995
+ 3: 1, # Liquid outlet
996
+ 4: 1, # Liquid injection inlet
997
+ },
998
+ 35: { # Heat Consumer / Simple Heat Exchanger
999
+ 1: 0, # Inlet (hot) stream
1000
+ 2: 0, # Outlet (cold) stream
1001
+ 3: 1, # Outlet heat flow
1002
+ },
1003
+ 37: { # Simple Mixer
1004
+ 1: 0, # Inlet 1
1005
+ 2: 0, # Outlet
1006
+ 3: 1, # Inlet 2
1007
+ },
1008
+ 38: { # Water injection (like Mixer)
1009
+ 1: 0, # Inlet 1
1010
+ 2: 0, # Outlet
1011
+ 3: 1, # Inlet 2
1012
+ },
1013
+ 51: { # High Temperature Heat Exchanger
1014
+ 1: 1, # Inlet cold stream
1015
+ 2: 1, # Outlet cold stream
1016
+ 3: 0, # Inlet hot stream
1017
+ 4: 0, # Outlet hot stream
1018
+ 5: 2, # Second outlet hot stream (if present)
1019
+ },
1020
+ 55: { # Universal Heat Exchanger
1021
+ 1: 1, # Inlet cold stream
1022
+ 2: 1, # Outlet cold stream
1023
+ 3: 0, # Inlet hot stream
1024
+ 4: 0, # Outlet hot stream
1025
+ 5: 2, # Second outlet hot stream (if present)
1026
+ },
1027
+ 58: { # Governing stage (steam turbine)
1028
+ 1: 0, # Steam inlet
1029
+ 2: 0, # Steam outlet
1030
+ 3: 1, # Shaft power inlet
1031
+ 4: 1, # Shaft power outlet
1032
+ },
1033
+ 70: { # Evaporator
1034
+ 1: 1, # Inlet cold stream
1035
+ 2: 1, # Outlet cold stream
1036
+ 3: 0, # Inlet hot stream
1037
+ 4: 0, # Outlet hot stream
1038
+ 5: 2, # Second outlet cold stream (if present)
1039
+ },
1040
+ 80: { # Separator (logical)
1041
+ 1: 0, # Inlet
1042
+ 2: 0, # Outlet 1
1043
+ },
1044
+ 90: { # Reaction Zone of Steam Generator
1045
+ 1: 2, # Inlet secondary flue gas
1046
+ 2: 0, # Outlet combustion gas
1047
+ 3: 2, # Wall heat losses
1048
+ 4: 3, # Inlet ashes
1049
+ 5: 1, # Outlet ashes
1050
+ 6: 3, # Irradiation losses above
1051
+ 7: 4, # Irradation losses below
1052
+ 8: 0, # Inlet air
1053
+ 9: 1, # Inlet fuel gas
1054
+ },
1055
+ }