SolidSolubility

class SolidSolubility(solutes, solvent_components, solvent_density=None, temperature=None, parameters=None)

Calculate the solubility of molecular solids using the COSMO-RS model.

Parameters:
parameters()
Returns:

The COSMO-RS parameters

Return type:

CosmoRSParameters

soluteConcentration()
Returns:

The concentration of each solute in the solvent.

Return type:

Sequence of PhysicalQuantity of molar

soluteMoleFraction()
Returns:

The mole fractions of each species dissolved in the solvent.

Return type:

Sequence of float

soluteWeightPercent()
Returns:

The mass-mass loading of the species in the solvent.

Return type:

float

solutes()
Returns:

The gases the solubility is calculated for.

Return type:

Sequence of CosmoRealSpecies

solventComponents()
Returns:

The components of the solvent.

Return type:

CosmoRSMixture

solventDensity()
Returns:

The solvent density, if specified. If not returns None, and the solvent density is taken from the solvent components.

Return type:

PhysicalQuantity of type mass per volume

temperature()
Returns:

The solvent temperature.

Return type:

PhysicalQuantity of type temperature

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

Calculate the amount of aspirin dissolved in water. Note in this example the melting point and enthalpy of fusion are provided for aspirin but not the change in specific heat capapcity Data link. This data may be set using the method setSpecificHeatCapacityChange.

# Load the COSMO species
database = CosmoRSSpeciesDatabase()
water = database.exportSpecies('water')
aspirin = database.exportSpecies('acetylsalicylic acid')

# Set the melting temperature and enthalpy of fusion.
aspirin.setMeltingPoint(409*Kelvin)
aspirin.setEnthalpyOfFusion(29.17*kiloJoulePerMol)

# Determine the solid solubility.
solid_solubility = SolidSolubility(
    aspirin,
    water,
    temperature=298*Kelvin,
    parameters=CosmoRSParameters()
)

# Retrieve solute concentration in different forms.
molar_concentration = solid_solubility.soluteConcentration()[0]
nlprint(f'The molar concentration of aspirin in water is {molar_concentration}')
mole_fraction = solid_solubility.soluteMoleFraction()[0]
nlprint(f'The mole fraction of aspirin in water is {mole_fraction}')
weight_percent = solid_solubility.soluteWeightPercent()[0]
nlprint(f'The weight percent of aspirin in water is {weight_percent}')

aspirin_water_example.py

Notes

The SolidSolubility object allows to calculate COSMO-RS solid-liquid equilibrium (SLE) of a solid substance given a liquid phase. The amount of a solid substance being dissolved, \(x^i\), is calculated according to

\[\mu_i^{liq} - \Delta G^{fus} = \mu_i^{solv} + RT\ln x_i\]

Here \(i\) represents the given substance, \(\mu_i^{solv}\) chemical potential of the substance in the solvent phase and \(\mu_i^{liq}\) is the chemical potential of the pure liquid compound. The Gibbs free energy of fusion, \(\Delta G^{fus}\) is approximated with the CosmoRealSolid object. The most accurate approximation is generally:

\[\Delta G^{fus} = \Delta H^{fus}\big(1 - \frac{T}{T_m}\big) - \Delta C_p^{fus} (T_m - T) + \Delta C_p^{fus} T \ln \frac{T_m}{T}\]

Note several pure compound data are required. \(T_m\) is the melting pont, \(\Delta H^{fus}\) the heat of fusion and \(\Delta C_p^{fus}\) the change in molar heat capacity upon melting, which corresponds to the difference in molar heat capacity of a compound in its pure liquid and solid state[1]. If \(\Delta C_p^{fus}\) is not available the two last terms may be neglected which gives

\[\Delta G^{fus} = \Delta H^{fus}\big(1 - \frac{T}{T_m}\big)\]

If none of these data is provided the Gibbs free energy of fusion is predicted from a simple linear model at 298K.

\[\Delta G^{fus}(298K) = 12.2 V_{COSMO} - 0.76 N_{ringatoms} + 0.54 \mu^{water}_i\]

The linear coefficients are purely empirical and determined by fitting to experimental data[2].

The SolidSolubility does not take into account the changing nature of the solvent as more solute is dissolved. It therefore only gives an estimate of the initial solubility at low solute concentration. In cases where the temperature is above the given melting point of a substance, \(\Delta G^{fus}\) is assumed to be zero, and the substance is treated as though it is in the liquid state.