(完整版)FluentUDF编译出错解决方法总结
- 格式:pdf
- 大小:90.48 KB
- 文档页数:1
解决Fluent无法编译UDF文件的问题方法1对于Fluent加载UDF时出现"The UDF library you are trying to load(libudf)is not complied for parallel use on the current platform (win64)"错误,主要是没有正确设置本机VS安装路径,导致udf编译器无法成功编译c代码。
解决方法:1. 找到Fluent内的UDF.bat编译器。
这里以我自己2019R2的64位学生版为例,在D:\Program Files\ANSYS Inc\ANSYS Student\v194\fluent\ntbin\win64下找到udf.bat用记事本打开2. 将本机Visual Studio的安装路径写入。
这里以我自己VS2015为例,将本机visual studio 2015的安装路径赋值给MSVC_DEFAULT,由于VS2015的版本代号是14.0,因此将"%ProgramFiles(x86)%\Microsoft Visual Studio 14.0"替换为"D:\Program Files (x86)\Microsoft Visual Studio 14.0",保存文件即可,如图1~2所示更改前更改后方法2对于某些低版本的VS,以上操作可能不足以解决问题,需要手动配置环境变量,具体方法如下:1.找到Fluent安装路径下的setenv.exe,双击运行选择是,路径X:\Program Files\ANSYS Inc\v130\fluent\ntbin\win64\setenv.exe2.右键“我的电脑”—属性—高级—环境变量,添加用户变量,以VS2013为例INCLUDE=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;LIB=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\kernel32.libPath=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;。
Question 1
Fluent中读UDF时经常会遇到错误,也非常的让人头疼,这是我遇到的一个问题,终于被我彻底搞清楚了,现在将问题和解决方法叙述如下,以造福菜鸟们及自己以后备用。
1 编译出的第一种问题:
rror [cortex] [time 12/1/13 19:41:25] The UDF library you are trying to load (libudf) is not compiled for 2ddp on the curent platform (win64).
系统找不到指定的文件。
C:\Users\hexian\Desktop\syan\libudf\win64\2ddp\libudf.dll
这个问题的根源是build没有成功,而不是load没有成功。
成功的build,应该显示如下:
没有build成功的原因有很多,可能你的C源程序有错误,这样一般在build之后会提示的,
像这种错误就老老实实的回去检查源文件吧!
如果build编译成功了,load还出现我们刚开始说的那个错误,就是没有系统找不到UDF.h的原因,自己将udf.h找到,一般默认的地址是(C:\Program Files\ANSYS Inc\v140\fluent\fluent14.0.0\src\udf.h ),然后将这个地址添加到环境变量的Path下面去,就OK了!记得重新启动计算机!当然在编写C源文件的时候,也可以使用udf.h的绝对路径。
2 出现如下错误时是因为没有将nmake的路径添加到环境变量中,所以在电脑中收索nmake命令,然后将他的地址添加到环境变量中就可以了。
compiled的时候,fluent出现以下提示:'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。
'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。
而点击load时则出现不可编译的错误:Opening library "libudf"... Error: open_udf_library: 系统找不到指定的文件。
解决方法:1)安装VC的时候要依据提示当询问是否设置环境变量要选是2)安装完毕后点击我的电脑> 属性> 高级> 环境变量查看环境变量值是否存在:“include”“lib”“path”变量(如不存在可以按照我最后显示的变量值手动添加)3)当以上环境变量均存在时运行开始——Fluent6.3——set Enviroment选择yes,fluent的环境变量将会自动添加,这时再运行fluent,重新编译就可以成功了Build和load的提示为:Deleted old libudf\ntx86\2d\libudf.dll已复制 1 个文件。
(system "copy C:\fluent\Fluent.Inc\fluent6.3.26\src\makefile_nt.udf libudf\ntx86\2d\makefile")已复制 1 个文件。
(chdir "libudf")()(chdir "ntx86\2d")()valve.c# Generating udf_names.c because of makefile valve.objudf_names.c# Linking libudf.dll because of makefile user_nt.udf udf_names.obj valve.objMicrosoft (R) Incremental Linker Version 6.00.8168Copyright (C) Microsoft Corp 1992-1998. All rights reserved.Creating library libudf.lib and object libudf.expDone."E:/dongwanggelianxi"Opening library "libudf"...Library "libudf\ntx86\2d\libudf.dll" openedvalveDone.此时我机子的环境变量显示如下:1)Include D:\Program Files\Microsoft Visual Studio\VC98\atl\include;D:\Program Files\Microsoft Visual Studio\VC98\mfc\include;D:\Program Files\Microsoft Visual Studio\VC98\include2)Lib D:\Program Files\Microsoft Visual Studio\VC98\mfc\lib;D:\Program Files\Microsoft Visual Studio\VC98\lib3)MSDevDir D:\Program Files\Microsoft Visual Studio\Common\MSDev984)PATH D:\Program Files\Microsoft Visual Studio\Common\Tools\WinNT;D:\Program Files\Microsoft Visual Studio\Common\MSDev98\Bin;D:\Program Files\Microsoft Visual Studio\Common\Tools;D:\Program Files\Microsoft Visual Studio\VC98\bin;C:\Program Files\StormII\Codec;C:\Program Files\StormII;c:\fluent\fluent.inc\ntbin\ntx86环境变量设置成如上形式就OK啦。
解决Fluent无法编译UDF文件的问题方法1对于Fluent加载UDF时出现"The UDF library you are trying to load(libudf)is not complied for parallel use on the current platform (win64)"错误,主要是没有正确设置本机VS安装路径,导致udf编译器无法成功编译c代码。
解决方法:1. 找到Fluent内的UDF.bat编译器。
这里以我自己2019R2的64位学生版为例,在D:\Program Files\ANSYS Inc\ANSYS Student\v194\fluent\ntbin\win64下找到udf.bat用记事本打开2. 将本机Visual Studio的安装路径写入。
这里以我自己VS2015为例,将本机visual studio 2015的安装路径赋值给MSVC_DEFAULT,由于VS2015的版本代号是14.0,因此将"%ProgramFiles(x86)%\Microsoft Visual Studio 14.0"替换为"D:\Program Files (x86)\Microsoft Visual Studio 14.0",保存文件即可,如图1~2所示更改前更改后方法2对于某些低版本的VS,以上操作可能不足以解决问题,需要手动配置环境变量,具体方法如下:1.找到Fluent安装路径下的setenv.exe,双击运行选择是,路径X:\Program Files\ANSYS Inc\v130\fluent\ntbin\win64\setenv.exe2.右键“我的电脑”—属性—高级—环境变量,添加用户变量,以VS2013为例INCLUDE=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\include;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;LIB=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\lib\amd64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\x64;C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib\kernel32.libPath=D:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin\amd64;D:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\IDE;。
fluent13用vc2010与vc2008编译的环境变量设置尝试fluent13与vc++2010express(这个可以在msdn直接下载使用的),编译就出现'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件。
而点击load时则出现不可编译的错误:Opening library "libudf"...Error: open_udf_library: 系统找不到指定的文件。
Error Object: ()等等错误提示,花了几天时间搜索各种办法尝试,终于搞定。
现在把步骤总结如下:1,右键“我的电脑”—属性—高级—环境变量—用户变量2,在fluent安装文件夹下双击setenv.exe 点“是”路径X:\Program Files\ANSYS Inc\v130\fluent\ntbin\ntx86之后就会看见用户变量里多了FLUENT—INC和Path两项3,设置vc的环境变量在vc6.0中,可以添加三个环境变量:lib,include,path就可以了,也可以在重装vc6.0的时候选定设置环境变量就可以了。
麻烦的是vc2008,2010,因为在这个编译器中,头文件和库函数分布在不同的位置,经过一天的实验,终于找齐了所有的位置,可以顺利编译include:vc08:X:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\includex:\Program Files\Microsoft Visual Studio 9.0\VC\include.C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include6vc2010:X:\Program Files\Microsoft Visual Studio 10.0\VC\includeC:\Program Files\Microsoft SDKs\Windows\v7.0A\Includelib:vc08X:\Program Files\Microsoft Visual Studio 9.0\VC\atlmfc\libx:\Program Files\Microsoft Visual Studio 9.0\VC\libC:\Program Files\Microsoft SDKs\Windows\v6.0A\Libvc2010X:\Program Files\Microsoft Visual Studio 10.0\VC\libC:\Program Files\Microsoft SDKs\Windows\v7.0A\LibPath:08vcX:\Program Files\Microsoft Visual Studio 9.0\VC\binx:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE2010vcX:\Program Files\Microsoft Visual Studio 10.0\VC\binX:\Program Files\Microsoft Visual Studio 10.0\Common7\IDE经过测试,这么添加环境变量之后就可以编译udf了,build与load都没问题。
Fluent安装在64位系统后编译中出现的的常见错误与应对方法这几天在64位windows系统下装fluent,使用UDF编译时碰到各种错误,花了一天功夫,终于基本解决,贴上来跟大家分享下1.exceed无法安装exceed版本太低,不支持64位系统,使用exceed 11或更高级版本2、编译时出现'nmake' is not recognized as an internal or external command没有安装VC或者装了但环境变量没有设置好。
安装Visual Studio 2008(2010和2005应该也行),安装时选择完全安装,实在空间不够,就选自定义安装,其中64位编译器一定要勾上。
安装完成后设置环境变量(参考了傲雪论坛的gearboy的方法)(1)、按以下顺序点击:开始——程序——Fluent Inc products——Fluent 6.3.26,运行该菜单下的Set Enviroment;(2)、(如果第一次安装Visual Studio就选择了完全安装,这步可以省略,只要安装完成后启动下Visual Studio即可)右击“我的电脑”——属性——高级——环境变量,在这个菜单下,上方是用户变量,下方是系统变量,现在修改用户变量。
新建一个变量命名为“Include”,在Variable values中粘贴以下部分(具体目录按照自己电脑安装情况可能需要修改,如果Visual Studio安装在默认目录下,则直接粘贴):C:\Program Files\Microsoft SDKs\Windows\v6.0A\Include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\include;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\include按同样的方法增加变量如下LibC:\Program Files\Microsoft SDKs\Windows\v6.0A\Lib\x64;C:\Program Files (x86)\Microsoft Visual Studio9.0\VC\atlmfc\lib\amd64;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64LibpathC:\WINDOWS\\Framework64\v3.5;C:\WINDOWS\\Framework64\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\atlmfc\lib\amd64;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\amd64Pathc:\fluent.inc\ntbin\win64;C:\Program Files (x86)\Microsoft Visual Studio9.0\VC\bin\amd64;C:\WINDOWS\\Framework64\v3.5;C:\WINDOWS\\Framework64\v3.5\Microsoft .NET Framework 3.5 SP1;C:\WINDOWS\\Framework64\v2.0.50727;C:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\vcpackages;C:\Program Files (x86)\Microsoft Visual Studio 9.0\Common7\IDE;C:\Program Files(x86)\Microsoft Visual Studio 9.0\Common7\Tools;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin\x64;C:\Program Files\Microsoft SDKs\Windows\v6.0A\Bin;注:32系统可以安装6.0版本的VC,安装时选择“注册环境变量”即可,这样比较省事3、经过第2步的处理后,nmake的错误没了,但出现stdout等三个宏被重定义的问题按理不应该有这种错误,我目前没有很好的解决方法。
fluent_常见计算错误汇总及解决办法Fluent 计算错误汇总1..fluent不能显示图像在运行fluent时,导入case后,检查完grid,在显示grid时,总是出现这样的错误Error message from graphics function Update_Display:Unable to Set OpenGL Rendering ContextError: FLUENT received a fatal signal (SEGMENTATION VIOLATION).Error Object: ()解决办法:右键单击快捷方式,把目标由x:fluent.incntbinntx86fluent.exe 改成:x:fluent.incntbinntx86fluent.exe 2d -driver msw如果还有三维的,可以再建立一个快捷方式改成:x:fluent.incntbinntx86fluent.exe 3d -driver msw这就可以直接调用了。
如果不是以上原因引起的话,也有可能是和别的软件冲突,如MATLAB等,这也会使fluent无法显示图像。
Q1:GAMBIT安装后无法运行,出错信息是“unable find Exceed X Server”A. GAMBIT需要装EXCEED才能用。
gambit的运行:先运行命令提示符,输入gambit,回车fluent的运行:直接在开始-程序-Fluent Inc里面Q2:Fluent安装后无法运行,出错信息是“unable find/open license.dat" A. FLUENT和GAMBIT需要把相应license.dat文件拷贝到FLUENT.INC/license目录下Q3:出错信息:运行gambit时提示找不到gambit文件?A. FLUENT和GAMBIT推荐使用默认安装设置,安装完GAMBIT请设置环境变量,设置办法“开始-程序-FLUENT INC-Set Environment"另外设置完环境变量需要重启一下,否则仍会提示找不到环境变量。
在使用Fluent软件进行模拟计算时,经常会遇到需要自定义用户子程序(User Defined Function,简称UDF)的情况。
UDF是Fluent中用户自己编写的函数,用于描述流场中的边界条件、源项等物理过程。
为了正确地使用UDF并进行模拟计算,我们需要了解如何编写和编译UDF。
本教程将向大家介绍如何使用ANSYS Fluent进行UDF的编译,并提供一些常见问题的解决方法。
一、准备工作在进行UDF编译之前,我们需要进行一些准备工作。
1. 确保已安装ANSYS Fluent软件,并且能够正常运行;2. 确保已安装C/C++编译器,常见的编译器有Microsoft Visual Studio、GCC等;3. 编写好UDF的源代码文件,可以使用任何文本编辑器编写,但建议使用支持C/C++语法高亮的编辑器,以便于排查语法错误。
二、设置Fluent编译环境在进行UDF编译之前,我们需要设置Fluent的编译环境,以确保编译器可以正确地识别Fluent的API。
1. 打开命令行终端(Windows系统为cmd,Linux/Unix系统为Terminal);2. 运行以下命令设置Fluent的编译环境:对于Windows系统:```bashcd C:\Program Files\ANSYS Inc\v200\fluentfluent 3d -i```对于Linux/Unix系统:```bashcd /usr/ansys_inc/v200/fluent./fluent 3d -t xxx -g -i```其中,xxx是你的图形界面类型,可以根据你实际的图形界面类型进行替换,一般为Gl 或 X11。
运行上述命令后,Fluent将会启动,并且设置了编译环境。
在Fluent 的命令行界面中,我们可以进行UDF的编译和加载。
三、编译UDF在设置了Fluent的编译环境后,我们可以开始编译UDF了。
1. 将编写好的UDF源代码文件(后缀名通常为.c或.cpp)放置在Fluent的工作目录中;2. 在Fluent的命令行界面中,输入以下命令进行编译:```bash/define/user-definedpiled-functions load my_udf-name/define/user-definedpiled-functionspile my_udf-name/define/user-definedpiled-functions write my_udf-name/exit```其中,my_udf-name是你的UDF源代码文件的文件名(不包括后缀名),例如my_udf。
FLUENT 17.0 + visual studio 17.0 编译UDF方法二、配置UDF编译环境在fluent 12.0之后的版本中,可以通过修改udf.bat文件的方式进行编译环境配置。
该文件位于xx\ANSYS Inc\v140\fluent\ntbin\win64目录下。
注意若是安装了icepak,则会有两个udf.bat文件,一定要注意我们只针对fluent 目录下的该文件。
只需要关注图中橙色线框中的部分。
(1)第8行:echo是dos中助于在屏幕上写出一段文本。
这与c语言中的printf,c#中的Console.WriteLine,JAVA中的System.Print的功能是一样的,只是在屏幕上打出后面一段文字,我们可以忽略了。
(2)第10行:设定MSVC_DEFAULT的值。
其实是一个赋值语句。
容易理解。
一会儿需要动它。
(3)第11行:if exist是判断,判断后面的vcvarsall.bat文件是否存在,若存在,则设置变量MSVC的值。
(4)第12行:判断MSVC是否为空,若不为空,则进入msvc_env100标记行。
找到该标记行,其内容位于86~89行。
该标记行的内容为:(1)设定msvc_version为100(2)调用vcvarsall.bat文件,利用amd64,因为我安装的fluent版本是64bit,若32bit版本会有所不同。
(5)跳转到ms_c_end行,该行是一个结束标记行。
看起来复杂,其实人们要做的工作很少。
用户所要做的仅仅是修改第10行的内容。
修改microsoft visual studio的安装路径。
若vc是全默认安装,则什么都不需修改,否则改为正确的路径。
如本机的microsoft studio安装在d:\program files目录下,只需将第10行修改为:set MSVC_DEFAULT=D:\Program Files\Microsoft Visual Studio 10.0就可以了。
Fluent UDF编译出错解决方法总结
Fluent是一款非常成熟的CFD软件,因此得到广泛使用。
它提供了C语言接口UDF,用户
可以根据自己需要扩展Fluent的不足。
然而,UDF编译往往给大家带来了很大的麻烦,因为Fluent编译需要借助VC。
同样这个问题困扰我很久,今天终于解决了,顺便总结一下,以便日后方便查询,呵呵。
我就遇到两类问题:
1.'nmake' 不是内部或外部命令,也不是可运行的程序或批处理文件
这个问题大家遇到的最多,网上的解释也很多,我也在重复一遍。
出现这个错,我们需要
按照如下修改环境变量
变量名include
变量值D:\Program Files\Microsoft Visual Studio 9.0\VC\include
变量名lib
变量值D:\Program Files\Microsoft Visual Studio 9.0\VC\lib
变量名path
变量值D:\Program Files\Microsoft Visual Studio 9.0\Common7\IDE;D:\Program Files\Microsoft Visual Studio 9.0\VC\bin;
D:\Program Files\Microsoft Visual Studio 9.0是我安装Microsoft Visual Studio 2008 的文件夹。
2.LINK: fatal erro LNK1104: cannot open file 'kernel132.lib'
这个问题困扰我很久,因为以前按照1修改环境变量就OK了,可这个实在不知道是什么
错误,在百度上搜了很长时间没找到解决办法,都想放弃了。
今天无意试试google,结果
找到了答案!因此以后要养成用google搜问题的习惯!
解决办法还是修改环境变量,提示不能打开'kernel132.lib',我们就想办法找到他并把它添加到环境变量里lib里,我的电脑里'kernel132.lib'在C:\Program files\Microsoft SDKs\Windows\v6.0A\Lib\kernel32.lib,于是把这个路径添加到lib这个环境变量里,问题
就解决了。
3.编译文件一定要确保在Fluent默认的路径里,否则也会出错,这个修改Fluent的属性可
以解决!
4. UDF并行计算出错(2013.11.1补充)
问题描述:在个人计算机上编写一个简单的udf程序,想要并行使用,没做任何修改
单机多核上compiled和load通过,到高性能计算机上一直编译出错。
折腾一晚上最终发现并不是并行编译出错!而是高性能计算机编译器是GCC,不支持“//”注释,而我的电脑
编译器是vc++ 6.0,支持“//”和”/*……*/",最终修改后就可以正常使用了。