FLUENT 2021R1 配置UDF环境 解决方法

高版本Fluent配置UDF环境与低版本略有不同,本文适合UDF入门新手,综合网上多个教程,介绍UDF环境的配置和验证方法。特别感谢笑哥无敌硫酸亚铜CFD仿真之道教程。


一、UDF环境配置

  1. 查看FLUENT安装目录,例如C:\ANSYS Inc\v221\fluent\ntbin\win64,在该目录下找到udf.bat文件,右键编辑方式打开;
  2. 查看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
  1. 下载对应版本Visual Studio,通常免费的Community版本即可满足要求,有对应正版资源也可使用Enterprise版本;
  2. 安装VS过程中,安装目录建议默认,安装中勾选使用C++的桌面开发,同时在单个组件中确保勾选MSVC v143 - VS 2022 C++ x64/x86 生成工具(最新),在语言包中仅勾选英文选项;
  3. 安装成功后,在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编译,可以使用硫酸亚铜开发的小程序进行编译,下载工具见硫酸亚铜博客。

  1. 经测试,FLUENT 2022R1版本 和 Visual Studio 2019 Enterprise可以使用此小程序进行UDF编译,编译后在FLUENT中仅load即可;
  2. 上述版本下,需要修改部分文件内容才可以保证小程序的顺利使用;
  3. 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"
  1. 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"
  1. C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash2.h中修改hash.h为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash.h"
  1. C:\ANSYS Inc\v221\fluent\include\prime\tgrid\hash.h中修改std.h为绝对路径如下:
#include "C:\ANSYS Inc\v221\fluent\include\prime\tgrid\std.h"
  1. 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"
  1. 修改后运行udf.c或者udf.cpp的udf文件均可成功编译,但是编译C++编写的UDF仍会提示如下警告,但可以忽略;
cl : Command line warning D9002 : ignoring unknown option '-std=c++11'

三、测试用UDF

  1. 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
}
  1. 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
}
posted @ 2024-03-19 17:12  Johnny_z_Z  阅读(2714)  评论(0编辑  收藏  举报