Closed BenPortner closed 2 years ago
Dear @BenPortner,
My understanding of a flash vessel (and I might be wrong), is that it allows the separation of gas bubbles and liquid droplets in phase equilibrium (so that the vapor phase is free of liquid droplets and the liquid phase is free of gas bubbles). If there is only one phase, I don't think there is a need to have a flash vessel nor can we design one. If we just want to vaporize a liquid, we can use a heat exchanger. In BioSTEAM, we can set V for heat exchangers too https://biosteam.readthedocs.io/en/latest/API/units/heat_exchange.html#biosteam.units.heat_exchange.HXutility.
Thanks,
I'll go ahead and make the assertion error a RuntimeError and make it more clear that a flash vessel cannot be designed without two phases.
You're aboslutely right, @yoelcortes. This was a confusion about the terminology on my side. Feel free to close this issue at your convenience.
No worries, thanks for submitting the issue!
Dear @yoelcortes,
units._flash.Flash
can currently not handle complete vaporization (V=1
):Minimum error example
Error message:
Things I've tried
The error is thrown because
F_mass_liq = 0.0
in this line. It can be fixed by removing the assertion and making vertical drums the default for flashers without a liquid phase:However, the trouble continues. After making above change, a
ZeroDivisionError
is thrown in this line because the density of the liquid phase cannot be determined. One could setrhol = 0
but thenUt
andUv
in the same function will turn into imaginary numbers (square root of negative value) . Without knowing the specific vessel design procedure, I expect this will lead to further problems downstream. Hence, instead of hacking our way throughunits._flash._vertical_vessel_pressure_diameter_and_length
with many, many if-statements it might be better to have a separate design function for "single-phase-outs" to begin with. What do you think?