foamlib:与OpenFOAM交互的现代Python包最佳实践教程

foamlib:与OpenFOAM交互的现代Python包最佳实践教程

foamlib A modern Python interface for interacting with OpenFOAM foamlib 项目地址: https://gitcode.com/gh_mirrors/fo/foamlib

项目介绍

foamlib 是一个现代的 Python 包,旨在简化与 OpenFOAM 的交互。它提供了对 OpenFOAM 配置和场文件的读写访问,就像它们是 Python 字典一样。foamlib 的独立解析器使得从 Python 中处理 OpenFOAM 的输入/输出文件变得容易,而其案例处理功能则促进了各种执行工作流程,减少了样板代码,并使基于 Python 的预和后处理以及模拟管理更加高效。

foamlib 相比于 PyFoam 和其他类似工具(如 fluidfoamfluidsimfoamOfpp)提供了现代 Python 兼容性、对二进制格式场的支持、完全类型注解的 API 以及异步操作等优势,使得 OpenFOAM 工作流程更加易于访问和简化。

项目快速启动

首先,您需要安装 foamlib。可以使用以下方式安装:

pip install foamlib

或者使用 conda

conda install -c conda-forge foamlib

或者使用 Homebrew

brew install gerlero/openfoam/foamlib

安装完成后,您可以使用以下代码快速启动一个案例:

import os
from pathlib import Path
from foamlib import FoamCase

# 假设您的 OpenFOAM 教程目录已设置在环境变量中
pitz_tutorial = FoamCase(Path(os.environ["FOAM_TUTORIALS"]) / "incompressible/simpleFoam/pitzDaily")

# 克隆案例
my_pitz = pitz_tutorial.clone("myPitz")

# 运行案例
my_pitz.run()

# 获取结果
latest_time = my_pitz[-1]
p = latest_time["p"]
U = latest_time["U"]
print(p.internal_field)
print(U.internal_field)

# 清理案例
my_pitz.clean()

# 编辑 controlDict 文件
my_pitz.control_dict["writeInterval"] = 10

# 一次性进行多个文件读写操作
with my_pitz.fv_schemes as f:
    f["gradSchemes"]["default"] = f["divSchemes"]["default"]
    f["snGradSchemes"]["default"] = "uncorrected"

# 异步运行案例
import asyncio
from foamlib import AsyncFoamCase

async def run_case():
    my_pitz_async = AsyncFoamCase(my_pitz)
    await my_pitz_async.run()

asyncio.run(run_case())

# 使用 FoamFieldFile 类直接解析场
from foamlib import FoamFieldFile

U = FoamFieldFile(Path(my_pitz) / "0/U")
print(U.internal_field)

应用案例和最佳实践

  1. 使用 foamlib 进行模拟配置和执行,可以显著减少样板代码,提高开发效率。
  2. 通过 foamlib 的异步操作,可以在多核心或多节点环境下更有效地运行多个案例。
  3. 利用 foamlib 的类型注解,可以提高代码质量和可维护性。
  4. 使用 foamlib 的案例处理功能,可以轻松地管理和跟踪模拟案例的进度和结果。

典型生态项目

  1. OpenFOAMfoamlib 主要用于与 OpenFOAM 的交互,因此 OpenFOAM 是其最典型的生态项目。
  2. PyFoam:虽然 foamlib 提供了更现代的功能,但 PyFoam 仍然是一个广泛使用的 Python 包,用于与 OpenFOAM 交互。
  3. fluidfoamfluidsimfoamOfpp:这些是其他与 OpenFOAM 交互的 Python 包,它们与 foamlib 具有相似的功能,但 foamlib 提供了更现代的 API 和更好的性能。

foamlib A modern Python interface for interacting with OpenFOAM foamlib 项目地址: https://gitcode.com/gh_mirrors/fo/foamlib

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐含微

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值