11 个不稳定版本 (5 个破坏性)

0.7.0 2024年5月21日
0.6.1 2024年1月11日
0.6.0 2023年12月19日
0.5.1 2023年11月23日
0.0.0 2021年4月15日

#7 in 科学

Download history 6/week @ 2024-04-26 2/week @ 2024-05-03 136/week @ 2024-05-17 14/week @ 2024-05-24 2/week @ 2024-06-21 6/week @ 2024-06-28 43/week @ 2024-07-05 78/week @ 2024-07-26 9/week @ 2024-08-02

87 每月下载量
feos-campd 中使用

MIT/Apache

7MB
32K SLoC

FeOs - 状态方程和经典密度泛函理论的框架

crate documentation documentation repository

FeOs 包提供了不同状态方程和 Helmholtz 能量泛函模型及其对应的 Python 绑定的 Rust 实现。

from feos.eos import EquationOfState, State
from feos.pcsaft import PcSaftParameters, PcSaftRecord

# PC-SAFT parameters for methanol (Gross and Sadowski 2002)
record = PcSaftRecord(1.5255, 3.23, 188.9, kappa_ab=0.035176, epsilon_k_ab=2899.5, na=1, nb=1)

# Build an equation of state
parameters = PcSaftParameters.from_model_records([record])
eos = EquationOfState.pcsaft(parameters)

# Define thermodynamic conditions
critical_point = State.critical_point(eos)

# Compute properties
p = critical_point.pressure()
t = critical_point.temperature
print(f'Critical point for methanol: T={t}, p={p}.')
Critical point for methanol: T=531.5 K, p=10.7 MPa.

模型

以下模型目前作为 FeOs 框架的一部分发布

名称 描述 eos dft
pcsaft 扰动链(极性)统计关联流体理论
epcsaft 电解质 PC-SAFT
gc-pcsaft (异段)组分贡献 PC-SAFT
pets 扰动截断和移位 Lennard-Jones 混合物
uvtheory Mie 流体和混合物的状态方程
saftvrqmie 量子流体和混合物的状态方程
saftvrmie Mie 形式变程相互作用的统计关联流体理论

列表正在不断扩展。目前正在开发 UV 理论和 SAFT-VR Mie 的 Helmholtz 能量泛函的实现。

其他公开的仓库实现了 FeOs 框架内的模型,但目前尚未包含在 feos Python 包中,包括

名称 描述 eos dft
feos-fused-chains 异段融合球链泛函

参数

除了 Rust 和 Python 包的源代码之外,此存储库还包含 JSON 文件,其中包含先前发布的不同模型的参数,包括组分贡献方法。参数文件可以直接从 Rust 或 Python 读取。

性质和相平衡

该包使用 广义(超)双数 从 Helmholtz 能量状态方程的方程中泛型计算精确的偏导数。这些导数用于计算

  • 平衡性质(压力、热容、逸度等)
  • 传输特性(粘度、导热系数、扩散系数)采用熵尺度法。
  • 临界点和纯组分及混合物的相平衡。

此外,还提供了一些工具来帮助处理分子状态方程和(同段)组贡献方法的参数,以及为纯组分和二元混合物生成相图的工具。

经典密度泛函理论

FeOs使用高效的数值方法计算非均匀系统中的密度分布。亮点包括:

  • 在笛卡尔(1D、2D和3D)、极坐标、圆柱坐标和球坐标系统中快速计算卷积积分,使用FFT和相关算法。
  • 使用广义(超)双数进行自动微分来自动计算Helmholtz能量密度的偏导数(包括温度导数)。
  • 建模异段分子,包括支链分子。
  • 计算表面张力、吸附等温线、对关联函数和溶剂化自由能的功能。

货物功能

在没有激活其他功能的情况下,该命令

cargo test --release

将仅构建和测试crate的核心功能。要为特定模型运行单元和集成测试,运行

cargo test --release --features pcsaft

以测试,例如,PC-SAFT的实现

cargo test --release --features all_models

以运行所有实现的模型的测试。

Python包

FeOs使用PyO3框架提供Python绑定。Python包可以通过pip安装,并在Windows、Linux和macOS上运行。

pip install feos

如果您无法从PyPI获取适用于您的系统的编译包,并且已安装Rust编译器,则可以使用以下命令从源代码构建Python包

pip install git+https://github.com/feos-org/feos

此命令构建的包不包含链接时间优化(LTO),这可以进一步提高性能。有关构建包含LTO的wheel的信息,请参阅从源代码构建部分。

从源代码构建

要编译代码,您需要Rust编译器和已安装的maturin(>=0.13,<0.14)。要将包直接安装到活动环境(virtualenv或conda)中,请使用

maturin develop --release

它使用在pyproject.toml文件中指定的pythonall_models功能。

或者,您可以明确指定要包含在Python包中的模型或功能,例如

maturin develop --release --features "python pcsaft dft"

对于PC-SAFT状态方程和Helmholtz能量泛函。

要构建包含链接时间优化(LTO)的wheel,请使用

maturin build --profile="release-lto"

它将使用在pyproject.toml文件中指定的pythonall_models功能。使用以下命令构建具有特定功能的wheel

maturin build --profile="release-lto" --features "python ..."

LTO会显著增加编译时间,但生成的wheel性能更高且尺寸更小。然而,在开发过程中,我们建议使用--release标志。

文档

有关Python API的文档、Python示例以及底层Rust框架的指南,请参阅文档

基准测试

请参阅benchmarks目录以获取有关提供的Rust基准测试及其运行方式的信息。

开发者

此软件目前由以下小组的成员维护:

贡献

FeOs 的开发源于我们团队在进行科学工作时需要维护一个共同的代码库。我们将代码公开发布作为一个发布我们自己的研究的平台,同时也鼓励其他研究人员和开发者贡献他们自己的模型或状态方程的实现。

如果您想为 FeOs 贡献,有多种途径可以实现:改进文档、帮助解决语言问题、在您的系统上测试代码以查找错误、添加新的模型或算法,或者提供功能请求。如果您有任何问题,请随时与我们联系,或者提出一个issue来讨论改进。

引用我们

如果您发现 FeOs 对您的科学研究很有用,请考虑引用与此库相关的我们的出版物

@article{rehner2023feos,
  author = {Rehner, Philipp and Bauer, Gernot and Gross, Joachim},
  title = {FeOs: An Open-Source Framework for Equations of State and Classical Density Functional Theory},
  journal = {Industrial \& Engineering Chemistry Research},
  volume = {62},
  number = {12},
  pages = {5347-5357},
  year = {2023},
}

依赖项

~9–18MB
~252K SLoC