Welcome to ℜeos
ℜeos is a thermodynamic library written in Rust with a Python interface. It provides tools for calculating thermodynamic properties and phase equilibria.
import numpy as np
from reos.cpa import CPAParameters, CPAPureRecord
from reos.eos import EquationOfState
from reos.state import State
parameters = CPAParameters.from_records([
CPAPureRecord.new(
name = "water",
molar_weight = 18.01528,
a0 = 0.12277,
b = 0.014515e-3,
c1 = 0.67359,
tc = 647.29,
epsilon = 166.55e2,
kappa = 0.0692,
na = 2,
nb = 2
)
])
# or CPAParameters.from_json(["water"], "./parameters/cpa/kontogeorgis2006.json")
eos = EquationOfState.scpa(parameters)
t = 298.15
p = 1e5
x = np.array([1.0])
s = State.tpx(eos, t, p, x)
print(s)
X = eos.unbonded_sites_fraction(t, s.density, x)
print(f"Unbonded sites fraction = {X}")
State(t = 298.150 K, p = 100000.000000 Pa, ρ = 55784.919890 mol/m³)
Unbonded sites fraction = [0.07825138 0.07825138]
Models
| Model | Description |
|---|---|
| CPA | Cubic Plus Association (srk, pr76, pr78) |
| cubic | Soave-Redlich-Kwong, Peng-Robinson 1976, Peng-Robinson 1978 |
Each model implement its analytical expressions of derived properties of Helmholtz potential.
Installation
Python
From pip
From source
You must have rust compiler and maturin/PyO3 installed.
To install the python package in your machine (such pip install -e .) and use the optimized version of the package:
To build the the python wheel, just use
Project layout
Repository
-
parameters: Directory with pure and binary parameters for the current models implemented in Reos -
crates: Containsreos, which is the Rust package that implement all the core functionalites -
pyreos: Rust package that create the Python interface fromreos -
pyreos-dev: Directory used to test functionalites ofreosin Python -
pyreos-examples: Python examples of how to usereos
Python package
reos.eos: Enables the creation and manipulation of equations of state with different models.reos.state: Provides tools for working with thermodynamic states, including property calculations and phase equilibria.reos.{model_name}: Each current model has its own submodule with its name, which contains the pure model record, the binary model record and the parameters objects .