使用超算(linux系统)跑fluent的算例,内有udf的调动,上传.cas和.dat到超算之后,不知道怎么调动udf。超算无法图形化可视化!只能通过命令行执行
使用的是fluent2021R1,已安装到超算上,建立了文件夹fluent run 文件夹,cas和dat还有.c文件都是放在这里面。
没有UDF的情况下直接 qsub mm.pbs 启动fluent调动jou文件开始计算。
参考GPT:在 Linux 系统上运行 Fluent 并调用 UDF,需要完成以下步骤:
1 确保 UDF 能够在本地计算机上成功编译。
2 将编译后的 UDF 文件(如 libudf.so)上传到 Linux 超算的 Fluent 运行目录下,例如上述的 "fluent run" 文件夹。
3 在 Fluent 的计算过程中加载 UDF,可以使用 Fluent 提供的命令行工具 TUI(Text User Interface)来完成。可以在 Fluent 启动时,通过命令行添加 -tui 选项,进入 TUI 界面。在 TUI 界面下,可以使用以下命令来加载 UDF:
define/user-defined function-hooks/your-hook-name your-udf-library.so
其中,"your-hook-name" 是你想要加载的 UDF 的 hook 名称,"your-udf-library.so" 是你上传的 UDF 的共享库文件名。
4 编写 Fluent 计算脚本(jou 文件),在文件中添加加载 UDF 的命令,例如:
rc fluentm.cas
define/user-defined function-hooks/your-hook-name your-udf-library.so
rd fluentm.dat
solve/initialize/hyb-initialization
solve/dual-time-iterate 1000 10 0.01
其中,"your-hook-name" 和 "your-udf-library.so" 分别替换为你上传的 UDF 的 hook 名称和共享库文件名。
5 使用 PBS(Portable Batch System)或其他作业调度系统提交计算任务。在 PBS 脚本中,可以添加以下命令来调用 Fluent 计算脚本(jou 文件):
./fluent 3ddp -t $NPROCS -cnf $PBS_NODEFILE -i your-jou-file.jou >& log.txt &
其中,"-t $NPROCS" 指定使用的进程数,"-cnf $PBS_NODEFILE" 指定节点文件的位置,"your-jou-file.jou" 指定需要运行的 Fluent 计算脚本(jou 文件)的文件名,">& log.txt &" 则将运行过程的日志输出到 log.txt 文件中,并且将 Fluent 进程放到后台运行。
6 使用 qsub 命令提交 PBS 脚本,例如:
qsub mm.pbs
其中,"mm.pbs" 是 PBS 脚本的文件名。
7 提交 PBS 作业后,可以使用命令 qstat 来查看作业状态和进程运行情况。Fluent 进程的输出和日志可以在 log.txt 文件中查看。如果有错误或者问题,可以通过日志信息来排查问题。
要在Fluent中使用UDF,需要将编译后的动态库文件(.so文件)与Fluent进行链接,并将其指定为UDF库。在Linux上,UDF需要在Linux上进行编译,以生成可在Linux上运行的动态库文件。
以下是在超算上使用Fluent UDF的一般步骤:
确保已安装Fluent,并使用Fluent提供的makefile进行UDF编译。在超算上,需要检查您是否已安装正确的Fluent版本,并且可以通过设置适当的环境变量来启用makefile。
生成.so文件:使用Fluent提供的makefile,将UDF编译为动态库文件(.so文件)。生成的.so文件需要与Fluent进行链接。
链接.so文件:在Fluent中,使用define/user-defined-functions菜单来将.so文件链接到Fluent中。在Fluent GUI中,选择Define→User-Defined→Functions菜单,在“Library Management”对话框中添加所需的.so文件。
启用UDF:要启用UDF,需要在Fluent的GUI中指定相应的函数。例如,在定义速度输入的UDF时,您需要在Fluent中选择Define→Boundary Conditions菜单,并指定UDF名称以及需要使用UDF的相关设置。
启动Fluent:在使用UDF的Fluent案例上,可以通过在PBS脚本中使用Fluent命令行启动Fluent,或使用GUI中的Fluent Launcher来启动Fluent。
这是一个一般性的步骤,具体需要根据您的具体情况进行调整。如果您遇到了任何问题,建议您参考Fluent官方文档或咨询Fluent技术支持。
该回答引用于gpt与OKX安生共同编写:
在超算上运行Fluent时调用UDF,需要进行以下操作:
fluent 3d -g -t${NSLOTS} -i input-file.cas -pib -sge-script=/path/to/fluent2021R1/src/udf/udf.scr
其中,-sge-script参数指定了Fluent执行脚本的路径,这里假设udf.scr文件位于Fluent目录下的src/udf子目录中。
注意事项:
针对UDF文件的上传和加载,确保您已经将UDF文件上传到超算上,并且该文件与Fluent版本兼容。在提交PBS作业时,您需要通过在mm.pbs文件中添加以下命令来指定执行脚本:
fluent 3d -g -t${NSLOTS} -i input-file.cas -pib -sge-script=/path/to/fluent2021R1/src/udf/udf.scr
其中,-sge-script参数指定了Fluent执行脚本的路径,这里假设udf.scr文件位于Fluent目录下的src/udf子目录中。请确保此路径为正确的脚本路径。
关于如何在没有图形界面的情况下加载UDF,可以使用文本编辑器打开input-file.cas文件,找到“define/user-defined/functions”部分,手动添加UDF路径并加载。例如,在input-file.cas文件中添加以下内容:
(define
(rpsetvar 'udf-library '"/path/to/fluent2021R1/src/udf/")
(rpsetvar 'udf-name '("my_udf.so"))
(rpsetvar 'udf-function '("my_udf")))
其中,'"/path/to/fluent2021R1/src/udf/"'是UDF所在的路径,'"my_udf.so"'是UDF的名称,'"my_udf"'是UDF中需要执行的函数名称。在此之后,可以通过Fluent界面中的“Solve” -> “Execute Commands”方式来运行计算。
如果您使用的是文本命令行界面,可以将以上代码保存为文本文件并作为参数传递给Fluent进行加载和运行,例如:
fluent 3d -g -t${NSLOTS} -i input-file.cas -pib -sge-script=/path/to/fluent2021R1/src/udf/udf.scr -i udf-params.txt
其中,'udf-params.txt'是包含以上代码的文本文件。
另外,请注意确保您的UDF与Fluent版本兼容,并已经正确编译。如果Fluent在运行过程中遇到UDF相关的错误,可以通过检查.log文件和Fluent输出信息来定位问题所在,并及时修复。
/define/user-defined/compiled-functions
Compiled functions:
my_udf - /path/to/my_udf.so
其中,'my_udf'是UDF中需要执行的函数名称,'/path/to/my_udf.so'是UDF库文件的完整路径。
以下答案由GPT-3.5大模型与博主波罗歌共同编写:
首先,需要将UDF文件编译成动态链接库(.so文件)并上传到超算。在Linux系统中,使用Fluent提供的编译脚本进行编译:
fluentCompileUDF <UDF文件名>
编译完成后会生成一个动态链接库文件,可以在Fluent中通过以下命令加载:
(define <(UDF名称)> ‘(rpread “<(.so文件名)>”))
在Fluent中,可以通过journal文件(.jou)调用UDF。在启动Fluent时,通过命令行指定journal文件路径即可:
/fluent/fluent2021R1/bin/fluent 3ddp -g -i /<(jou文件路径)>/<(jou文件名)>
在PBS脚本中,可以通过以下方式指定journal文件路径:
fluent 3d -g -t <(线程数)> -mpi=intel -pib -ssh -i <(jou文件路径)>/<(jou文件名)>
注意,在运行PBS脚本时,需要使用qsub命令而不是直接运行脚本。
除此之外,还需要设置Fluent运行时的环境变量,可通过如下命令设置:
export FLUENT_HOSTNAME=<主机名>
export FLUENT_ROOT=/<Fluent安装路径>
export PATH=$PATH:$FLUENT_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FLUENT_ROOT/lib
以上命令可放在PBS脚本的开头,确保在运行Fluent前先设置了必要的环境变量。
综上所述,PBS脚本可以按照以下方式编写:
#!/bin/sh
#PBS -l nodes=<节点数>:ppn=<每个节点的核心数>
#PBS -N <作业名称>
#PBS -o <标准输出文件路径>
#PBS -e <标准错误输出文件路径>
# 加载Fluent运行所需的环境变量
export FLUENT_HOSTNAME=<主机名>
export FLUENT_ROOT=/<Fluent安装路径>
export PATH=$PATH:$FLUENT_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$FLUENT_ROOT/lib
# 进入Fluent工作目录
cd /<工作目录>
# 编译UDF
fluentCompileUDF <UDF文件名>
# 运行Fluent
fluent 3d -g -t <线程数> -mpi=intel -pib -ssh -i <jou文件路径>/<jou文件名>
exit 0
如果我的回答解决了您的问题,请采纳!
在Linux系统下,使用Fluent跑含有UDF的算例需要进行以下步骤:
gcc -shared -o libudf.so udf_filename.c -I/fluent2021R1/fluent/inc -L/fluent2021R1/fluent/lib -lfluent -lm
define/user-defined/compiled-functions load libudf
define/user-defined/compiled-functions/set-function function-name parameter value
solve/initialize
solve/iterate n