UDF编译出错,不知道是程序的问题还是环境变量的问题
-
程序如下所示,是照着用户手册抄过来的,编译的时候出错了,不明白什么原因
#include"udf.h" #define YMIN 0.0 //CONSTANTS// #define YMAX 0.4064 #define UMEAN 1.0 #define B 1.0/7.0 #define DELOVRH 0.5 #define VISC 1.7894e-05 #define CMU 0.09 #define VKC 0.41 //profile for x-velocity// DEFINE_PROFILE(x_velocity,t,i) { real y, del, h, x[ND_ND], ufree; //variable declarations// face_t f; h = YMAX - YMIN; del = DELOVRH * h; ufree = UMEAN * (B + 1.0); begin_f_loop(f,t) { F_CENTROID(x,f,t); y = x[1]; if (y <= del) F_PROFILE(f,t,i) = ufree*pow(y/del,B); else F_PROFILE(f,t,i) = ufree*pow((h-y)/del,B); } end_f_loop(f,t) } //profile for kinetic energy// DEFINE_PROFILE(k_profile,t,i) { real y, del, h, x[ND_ND], ufree; real ff, utau, knw, kinf; face_t,f; h = YMAX - YMIN; del = DELOVRH * h; ufree = UMEAN * (B + 1.0); ff = 0.045 / pow(ufree * del/VISC, 0.25); utau = sqrt(ff * pow(ufree, 2.0)); befin_f_loop(f,t) { F_CENTROID(x,f,t); y = x[1]; if (y <= del) F_PROFILE(f,t,i) = knw + y/del * (kinf - knw); else F_PROFILE(f,t,i) = knw + (h-y)/del * (kinf - knw); } end_f_loop(f,t) }
-
这是加载出错吧,我感觉是你编译udf的fluent版本和你现在使用的不是同一个版本,重新编译试一下
-
@两月三年 我是安装了两个版本的fluent,但是只拿这一个在编译UDF
-
用那个编译,就用那个加载,版本不一样,编译玩他不认识的,你这个直接解释就行了,模型不复杂的话,直接解释吧,
-
@两月三年 好的 谢谢您 我之前没试过解释 我试试
-
@两月三年 解释了一下 发现程序有问题 谢谢您
-
@两月三年 但是编译还是不成功
-
你确认E://CFD/udfxuexi/UDF pr...路径下有这个libudf.dll文件?
-
@东岳 确实没有这个文件
-
建议从VS命令行启动FLUENT.
-
@astremon 您好 谢谢提醒 这个怎么操作呢 以前没有听说过
-
@noodles 就是打开VS的命令行窗口,把fluent快捷方式中的属性中的目标地址复制过去就行。
-
-
@noodles 解决方案:
具体过程可以参考这个文章-
从Microsoft 官网下载 软件开发补丁: NET Framework 2.0 Software Development Kit (SDK) (x64)
-
安装补丁
-
从开始快捷键中 以管理员身份运行 SDK 命令行,SDK Command Prompt
-
命令行中 切换至fluent 启动项位置,运行fluent
-
切换fluent工作目录至case 目录,运行。
-
udf 成功运行
因此推断 在编译过程中有点问题,可能还是VS与 fluent 之间配合不好。 在编译完成之后udf即可正常运行。
-
-
@ibelief 谢谢 公众号早已关注 只是未见你更新哪
-
@noodles 写不出来好的东西,也就没有更新了
-
@ibelief 最新更新的那篇也是太过于精简啊
-
这个问题太常见了
从vs命令行启动程序,然后用下面命令启动fluent
cd "C:\Program Files\ANSYS Inc\v162\fluent\ntbin\win64"
fluent -
@noodles 更新了一个资源索引
-
@ibelief 看到啦
-
这是一个环境变量的问题
如果你在国内几个fluent的大群 我都上传了设置这个的方法
这个其实也很简单 udf.bat写的是搜索VC 下的vcvarsall.bat的位置 然后通过vcvarsall.bat来寻找MS C complier的include lib libpath path的位置
最后添加环境变量就能解决问题
这是实现原理
那么如果你的默认路径已经在环境变量里设置了 之后你又安装了新版本不在这个老位置
那么你即便使用VS的启动命令可能还是不行
其实也简单 你联系我 10分钟解决问题 -
@l-j刘侃 谢谢您,请问您方便加我qq吗,957363528
-
@noodles 你好,请问你解决了么,我也遇到了这个问题,能指导下么?谢谢!
-
@lei_y16 上面有一些解决方法, 你可以试试,本质上就是环境变量的问题。
-
@ibelief 好的,谢谢!
论坛登录问题反馈可联系 li.dy@dyfluid.com