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:
solutes (
CosmoRealSpecies
| Sequence ofCosmoRealSpecies
) – The solids for which the solubility is calculated.solvent_components (
CosmoRealSolvent
|MoleculeConfiguration
|CosmoRSMixture
) – The solvent in which the solid is dissolved in.solvent_density (PhysicalQuantity of type mass per volume) – The density of the solvent. If not specified solvent density is estimated from the components.
temperature (PhysicalQuantity of type temperature) – The solvent temperature. Default:
298.15 * Kelvin
parameters (
CosmoRSParameters
) – The COSMO-RS parameters
- parameters()¶
- Returns:
The COSMO-RS parameters
- Return type:
- 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:
- 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}')
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
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:
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
If none of these data is provided the Gibbs free energy of fusion is predicted from a simple linear model at 298K.
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.