青色草原11 发表于 2012-12-10 14:16:49

udf编写问题,求高手指教

有一个圆形的大盘,温度是随着半径的增大而减小的,t=1300-r*r/(0.28*0.28)*1000,我试了好几次就是编写成功不了,帮助文件中的例子也看了,它只能是随着y坐标线性增减的,请高手帮助编写一下,或将相关的例子传我一份,本人万分感激,分数多多的给。还有c语言中的数学函数好像调用不了如abs,sqrt等,调用就会报错,高手指点。1.我用的就是编译型的 udf2.这个math.h我也想到了3环境变量也没问题这个我试过别的了能做的,温度就是壁面上加载的温度
#include "udf.h"

DEFINE_PROFILE(pressure_profile, t, i)
{
real x;                /* this will hold the position vector */
real y;
face_t f;

begin_f_loop(f, t)
    {
      F_CENTROID(x,f,t);
      y = x;
      F_PROFILE(f, t, i) = 300+y*y/(.0745*.0745)*100;
    }
end_f_loop(f, t)
}我是按着这个摸板编写的,当然我写的程序不是这样的,但是数组是一维的.只能随着y坐标的变化而改变.无法表达到原点的距离,我一直很困惑,不知用哪个摸版编写,自己也想不出来。等待高手的回答

fty0083 发表于 2012-12-21 13:25:56

这个模板没有问题,从你的公式来看,只要把r找到了就行。你圆形大盘的圆心应该从几何上能找到坐标,比如是
real CO={a,b};
你把这个放到real x;的下一行

至于距离r,我们用y表示。模板中的y=x重写成
y=sqrt(pow(x-CO),2)+pow((x-CO),2));

F_PROFILE后面的表达式你自己写吧,这样就行了。

至于你说的没有sqrt什么的,那是你vc的库没有被fluent调到,不是没有。你把math.h这个文件拷贝到X:\Fluent.Inc\fluent 6.xxx\src\ ,然后就可以用了。

青色草原11 发表于 2012-12-22 12:05:30

回复 2# fty0083 的帖子

多谢你的答复,我尝试一下,万分感谢。

青色草原11 发表于 2012-12-22 21:25:04

回复 2# fty0083 的帖子

我尝试了好几次,还是没有成功。就是按照你说的做法做的,困惑!
Deleted old libudf\ntx86\3ddp\libudf.dll
已复制         1 个文件。
已复制         1 个文件。
已复制         1 个文件。
已复制         1 个文件。
(system "copy E:\Fluent.Inc\fluent6.3.26\src\makefile_nt.udf libudf\ntx86\3ddp\makefile")
已复制         1 个文件。
(chdir "libudf")()
(chdir "ntx86\3ddp")()
valve.c
..\..\src\valve.c(6) : error C2065: 'a' : undeclared identifier
..\..\src\valve.c(6) : error C2097: illegal initialization
..\..\src\valve.c(6) : error C2065: 'b' : undeclared identifier
..\..\src\valve.c(6) : error C2097: illegal initialization
..\..\src\valve.c(13) : error C2198: 'pow' : too few actual parameters
..\..\src\valve.c(13) : error C2197: 'sqrt' : too many actual parameters
..\..\src\valve.c(13) : error C2059: syntax error : ')'

能否告诉我一下你的qq号啊,私下请教你一下:)

fty0083 发表于 2012-12-26 13:39:56

回复 4# 青色草原11 的帖子

你这个是c编译的问题,你安C++了么?环境变量设置是否正确?
另外,你用我给你的pow和sqrt这两个函数的话,你要在前面引用math.h这个头的。

青色草原11 发表于 2012-12-27 17:18:47

回复 5# fty0083 的帖子

装了vc++6.0,环境变量也改了,你说的math.h也加了,还是不行啊?如果用源程序就是上面的程序就能编译成功的

[ 本帖最后由 青色草原11 于 2012-12-27 17:20 编辑 ]

fty0083 发表于 2012-12-27 22:55:53

回复 6# 青色草原11 的帖子

你这个还是贬义的问题,你把math.h这个东西复制到你fluent目录下面fluent 6.2.3目录下src目录里面。fluent编译的时候有时候会遇到这个问题。
你看一下下面这个关于udf编译的问题,我现在安完vc后,都用这个软件再打个补丁,编译都没有问题
http://user.qzone.qq.com/178244444/blog/1295800001

另外,关于vc的安装,看一下下面这个,里面的方法3
http://user.qzone.qq.com/178244444/blog/1282496106

phoenixfang 发表于 2016-8-6 11:13:21

你好,请问你这个问题最后怎么解决的?我也遇到了,谢谢!
页: [1]
查看完整版本: udf编写问题,求高手指教