UNIFAC (UNIQUAC Functional-group Activity Coefficients) is an Excess Gibbs free energy model used to estimate activity coefficients in non-ideal mixtures. It is particularly useful for predicting the phase behavior of chemical mixtures, including liquid-liquid equilibrium (LLE) and vapor-liquid equilibrium (VLE). In this model the Excess Gibbs free energy is calculated from the contribution of a combinatorial term and a residual term.
Being:
Combinatorial: Accounts for the size and shape of the molecules. The involved equations can be checked in the API documentation: Ge_combinatorial
Residual: Accounts for the energy interactions between different functional groups. The involved equations can be checked in the API documentation: Ge_residual
Each substance of a mixture modeled with UNIFAC must be represented by a list a functional groups and other list with the ocurrence of each functional group on the substance. The list of the functional groups culd be accesed on the DDBST web page: https://www.ddbst.com/published-parameters-unifac.html
We can instantiate a UNIFAC model with a mixture ethanol-water and evaluate the logarithm of activity coefficients of the model for a 0.5 mole fraction of each, and a temperature of 298.0 K.
use yaeos__constants, only: pr
use yaeos__models_ge_group_contribution_unifac, only: Groups, UNIFAC, setup_unifac
! Variables declarations
type(UNIFAC) :: model
type(Groups) :: molecules(2)
real(pr) :: ln_gammas(2)
! Variables instances
! Ethanol definition [CH3, CH2, OH]
molecules(1)%groups_ids = [1, 2, 14] ! Subgroups ids
molecules(1)%number_of_groups = [1, 1, 1] ! Subgroups occurrences
! Water definition [H2O]
molecules(2)%groups_ids = [16]
molecules(2)%number_of_groups = [1]
! Model setup
model = setup_unifac(molecules)
! Calculate ln_gammas
call model%ln_activity_coefficient([0.5_pr, 0.5_pr], 298.0_pr, ln_gammas)
print *, ln_gammas
You will obtain:
>>> 0.18534142000449058 0.40331395945417559