FX-PML vs PHAST 9 — TrajectoryRainout with variable-density entrainment ## Configuration Pressurized-liquid leak through a 2" orifice, non-equilibrium orifice choke. ``` ChokeModel = ChokeFlow (NonEquilibriumOrificeFlow) LengthMethod = ExpansionLengthMethod.AshkenasSherman ExpansionMethod = LiquidExpansionMethod.ClosestToInitialConditions AtomizationModel = AtomizationModifiedCCPS DropletDistributionSigmaG = 1.9 (default) NumberOfSizeBins = 20 ``` Rainout options: ``` AirTemperature = 68 F (293.15 K) ReleaseHeight = 0.9144 m (3 ft cases) / 6.096 m (20 ft cases) WindSpeed = 3.36 MPH (1.502 m/s) JetSpreadingRate β = 0.13 (default) DriftEntrainmentFactor κ = 1.05 (fit to PHAST rainout distance: parity slope 1.003, RMSE 16 ft) ``` - **PHAST** — Phast 9.0 results: discharge rows from `liquid-discharge.docx`, rainout from `liquid-commentary.docx` ("X lb/s of material rains out", first release observer); Rainout Distance is the downwind distance at that rains-out event; "—" = no rainout. **Aerosol = post-expansion liquid − rainout** (Total×LiquidFraction − Rainout); **Flash = Total×(1−LiquidFraction)**. - **FX-PML** — Infer `TrajectoryRainout` with **variable-density** jet entrainment cloud decay (`JetEntrainmentModel(0.13, VariableDensity, κ=1.05)`), CoolProp thermo. Rainout Distance is the mass-weighted droplet touchdown distance. Regenerated by `Infer.Testing/ValidationTableHarness.cs`. κ is fit only to the **rainout distance**; it affects only Rainout, Aerosol (= liquid − rainout) and Rainout Distance. All discharge/expansion variables (Mdot, Liquid Fraction, Drop Diameter, Texp, Vexp, Flash) are independent of κ. ## TOC - [[#N-Butane, liquid, 68°F, 100psi, 20ft elevation, 2" hole]] - [[#N-Butane, liquid, 68°F, 100psi, 3ft elevation, 2" hole]] - [[#Cyclohexane, liquid, 277°F, 100psi, 3ft elevation, 2" hole]] - [[#N-Heptane, liquid, 68°F, 100psi, 20ft elevation, 2" hole]] - [[#N-Heptane, liquid, 68°F, 100psi, 3ft elevation, 2" hole]] - [[#N-Hexane, liquid, 68°F, 100psi, 20ft elevation, 2" hole]] - [[#N-Hexane, liquid, 68°F, 100psi, 3ft elevation, 2" hole]] - [[#Propane, liquid, 68°F, 107psi, 3ft elevation, 2" hole]] - [[#Propylene, liquid, 68°F, 135psi, 3ft elevation, 2" hole]] - [[#Propylene, liquid, 68°F, 300psi, 3ft elevation, 2" hole]] - [[#N-Hexane, liquid, 68°F, 300psi, 3ft elevation, 2" hole]] - [[#N-Hexane, liquid, 300°F, 300psi, 3ft elevation, 2" hole]] - [[#N-Butane, liquid, 200°F, 200psi, 3ft elevation, 2" hole]] - [[#Propylene, liquid, 120°F, 300psi, 3ft elevation, 2" hole]] ### N-Butane, liquid, 68°F, 100psi, 20ft elevation, 2" hole | Variable | PHAST | FX-PML | | --------------------- | -------- | -------- | | Total Mdot (lb/s) | 78.63980 | 76.99132 | | Liquid Fraction | 0.881673 | 0.879398 | | Drop Diameter (µm) | 258.920 | 251.923 | | Texp (F) | 31.0413 | 31.1178 | | Vexp (ft/s) | 252.075 | 258.803 | | Flash (lb/s) | 9.30521 | 9.28531 | | Aerosol (lb/s) | 69.33459 | 66.74668 | | Rainout (lb/s) | 0.0000 | 0.9593 | | Rainout Distance (ft) | — | 155.7 | ### N-Butane, liquid, 68°F, 100psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 78.63980 | 76.99132 | | Liquid Fraction | 0.881673 | 0.879398 | | Drop Diameter (µm) | 258.920 | 251.923 | | Texp (F) | 31.0413 | 31.1178 | | Vexp (ft/s) | 252.075 | 258.803 | | Flash (lb/s) | 9.30521 | 9.28531 | | Aerosol (lb/s) | 52.34859 | 59.51296 | | Rainout (lb/s) | 16.9860 | 8.1931 | | Rainout Distance (ft) | 75.8353 | 84.7 | ### Cyclohexane, liquid, 277°F, 100psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 84.27210 | 82.23105 | | Liquid Fraction | 0.682397 | 0.673167 | | Drop Diameter (µm) | 165.293 | 159.643 | | Texp (F) | 177.4070 | 177.2869 | | Vexp (ft/s) | 463.043 | 477.477 | | Flash (lb/s) | 26.76507 | 26.87586 | | Aerosol (lb/s) | 44.74153 | 49.70325 | | Rainout (lb/s) | 12.7655 | 5.6519 | | Rainout Distance (ft) | 123.9880 | 105.9 | ### N-Heptane, liquid, 68°F, 100psi, 20ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 88.10410 | 83.69431 | | Liquid Fraction | 1.000000 | 1.000000 | | Drop Diameter (µm) | 92.636 | 104.139 | | Texp (F) | 67.7074 | 68.0000 | | Vexp (ft/s) | 157.191 | 147.340 | | Flash (lb/s) | 0.00000 | 0.00000 | | Aerosol (lb/s) | 45.74870 | 40.96608 | | Rainout (lb/s) | 42.3554 | 42.7282 | | Rainout Distance (ft) | 130.6520 | 157.3 | ### N-Heptane, liquid, 68°F, 100psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 88.10410 | 83.69431 | | Liquid Fraction | 1.000000 | 1.000000 | | Drop Diameter (µm) | 92.636 | 104.139 | | Texp (F) | 67.7074 | 68.0000 | | Vexp (ft/s) | 157.191 | 147.340 | | Flash (lb/s) | 0.00000 | 0.00000 | | Aerosol (lb/s) | 20.05950 | 4.69630 | | Rainout (lb/s) | 68.0446 | 78.9980 | | Rainout Distance (ft) | 82.6539 | 81.5 | ### N-Hexane, liquid, 68°F, 100psi, 20ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 85.56730 | 82.18550 | | Liquid Fraction | 1.000000 | 1.000000 | | Drop Diameter (µm) | 82.692 | 91.352 | | Texp (F) | 67.6491 | 68.0000 | | Vexp (ft/s) | 158.493 | 150.045 | | Flash (lb/s) | 0.00000 | 0.00000 | | Aerosol (lb/s) | 80.01278 | 72.39826 | | Rainout (lb/s) | 5.5545 | 9.7872 | | Rainout Distance (ft) | 131.2790 | 145.2 | ### N-Hexane, liquid, 68°F, 100psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 85.56730 | 82.18550 | | Liquid Fraction | 1.000000 | 1.000000 | | Drop Diameter (µm) | 82.692 | 91.352 | | Texp (F) | 67.6491 | 68.0000 | | Vexp (ft/s) | 158.493 | 150.045 | | Flash (lb/s) | 0.00000 | 0.00000 | | Aerosol (lb/s) | 38.60820 | 35.94850 | | Rainout (lb/s) | 46.9591 | 46.2370 | | Rainout Distance (ft) | 84.2028 | 77.1 | ### Propane, liquid, 68°F, 107psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 75.97430 | 74.03848 | | Liquid Fraction | 0.686126 | 0.689030 | | Drop Diameter (µm) | 120.645 | 116.020 | | Texp (F) | \-43.7265 | \-43.8048 | | Vexp (ft/s) | 647.569 | 662.830 | | Flash (lb/s) | 23.84636 | 23.02375 | | Aerosol (lb/s) | 52.12794 | 50.27577 | | Rainout (lb/s) | 0.0000 | 0.7390 | | Rainout Distance (ft) | — | 110.9 | ### Propylene, liquid, 68°F, 135psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 86.85900 | 84.37840 | | Liquid Fraction | 0.682701 | 0.684672 | | Drop Diameter (µm) | 109.526 | 104.996 | | Texp (F) | \-53.8489 | \-53.7145 | | Vexp (ft/s) | 701.519 | 716.639 | | Flash (lb/s) | 27.56027 | 26.60688 | | Aerosol (lb/s) | 59.29873 | 57.00202 | | Rainout (lb/s) | 0.0000 | 0.7695 | | Rainout Distance (ft) | — | 118.8 | ### Propylene, liquid, 68°F, 300psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 129.38900 | 125.78390 | | Liquid Fraction | 0.687911 | 0.684672 | | Drop Diameter (µm) | 103.848 | 97.421 | | Texp (F) | \-53.8489 | \-53.7145 | | Vexp (ft/s) | 727.093 | 749.098 | | Flash (lb/s) | 40.38088 | 39.66319 | | Aerosol (lb/s) | 89.00812 | 85.28596 | | Rainout (lb/s) | 0.0000 | 0.8347 | | Rainout Distance (ft) | — | 136.6 | ### N-Hexane, liquid, 68°F, 300psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 148.14600 | 142.34947 | | Liquid Fraction | 1.000000 | 1.000000 | | Drop Diameter (µm) | 27.677 | 30.451 | | Texp (F) | 66.9655 | 68.0000 | | Vexp (ft/s) | 274.265 | 259.885 | | Flash (lb/s) | 0.00000 | 0.00000 | | Aerosol (lb/s) | 105.17970 | 135.48854 | | Rainout (lb/s) | 42.9663 | 6.8609 | | Rainout Distance (ft) | 133.7220 | 113.0 | ### N-Hexane, liquid, 300°F, 300psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 133.89700 | 126.67005 | | Liquid Fraction | 0.436899 | 0.425860 | | Drop Diameter (µm) | 94.565 | 89.595 | | Texp (F) | 155.7220 | 155.6881 | | Vexp (ft/s) | 753.162 | 769.298 | | Flash (lb/s) | 75.39753 | 72.72636 | | Aerosol (lb/s) | 58.49947 | 53.75360 | | Rainout (lb/s) | 0.0000 | 0.1901 | | Rainout Distance (ft) | — | 152.4 | ### N-Butane, liquid, 200°F, 200psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --- | --- | --- | | Total Mdot (lb/s) | 104.45600 | 99.05524 | | Liquid Fraction | 0.456125 | 0.464639 | | Drop Diameter (µm) | 67.513 | 64.499 | | Texp (F) | 31.0413 | 31.1178 | | Vexp (ft/s) | 921.030 | 932.597 | | Flash (lb/s) | 56.81101 | 53.03036 | | Aerosol (lb/s) | 47.64499 | 46.02488 | | Rainout (lb/s) | 0.0000 | 0.0000 | | Rainout Distance (ft) | — | — | ### Propylene, liquid, 120°F, 300psi, 3ft elevation, 2" hole | Variable | PHAST | FX-PML | | --------------------- | --------- | --------- | | Total Mdot (lb/s) | 126.80900 | 118.91862 | | Liquid Fraction | 0.544491 | 0.553768 | | Drop Diameter (µm) | 57.441 | 52.982 | | Texp (F) | \-53.8489 | \-53.7145 | | Vexp (ft/s) | 1014.120 | 1032.287 | | Flash (lb/s) | 57.76264 | 53.06528 | | Aerosol (lb/s) | 69.04636 | 65.85334 | | Rainout (lb/s) | 0.0000 | 0.0000 | | Rainout Distance (ft) | — | — | ### Parity Plots All points are PHAST (x) vs FX-PML (y) across the fourteen cases; the red line is perfect parity. Rainout Distance uses only the cases where PHAST rains out. **Total Mdot (lb/s)** ```plotly data: - x: [0, 150] y: [0, 150] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 150] y: [0, 165] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 150] y: [0, 135] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [78.6398, 78.6398, 84.2721, 88.1041, 88.1041, 85.5673, 85.5673, 75.9743, 86.859, 129.389, 148.146, 133.897, 104.456, 126.809] y: [76.9913, 76.9913, 82.231, 83.6943, 83.6943, 82.1855, 82.1855, 74.0385, 84.3784, 125.784, 142.349, 126.67, 99.0552, 118.919] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Total Mdot (lb/s) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Liquid Fraction** ```plotly data: - x: [0, 1] y: [0, 1] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 1] y: [0, 1.1] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 1] y: [0, 0.9] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [0.881673, 0.881673, 0.682397, 1, 1, 1, 1, 0.686126, 0.682701, 0.687911, 1, 0.436899, 0.456125, 0.544491] y: [0.879398, 0.879398, 0.673167, 1, 1, 1, 1, 0.68903, 0.684672, 0.684672, 1, 0.42586, 0.464639, 0.553768] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Liquid Fraction xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Drop Diameter (µm)** ```plotly data: - x: [0, 270] y: [0, 270] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 270] y: [0, 297] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 270] y: [0, 243] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [258.92, 258.92, 165.293, 92.6361, 92.6361, 82.692, 82.692, 120.645, 109.526, 103.848, 27.6769, 94.5652, 67.5132, 57.4411] y: [251.923, 251.923, 159.643, 104.139, 104.139, 91.352, 91.352, 116.02, 104.996, 97.421, 30.451, 89.595, 64.499, 52.982] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Drop Diameter (µm) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Texp (F)** ```plotly data: - x: [-70, 200] y: [-70, 200] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [-70, 200] y: [-77, 220] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [-70, 200] y: [-63, 180] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [31.0413, 31.0413, 177.407, 67.7074, 67.7074, 67.6491, 67.6491, -43.7265, -53.8489, -53.8489, 66.9655, 155.722, 31.0413, -53.8489] y: [31.1178, 31.1178, 177.287, 68, 68, 68, 68, -43.8048, -53.7145, -53.7145, 68, 155.688, 31.1178, -53.7145] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Texp (F) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Vexp (ft/s)** ```plotly data: - x: [0, 1100] y: [0, 1100] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 1100] y: [0, 1210] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 1100] y: [0, 990] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [252.075, 252.075, 463.043, 157.191, 157.191, 158.493, 158.493, 647.569, 701.519, 727.093, 274.265, 753.162, 921.03, 1014.12] y: [258.803, 258.803, 477.477, 147.34, 147.34, 150.045, 150.045, 662.83, 716.639, 749.098, 259.885, 769.298, 932.597, 1032.29] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Vexp (ft/s) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Flash (lb/s)** ```plotly data: - x: [0, 80] y: [0, 80] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 80] y: [0, 88] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 80] y: [0, 72] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [9.30521, 9.30521, 26.7651, 0, 0, 0, 0, 23.8464, 27.5603, 40.3809, 0, 75.3975, 56.811, 57.7626] y: [9.28531, 9.28531, 26.8759, 0, 0, 0, 0, 23.0237, 26.6069, 39.6632, 0, 72.7264, 53.0304, 53.0653] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Flash (lb/s) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Aerosol (lb/s)** ```plotly data: - x: [0, 140] y: [0, 140] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 140] y: [0, 154] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 140] y: [0, 126] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 140] y: [0, 182] mode: lines type: scatter name: '+30%' line: { color: 'red', width: 1, dash: dot } - x: [0, 140] y: [0, 98] mode: lines type: scatter name: '-30%' line: { color: 'red', width: 1, dash: dot } - x: [69.3346, 52.3486, 44.7415, 45.7487, 20.0595, 80.0128, 38.6082, 52.1279, 59.2987, 89.0081, 105.18, 58.4995, 47.645, 69.0464] y: [66.7467, 59.513, 49.7032, 40.9661, 4.6963, 72.3983, 35.9485, 50.2758, 57.002, 85.286, 135.489, 53.7536, 46.0249, 65.8533] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Aerosol (lb/s) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Rainout (lb/s)** ```plotly data: - x: [0, 80] y: [0, 80] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 80] y: [0, 88] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 80] y: [0, 72] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 80] y: [0, 104] mode: lines type: scatter name: '+30%' line: { color: 'red', width: 1, dash: dot } - x: [0, 80] y: [0, 56] mode: lines type: scatter name: '-30%' line: { color: 'red', width: 1, dash: dot } - x: [0, 16.986, 12.7655, 42.3554, 68.0446, 5.55452, 46.9591, 0, 0, 0, 42.9663, 0, 0, 0] y: [0.9593, 8.1931, 5.6519, 42.7282, 78.998, 9.7872, 46.237, 0.739, 0.7695, 0.8347, 6.8609, 0.1901, 0, 0] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Rainout (lb/s) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ``` **Rainout Distance (ft)** ```plotly data: - x: [0, 160] y: [0, 160] mode: lines type: scatter name: parity line: { color: '#e6194B' } - x: [0, 160] y: [0, 176] mode: lines type: scatter name: '+10%' line: { color: 'black', width: 1, dash: dot } - x: [0, 160] y: [0, 144] mode: lines type: scatter name: '-10%' line: { color: 'black', width: 1, dash: dot } - x: [75.8353, 123.988, 130.652, 82.6539, 131.279, 84.2028, 133.722] y: [84.7, 105.9, 157.3, 81.5, 145.2, 77.1, 113] mode: markers type: scatter name: data marker: { color: '#e0a800', size: 8, symbol: circle } layout: title: Rainout Distance (ft) xaxis: { title: 'PHAST 9', showline: false, mirror: false, zeroline: true, ticks: outside } yaxis: { title: 'FX-PML', showline: false, mirror: false, zeroline: true, ticks: outside } legend: { orientation: 'h', x: 0.5, xanchor: 'center', y: -0.2 } margin: { t: 30 } ```