Skip to content

Releases: ipqa-research/ugropy

v3.1.0 nonoptimal solutions

06 May 17:09
a6f13e1
Compare
Choose a tag to compare

Now, along with multiple solutions, nonoptimal solutions could be obtained if desired. Example:

from ugropy import unifac

toluene = unifac.get_groups("toluene", search_multiple_solutions=True, search_nonoptimal=True)

print(toluene[0].subgroups)
print(toluene[1].subgroups)

You will obtain:

{'ACH': 5, 'ACCH3': 1}
{'CH3': 1, 'ACH': 5, 'AC': 1}

The solutions are always ordered from most optimal to less optimal.

What's Changed

Full Changelog: v3.0.5...v3.1.0

v3.0.5

12 Mar 13:04
ba2f95b
Compare
Choose a tag to compare

What's Changed

New model!

Dortmund UNIFAC has been added. You can try it with:

from ugropy import dortmund

chex = dortmund.get_groups("cyclohexane")

print(chex.subgroups)

New writer:

Writer to_yaeos is implemented. It generates the Fortran source for groups definitions for yaeos.
Example:

from ugropy import unifac, writers

names = ["ethane", "ethanol", "toluene", "water"]

groups = [unifac.get_groups(name).subgroups for name in names]

fortran_code = writers.to_yaeos(groups, unifac)

print(fortran_code)

You will obtain:

use yaeos__models_ge_group_contribution_unifac, only: Groups

type(Groups) :: molecules(4)

molecules(1)%groups_ids = [1]
molecules(1)%number_of_groups = [2]

molecules(2)%groups_ids = [1, 2, 14]
molecules(2)%number_of_groups = [1, 1, 1]

molecules(3)%groups_ids = [9, 11]
molecules(3)%number_of_groups = [5, 1]

molecules(4)%groups_ids = [16]
molecules(4)%number_of_groups = [1]

Full Changelog: v3.0.0...v3.0.5

v3.0.0

20 Feb 18:03
5ea457a
Compare
Choose a tag to compare

What's Changed

Problematic structures definition for each model are not longer needed. A big algorithm overhaul performed to achieve that.

News

New model available! Abdulelah-Gani property estimator: https://github.com/PEESEgroup/Pure-Component-Property-Estimation

Now properties estimated by properties estimators have units provided by the library Pint

Breaking changes

The function get_groups not longer exist. Each model is imported individually and get_groups is a method:

from ugropy import unifac, psrk, joback, abdulelah_gani

unifac_groups = unifac.get_groups("hexane")
psrk_groups = unifac.get_groups("hexane", search_multiple_solutions=True)

print(unifac_groups.subgroups)
print(psrk_groups.subgroups)

Gibbs excess models estimates de $R$ and $Q$ values of molecules:

print(unifac_groups.r, unifac_groups.q)

The Joback and Abdulelah-Gani models have all estimated properties on the output object:

joback_groups = joback.get_groups("hexane")

print(joback_groups.critical_temperature)

Check the tutorial for more information of all the new features of ugropy

Full Changelog: v2.0.7...v3.0.0

v2.0.7

24 Aug 19:37
Compare
Choose a tag to compare

Bug fixing: bad dependencies declarations for PyPI ugropy v2.0.5. The new version of rdkit and numpy broke ugropy

Full Changelog: v2.0.5...v2.0.7

v2.0.5

24 Apr 02:36
db4bf72
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v2.0.0...v2.0.5

v2.0.0

06 Mar 02:02
864799f
Compare
Choose a tag to compare

What's Changed

  • Changes in ugropy API. get_model_groups no longer exist. All model uses the get_groups function (see tutorial)
  • New writer! Now ugropy can write the group dictionaries for Caleb Bell's Thermo library.
  • New feature ".draw()": Now the fragmentation models results return a Fragmentation object that allows the user to represent the fragmentation result graphically (see tutorial)
  • Changes in the algorithm: ugropy checks if the solution can be fitted in the molecule's atoms before throwing the solution for molecules with composed structures.

Full Changelog: v1.0.0...v2.0.0

v1.0.0

26 Dec 20:43
5c6d4e2
Compare
Choose a tag to compare

Models supported v1.0.0

  • Classic liquid-vapor UNIFAC
  • Predictive Soave-Redlich-Kwong (PSRK)
  • Joback

Writers

  • Clapeyron.jl