24小时热门版块排行榜    

查看: 2846  |  回复: 8
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

chang.z.s

铜虫 (小有名气)

[求助] 用udf实现coupled边界固体区域中温度最值提取

物理问题是想 提取  耦合边界固体区域中心面上温度最大值曲线和最小值取消(非稳态)。monitor可实现监控某一点或某面的平均值随时间变化,但想得到的点比较多就考虑用udf,但一直没成功过。
主要疑问在于:
d=Get_Domain(1); 对单相流体获得的是所有流体区域,边界的固体区域如何获得?
我在udf加了 t = Lookup_Thread(d,12); (12是固体壁面区域在boundary conditon 中的zone id)来获得固体域的thread,但udf没成功,是否是因为在d 是流体域不能得到固体的thread。如果这样的话,如何得到固体域呢?
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zhaolei539

铁虫 (小有名气)

引用回帖:
7楼: Originally posted by stryhood at 2013-10-26 11:29:45
不要用for循环,这个我有经验,你一个一个的话能算,如果用for的话就不行,即使是for循环只有3个,原因我也搞不清楚。...

你好!想请教提取某个边界面的温度,赋值给另一个边界面
面上不同位置 温度不一样 不知道UDM怎么存储的?我这样写行不行?
#include "udf.h"
DEFINE_PROFILE(hnt_temperature,thread)
{
face_t f;
real tem_liquid;
real tem_solid;
Thread *thread_liquid=Lookup_Thread(domain,14); /*14是交界面液体侧面的id*/;
Thread *thread_solid=Lookup_Thread(domain,15); /*15是交界面固体侧面的id*/;

begin_f_loop(f,thread_liquid)
{   
    temp=F_T(f,thread_liquid);
    F_UDMI(f,t,0)=temp_liquid;
           
}
  end_f_loop(f,thread_liquid)

begin_f_loop(f,thread_solid)
{   
    tem_solid=F_UDMI(f,t,0);
    F_PROFILE(f,thread_solid)=tem_solid;
           
}
  end_f_loop(f,thread_solid)
}
麻烦您帮忙看看 谢谢!
努力!
8楼2014-06-14 10:33:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
查看全部 9 个回答

chang.z.s

铜虫 (小有名气)

自顶一下 把代码贴出来,写的很挫 请高手指教

