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: UNIFAC

Implementation 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 SubstancesUNIFAC from dict

get_from_dict(self: pytherm.cpp.SubstancesUNIFAC, subs_dict: dict) None

Create SubstancesUNIFAC from 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:

References