pytherm.activity.unifac_old module¶
This module contains a class UNIFAC for performing activity coefficient
calculations with the UNIFAC model.
UNIFAC Class¶
- class pytherm.activity.unifac_old.UNIFAC(dataset: ParametersUNIFAC, substances: SubstancesUNIFAC, dict_mode=False)[source]¶
Bases:
ActivityModelUNIFAC model for activity coefficients calculation
UNIFAC type (classic or modified) depends on
ParametersUNIFAC- Parameters:
dataset (ParametersUNIFAC) – ParametersUNIFAC object with interaction parameters
substances (SubstancesUNIFAC) – Substances UNIFAC object with substance’s group representation
- Raises:
Warning – Raises if unifac_mode is unknown (not classic or modified)
Examples
>>> import pytherm.activity.unifac as uf >>> subs = { ... "n-hexane": "2*CH3 4*CH2", ... "butanone-2": "1*CH3 1*CH2 1*CH3CO", ... } >>> system = { ... 'n-hexane': 0.5, ... 'butanone-2': 0.5, ... } >>> substances = uf.datasets.SubstancesUNIFAC() >>> substances.get_from_dict(subs) >>> am = uf.UNIFAC(dataset=uf.datasets.DOR, substances=substances) >>> am.get_y(conc=system, T=298) {'n-hexane': 1.514766775270851, 'butanone-2': 1.4331647782163541}
Methods
get_comb_mod(inp)Calculate combinatorial component \(\ln\gamma_i^c\) using modified equation
get_comb_original(inp)Calculate combinatorial component \(\ln\gamma_i^c\) using original UNIFAC equation
get_res(inp, T)Calculate residual component \(\ln\gamma_i^r\) using original equation
get_y(system[, T])Calculate activity coefficietns for system dict
- get_y(system, T=298)[source]¶
Calculate activity coefficietns for system dict
\[\gamma_i = \exp\left(\ln \gamma_i^c + \ln \gamma_i^r \right)\]- Parameters:
system – Input dictionary {“Substance name”: concentration}
T (int, optional) – Temperature, [K], by default 298
- Returns:
Activity coefficients
- Return type:
dict[str, float]
- get_comb_original(inp: SubstancesUNIFAC) dict[str, float][source]¶
Calculate combinatorial component \(\ln\gamma_i^c\) using original UNIFAC equation
\[\ln \gamma_i^c = \ln \frac{\phi_i}{x_i} + \frac{z}{2} q_i \ln\frac{\theta_i}{\phi_i} + L_i - \frac{\phi_i}{x_i} \sum_{j=1}^{n} x_j L_j\]\[\theta_i = \frac{x_i q_i}{\sum_{j=1}^{n} x_j q_j}\]\[\phi_i = \frac{x_i r_i}{\sum_{j=1}^{n} x_j r_j}\]\[L_i = 5(r_i - q_i)-(r_i-1)\]- Parameters:
inp (SubstancesUNIFAC) – SubstancesUNIFAC object with defined concentrations
z (int, optional) – Coordination number, by default 10
- Returns:
Returns lny_c {“Substance name”: lny_c}
- Return type:
dict[str, float]
- get_comb_mod(inp: SubstancesUNIFAC) dict[str, float][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}\]- Parameters:
inp (SubstancesUNIFAC) – SubstancesUNIFAC object with defined concentrations
z (int, optional) – Coordination number, by default 10
- Returns:
Returns lny_c {“Substance name”: lny_c}
- Return type:
dict[str, float]
- get_res(inp, T: float)[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)\]- Parameters:
inp (SubstancesUNIFAC) – SubstancesUNIFAC object with defined concentrations
T (float) – Temperature, [K]
- Returns:
Returns residual component {“Substance name”: lny_a}
- Return type:
dict[str, float]
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
- class pytherm.activity.unifac_old.UNIFAC(dataset: ParametersUNIFAC, substances: SubstancesUNIFAC, dict_mode=False)[source]¶
Bases:
ActivityModelUNIFAC model for activity coefficients calculation
UNIFAC type (classic or modified) depends on
ParametersUNIFAC- Parameters:
dataset (ParametersUNIFAC) – ParametersUNIFAC object with interaction parameters
substances (SubstancesUNIFAC) – Substances UNIFAC object with substance’s group representation
- Raises:
Warning – Raises if unifac_mode is unknown (not classic or modified)
Examples
>>> import pytherm.activity.unifac as uf >>> subs = { ... "n-hexane": "2*CH3 4*CH2", ... "butanone-2": "1*CH3 1*CH2 1*CH3CO", ... } >>> system = { ... 'n-hexane': 0.5, ... 'butanone-2': 0.5, ... } >>> substances = uf.datasets.SubstancesUNIFAC() >>> substances.get_from_dict(subs) >>> am = uf.UNIFAC(dataset=uf.datasets.DOR, substances=substances) >>> am.get_y(conc=system, T=298) {'n-hexane': 1.514766775270851, 'butanone-2': 1.4331647782163541}
Methods
get_comb_mod(inp)Calculate combinatorial component \(\ln\gamma_i^c\) using modified equation
get_comb_original(inp)Calculate combinatorial component \(\ln\gamma_i^c\) using original UNIFAC equation
get_ge(system[, T])Calculate excess molar Gibbs free energy
get_ge_RT(system[, T])Calculate excess molar Gibbs free energy divided by RT
get_res(inp, T)Calculate residual component \(\ln\gamma_i^r\) using original equation
get_y(system[, T])Calculate activity coefficietns for system dict
calculate_psi
change_t2
get_gr
get_gr_str
get_t1
get_t2
- T = -1.0¶
- dict_mode: bool¶
- get_comb: Callable¶
- get_comb_mod(inp: SubstancesUNIFAC) dict[str, float][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}\]- Parameters:
inp (SubstancesUNIFAC) – SubstancesUNIFAC object with defined concentrations
z (int, optional) – Coordination number, by default 10
- Returns:
Returns lny_c {“Substance name”: lny_c}
- Return type:
dict[str, float]
- get_comb_original(inp: SubstancesUNIFAC) dict[str, float][source]¶
Calculate combinatorial component \(\ln\gamma_i^c\) using original UNIFAC equation
\[\ln \gamma_i^c = \ln \frac{\phi_i}{x_i} + \frac{z}{2} q_i \ln\frac{\theta_i}{\phi_i} + L_i - \frac{\phi_i}{x_i} \sum_{j=1}^{n} x_j L_j\]\[\theta_i = \frac{x_i q_i}{\sum_{j=1}^{n} x_j q_j}\]\[\phi_i = \frac{x_i r_i}{\sum_{j=1}^{n} x_j r_j}\]\[L_i = 5(r_i - q_i)-(r_i-1)\]- Parameters:
inp (SubstancesUNIFAC) – SubstancesUNIFAC object with defined concentrations
z (int, optional) – Coordination number, by default 10
- Returns:
Returns lny_c {“Substance name”: lny_c}
- Return type:
dict[str, float]
- get_ge(system: dict[str, float], T=298) float[source]¶
Calculate excess molar Gibbs free energy
- Parameters:
system (dict[str, float]) – Input dictionary {“Substance name”: concentration}
T (int, optional) – Temperature, [K], by default 298
- Returns:
excess molar Gibbs free energy
- Return type:
float
- get_ge_RT(system, T=298)[source]¶
Calculate excess molar Gibbs free energy divided by RT
- Parameters:
system (dict[str, float]) – Input dictionary {“Substance name”: concentration}
T (int, optional) – Temperature, [K], by default 298
- Returns:
excess molar Gibbs free energy
- Return type:
float
- get_res(inp, T: float)[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)\]- Parameters:
inp (SubstancesUNIFAC) – SubstancesUNIFAC object with defined concentrations
T (float) – Temperature, [K]
- Returns:
Returns residual component {“Substance name”: lny_a}
- Return type:
dict[str, float]
- get_y(system, T=298)[source]¶
Calculate activity coefficietns for system dict
\[\gamma_i = \exp\left(\ln \gamma_i^c + \ln \gamma_i^r \right)\]- Parameters:
system – Input dictionary {“Substance name”: concentration}
T (int, optional) – Temperature, [K], by default 298
- Returns:
Activity coefficients
- Return type:
dict[str, float]
- groups: list¶
- phase: SubstancesUNIFAC¶
- class pytherm.activity.unifac_old.UNIFAC_W(dataset: ParametersUNIFAC, substances: SubstancesUNIFAC, Mw, dict_mode=False)[source]¶
Bases:
UNIFACMethods
get_comb_mod(inp)Calculate combinatorial component \(\ln\gamma_i^c\) using modified equation
get_comb_original(inp)Calculate combinatorial component \(\ln\gamma_i^c\) using original UNIFAC equation
get_ge(system[, T])Calculate excess molar Gibbs free energy
get_ge_RT(system[, T])Calculate excess molar Gibbs free energy divided by RT
get_res(inp, T)Calculate residual component \(\ln\gamma_i^r\) using original equation
get_y(system[, T])Calculate activity coefficietns for system dict
calculate_psi
change_t2
get_gr
get_gr_str
get_t1
get_t2
- get_y(system, T=298.0)[source]¶
Calculate activity coefficietns for system dict
\[\gamma_i = \exp\left(\ln \gamma_i^c + \ln \gamma_i^r \right)\]- Parameters:
system – Input dictionary {“Substance name”: concentration}
T (int, optional) – Temperature, [K], by default 298
- Returns:
Activity coefficients
- Return type:
dict[str, float]