FLUENT 2021R1 配置UDF环境 解决方法
高版本Fluent配置UDF环境与低版本略有不同,本文适合UDF入门新手,综合网上多个教程,介绍UDF环境的配置和验证方法。特别感谢笑哥无敌、硫酸亚铜和CFD仿真之道教程。
一、UDF环境配置
- 查看FLUENT安装目录,例如
C:\ANSYS Inc\v221\fluent\ntbin\win64
,在该目录下找到udf.bat
文件,右键编辑
方式打开; - 查看
udf.bat
文件中显示内容,下文内容中即为当前版本FLUENT所支持Visual Studio所有版本,此处FLUENT 2021R1最新支持版本为VS2019;
echo trying to find MS C compiler, version 160....
set MSVC_DEFAULT=%ProgramFiles(x86)%\Microsoft Visual Studio\2019
if exist "%MSVC_DEFAULT%\BuildTools\VC\Auxiliary\Build\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%\BuildTools
if exist "%MSVC_DEFAULT%\WDExpress\VC\Auxiliary\Build\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%\WDExpress
if exist "%MSVC_DEFAULT%\Community\VC\Auxiliary\Build\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%\Community
if exist "%MSVC_DEFAULT%\Professional\VC\Auxiliary\Build\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%\Professional
if exist "%MSVC_DEFAULT%\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" set MSVC=%MSVC_DEFAULT%\Enterprise
if not "%MSVC%" == "" goto msvc_env160
- 下载对应版本Visual Studio,通常免费的Community版本即可满足要求,有对应正版资源也可使用Enterprise版本;
- 安装VS过程中,安装目录建议默认,安装中勾选
使用C++的桌面开发
,同时在单个组件
中确保勾选MSVC v143 - VS 2022 C++ x64/x86 生成工具(最新)
,在语言包
中仅勾选英文
选项; - 安装成功后,在FLUENT启动界面处,
Environment
中勾选Setup Compilation Environment for UDF
,下方目录填写udf.bat
所在目录C:\ANSYS Inc\v221\fluent\ntbin\win64\udf.bat
;
(若出现fatal error LNK1104: cannot open file 'kernel32.lib'
,请参考笑哥无敌教程解决)
二、使用小程序编译UDF
使用FLUENT编译UDF,常出现乱码现象,为方便UDF编译,可以使用硫酸亚铜开发的小程序进行编译,下载工具见硫酸亚铜博客。
- 经测试,FLUENT 2022R1版本 和 Visual Studio 2019 Enterprise可以使用此小程序进行UDF编译,编译后在FLUENT中仅
load
即可; - 上述版本下,需要修改部分文件内容才可以保证小程序的顺利使用;
C:\ANSYS Inc\v221\fluent\fluent22.1.0\cortex\src\cx.h
中修改string_safe.h
为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\string_safe.h"
C:\ANSYS Inc\v221\fluent\fluent22.1.0\src\storage\mem.h
中修改hash2.h
为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash2.h"
C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash2.h
中修改hash.h
为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash.h"
C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash.h
中修改std.h
为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\prime\tgrid\std.h"
C:\ANSYS Inc\v221\fluent\fluent22.1.0\src\mesh\slide.h
中修改hash2.h
为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash2.h"
- 修改后运行
udf.c
或者udf.cpp
的udf文件均可成功编译,但是编译C++编写的UDF仍会提示如下警告,但可以忽略;
cl : Command line warning D9002 : ignoring unknown option '-std=c++11'
三、测试用UDF
udf.c
,三维/二维,并行,双精度 条件
#include "udf.h"
DEFINE_ON_DEMAND(where_am_i)
{
#if RP_HOST
Message("I am in the host process\n");
#endif
#if RP_NODE
Message("I am in the node process with ID %d\n", myid);
#endif
}
udf.cpp
,三维/二维,并行,双精度 条件;
#include "udf.h"
#include <iostream>
using namespace std;
DEFINE_ON_DEMAND(where_am_i)
{
#if RP_HOST
cout << "I am in the host process" << endl;
#endif
#if RP_NODE
cout << "I am in the node process with ID" << myid << endl;
#endif
}