浏览:5262 回答:2

下面是我的问题。
如图所示。两个通道被一层膜隔开(为了便于计算,这层膜用wall、wall2来表示)。上面通道内走冷水,下层走热水。红色区域表示热水侧靠近 Wall 2 的一层网格,将这部分划分为 cell zone3,而绿色区域表示冷水侧靠近 Wall  的一层网格,将这部分划分为 cell zone4 ,网格划分方式相同。整个过程用fluent模拟。
问题:现在需要在热水侧靠近Wall 2 的那层网格(cell zone3)加载能量源项,而这个能量源项不仅与Cell zone3内网格温度有关,还与其相对应的Cell zone4内网格温度有关.即
Source=f(T1, T0),我将其简化为Source=T1-T0   (如图所示T1为Cell zone3中某个网格的温度、T0为 Cell zone4中与红色网格相对应的绿色网格的温度)
现在问题的难点是如何在Cell zone3中提取到Cell zone4相对应的(必须是相对应的)网格温度。下面是我自己的做法。
DEFINE_ADJUST(filter_adjust, domain)
{
        cell_t c0, c1;
        Thread*wall2_thread; /*膜下侧,即wall2*/
        Thread*t0;
        Thread*t1;
        face_t wall2 =35;
        mem_thread= Lookup_Thread(domain,mem);
        begin_f_loop (wall2, wall2_thread)
        {
                c0= F_C0(wall2,wall2_thread); 
                c1= F_C1(wall2,wall2_thread);
                t0= THREAD_T0(wall2_thread); 
                t1= THREAD_T1(wall2_thread);  /*由fluent默认可知c0为Cell zone3中某个网格,而c1为Cell zone4中与c0对应的绿色网格*/
                C_UDMI (c0,t0,0)=C_T(c0, t0) -C_T(c1, t1); 
        }    /*将红色网格及其对应的绿色网格差值存储在红色网格中,也就是Cell zone3的网格中*/
        end_f_loop (wall2,wall2_thread)
}
DEFINE_SOURCE(water_source,cell,thread,dS,eqn)   /*加载在Cell zone3上*/
{
real source_en;
source_en=C_UDMI(c,t,0);    /*感觉这里有问题啊,指针问题?*/
dS=0.; 
return source_en;
}
最终可以加载上,不过没有任何的作用,个人感觉是source_en=C_UDMI(c,t,0)与C_UDMI (c0,t0,0)=C_T(c0, t0) -C_T(c1, t1)不能进行数据传递。希望高手能够给予帮助,大家有更好的办法的话,希望能不吝赐教。谢谢!

1.jpg


邀请回答 我来回答

全部回答

(2)
默认 最新
金玉晨
1,边界只有c0,t0,无1 2, fluent中,因为wall2无1, 你的做法没法保证对应关系 3, 两个壁面平行,分别找到壁面的指针,然后同时输出坐标和温度到数组,数组按坐标大小排序,这样保证对应, 4,排序工作可以在define_execute_at_end来实现
2016年1月8日
评论 点赞
郑雨
那里应该是a〔i〕
2016年1月8日
评论 点赞

没解决?试试专家一对一服务

换一批