KB-Binary
Quick Start
One of the reasons for using KB is that it provides many more insights into what is going on in a solution. Many of us have looked at boring activity coefficient curves and learned nothing much other than "A doesn't like B". Here we start with those boring curves (measured, estimated or created) and see how, via KB, they reveal a whole lot that we didn't know about!
There are a few experimental plots on some key systems, you can generate lots of pair-wise plots via a built-in UNIFAC engine, or you can manufacture your own activity coefficient plots. Hopefully you will be amazed to see how much you can learn about pairwise molecular interactions, shown, for example, as the "excess number", Δn, of molecule i around molecule j.
KB-Binary
We are all familiar with activity coefficient plots in binary mixtures. If one component is not "happy" in another then the activity coefficient is high. The plot is generally in terms of mole fraction, x1 and the activity coefficient of an "unhappy" molecule 1 starts high at low x1 (because it's mostly escaping from molecule 2) falling to 1 when x1 approaches 1. Unfortunately, these plots of activity coefficient reveal very little about what is going on at the molecular level.
This app takes activity coefficient data and turns it into Kirkwood-Buff Integrals (KBI) from which is is easy to see what is happening at the molecular level. [The default is to plot the KBI with autoscaling. But sometimes it's useful to fix the scale to some convenient value to get an idea of the absolute values.] A large positive KBI indicates a higher-than-bulk concentration around a given molecule. The KBI can also be used to create graphs of "Excess Numbers", nij which say how many molecules more or less surround a given molecule at any given concentration compared to the bulk average number. A large excess number indicates local clustering typical of blends that are on the border of phase separation. We can also plot (though this involves some assumptions that are not part of pure thermodynamics) Δxij which is the change in local mole fraction (in the region of the first solvation shell). In some cases you can find that Δx + x is close to 1, i.e. the system is close to a pure liquid, i.e. to phase separation.
The approach adopted here is based on the work of Dr Enrico Matteoli of CNR in Pisa. His landmark 1984 paper1 showed how illuminating it is to convert activity coefficients into KBIs and he subsequently developed the idea of showing the same data in terms of excess numbers nij and Δxij values (their meaning is discussed below). The datasets used were taken from the literature by Matteoli and coworkers and kindly provided for this app. His help and support in writing this app is warmly acknowledged. Any deviations from the published values are due to necessary simplifications for a real-world app. Going from activity coefficients to KBI requires a sophisticated Gibbs-Duhem compliant fitting curve. Even this can fail for some solvent pairs, in which case a second fitting option is automatically invoked. This double sophistication was all supplied and debugged by Dr Matteoli. Users should note that for simplicity the app omits the contribution from isothermal compressibility which, at a typical 1-3 cc/mole is negligible.
In terms of experimental datasets you can currently choose Water with Methanol, Ethanol and Propanol from the combo box. Water-Ideal100 shows the expected Gij values from an ideal solvent of MWt=100. The t-BuOH dataset is from a simulation I ran in COSMOtherm and is discussed in my Solubility Science book.
For those who want to explore more widely the UNIFAC option provides a large range of solvent pairs from which the activity coefficients are calculated.
Finally, for those who want to understand things in-depth, the User Defined option lets you specify the system via 3 sets of inputs. For space reasons they are not labelled, but you can work out what they are:
- Two parameters that generate a smooth curve of γ. The first sets the maximum value when x1=0 and the second controls the curvature, with higher values giving a steeper fall-off near the start.
- Three parameters that superimpose a "peaked" curve, with the maximum set by the first parameter, the position with the second and the width of the curve set by the third
- These are the MWts of the two components. The first is assumed to be a solvent with MWt up to 200, the second is a solute with MWts between 50 and 10000. For simplicity, all densities are assumed to be 1 at all concentrations.
As discussed in the KB Integrals app, it is possible, with some modest assumptions, to calculate nij, the "excess number" of solvent j molecules around solvent i. This does not imply anything like "complexing", it is just a statistical number. And, of course, if there are, say, 2.5 molecules more than expected by average, these might be mostly in the first solvation shell, with just the average number at larger distances or it might be that there is a modest concentration close by with a slow tail-off at larger distances. We have no way of knowing from the KBI itself. The values plotted are Δnij as they bring out more clearly what is happening and match the Nij values in the KB-gs app.
By making the assumption that the nij are in "close" proximity to solvent i, it is possible to calculate Δxij which is the change in mole fraction concentration compared to the bulk. This can be a very interesting number. Looking at propanol/water it is clear that adding x and Δx yields a number very close to 1, i.e. the propanol is very close to becoming a pure liquid, i.e. is getting close to phase separation. Predicting phase separation is not something that can be done with these tools; the numbers are intended only to provide some extra molecular insights.
The User Defined system is especially interesting when you have a high MWt solute. Excluded volume effects dominate everything! Because γ2 is defined by the Gibbs-Duhem relationship, x1δ(lnγ1) = x2δ(lnγ2), for a simple curve (the first value of the peaked curve is set to 1), the two γ curves are mirror images when the "curvature" values is set to 2.
The UNIFAC implementation is my own Javascript code. It is not elegant and not guaranteed. The UNIFAC calculations involve complex sets of sums over various parameters and the code reflects my confusion. Feel free to use the UNIFAC code for your own purposes, but even better, feel free to suggest how I can make it more elegant.
In the User Defined option, the first curve is defined by Max and Curve as an exponential of x1Curve from Max to 1. The second curve is defined by Max, Centre and Width as a Gaussian Max.e-(Centre-x)^2/Width. These were chosen because the KB calculations require nice smooth analytical derivatives which are well-defined for these two types of curves.