GasSolubility

class GasSolubility(gas_solutes, solvent_components, solvent_density=None, temperature=None, parameters=None)

Calculate the solubility of gases using the COSMO-RS model.

Parameters:
gasSolutes()
Returns:

The gases the solubility is calculated for.

Return type:

Sequence of CosmoRealSpecies

henryConstantCP()

Return the Henry’s constant of the given gas species in terms of concentration per pressure.

Returns:

The Henry constant.

Return type:

Sequence of PhysicalQuantity of mole per volume pressure

henryVolatilityPX()

Return the Henry volatility of the given gas species in terms of pressure per mole fraction.

Returns:

The Henry volatility.

Return type:

Sequence of PhysicalQuantity of mole fraction per pressure

parameters()
Returns:

The COSMO-RS parameters

Return type:

CosmoRSParameters

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 and gas temperature.

Return type:

PhysicalQuantity of type temperature

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

Calculate the gas solubility of \(SO_{2}\) in water.


# Load the COSMO species
database = CosmoRSSpeciesDatabase()
water = database.exportSpecies('water')
sulfur_dioxide = database.exportSpecies('sulfur dioxide')
sulfur_dioxide.setAntoineA(4.37798 * bar)
sulfur_dioxide.setAntoineB(966.6 * Kelvin)
sulfur_dioxide.setAntoineC(-42.07 * Kelvin)

# Determine the gas solubility.
gas_solubility = GasSolubility(
    sulfur_dioxide,
    water,
    solvent_density=1*kiloGram/liter,
    temperature=298*Kelvin,
    parameters=CosmoRSParameters(),
)

# Retrieve the Henry constant.
h_cp = gas_solubility.henryConstantCP()[0].convertTo(molar/bar)
nlprint(f'The Henry constant of SO2 in water is {h_cp}')

# Retrieve the Henry volatility.
h_px = gas_solubility.henryVolatilityPX()[0].convertTo(bar)
nlprint(f'The Henry volatility of SO2 in water is {h_px}')

water_so2_example.py

Notes

The GasSolubility object allows one to estimate a measure of gas solubility. This measure is named Henry’s constant and comes in a variety forms. Henry’s law states that the amount of gas dissolved, \(c_{gas}\) is directly proportional to the partial pressure, \(p\), of the gas above the condensed phase. The proportionality constant \(H^{cp}\) can be given as

\[H^{cp} = \frac{c_{gas}}{p}\]

The relation may also be defined as the partial pressure of a gas is proportional to its concentration. In this form the proportionality constant is referred to as the Henry volatility. Assuming concentration is given in mole fraction \(x_{gas}\), then the proportionality constant \(K^{px}\) can be given as

\[K^{px} = \frac{p}{x_{gas}} = \frac{1}{V_m H^{cp}}\]

Here \(V_m\) is the molar volume of the solvent. Both measures can be calculated by the GasSolubility as demonstrated in the Usage Example.

In COSMO-RS, the Henry’s constant is calculated by estimating the difference in chemical potential between the solvated and gaseous states. This is expressed as:

\[H^{cp} = \frac{\exp([\mu^{gas} - \mu^{solv}] / RT)}{p_0 V_m}\]

Here \(p_0\) is a reference pressure, defined to be 1 bar. If the Antoine parameters are known for the gaseous species then the partial pressure, \(p\), can be estimated as:

\[\log_{10}(p) = A - \frac{B}{C+T}\]

Here \(T\) is the temperature and \(A\), \(B\) and \(C\) are the Antoine equation parameters. Since the partial pressure of a substance in COSMO-RS is defined as \(p = \exp([\mu_{liq}-\mu_{gas}]/ RT)\) this can be used to simplify the calculation of solubility to the difference in chemical potential between the solvated and pure liquid states. This can be expressed as:

\[H^{cp} = \frac{\exp([\mu^{liq} - \mu^{solv}] / RT)}{p V_m} = \frac{1}{\gamma p V_m}\]

Here \(\gamma\) is the activity coefficient of the substance in the solvent and \(p\) is the estimated gas partial pressure. The Antoine parameters are provided as demonstrated in the Usage Example. These parameters are then used in the semi-empirical Antoine equation which describes the relation between the vapor pressure of a pure substance and temperature.