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:
temperature (PhysicalQuantity of type temperature) – The gas temperature.
parameters (
CosmoRSParameters
) – The COSMO-RS 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:
- 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}')
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:
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:
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
If none of these data is provided the Gibbs free energy of fusion is predicted from a simple linear model fitted at 298K.
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.