NOTE:This tool is only available in the CoolMM version of Math Minion, which is available at https://coolmm.mathminion.com.
Math Minion has incorporated some of the capabilities of the CoolProp property package which allows this tool to perform flash and property calculations using CoolProp's HEOS backend. Hence the version name "CoolMM".
Otherwise the CoolMM version of Math Minion is identical to the standard version, but might take a little longer for the initial load.
Below is an image of the information view for a dew point flash of a mixture of ethanol and water. There are six input fields, which are explained in the sections below, and a table showing the calculated properties of the bulk fluid and the vapour and liquid phases if it is two phase. The table can be dragged around like other tables.
You can click on any row of the table to view the unit and format used for the row. In the image above, the flow row has been clicked on, so the flow unit and format are shown.
As in other MM tables, you can click on the unit description to bring up a unit picker and you can enter a format for the row in the format field.
The thermo field formula should resolve to a string which is a comma separated list of the fluids (i.e. compounds) that are included in the flash. At this time, Math Minion always uses the CoolProp HEOS backend for calculation.
A list of the available fluids can be obtained from the fluids parameter of any flash, even if it has no inputs. For example if you create a flash named feed, then an expression with the formula:
feed.fluids
will have a column array of fluid names as its value.
The following properties are always calculated and reported in the info view table:
Additional properties (see the list in the formula parameters section) can be requested by appending ';' to the end of the thermo string, followed by a comma separated list of the properties. For example in the flash above the thermo is defined by the formula:
'Ethanol,Water;massx
The thermo definition ignores all white space, so you can use spaces, tabs and newlines if you wish.
An easy way to construct the thermo definition is to use the SelectThermo model from the Tools -> Flash -> ToolBox model in the Getting Started session.
Also the thermo definition for a flash is available as a parameter of the flash, so other flashes making use of its results can easily reuse the same definition.
Note: not all the combinations of components have interaction parameters and if you include such a combination in the thermo definition, you will get an error there is a problem with the definition.
A flash requires two intensive properties in order to perform its calculation and Math Minion requires that one of those be temperature or pressure. Thus this formula must resolve to one of those, based on its conversion unit type.
Despite the label, in the special case of the thermo definition only having a single component, a molar density can also be used for this intensive property.
The second property can be one of the following:
except it of course can't be the same as the T or P Input property. As with the T or P formula, the type of property is determined by its conversion unit type.
A flow value isn't needed to perform a flash, but if it is provided, the flows for the vapour and liquid phases will be calculated if the result is two phase.
The flow formula can resolve to either a molar flow or a mass flow, based on the unit conversion type.
The composition can be specified in either mole or mass fractions. Because both have the unit conversion type of Fraction, they have seperate input formulas. The composition should resolve to an array of the same length as the number of components defined in the thermo definition.
The composition will be normalized, so the values don't need to sum to 1. The normalizing process also removes any units, so you could provide an array of flows if you wished.
Unfortunately CoolProp does not do isenthalpic or isentropic flashes for mixtures, so the Math Minion flash tool does a crude section search on temperature to match the desired value. It will also attempt to find P, given T and S, but not T and H. This is fairly robust, but can be slow.
While CoolProp's flash calculation is usually pretty robust, it isn't perfect or perhaps as robust as those in the better commercial packages. For some flash failures, it can help if you can tell CoolProp what phase the calculation will result in. This can be accomplished by adding an at sign followed byone of the following terms to the end of the thermo:
For instance:
Nitrogen, Oxygen, Argon @ supercritical
HOWEVER, it is critical that the fluid will actually be in the designated phase range at the conditions given. Invalid results can be produced if it isn't.
Be particularly wary about using this for multicomponent isentalpic or isentropic flashes, for as described above these use a crude search algorithm since CoolProp does not do them itself. At the very least do a seperate T and P flash at the calculated conditions and ensure the conditions were met.
Also be careful about referencing the thermo definition for a flash that has an imposed phase in another flash that might not have the same phase conditions.
Parameters that can be accessed in the form a.b where a is the tool and b is the parameter
Parameters that aren't dependent of the calculated phases are:
Other properties are accessed with phase and property parameters with the general form being:
someFlash.phase.property
where either the phase or the property can be omitted.
If only the phase appears, then the result is value containing all the properties for that phase. This is useful in tool reference expressions, such as input or output expressions in a model.
If only the property is present, then the property for the bulk phase is returned.
For example, assuming we have a flash tool named "feed":
The allowable phase values are:
The following properties are always calculated and available as property parameters:
The properties below are optional and are only calculated and available when they have been included in the thermo definition as described above: