CosmoRealSolid

class CosmoRealSolid(temperature, parameters=None)

Constructor for COSMO-RS solid phase. This can be used to calculate solid interactions in the COSMO-RS model.

Parameters:
chemicalPotential(species)

Calculate the pseudo-chemical potential of the solid state, using the pure liquid state as reference.

Parameters:

species (:class`~.CosmoRealSpecies`) – The species for which the pseudo-chemical potential is calculated.

Returns:

The pseudo-chemical potential.

Return type:

PhysicalQuantity of type temperature

freeEnergyOfFusion(species)

Calculate the free energy of fusion of the given species.

Parameters:

species (CosmoRealSpecies) – The species the free energy is calculated for.

Returns:

The Gibbs free energy of fusion.

Return type:

PhysicalQuantity of type energy

parameters()
Returns:

The parameters used for the COSMO-RS model.

Return type:

CosmoRSParameters

temperature()
Returns:

The temperature of the solid.

Return type:

PhysicalQuantity of type temperature

uniqueString()

Return a unique string representing the state of the object.

Usage Examples

Set up a water CosmoRealSolid. Example data available at Data link.


# Load the COSMO species
database = CosmoRSSpeciesDatabase()
water = database.exportSpecies('water')
water.setMeltingPoint(273.15 * Kelvin)
water.setEnthalpyOfFusion(6 * kiloJoulePerMol)
specific_heat_capacity_change = (4.187 - 2.108) * Joule / (gram*Kelvin)
specific_heat_capacity_change *= water.molarMass()
water.setSpecificHeatCapacityChange(specific_heat_capacity_change)

# Create the solid at 10K below the melting point.
solid = CosmoRealSolid(
    263*Kelvin,
    parameters=CosmoRSParameters(),
)

# Calculate Gibbs free energy of fusion of ice.
dG_fus = solid.freeEnergyOfFusion(water).convertTo(kiloJoulePerMol)
nlprint(f'The free energy of fusion of ice is {dG_fus}')

# Calculate chemical potential of ice.
chemical_potential = solid.chemicalPotential(water).convertTo(kiloJoulePerMol)
nlprint(f'The chemical potential of ice is {chemical_potential}')

water_solid_example.py

Notes

The CosmoRealSolid object allows calculation of the pseudochemical potential of a solid substance. The solid pseudochemical potential is calculated with reference to the liquid pseudochemical potential such that:

\[\mu^{sol} = \mu^{liq} - \Delta G_{fus}\]

Here \(\mu_{sol}\) is the solid pseudochemical potential, \(\mu_{liq}\) is the corresponding liquid chemical potential and \(\Delta G_{fus}\) is the free energy of fusion of the species. The free energy of fusion cannot be calculated directly by COSMO-RS, and therefore must be approximated. This can be done in a number of ways. In general, the most accurate approximation can be given as:

\[\Delta G_{fus} = \Delta H_{fus}\big(1 - \frac{T}{T_m}\big) - \Delta Cp_{fus} (T_m - T) + \Delta Cp_{fus} T \text{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. Likewise, \(\Delta Cp_{fus}\) is 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 Cp_{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 fitted at 298K.

\[\Delta G_{fus}^i(298K) = 12.2 V^{COSMO} - 0.76 N_{ring\ atoms} + 0.54 \mu^{water}_i\]

The linear coefficients are purely empirical and determined by fitting to experimental data[2]. Note that here \(\mu^{water}_i\) represents the chemical potential of the given molecule \(i\) dissolved in water at 298K. This gives a measure of the polarity of the molecule.

As with CosmoRealSolvent and CosmoRealGas the temperature of the substance is given as input when the object is created. For meaningful results using CosmoRealSolid the given temperature should be below the melting point.