Hi Nick,
The default multiphase equilibrium solver in Cantera can generate erroneous results when the the temperature is outside the bounds where the thermo polynomials for one of the phases are valid (or well behaved). This is a known issue (see https://github.com/Cantera/cantera/issues/270). For calculating equilibrium at a known temperature, I think the most robust solution would be to construct the Mixture object so it only includes phases that are in bounds for the corresponding polynomial.
I was going to suggest the secondary equilibrium solver, which can be used by specifying the argument solver='gibbs' to the mix.equilibrate method. This solver enforces the temperature bounds for each phase, and does not have this problem. However, I noticed that it finds the wrong equilibrium at T = 270, P = 1 bar — it should be ice, but the solver finds a gas instead.
Of course, you aren’t going to be able to get correct properties for water for your example condition of 500 K and 300 bar, which is near the critical point, by using ideal gas and condensed phase models, but that may not be relevant to the system you’re actually interested in.
Regards,
Ray