DEFINE_EXECUTE_AT_END(excutend_twminmax)
{
Domain *d;
/* declare domain pointer since it is not passed as an argument to the DEFINE macro */
Thread *t;
cell_t c;
real temptf,ctime1;
int i;
FILE *twminmax;
real x[ND_ND];       
real twmin0[100]={0}; real twmax0[100]={0}; real twmin[100]={0}; real twmax[100]={0}; //####grid is 500####only for this mesh;
real times0[100]={0}; real timeb0[100]={0}; real times[100]={0}; real timeb[100]={0};
i=0;
d=Get_Domain(1); // all fluid zone
t = Lookup_Thread(d,12);// ########pay attention to this part ,id of insert####### zone_ID 5
ctime1 = RP_Get_Real("flow-time";

for(i=0;i<250;i++)
{
thread_loop_c(t,d)
/* Compute max, min, volume-averaged temperature */
/* Loop over all cells */
{
        begin_c_loop(c,t)
        {
temptf = C_T(c,t);
C_CENTROID(x,c,t);

if ((fabs(x[1]-1.04)<0.02)&&(fabs(x[0]-(i+1)*0.02)<0.01))
{
                       
        if (ctime1<=1)
        {
        twmin=temptf;   //   temperature at current time
        twmax=temptf;
        times=ctime1;
        timeb=ctime1;
        }
               
        if ((twmin0<twmin)&&(ctime1>1))// initial state skip these two
                {
                twmin=twmin0;
                times=times0;
                }

        if ((twmax0>twmax)&&(ctime1>1))
                {
                twmax=twmax0;
                timeb=timeb0;
                }
       
}
        twmin0=twmin; // 0  temperature at last time step, save the last time step data
        twmax0=twmax;
        times0=times;
        timeb0=timeb;

}
    end_c_loop(c,t)
}

}
/* write the data of twmin adn twmax */
twminmax=fopen("twminmax.txt","w";
for(i=0;i<250;i++)
{
fprintf(twminmax,"%g %g %g %g %g\n", ctime1, twmin, times, twmax, timeb);
}
Message("twmin[100];%g\n",twmin[100]);
fclose(twminmax);
}
2楼2013-10-18 15:41:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

stryhood

至尊木虫 (著名写手)

【答案】应助回帖


臭水沟: 金币+1, 谢谢交流~ 2013-10-25 20:30:17
loop thread和loop cell都用,你限定一下固体区域的坐标,应该能行
3楼2013-10-21 08:58:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

chang.z.s

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by stryhood at 2013-10-21 08:58:34
loop thread和loop cell都用,你限定一下固体区域的坐标,应该能行

udf里是这样处理的 同时thread和cell的循环都有找固体区域的某个位置,
但最后输出都是初值

thread_loop_c(t,d)
/* Compute max, min, volume-averaged temperature */
/* Loop over all cells */
{
        begin_c_loop(c,t)

不确定是不是 if ((fabs(x[1]-1.04)<0.02)&&(fabs(x[0]-(i+1)*0.02)<0.01)) 判断太严格,根本没执行,这种可能也不大。
4楼2013-10-22 16:16:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +8 s3fFTmArrBt6 2026-09-14 8/400 2026-09-18 10:06 by yS4CkeWDhD6V
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +8 s3fFTmArrBt6 2026-09-13 9/450 2026-09-18 10:04 by yS4CkeWDhD6V
[公派出国] 售SCI一区T0P文章,我:8O.55.1.O.5.4,科目齐全,可+急 +5 3n8v2C8RimXI 2026-09-13 6/300 2026-09-18 09:18 by yS4CkeWDhD6V
[考研] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +3 C79jjtjAKjEn 2026-09-15 3/150 2026-09-18 03:40 by cITaGg3p5edr
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 vZfe6xYu34yj 2026-09-15 3/150 2026-09-18 02:40 by cITaGg3p5edr
[考博] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +5 Aj1rhIDL5ixY 2026-09-14 6/300 2026-09-18 01:54 by cITaGg3p5edr
[找工作] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 3n8v2C8RimXI 2026-09-13 4/200 2026-09-17 22:39 by cuPZTDXS3VOd
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +8 QUjhNVAcOSff 2026-09-13 12/600 2026-09-17 22:15 by cuPZTDXS3VOd
[考博] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 vZfe6xYu34yj 2026-09-14 3/150 2026-09-17 15:29 by 0ngsZVSCTS7z
[公派出国] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 Aj1rhIDL5ixY 2026-09-14 4/200 2026-09-17 14:27 by ObVzqQQh1rrE
[硕博家园] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +4 0pYnUiPDfdnk 2026-09-14 4/200 2026-09-17 14:15 by ObVzqQQh1rrE
[硕博家园] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +6 23jxep3nCNZb 2026-09-14 6/300 2026-09-17 13:27 by ObVzqQQh1rrE
[找工作] 售SCI一区文章,我:8.O.551.O.5.4,科目全,可伽急 +4 6F5UbRU2I5hL 2026-09-14 4/200 2026-09-17 13:05 by ObVzqQQh1rrE
[找工作] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +8 3n8v2C8RimXI 2026-09-13 8/400 2026-09-17 11:27 by UAIjTRMuUFoj
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +4 mibUvS8DDCwf 2026-09-15 4/200 2026-09-17 06:26 by k06BKNblrGRH
[考研] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +4 Aj1rhIDL5ixY 2026-09-14 4/200 2026-09-17 04:52 by k06BKNblrGRH
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +6 6F5UbRU2I5hL 2026-09-14 6/300 2026-09-17 03:14 by Tql5LQhh5rLK
[找工作] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +3 s3fFTmArrBt6 2026-09-14 3/150 2026-09-17 02:38 by Tql5LQhh5rLK
[找工作] 售SCI一区T0P文章,我:8.O.55.1.O.54,科目齐全,可+急 +5 6F5UbRU2I5hL 2026-09-14 6/300 2026-09-16 17:27 by i3KBRD19ERkG
[考博] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 6F5UbRU2I5hL 2026-09-14 3/150 2026-09-15 17:39 by CgyNCDVNhGVg
信息提示
请填处理意见