Fluent中udf编译问题
作者:互联网
是否有小伙伴像我一样,遇到了udf编译时报错的问题,找了各种各样的方法都没有办法解决,这里为大家提供一种新思路。
先总结一下内容:1、配置环境变量;2、怎么确定环境变量配置成功;3、可能不是环境变量的问题;
(先说明,本人刚入门cfd,对这些概念也不太懂,如有说得不对的地方请各位大佬多多指教。)
问题1:环境变量的配置
我用的fluent16.0,然后当时是能编译udf的(直接改txt文件的后缀为.cpp)。
后来看到各种教程里大神们用的vs,于是我就去下载了一个vs2019(后来发现并不需要额外下载,电脑里本来有内置的vs)。然后。。。原来的udf就不能编译了,报错“ The UDF library you are trying to load (sor) is not compiled for parallel use on the current platform (win64).”
搜索了一下发现是环境变量的问题,在网上尝试了很多方法,那些方法描述的情况总是和我的情况有细微差别,反正最终也没修改成功。
后来有人告诉我,一般ansys的版本要比vs新,于是我卸载了ansys16.0,重装了2020 r1.
装好ansys2020 r1后,我没有额外设置环境变量,有时or有些udf是可以编译的,但是其他时候又会报错:“ The UDF library you are trying to load (sor) is not compiled for parallel use on the current platform (win64).”再后来就编译不了了。(这个情况我一直没弄明白是怎么回事,现在回想起来,可能是ansys2020 r1本来和vs2019就是搭配的,可以不用配置环境变量,但是由于我的udf写错了,所以一直报错)
但是我一直以为是环境变量的问题,于是想尽办法去配置,后来找到一个又无脑又简单的方法,好像是博主“硫酸亚铜”写的一个小工具:一键设置环境变量.exe;(大家可以找一下这个软件,我忘记是在哪里下载的了,还有一个配套的视频教程,大神真厉害),双击–生成文件–生成一个注册表文件,打开注册表,就配置好了。(其实在这里我也遇到了问题,生成的是一个path.txt文件,和双击udf.bat生成的那个path.txt文件一样,可能是需要自己把那些环境变量添加进去?后来我重新点了好几次这个小工具,就成功生成注册表文件了)
但是还是报错,这时我又看到一个说法,怎么判断你的环境变量配置成功了呢? win+r,cmd,回车,cl,回车,nmake,回车,出来的是这样子的话,就是配置成功了,如果显示:找不到批处理文件之类的,那就是没有成功。
问题2:udf格式问题
于是我惊讶地发现原来环境变量已经配置好了,于是我又回去仔细看了报错内容,发现,在“Error at Node 0: The UDF library you are trying to load (sor) is not compiled for parallel use on the current platform (win64).”前几行,有一堆关于udf_name的报错:
udf_names.c(10): error C2143: ???: ???;??(???)
udf_names.c(10): error C2085: ??heat_source??: ???�¦�???
udf_names.c(11): error C2085: ??porosity_function1??: ???�¦�???
udf_names.c(12): error C2085: ??porosity_function2??: ???�¦�???
udf_names.c(13): error C2085: ??udf_data??: ???�¦�???
udf_names.c(13): error C2143: ???: ???;??(???=???)
udf_names.c(15): warning C4138: ???/??
udf_names.c(16): warning C4138: ???/??
udf_names.c(17): warning C4138: ???*/??
udf_names.c(22): error C2065: ??udf_data??: ��???
NMAKE : fatal error U1077: ??“D:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\bin\HostX64\x64\cl.EXE”??: ???0x2??
Stop.
(注意,这些报错是在build时就出现的)
产生这些提示的原因,是因为udf文件名那一行,有别的文字或空格。
DEFINE_XXX(X,X,X)这一行,逗号之间是不能有空格的,而且后面也不能用/**/添加注释。那些多余的空格和注释删掉后,就成功地编译了udf。
标签:Fluent,编译,udf,names,error,报错,环境变量 来源: https://blog.csdn.net/Tengeryn/article/details/121356753