24小时热门版块排行榜    

北京石油化工学院2026年研究生招生接收调剂公告
查看: 1220  |  回复: 8

yxy657828314

新虫 (初入文坛)

[求助] udf编程问题 已有2人参与

最近在使用udf进行编程,主要使用两种宏,difine和profile,程序目的主要是截取三维模型进出口参数利用一维进行计算,三维和一维不断进行相互参数互换。
在difine宏里面插入一部分C++的程序,但是fluent迭代的时候就卡机了,不知道是因为什么原因,想问一下是否是因为C++程序里面使用了do-while语句。
下面是我的源程序
#include "udf.h"
real NV_VEC(A);
real avg_tempout;
real avg_tempin;
real sum_T_A=0.0;
real sum_A=0.0;
real sum_V_A=0.0;
real V2;
real V1;
Thread *thread_out;
Thread *thread_in;
face_t f;
Domain *domain;
    int i;
    int j;
        int k;
        real q[200];
        real F[200];
        real F1[200];
        real F2[200];
        real Y[200];
        real Fmax;
        real pj[200];
        real Ar;   
        real Aj;  
        real vj;   
        real zsxs;
        real dpj[200];
        real Ck[3][6];  
        real ph[6];  
        real R[6];   
        real G;
        real Q[6];   
        real fjts[6];   
        real hfy;
        real f1;   
        real f2;   
        real Ar=80;
        real Aj=0.8;
        real vj=30;
        real zsxs=1;
        real Ck[3][6]={0,0,0,0,0,0,0,1,0,1,-1,0,0,0,1,1,0,-1};
        real R[6]={0,0.02,0.02,0.01,0.02,0.02};
        real fjts[6]={0,6,12,0,0,0};
        real Ph[6]={0,0,0,0,0,0};
        real Q[6]={0,295,20,15,5,280};
