找回密码
 注册
查看: 1897|回复: 11

请教二元函数公式写成UDF,如何循环遍历?

[复制链接]
发表于 2009-12-30 08:51:13 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
rt,该公式怎么转化为UDF啊?是如何循环遍历线上的所有网格的呢?

此外,在该点的梯度(dt/dx,dt/dy)又如何获得呢?

谢谢!

公式

公式
发表于 2009-12-30 10:11:58 | 显示全部楼层
可以用udf循环所有网格,获取其坐标;
solve-set-expert,将Keep temporary solver memory from being freed设为yes即可在contour等下拉列表中显示温度梯度,在udf中也可以对温度梯度进行操作了。
 楼主| 发表于 2009-12-30 11:38:33 | 显示全部楼层
原帖由 swimming02 于 2009-12-30 10:11 发表
可以用udf循环所有网格,获取其坐标;
solve-set-expert,将Keep temporary solver memory from being freed设为yes即可在contour等下拉列表中显示温度梯度,在udf中也可以对温度梯度进行操作了。


谢谢swimming02版,能否稍微具体点讲下如何获取坐标,使用那些宏去循环遍历网格呢,有没有跟我类似这样的UDF呢,谢谢你的指导~~

补充:我这个x,y以及左边的T(x,y)在程序中如何表示呢?

[ 本帖最后由 夏之 于 2009-12-30 11:40 编辑 ]
发表于 2009-12-31 11:56:23 | 显示全部楼层
F_CENTROID(x,f,tf),C_CENTROID(x,c,t)分别用来获取面和体网格的坐标,详细的你最好看看udf的帮助文件
 楼主| 发表于 2009-12-31 20:25:23 | 显示全部楼层
原帖由 swimming02 于 2009-12-31 11:56 发表
F_CENTROID(x,f,tf),C_CENTROID(x,c,t)分别用来获取面和体网格的坐标,详细的你最好看看udf的帮助文件



谢谢swimming02版,大致这样对不对呢
F_CENTROID(x,f,t)

begin_c_loop(c, t)
{
?+=(x[1]-2*C_NNODES(c,t))/x[0];
}
end_c_loop(c, t)

但是这里左边这个T(x,y)又该怎么表示呢?
期待您的回复,谢谢
发表于 2010-1-2 15:22:12 | 显示全部楼层
你的x,y不就是网格的坐标嘛,你是要定义边界条件还是调节全场的温度参数?
 楼主| 发表于 2010-1-2 20:37:59 | 显示全部楼层
原帖由 swimming02 于 2010-1-2 15:22 发表
你的x,y不就是网格的坐标嘛,你是要定义边界条件还是调节全场的温度参数?



我是要调节全场的,调节二维空间对应位置的参数值,我仍未搞清楚等式的左边T(x,y)该如何表示,右边就是(x[1]-2*C_NNODES(c,t))/x[0] 了。
我的意思是说在那个UDF里面不可能直接敲“T(x,y)”,哪么该如何表示这个左边的T(x,y)呢,我想了几天都想不出来。谢谢您~~
发表于 2010-1-3 13:04:58 | 显示全部楼层
要表示T(x,y)的话和括号里面的东西没什么关系吧,就是一点的温度值啊
 楼主| 发表于 2010-1-3 13:38:42 | 显示全部楼层
可能是我说的不清楚,对,就是某一点的温度值,但是我就是不知道在程序里面这个某一点的量,即等式左边T用什么符号表示?因为我想这个T肯定是变化的嘛,不能只是定义一个“ real T”;这样吧?可否提示下呢?或者说我想复杂了,谢谢swimming02 版~
 楼主| 发表于 2010-1-3 15:54:55 | 显示全部楼层
原帖由 swimming02 于 2010-1-3 13:04 发表
要表示T(x,y)的话和括号里面的东西没什么关系吧,就是一点的温度值啊



可能是我说的不清楚,对,就是某一点的温度值,但是我就是不知道在程序里面这个某一点的量,即等式左边T用什么符号表示?因为我想这个T肯定是变化的嘛,不能只是定义一个“ real T”;这样吧?可否提示下呢?或者说我想复杂了,谢谢swimming02 版~
 楼主| 发表于 2010-1-3 21:30:40 | 显示全部楼层
原帖由 swimming02 于 2010-1-3 13:04 发表
要表示T(x,y)的话和括号里面的东西没什么关系吧,就是一点的温度值啊



如定义边界条件用DEFINE_PROFILE中的F_PRORILE(f,thread,position)=……,可是我这个不是边界条件,而是调节全场的温度参数,哪么我该用那个宏呢?看help看不出什么东西,期待您的回复~~谢谢
发表于 2010-1-4 10:27:56 | 显示全部楼层
你可用DEFINE_ADJUST宏,体网格的温度用C_T(c,t)表示,你多看看帮助吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表