pytherm.activity.unifac¶
This module contains classes and methods to calculate activity coefficients with the UNIFAC model.
How to use¶
To use UNIFAC it’s nessesary to define substances with SubstancesUNIFAC,
load parameters with ParametersUNIFAC and set-up the model:
>>> 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}
UNIFAC class¶
- class pytherm.activity.unifac.UNIFAC¶
Implementation of the UNIFAC model to work with molar fractions
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
Methods
get_a(self, conc, T)Calculate activities for conc array
get_y(self, conc, T)Calculate activity coefficients for conc array
- __init__(self: pytherm.cpp.UNIFAC, arg0: pytherm.cpp.ParametersUNIFAC, arg1: pytherm.cpp.SubstancesUNIFAC) None¶
- get_a(self: pytherm.cpp.UNIFAC, conc: list[float], T: float) list[float]¶
Calculate activities for conc array
Concentrations must be in molar fractions
- Parameters:
conc (list[float]) – Input concentration array, [molar fraction]
T (float) – Temperature, [K]
- Returns:
Activities
- Return type:
list[float]
Examples
>>> UNIFAC.get_a([0.5, 0.5], T=298)
- get_y(self: pytherm.cpp.UNIFAC, conc: list[float], T: float) list[float]¶
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 (list[float]) – Input concentration array, [molar fraction]
T (float) – Temperature, [K]
- Returns:
Activity coefficients
- Return type:
list[float]
Examples
>>> UNIFAC.get_y([0.5, 0.5], T=298)
UNIFAC_W class¶
- class pytherm.activity.unifac.UNIFAC_W¶
Bases:
UNIFACImplementation of the UNIFAC model to work with weight fractions
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
Methods
get_a(self, conc, T)Calculate activities for conc array
get_y(self, conc, T)Calculate activity coefficients for conc array
- __init__(self: pytherm.cpp.UNIFAC_W, arg0: pytherm.cpp.ParametersUNIFAC, arg1: pytherm.cpp.SubstancesUNIFAC, arg2: list[float]) None¶
- get_a(self: pytherm.cpp.UNIFAC_W, conc: list[float], T: float) list[float]¶
Calculate activities for conc array
Concentrations must be in weight fractions
- Parameters:
conc (list[float]) – Input concentration array, [weight fractions]
T (float) – Temperature, [K]
- Returns:
Activities
- Return type:
list[float]
Examples
>>> UNIFAC.get_a([0.5, 0.5], T=298)
- get_y(self: pytherm.cpp.UNIFAC_W, conc: list[float], T: float) list[float]¶
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 (list[float]) – Input concentration array, [molar fraction]
T (float) – Temperature, [K]
- Returns:
Activity coefficients
- Return type:
list[float]
SubstancesUNIFAC class¶
Substances must be a special SubstancesUNIFAC object
- class pytherm.activity.unifac.SubstancesUNIFAC¶
A special class that holds UNIFAC substances
Methods
get_from_dict(self, subs_dict)Create
SubstancesUNIFACfrom dict- get_from_dict(self: pytherm.cpp.SubstancesUNIFAC, subs_dict: dict) None¶
Create
SubstancesUNIFACfrom dict- Parameters:
subs_dict (dict) – Substances dict
Examples
>>> subs = { ... "n-hexane": "2*CH3 4*CH2", ... "butanone-2": "1*CH3 1*CH2 1*CH3CO", ... } >>> substances = SubstancesUNIFAC() >>> substances.get_from_dict(subs)
ParametersUNIFAC¶
Parameters must be a special ParametersUNIFAC object
- class pytherm.activity.unifac.ParametersUNIFAC¶
A special class that holds UNIFAC parameters
- __init__(self: pytherm.cpp.ParametersUNIFAC, path: str) None¶
Load parameters form .dat file
Build-in parameters¶
There are some ready to use ParametersUNIFAC objects in unifac.datasets:
- Classic UNIFAC:
unifac.datasets.VLE(pytherm.parameters.unifac.datasets.VLE) [1]unifac.datasets.LLE(pytherm.parameters.unifac.datasets.LLE) [2]unifac.datasets.INF(pytherm.parameters.unifac.datasets.INF) [3]unifac.datasets.BIO2016_1(pytherm.parameters.unifac.datasets.BIO2016_1) [6]unifac.datasets.BIO2016_2(pytherm.parameters.unifac.datasets.BIO2016_2) [6]
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
Published DDB parameters, 2021 JAN, https://www.ddbst.com/PublishedParametersUNIFACDO.html
Kang2015, DOI: https://doi.org/10.1016/j.fluid.2014.12.042