这是一个面向 ANSYS Fluent + PyFluent 的本地工具集合,目标是把常见流程集中到一个工程里:
- 启动/连接 Fluent 会话(
pyfluent_ui.py+streamlit) - 会话文件读写与项目目录管理(Case/Data/UDF/Output/Animation)
- 使用独立
udf-builder工程,在 Fluent 外部通过 CMake 预设编译 UDF - 将编译好的
libudf回灌到会话目录后自动加载
pyfluent_ui.py:主入口,Streamlit 工作台run_pyfluent.bat:Windows 一键启动脚本test-py/:PyFluent 连接、保存、启动等实验脚本udf-builder/:UDF 外部编译工具udf_builder_gradio_preset.py:主程序(Gradio UI + 对外函数 + HTTP API)udf_builder_line.py:命令行/脚本调用示例udf_builder_web.py:HTTP 接口调用示例CMake_Project_for_UDF/:标准 UDF CMake 工程模板(含CMakePresets.json)
UDF 编译专项文档请见:udf-builder/README.md
建议在 Windows 下使用(当前工程也按 Windows 路径与工具链组织)。
- Python 3.10+
- ANSYS Fluent(可被 PyFluent 启动或连接)
- Visual Studio C/C++ 工具链(可用
VsDevCmd.bat) - CMake(支持 Presets,建议 3.21+)
- Ninja(若 preset 使用 Ninja)
Python 依赖(按源码导入汇总):
pip install ansys-fluent-core streamlit gradio requests方式 A(推荐):
run_pyfluent.bat方式 B:
python pyfluent_ui.py
pyfluent_ui.py会自动切换到streamlit run模式并打开页面。
python udf-builder/udf_builder_gradio_preset.py打开后可在页面中执行:文件处理 → 配置 → 补丁 → 构建,或直接“一键执行”。
udf-builder 提供了一种 在 Fluent 外部编译 UDF 的方法,核心思想是:
- 将用户提供的
.c/.h/.hpp文件复制到一个可控的 CMake 工程src/ - 自动重写
src/CMakeLists.txt中的CSOURCES/CHEADERS - 调用 VS 开发环境 + CMake Preset 完成 configure/build
- 自动修补常见
udf_names.c问题(extern DEFINE_*缺;) - 产出
libudf目录供 Fluent 加载
这样可以把编译过程从 Fluent GUI 内解耦,便于脚本化、复用与排障。
c_file_paths:至少 1 个.ch_file_paths:可选.h/.hppoverrides:可选参数覆盖,如:project_rootvsdevcmdcmake_patharchconfigure_presetbuild_presetfreshcleanup_before_copysync_headerspatch_after_configurepatch_before_build
- 文件处理(可清理旧源文件、复制新文件、更新
src/CMakeLists.txt) - CMake Configure(
cmake --preset ...) udf_names.c补丁(可在 configure 后或 build 前执行)- CMake Build(
cmake --build --preset ...)
- 结构化结果:
ok/status_html/log/errors_html/... - 编译产物目录:
<project_root>/libudf
python udf-builder/udf_builder_gradio_preset.py适合手动调试和观察完整日志。
参考 udf-builder/udf_builder_line.py:
from udf_builder_gradio_preset import run_all_from_external
result = run_all_from_external(
c_file_paths=[r"F:\pyFluent\testUDF.c"],
overrides={"project_root": r"F:\pyFluent\udf-builder\CMake_Project_for_UDF"}
)
print(result["ok"])
print(result["log"])启动 Gradio 后可调用:
POST /gradio_api/call/http_run_all
参数按顺序传 3 个字符串:
c_files_input(JSON 数组或换行路径)h_files_input(JSON 数组或换行路径)overrides_input(JSON 对象字符串)
udf-builder/udf_builder_web.py 已提供请求示例。
主工作台会动态加载 udf-builder/udf_builder_gradio_preset.py 中的
run_all_from_external,实现:
- 扫描当前 UDF 源目录并触发外部 CMake 编译
- 将
<project_root>/libudf复制回会话工作目录 - 通过 PyFluent 执行
unload/load完成 UDF 更新
这意味着你可以在同一套 UI 中完成“编译 + 部署 + 加载”。
udf_builder_gradio_preset.py 中预设了作者本机路径(如 DEFAULT_VSDEVCMD、DEFAULT_CMAKE)。
请在页面参数中改为你本机可用路径,或通过 overrides 覆盖。
确认 project_root 下存在:
CMakePresets.json(或CMakeUserPresets.json)- 顶层
CMakeLists.txt src/CMakeLists.txt
优先查看返回中的:
errors_html(提取的关键 error 行)log(完整日志)
并确认:编译器环境、CMake preset、源文件是否存在重名冲突。
- 先用
udf_builder_line.py跑通最小样例,再接入主流程 - 将 UDF 代码和 CMake 工程模板解耦,便于版本管理
- 在 CI 或自动化脚本中优先使用
run_all_from_external或 HTTP API
本仓库用于本地工程化与流程自动化示例。具体 UDF 源码正确性、Fluent 版本兼容性、编译器兼容性请按你的项目环境验证。