Wolfram Research

Hansen Solubility Parameters

Source Notebook

Hansen solubility parameters for 211 common solvents

Originator: W. Zeng, Y. Du, Y. Xue & H. L. Frisch (State University of New York)
Steven Abbott

Solubility parameters are used to predict the properties of solvents and solvent mixtures to dissolve solutes, and are widely used in polymer chemistry. The Chemical entity type includes Hildebrand solubility parameters, which are suitable for nonpolar solvents. Hansen parameters extend this model to treat polar and hydrogen-bonding systems.

This data resource consists of 211 common solvents at 25°C, identified as Chemical entities and InChiKeys. (As discussed in the Chemical entity documentation, the entities include CAS, PubChem, SMILES, and InChI string identifiers, among many other properties.)

Examples

Basic Examples

Retrieve the resource:

In[1]:=
ResourceObject["Hansen Solubility Parameters"]
Out[1]=

Retrieve the default content:

In[2]:=
ResourceData["Hansen Solubility Parameters"]
Out[2]=

Searching Entries by CAS and Beilstein Index Numbers

Because the Solvent entries are described by Chemical entities, the properties of those entities can be queries to provide access to other indexing schemes, such as the CAS Number of the molecule:

In[3]:=
ResourceData["Hansen Solubility Parameters"][3, "Solvent"]["CASNumber"]
Out[3]=

This allows us to construct queries based on these identifiers contained in the Chemical entity, in addition to the InChIKey identifier provided in the data resource:

In[4]:=
Query[
  SelectFirst[#["Solvent"]["CASNumber"] == "CAS108-24-7" &]]@
 ResourceData["Hansen Solubility Parameters"]
Out[4]=

Similarly, Beilstein numbers are contained in the Chemical entity entries. Not all of the Wolfram Chemical Entities have Beilstein number data, so it is useful to define the FailureAction for the Query to ignore these:

In[5]:=
Query[
  SelectFirst[#["Solvent"]["BeilsteinNumber"] == "Beilstein385737" &],
  FailureAction -> None]@ResourceData["Hansen Solubility Parameters"]
Out[5]=

Creation of Molecule representations:

The Chemical entities contain SMILES and InChI representations of the molecular structure that can be used for constructing Molecule representations:

In[6]:=
ResourceData["Hansen Solubility Parameters"][3, "Solvent"]["SMILES"]
Molecule[%]
Out[6]=
Out[7]=
In[8]:=
Query[
  SelectFirst[#["Solvent"]["InChI"] == "InChI=1/C2H4O/c1-2-3/h2H,1H3" &],
  {"\[Delta]d", "\[Delta]p", "\[Delta]h"}
  ]@ResourceData["Hansen Solubility Parameters"]
Out[8]=

Correlation between dispersive parameter and refractive index

The interaction energy between nonpolar molecules should depend on the molar polarizability (London dispersion forces) and therefore the index of refraction; this is represented by the dispersive parameter, δd. Extract these values, deleting entries where the Chemical entity lacks the refractive index data:

In[9]:=
data = Map[{#["Solvent"]["RefractiveIndex"], #["\[Delta]d"]} &, ResourceData["Hansen Solubility Parameters"]] // Normal // DeleteMissing[#, 1, Infinity] &;

Clear[Subscript[n, D]] // Quiet;
fit = LinearModelFit[QuantityMagnitude[data], Subscript[n, D], Subscript[n, D]]
fit["ParameterTable"]
fit["RSquared"]
Out[10]=
Out[11]=
Out[12]=

The fitted parameters to this data are about twice the values reported in Eqn 16.19 of Zeng et al.'s paper from which this data was extracted. However, this does appear to be the correct fit for the dataset:

In[13]:=
Show[
 Plot[fit[x], {x, 1.2, 1.75}, PlotStyle -> Red],
 ListPlot[data],
 Frame -> True, FrameLabel -> {"\!\(\*SubscriptBox[\(n\), \(D\)]\)", "\!\(\*SubscriptBox[\(\[Delta]\), \(d\)]\)"}]
Out[13]=

Correlation between dipole moment, volume, and polar parameter

Zeng et al. note an empirical relationship observed by Beerbower and Dicky (1969) between the dipole moment, molar volume, and the polar parameter, δp. Again we can extract the dipole moment from the Chemical entity, using the molar volume provided in the dataset as the "Volume" column:

In[14]:=
data = DeleteMissing[#, 1, Infinity] &@Normal@
    Map[
     {#["Solvent"]["DipoleMoment"]/
        Sqrt[#["Volume"]] , #["\[Delta]p"]^2} &,
     ResourceData["Hansen Solubility Parameters"]];

Clear[x] // Quiet;
fit = LinearModelFit[QuantityMagnitude[data], x, x]
fit["ParameterTable"]
fit["RSquared"]
Out[15]=
Out[16]=
Out[17]=

A Plot of the fit shows the general trend, although there are number of examples for which the polar parameter is set to zero for very weakly polar molecules:

In[18]:=
Show[
 Plot[fit[x], {x, 0, 0.6}, PlotStyle -> Red],
 ListPlot[data],
 Frame -> True, FrameLabel -> {"\[Mu] \!\(\*SuperscriptBox[\(V\), \(\(-1\)/2\)]\)", "(\!\(\*SubscriptBox[\(\[Delta]\), \
\(p\)]\)\!\(\*SuperscriptBox[\()\), \(2\)]\)"}]
Out[18]=

Finding compatible solvents

Hansen parameters quantify “like dissolves like” solvation rules by the distance between a solutes Hansen triple (usually empirically determined), and the solvent properties. There is a modified Euclidean distance between the solute and solvent triples (the dispersive feature, δd, has an additional factor of 4). For example, a particular formulation of Nylon-66 has the Hanson triple:

In[19]:=
nylon = <|"\[Delta]d" -> 18.62, "\[Delta]p" -> 5.11, "\[Delta]h" -> 12.28|>;

Construct a query to compute the distance:

In[20]:=
soluteQuery[solute_Association] := Query[All,
  <|"Solvent" -> #Solvent,
    "Distance" -> Sqrt[ 4*(QuantityMagnitude@#["\[Delta]d"] - solute["\[Delta]d"])^2 + (QuantityMagnitude@#["\[Delta]p"] -
          solute["\[Delta]p"])^2 + (QuantityMagnitude@#["\[Delta]h"] -
          solute["\[Delta]h"])^2]|> &]

Apply this query to the dataset, sorting by Distance; the solvents with the smallest distance are predicted to be better solvents:

In[21]:=
(soluteQuery[nylon]@ResourceData["Hansen Solubility Parameters"])[
 SortBy["Distance"]]
Out[21]=

Empirically, Nylon-66 is soluble in phenolic alcohols (such as cresol, and phenol), and poor resistance to tetrachlorethane (correctly described by the Hanson model), moderate resistance to benzyl alcohol, but good resistance (low solubility) in morpholine and aniline (in disagreement with the Hanson model predictions).

Joshua Schrier, "Hansen Solubility Parameters" from the Wolfram Data Repository (2020)  

Data Resource History

Source Metadata

Data Downloads

Publisher Information