UNIQUAC

UNIQUAC (universal quasichemical) Excess Gibbs free energy model.

\[\frac{G^E}{RT} = \sum_k n_k \ln\frac{\phi_k}{x_k} + \frac{z}{2}\sum_k q_k n_k \ln\frac{\theta_k}{\phi_k} - \sum_k q_k n_k \ln\left(\sum_l \theta_l \tau_{lk} \right)\]

With:

\[x_k = \frac{n_k}{\sum_l n_l}\]
\[\phi_k = \frac{r_k n_k}{\sum_l r_l n_l}\]
\[\theta_k = \frac{q_k n_k}{\sum_l q_l n_l}\]
\[\tau_{lk} = \exp \left[\frac{-\Delta U_{lk}}{R T} \right]\]
\[\frac{-\Delta U_{lk}}{R T} = a_{lk}+\frac{b_{lk}}{T}+c_{lk}\ln T + d_{lk}T + e_{lk}{T^2}\]

An example of having a mixture of Water-Ethanol-Bezene at 298.15 K with constant \(\frac{\Delta U}{R}\) [K]:

Water

Ethanol

Benzene

0

526.02

309.64

−318.06

0

−91.532

1325.1

302.57

0

[1]:
import yaeos

import numpy as np


rs = [0.92, 2.1055, 3.1878]
qs = [1.4, 1.972, 2.4]

# Calculate bij from DUij. We need -DU/R to get bij
bij = [
    [0.0, -526.02, -309.64],
    [318.06, 0.0, 91.532],
    [-1325.1, -302.57, 0.0],
]

model = yaeos.UNIQUAC(qs, rs, bij=bij)


n = [2.0, 2.0, 8.0] # number of moles [mol]
T = 298.15          # Temperature [K]


model.ln_gamma(n, T)
[1]:
array([ 2.18109416, -0.15137624,  0.35449467])

The complete docstring of the UNIQUAC model is the following:

Init signature: yaeos.UNIQUAC(qs, rs, aij=None, bij=None, cij=None, dij=None, eij=None) -> None
Docstring:
UNIQUAC (UNIversal QUAsiChemical) Excess Gibbs free energy model.

Please refer to the `yaeos` user documentation for an in-depth look at the
model's information: https://ipqa-research.github.io/yaeos/page/index.html

Parameters
----------
qs : array_like
    Molecule's relative areas :math:`Q_i`
rs : array_like
    Molecule's relative volumes :math:`R_i`
aij : array_like
    Interaction parameters matrix :math:`a_{ij}` zero matrix if no
    provided, by default None
bij : array_like
    Interaction parameters matrix :math:`b_{ij}` zero matrix if no
    provided, by default None
cij : array_like
    Interaction parameters matrix :math:`c_{ij}` zero matrix if no
    provided, by default None
dij : array_like
    Interaction parameters matrix :math:`d_{ij}` zero matrix if no
    provided, by default None
eij : array_like
    Interaction parameters matrix :math:`e_{ij}` zero matrix if no
    provided, by default None