I was recently running a calculation in React 9.0.8 64-bit for students to demonstrate the need for a Pitzer-style database when modeling brines. I was trying to show the difference in the calculated solubity of Epsomite for the standard D-H approach (using thermo.dat) versus the HMW model. I noticed in the output file when using the default database that the resulting activity of water was 1.000000. I could see that it was actually .999999999996 by outputting the value for Gtplot, which is identical to what you get if you run a calculation for pure water. When I titrate in Epsomite, or simply use a 1 molal MgSO4 solution I still get an activity of 1. Lower concentrations or calculating Gypsum solubility produces a water activity of 1. I only see the activity of water change if there are monovalent cations and anions present. Adding divalent ions to a solution with monovalent ions actually increase the activity of water (towards 1) because the divalent ions complex the monovalent ions; the divalent ions have zero effect on the activity of water itself. The same effect is seen with thermo.com.V8.R6+.dat but the calculation works fine with the HMW and other Pitzer databases I have created
I realize that the activity of water calculation in the B-dot model is not accurate for highly saline solutions even though the B-dot equation is supposed to be good for up to 3 M NaCl. However, it is clear that the activity of water calculation in the my version of React is erroneous when using a D-H model. It looks to me like the stoichiometric ionic strength used in the osmotic coefficient calculation is perhaps coded wrong, ignoring all contributions from higher valent ions. Equation 8.8 in Geochemical and Biogeochemical Reaction Modeling shows nothing that would have it ignore cations of higher valence. Any ideas? Whatever is wrong certainly complicated my demonstration.