|
1 | 1 | # -*- coding: utf-8 -*- |
| 2 | +import sys |
| 3 | +sys.stdout.reconfigure(encoding='utf-8') |
2 | 4 | """ |
3 | 5 | Fluid Creation Tutorial |
4 | 6 | ======================== |
|
54 | 56 |
|
55 | 57 | # Method A: Mole percent |
56 | 58 | gas_mol_pct = fluid("pr") |
57 | | -gas_mol_pct.addComponent("methane", 90.0, "mol%") |
58 | | -gas_mol_pct.addComponent("ethane", 7.0, "mol%") |
59 | | -gas_mol_pct.addComponent("propane", 3.0, "mol%") |
| 59 | +gas_mol_pct.addComponent("methane", 90.0) |
| 60 | +gas_mol_pct.addComponent("ethane", 7.0) |
| 61 | +gas_mol_pct.addComponent("propane", 3.0) |
60 | 62 | gas_mol_pct.setMixingRule("classic") |
61 | 63 |
|
62 | 64 | print("A) Mole percent:") |
63 | 65 | print(" methane: 90 mol%, ethane: 7 mol%, propane: 3 mol%") |
64 | 66 |
|
65 | 67 | # Method B: Mass (kg) |
66 | 68 | gas_mass = fluid("pr") |
67 | | -gas_mass.addComponent("methane", 100.0, "kg") |
68 | | -gas_mass.addComponent("ethane", 20.0, "kg") |
69 | | -gas_mass.addComponent("propane", 10.0, "kg") |
| 69 | +gas_mass.addComponent("methane", 100.0, "kg/hr") |
| 70 | +gas_mass.addComponent("ethane", 20.0, "kg/hr") |
| 71 | +gas_mass.addComponent("propane", 10.0, "kg/hr") |
70 | 72 | gas_mass.setMixingRule("classic") |
71 | 73 |
|
72 | 74 | print("\nB) Mass (kg):") |
|
128 | 130 | print("For undefined components, specify molecular weight and density") |
129 | 131 |
|
130 | 132 | oil = fluid("pr") |
131 | | -oil.addComponent("methane", 30.0, "mol%") |
132 | | -oil.addComponent("n-hexane", 20.0, "mol%") |
| 133 | +oil.addComponent("methane", 30.0) |
| 134 | +oil.addComponent("n-hexane", 20.0) |
133 | 135 |
|
134 | 136 | # Add a C10 pseudo-component with custom properties |
135 | | -oil.addComponent("C10", 25.0, "mol%") |
| 137 | +oil.addComponent("C10", 25.0) |
136 | 138 |
|
137 | 139 | # Add a heavier fraction manually |
138 | 140 | # Using addPlusFraction for C20+ pseudo-component |
|
157 | 159 |
|
158 | 160 | # Create oil with C7+ fraction |
159 | 161 | oil_plus = fluid("pr") |
160 | | -oil_plus.addComponent("nitrogen", 0.5, "mol%") |
161 | | -oil_plus.addComponent("CO2", 1.5, "mol%") |
162 | | -oil_plus.addComponent("methane", 45.0, "mol%") |
163 | | -oil_plus.addComponent("ethane", 7.0, "mol%") |
164 | | -oil_plus.addComponent("propane", 5.0, "mol%") |
165 | | -oil_plus.addComponent("n-butane", 3.0, "mol%") |
166 | | -oil_plus.addComponent("n-pentane", 3.0, "mol%") |
167 | | -oil_plus.addComponent("n-hexane", 3.0, "mol%") |
| 162 | +oil_plus.addComponent("nitrogen", 0.5) |
| 163 | +oil_plus.addComponent("CO2", 1.5) |
| 164 | +oil_plus.addComponent("methane", 45.0) |
| 165 | +oil_plus.addComponent("ethane", 7.0) |
| 166 | +oil_plus.addComponent("propane", 5.0) |
| 167 | +oil_plus.addComponent("n-butane", 3.0) |
| 168 | +oil_plus.addComponent("n-pentane", 3.0) |
| 169 | +oil_plus.addComponent("n-hexane", 3.0) |
168 | 170 |
|
169 | 171 | # Add C7+ as plus fraction (32 mol%, MW=200 g/mol, density=800 kg/m³) |
170 | 172 | oil_plus.addPlusFraction("C7+", 32.0, 0.200, 800.0) |
|
213 | 215 | print("-" * 40) |
214 | 216 |
|
215 | 217 | original = fluid("srk") |
216 | | -original.addComponent("methane", 90.0, "mol%") |
217 | | -original.addComponent("ethane", 10.0, "mol%") |
| 218 | +original.addComponent("methane", 90.0) |
| 219 | +original.addComponent("ethane", 10.0) |
218 | 220 | original.setMixingRule("classic") |
219 | 221 | original.setTemperature(25.0, "C") |
220 | 222 | original.setPressure(50.0, "bara") |
|
243 | 245 |
|
244 | 246 | # Stream 1: Lean gas |
245 | 247 | stream1 = fluid("pr") |
246 | | -stream1.addComponent("methane", 95.0, "mol%") |
247 | | -stream1.addComponent("ethane", 5.0, "mol%") |
| 248 | +stream1.addComponent("methane", 95.0) |
| 249 | +stream1.addComponent("ethane", 5.0) |
248 | 250 | stream1.setMixingRule("classic") |
249 | 251 | stream1.setTotalFlowRate(1000.0, "mol/hr") |
250 | 252 |
|
251 | 253 | # Stream 2: Rich gas |
252 | 254 | stream2 = fluid("pr") |
253 | | -stream2.addComponent("methane", 70.0, "mol%") |
254 | | -stream2.addComponent("ethane", 15.0, "mol%") |
255 | | -stream2.addComponent("propane", 10.0, "mol%") |
256 | | -stream2.addComponent("n-butane", 5.0, "mol%") |
| 255 | +stream2.addComponent("methane", 70.0) |
| 256 | +stream2.addComponent("ethane", 15.0) |
| 257 | +stream2.addComponent("propane", 10.0) |
| 258 | +stream2.addComponent("n-butane", 5.0) |
257 | 259 | stream2.setMixingRule("classic") |
258 | 260 | stream2.setTotalFlowRate(500.0, "mol/hr") |
259 | 261 |
|
|
295 | 297 | print("-" * 40) |
296 | 298 |
|
297 | 299 | brine = fluid("electrolyte") |
298 | | -brine.addComponent("water", 1.0, "kg") |
299 | | -brine.addComponent("Na+", 0.035, "mol") # Sodium ion |
300 | | -brine.addComponent("Cl-", 0.035, "mol") # Chloride ion |
| 300 | +brine.addComponent("water", 1.0, "kg/hr") |
| 301 | +brine.addComponent("Na+", 0.035, "mol/sec") # Sodium ion |
| 302 | +brine.addComponent("Cl-", 0.035, "mol/sec") # Chloride ion |
301 | 303 | brine.setMixingRule("classic") |
302 | 304 |
|
303 | 305 | print("Created brine with NaCl:") |
|
0 commit comments