首页/文章/ 详情

PyFluent文档|02 启动及连接Fluent

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
4月前浏览4197

用户可以通过调用 launch_fluent() 方法在gRPC模式下从Python启动Fluent。此代码会在后台启动Fluent,以便能够从Python解释器向Fluent发送命令:

import ansys.fluent.core as pyfluent
solver = pyfluent.launch_fluent(mode="solver")

若要连接到已启动gRPC服务器的Fluent会话,可使用 connect_to_fluent() 方法。Fluent中的gRPC服务器可通过命令行启动选项 -sifile=<server_info_file_name>server/start-server 文本命令或功能区菜单File -> Applications -> Server -> Start...启动。Fluent在启动gRPC服务器时会输出一个服务器信息文件。以下代码通过工作目录中的服务器信息文件 server.txt 连接到正在运行的Fluent会话:

import ansys.fluent.core as pyfluent
solver = pyfluent.connect_to_fluent(server_info_file_name="server.txt")

1 启动选项

以下示例展示了不同方式在本地启动Fluent。更多详情,请查阅 launch_fluent()

1.1 Solution模式

此例展示以Solution模式启动Fluent:

solver = pyfluent.launch_fluent(mode="solver")

1.2 Meshing模式

此例展示以Meshing模式启动Fluent:

meshing_session = pyfluent.launch_fluent(mode="meshing")

1.3 精度设置

此例展示在Solution模式下启动Fluent并设定浮点数精度:

solver = pyfluent.launch_fluent(precision="double", mode="solver")

1.4 模型维度

此例展示在Solution模式下启动Fluent并设定模型维度:

solver = pyfluent.launch_fluent(precision="double", version="2d", mode="solver")

1.5 本地并行

此例展示在Solution模式下启动Fluent并为本地并行执行设定处理器数量:

solver = pyfluent.launch_fluent(precision="double", version="2d", processor_count=2, mode="solver")

1.6 分布式并行

此例展示以16个处理器在多台机器上启动处于Solution模式的Fluent:

solver = pyfluent.launch_fluent(precision="double", version="3d", processor_count=16, mode="solver", additional_arguments="-cnf=m1:8,m2:8")

2 日志支持

PyFluent提供了一个启用日志记录的选项。

可以使用此命令开启日志记录:

pyfluent.logging.enable()

详细信息,请参阅《文件日志和调试》。

3 调度器支持

当PyFluent在作业调度器环境中运行时,launch_fluent() 方法 会自动确定用于启动Fluent的机器列表和核心计数。支持的调度器环境包括Univa Grid Engine (UGE)、Load Sharing Facility (LSF)、Portable Batch System (PBS) 和 Slurm。

以下是一个可以使用 sbatch 命令提交给Slurm调度器的bash脚本示例:

#!/bin/bash
#SBATCH --job-name="pyfluent"
#SBATCH --nodes=8
#SBATCH --ntasks=32
#SBATCH --output="%x_%j.log"
#SBATCH --partition=mpi01

# 切换到提交Slurm作业的目录
cd $SLURM_SUBMIT_DIR

# 激活你偏好的Python环境
export AWP_ROOT232=/apps/ansys_inc/v232
. ./venv/bin/activate

# 运行PyFluent脚本
python run.py

此示例中值得注意的几点:

  • 请求了八台机器共32个核心。Fluent会根据传递给 -t-cnf 的命令行参数启动。
  • 设置变量 AWP_ROOT232 以让PyFluent知道在哪里找到Fluent安装位置。
  • 假设在提交作业到Slurm之前已经配置好带有PyFluent的Python虚拟环境。如有需要,也可作为作业脚本的一部分进行配置。
  • run.py 文件可以包含任意数量的PyFluent命令,使用任何支持的接口。

一旦在调度器环境中运行,launch_fluent() 方法有几种不同的使用方式。此例展示如何在请求的所有机器和核心上启动三维、双精度版本的Fluent:

solver = pyfluent.launch_fluent(precision="double", version="3d", mode="solver")

如果希望限制Fluent使用的内核数量,可以传递 processor_count 参数:

solver = pyfluent.launch_fluent(precision="double", version="3d", processor_count=16, mode="solver")

这样传递 processor_count 参数会强制Fluent在16个核心上执行,尽管Slurm作业提交请求了总共32个核心。在调度器环境分配了机器上的所有核心而你知道Fluent可能不会很好地扩展到所有分配的核心时,这种行为可能会有用。

最后,如果想忽略调度器分配,可以通过 additional_arguments 参数向 launch_fluent() 方法传递 -t-t-cnf 参数。对于本地并行执行,只需传递 -t 参数:

solver = pyfluent.launch_fluent(precision="double", version="3d", mode="solver", additional_arguments="-t16")

对于分布式并行处理,通常需要传递多个参数:

solver = pyfluent.launch_fluent(
  precision="double",
  version="3d",
  mode="solver",
  additional_arguments="-t16 -cnf=m1:8,m2:8",
)

launch_fluent() 方法还支持 scheduler_options 参数,用于不使用bash脚本直接向Slurm调度器提交Fluent作业:

slurm = pyfluent.launch_fluent(
  scheduler_options={
     "scheduler": "slurm",
     "scheduler_headnode": "<headnode>",
     "scheduler_queue": "<queue>",
     "scheduler_account": "<account>"
  },
  additional_arguments="-t16 -cnf=m1:8,m2:8",
)
solver = slurm.result()

scheduler_headnodescheduler_queuescheduler_account 键是可选的,它们以类似Fluent调度器选项的方式指定。这里launch_fluent 方法返回一个 SlurmFuture 实例,从中可以提取PyFluent会话。有关详细使用方法,请参阅 slurm_launcher 模块的文档。

scheduler_options 参数不支持自动调度器分配,对于分布式并行处理,必须使用 additional_arguments 参数向 launch_fluent() 方法传递 -t-cnf 参数。


 

注:本文内容为PyFluent UserGuide。


(完毕)



来源:CFD之道
MeshingACTFluentSystemUG
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-06-16
最近编辑:4月前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2559粉丝 11231文章 732课程 27
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