pytherm.activity.unifac module¶
This module contains a class UNIFAC for performing activity coefficient
calculations with the UNIFAC model.
UNIFAC Class¶
- class pytherm.activity.unifac.UNIFAC(dataset: ParametersUNIFAC, substances: SubstancesUNIFAC)[source]¶
UNIFAC model for activity coefficients calculation
UNIFAC type (classic or modified) depends on
ParametersUNIFACFor classic mode UNIFAC useget_comb_classic(), for modifiedget_comb_mod()- Parameters:
dataset (ParametersUNIFAC) – ParametersUNIFAC object with interaction parameters
substances (SubstancesUNIFAC) – Substances UNIFAC object with substance’s group representation
Examples
>>> import pytherm.activity.unifac as uf >>> subs = { ... "n-hexane": "2*CH3 4*CH2", ... "butanone-2": "1*CH3 1*CH2 1*CH3CO", ... } >>> x = [0.5, 0.5] >>> substances = uf.datasets.SubstancesUNIFAC() >>> substances.get_from_dict(subs) >>> am = uf.UNIFAC(dataset=uf.datasets.DOR, substances=substances) >>> am.get_y(x=x, T=298) {'n-hexane': 1.514766775270851, 'butanone-2': 1.4331647782163541}
Methods
get_y(conc[, T])Calculate activity coefficients for conc array
get_y_array(conc[, T])Calculate activity coefficients for conc matrix
- get_y(conc: ndarray, T=298.0) ndarray[source]¶
Calculate activity coefficients for conc array
Concentrations must be in molar fractions
\[\gamma_i = \exp\left(\ln \gamma_i^c + \ln \gamma_i^r \right)\]- Parameters:
conc (np.ndarray) – Input concentration array, [molar fraction]
T (float, optional) – Temperature, [K], by default 298.0
- Returns:
Activity coefficients
- Return type:
np.ndarray
Examples
>>> UNIFAC.get_y([0.5, 0.5], T=298)
- get_y_array(conc: ndarray[any, any], T=298) ndarray[any, any][source]¶
Calculate activity coefficients for conc matrix
\[\gamma_i = \exp\left(\ln \gamma_i^c + \ln \gamma_i^r \right)\]- Parameters:
conc (np.ndarray) – Input concentration matrix, [molar fraction]
T (float, optional) – Temperature, [K], by default 298.0
- Returns:
Activity coefficients
- Return type:
np.ndarray[(np.any, np.any,)]
Examples
>>> UNIFAC.get_y([[0.5, 0.5], [[0.6, 0.4]]])
UNIFAC_W Class¶
- class pytherm.activity.unifac.UNIFAC_W(dataset: ParametersUNIFAC, substances: SubstancesUNIFAC, molar_weight)[source]¶
UNIFAC model for activity coefficients calculation in weight fractions.
Override
UNIFACmethods to calculate properties in weight fractions- Parameters:
dataset (ParametersUNIFAC) – ParametersUNIFAC object with interaction parameters
substances (SubstancesUNIFAC) – Substances UNIFAC object with substance’s group representation
molar_weight (numpy.ndarray) – array of molar weighs
Methods
get_y(conc[, T])Calculate activity coefficients for conc array
- get_y(conc: ndarray, T=298.0) ndarray[source]¶
Calculate activity coefficients for conc array
Concentrations must be in weight fractions
\[\gamma_i = \exp\left(\ln \gamma_i^c + \ln \gamma_i^r \right)\]- Parameters:
conc (np.ndarray) – Input concentration array, [weight fraction]
T (float, optional) – Temperature, [K], by default 298.0
- Returns:
Activity coefficients
- Return type:
np.ndarray
Examples
Functions¶
- pytherm.activity.unifac.get_res(conc: ndarray, n_gr: int, group_comp: ndarray[any, any], group_Q: ndarray, gr_id_local: ndarray, n_comp: int, psi: ndarray[any, any], ln_gamma_pure: ndarray[any, any]) ndarray[source]¶
Calculate residual component \(\ln\gamma_i^r\) using original equation
\[\ln \gamma_i^r = \sum_{k}^n \nu_k^{(i)} \left[ \ln \Gamma_k - \ln \Gamma_k^{(i)} \right]\]\[\ln \Gamma_k = Q_k \left[1 - \ln \sum_m \Theta_m \Psi_{mk} - \sum_m \frac{\Theta_m \Psi_{km}}{\sum_n \Theta_n \Psi_{nm}}\right]\]\[\Theta_m = \frac{Q_m X_m}{\sum_{n} Q_n X_n}\]\[X_m = \frac{ \sum_j \nu^j_m x_j}{\sum_j \sum_n \nu_n^j x_j}\]\[\Psi_{mn} = \exp\left(\frac{-a_{mn} - b_{mn}T - c_{mn}T^2}{T}\right)\]
- pytherm.activity.unifac.get_comb_classic(conc: ndarray, comp_r: ndarray, comp_q: ndarray) ndarray[source]¶
Calculate combinatorial component \(\ln\gamma_i^c\) using classic equation
\[\ln \gamma_i^c = 1 - {V}_i + \ln({V}_i) - 5q_i \left(1 - \frac{V_i}{F_i}+ \ln\left(\frac{V_i}{F_i}\right)\right)\]\[V_i = \frac{r_i}{\sum_j r_j x_j}\]\[F_i = \frac{q_i}{\sum_j q_j x_j}\]
- pytherm.activity.unifac.get_comb_mod(conc: ndarray, comp_r: ndarray, comp_q: ndarray) ndarray[source]¶
Calculate combinatorial component \(\ln\gamma_i^c\) using modified equation
\[\ln \gamma_i^c = 1 - {V'}_i + \ln({V'}_i) - 5q_i \left(1 - \frac{V_i}{F_i}+ \ln\left(\frac{V_i}{F_i}\right)\right)\]\[V'_i = \frac{r_i^{3/4}}{\sum_j r_j^{3/4}x_j}\]\[V_i = \frac{r_i}{\sum_j r_j x_j}\]\[F_i = \frac{q_i}{\sum_j q_j x_j}\]
UNIFAC substances¶
Substances must be a special SubstancesUNIFAC object
UNIFAC parameters¶
Parameters must be a special ParametersUNIFAC object
There are some ready to use ParametersUNIFAC objects in unifac.datasets:
- Classic UNIFAC:
References
Published DDB parameters, 2021 JAN, https://www.ddbst.com/published-parameters-unifac.html
Magnussen1981, DOI: https://doi.org/10.1021/i200013a024
Bastos1988, DOI: https://doi.org/10.1021/i200013a024
DOR, published DDB parameters, 2021 JAN, https://www.ddbst.com/PublishedParametersUNIFACDO.html
Kang2015, DOI: https://doi.org/10.1016/j.fluid.2014.12.042