DEFINE_ADJUST(inlet_T,d)   
{
        domain=Get_Domain(1);
    thread_in=Lookup_Thread(domain,6);
    begin_f_loop(f,thread_in)
{
        F_AREA(A,f,thread_in);
    sum_A+=NV_MAG(A);                 
    sum_T_A+=NV_MAG(A)*F_T(f, thread_in);
}
    end_f_loop(f,thread_in)
    avg_tempin=sum_T_A/sum_A;
   
}
DEFINE_ADJUST(inlet_v,d)   
{
domain=Get_Domain(1);
thread_in=Lookup_Thread(domain,6);
begin_f_loop(f,thread_in)
{
  F_AREA(A,f,thread_in);
  sum_A+=NV_MAG(A);
  sum_V_A+=NV_MAG(A)*F_W(f,thread_in);
}
end_f_loop(f,thread_in);
V1=sum_V_A/sum_A;

}
DEFINE_ADJUST(outlet_T,d)   
{domain=Get_Domain(1);
thread_out=Lookup_Thread(domain,5);
begin_f_loop(f,thread_out)
{
        F_AREA(A,f,thread_out);
sum_A+=NV_MAG(A);                 
sum_T_A+=NV_MAG(A)*F_T(f, thread_out);
}
end_f_loop(f,thread_out)
avg_tempout=sum_T_A/sum_A;

}
DEFINE_ADJUST(outlet_v,d)   
{
domain=Get_Domain(1);
thread_out=Lookup_Thread(domain,5);
begin_f_loop(f,thread_out)
{
  F_AREA(A,f,thread_out);
  sum_A+=NV_MAG(A);
  sum_V_A+=NV_MAG(A)*F_W(f,thread_out);
}
end_f_loop(f,thread_out);
V2=sum_V_A/sum_A;

        f1=101000*29/8.314/avg_tempin;   
      f2=101000*29/8.314/avg_tempout;   
    Ph[1]=0.5*f1*V2*V2-0.5*f2*V1*V1+0.5*9.8*12*f1-0.5*9.8*12*f2;   
for(i=1;i<=200;i++)
                F=0.0;
        for(i=1;i<=200;i++)
                F1=0.0;
        for(i=1;i<=200;i++)
                F2=0.0;
        for(i=1;i<=200;i++)                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                   
                Y=0.0;
        for(i=1;i<=200;i++)
                q=10000.0;
        for(i=1;i<=200;i++)
                pj=0.0;
   for(i=1;i<=5;i++)   
   {
   pj=fjts*(-1.2*vj*Aj*zsxs*fabs(Q)/Ar/Ar+1.2*vj*Aj*zsxs*vj/Ar);
   dpj=fjts*(-1.2*vj*Aj*zsxs/Ar/Ar);}
       do{for(i=1;i<=2;i++)   
         {  F=0;
        Y=0;       
        for(j=1;j<=5;j++)
                {
          F=F+Ck[j]*R[j]*Q[j]*fabs(Q[j])-Ck[j]*pj[j];
       Y=Y+2*Ck[j]*Ck[j]*R[j]*fabs(Q[j])-Ck[j]*Ck[j]*dpj[j];}
       q=-F/Y;
    for(j=1;j<=5;j++)
        {if(Ck[j]>0)
                Q[j]=Q[j]+q;
         else if(Ck[j]<0)
                Q[j]=Q[j]-q;
        }
       
                F1=0;      
                F2=0;
                for(j=1;j<=5;j++)        
                {if(Ck[j]/Q[j]>0)
                F1=F1+Ck[j]*R[j]*Q[j]*fabs(Q[j]);}
                for(j=1;j<=5;j++)
                {if(Ck[j]/Q[j]<0)
                F2=F2+Ck[j]*R[j]*Q[j]*fabs(Q[j]);}

                for(j=1;j<=5;j++)        
                {if(Ck[j]*Ph[6]<0)
                F1=F1-Ck[j]*Ph[6];}
                for(j=1;j<=5;j++)
                {if(Ck[j]*Ph[6]>0)
                F2=F2-Ck[j]*Ph[6];}
       
                for(j=1;j<=5;j++)      
                {if(Ck[j]*pj[j]<0)
                F1=F1-Ck[j]*pj[j];}
                for(j=1;j<=5;j++)
                {if(Ck[j]*pj[j]>0)
                F2=F2-Ck[j]*pj[j];}
        for(j=1;j<=5;j++)      
        { pj[j]=fjts[j]*(-1.2*vj*Aj*zsxs*fabs(Q[j])/Ar/Ar+1.2*vj*Aj*zsxs*vj/Ar);
         dpj[j]=fjts[j]*(-1.2*vj*Aj*zsxs/Ar/Ar);
        }
       }
   Fmax=0;
        for(k=1;k<=2;k++)
       {if(fabs(fabs(F1[k]/F2[k])-1)>Fmax)
                Fmax=fabs(fabs(F1[k]/F2[k])-1);
        }
        } while(Fmax>0.0001);     
DEFINE_PROFILE(in,thread,position)
{
         
begin_f_loop(f,thread)
{
  if(fabs((Q[1]-295)/295)>0.1)
  F_PROFILE(f,thread,position)=Q[1];
  else
  F_PROFILE(f,thread,position)=Q[1]/50;     
  Message("\\nQ = %g\\n",Q[1]);
}
end_f_loop(f,thread)
         
}
DEFINE_PROFILE(out,thread,position)
{
         
begin_f_loop(f,thread)
{
          if(fabs((Q[1]-295)/295)>0.1)
  F_PROFILE(f,thread,position)=Q[1];
  else
  F_PROFILE(f,thread,position)=Q[1]*Q[1]/80/80;   
          Message("\\nQ = %g\\n",Q[1]);
}
end_f_loop(f,thread)
         
}

麻烦大神帮忙看看是因为什么原因程序不能正常运行
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mycc

专家顾问 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
do-while语句是可以用的,UDF文件可以自己调试,看看问题出在什么地方
项目汇总:http://www.cfluid.com/forum.php?mod=viewthread&amp;tid=114340&amp;extra=
2楼2016-06-23 08:07:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

匿名

用户注销 (小有名气)

本帖仅楼主可见
3楼2016-06-23 09:07:42
已阅   申请仿真EPI   回复此楼   编辑   查看我的主页

小七工作室1

新虫 (著名写手)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ...
感谢参与,应助指数 +1
月只蓝: 金币-100, 应助指数-2, 屏蔽内容, 违规存档, 多次用完全一样、无实质性帮助的内容,回复不同应助帖! 2017-03-24 11:15:47
本帖内容被屏蔽

4楼2016-06-24 08:56:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yxy657828314

新虫 (初入文坛)

引用回帖:
2楼: Originally posted by mycc at 2016-06-23 08:07:09
do-while语句是可以用的,UDF文件可以自己调试,看看问题出在什么地方

UDF文件调试是没有问题的,但是FLUENT选择初始化的时候程序就卡了,没有办法进行迭代输出数据
5楼2016-06-27 09:30:32
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yxy657828314

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 小七工作室1 at 2016-06-24 08:56:45
这个做的比较多,可以交流下

给点建议,急求
6楼2016-06-27 09:34:08
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

mycc

专家顾问 (正式写手)

【答案】应助回帖

自己在UDF中添加一些输出语句,看看错误出现在什么位置,这么长的UDF需要你自己调试,我帮你的话,要收费的
项目汇总:http://www.cfluid.com/forum.php?mod=viewthread&amp;tid=114340&amp;extra=
7楼2016-06-27 09:37:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yxy657828314

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by xpxp1991 at 2016-06-23 09:07:42
建议将#define<math.h>等写进去

我先试试看看
8楼2016-06-27 09:37:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yxy657828314

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by xpxp1991 at 2016-06-23 09:07:42
建议将#define<math.h>等写进去

加了一句#define"math.h"
udf调试编译显示出现语法错误
9楼2016-06-27 09:45:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 yxy657828314 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +7 张.1 2026-04-05 7/350 2026-04-05 20:40 by 啵啵啵0119
[考研] 358求调剂 +7 秋gk 2026-04-04 7/350 2026-04-05 13:29 by huangmoli
[考研] 295求调剂 +10 xndjjj 2026-04-04 10/500 2026-04-05 11:19 by 猪会飞
[考研] 求调剂 +3 电气小神童 2026-04-04 3/150 2026-04-05 10:17 by barlinike
[考研] 材料调剂 +12 一样YWY 2026-04-04 12/600 2026-04-05 08:24 by 544594351
[考研] 材料调剂 +12 一样YWY 2026-04-02 13/650 2026-04-04 20:49 by 蓝云思雨
[考研] 一志愿北京科技大学材料工程085601,求调剂 +17 cdyw 2026-04-02 18/900 2026-04-04 11:14 by w_xuqing
[考研] 301求调剂 +14 A_JiXing 2026-04-01 14/700 2026-04-03 18:31 by ls刘帅
[考研] 机械专硕297 +3 Afksy 2026-04-03 3/150 2026-04-03 14:24 by 1753564080
[考研] 工科341分调剂 +3 洛多罗 2026-04-03 3/150 2026-04-03 14:20 by 1753564080
[考研] 285求调剂 +7 AZMK 2026-04-02 9/450 2026-04-03 11:12 by wanwan00
[考研] 309求调剂 +14 呆菇不是戴夫 2026-04-02 14/700 2026-04-03 09:42 by 蓝云思雨
[考研] 266求调剂 +4 学员97LZgn 2026-04-02 4/200 2026-04-02 13:03 by yulian1987
[考研] 0856初试324分求调剂 +6 想上学求调 2026-04-01 6/300 2026-04-02 11:42 by 星空星月
[考研] 304求调剂 +12 素年祭语 2026-03-31 15/750 2026-04-01 22:41 by peike
[考研] 0817化工学硕调剂 +11 努力上岸中! 2026-03-31 11/550 2026-04-01 20:30 by 赖春艳
[考研] 环境工程调剂 +9 hyzzzzzzz. 2026-04-01 9/450 2026-04-01 14:20 by salamander`
[考研] 318求调剂 +8 七忆77 2026-04-01 8/400 2026-04-01 10:37 by Jaylen.
[考研] 085601英二数二求调剂 总分325 +4 余航航 2026-03-31 4/200 2026-03-31 17:38 by 唐沐儿
[考研] 323分 食品与营养调剂 +3 嘿ooo 2026-03-31 3/150 2026-03-31 09:38 by longlotian
信息提示
请填处理意见