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 科学
87 每月下载量
在 feos-campd 中使用
7MB
32K SLoC
FeOs - 状态方程和经典密度泛函理论的框架
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
文件中指定的python
和all_models
功能。
或者,您可以明确指定要包含在Python包中的模型或功能,例如
maturin develop --release --features "python pcsaft dft"
对于PC-SAFT状态方程和Helmholtz能量泛函。
要构建包含链接时间优化(LTO)的wheel,请使用
maturin build --profile="release-lto"
它将使用在pyproject.toml
文件中指定的python
和all_models
功能。使用以下命令构建具有特定功能的wheel
maturin build --profile="release-lto" --features "python ..."
LTO会显著增加编译时间,但生成的wheel性能更高且尺寸更小。然而,在开发过程中,我们建议使用--release
标志。
文档
有关Python API的文档、Python示例以及底层Rust框架的指南,请参阅文档。
基准测试
请参阅benchmarks目录以获取有关提供的Rust基准测试及其运行方式的信息。
开发者
此软件目前由以下小组的成员维护:
- Joachim Gross教授,斯图加特大学热力学和热过程工程研究所(ITT)
- André Bardow教授,苏黎世联邦理工学院能源和过程系统工程系(EPSE)
贡献
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