吾生有涯 学海无涯
析模有界 知识无界

PyFluent文档|02 启动及连接Fluent

用户可以通过调用 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/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": "",
"scheduler_queue": "",
"scheduler_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之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《PyFluent文档|02 启动及连接Fluent》
文章链接:https://www.topcfd.cn/39089/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册