找回密码
 注册
查看: 3682|回复: 10

关于UDF SOURCE问题求教

[复制链接]
发表于 2012-3-26 21:21:19 | 显示全部楼层 |阅读模式

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

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

x
请教个问题:我现在计算一个东西,,给定计算域,需要自定义UDF 源项(DEFINE_SOURCE),,但是这个源项只在紧贴界面的一层流体单元处才有值,在其他区域为0,这个问题怎么解决?
发表于 2012-3-30 20:11:42 | 显示全部楼层

回复 1# wind_cool2009 的帖子

easy!
或者壁面部分网格单独剖分,或者UDF中语句判断。
发表于 2012-4-1 22:01:47 | 显示全部楼层

回复 2# gbd20022002 的帖子

能不能帮忙写个壁面一层网格的判断语句,我现在做的也要这部分,但是怎么都写不出来,我写的这样
tc=Lookup_Thread(Get_Domain(1),zone_ID);
begin_f_loop(f,tc)
{
c=F_C0(f,tc);
t0=THREAD_T0(tc);
但是这个不对,这样得到的单元还是整个流场区域的所有单元,根本就不是最近一层的网格单元,我用
C_CENTROID(CC,c,t0);
C_UDMI(c,t0,0)=CC[1];
C_UDMI(c,t0,2)=CC[0];
查看结果了的,麻烦帮忙解答下
发表于 2012-4-2 15:52:07 | 显示全部楼层

回复 2# gbd20022002 的帖子

请版主赐教啊
发表于 2012-4-2 16:29:49 | 显示全部楼层

回复 3# luckyhuman1 的帖子

我发现这样显示的是壁面附近的两层网格,为什么呐
 楼主| 发表于 2012-4-6 10:18:28 | 显示全部楼层

回复 2# gbd20022002 的帖子

你好,,,壁面部分网格单独剖分,,这个情况我也考虑过,,问题是我的情况是变网格,,,,分割出来就不好搞了!
 楼主| 发表于 2012-4-6 10:33:14 | 显示全部楼层

你看我下面的代码,,正确吗?
#include"udf.h"
#define ID 6
DEFINE_SOURCE(mass_source,c,t,dS,eqn)
{
        Domain *domain=Get_Domain(1);
        Thread *tf=Lookup_Thread(domain,ID);
        face_t f;
        cell_t c0;
                Thread *t0;
        begin_f_loop(f,tf)
        {
                c0=F_C0(f,tf);
                t0=THREAD_T0(tf);
                if(c=c0&&t=t0)
                {
                             source=100;
                    dS[eqn]=0;
                }
                else
                source=dS[eqn]=0;
                return source;
        }
}
发表于 2012-4-16 11:08:58 | 显示全部楼层

回复 7# wind_cool2009 的帖子

网上有的那段在指定坐标处加源项可以实现,但是网格是不动的
发表于 2012-12-4 16:07:43 | 显示全部楼层

回复 8# luckyhuman1 的帖子

你说的网上的在哪里可以找到呢,我现在也遇到相同的问题了。
发表于 2012-12-4 16:31:47 | 显示全部楼层
不是这么整的,DEFINE_SOURCE会自动对每个cell循环,只要在DEFINE_SOURCE里面判断传进来的c是不是和你要的face邻接就可以了。
#include"udf.h"
#define ID 6
DEFINE_SOURCE(mass_source,c,t,dS,eqn)
{
        int n;
        face_t f;
        Thread*tf;
        cxboolean IsFaceNeighborCell=FALSE;
  
        c_face_loop(c, t, n)
        {
        tf = C_FACE_THREAD(c,t,n);
        if(ID==THREAD_ID(tf) IsFaceNeighborCell=TRUE;
        }
        dS[eqn]=0;
        if(IsFaceNeighborCell)
                source=100;
        else
                source=0;
                return source;
     }
发表于 2012-12-4 19:09:44 | 显示全部楼层
一种很简单的方法是根据坐标来判断,先根据网格得到第一层网格单元的坐标,然后进行判断
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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