24小时热门版块排行榜    

查看: 1347  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 大佬帮着分析今年的评审意见?该课题连续申请了三年了,明年要不要换个方向。 100+3 cai-11138 2026-08-31 11/550 2026-09-06 20:49 by archvillain
[文学芳草园] 两块石头 +7 阿美_Lml888 2026-09-03 10/500 2026-09-06 20:08 by 阿美_Lml888
[硕博家园] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +4 jPDp0sc2B7zQ 2026-09-05 6/300 2026-09-06 18:21 by eObJPa4gWmp6
[博后之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 6/300 2026-09-06 18:09 by eObJPa4gWmp6
[论文投稿] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +4 jPDp0sc2B7zQ 2026-09-05 6/300 2026-09-06 18:01 by eObJPa4gWmp6
[公派出国] 售SCI一区T0P文章,我:8.O.55.1.O.5.4,科目全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 6/300 2026-09-06 17:21 by eObJPa4gWmp6
[教师之家] 售一区SCI文章T0P,我:8O.551.O54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 9/450 2026-09-06 17:09 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O.5.5.1O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-04 8/400 2026-09-06 17:09 by eObJPa4gWmp6
[博后之家] 广西大学-广州大学招聘博士后 欢迎广大优秀人才!!! +5 SCSIOyxguo 2026-09-03 8/400 2026-09-06 15:06 by 可爱小花朵
[教师之家] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 j5mmowWXNWxv 2026-09-05 3/150 2026-09-06 13:09 by eObJPa4gWmp6
[考博] 售SCI一区文章,我:8O5.5.1.O5.4,科目全,可伽急 +3 j5mmowWXNWxv 2026-09-05 4/200 2026-09-06 12:49 by eObJPa4gWmp6
[考博] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 j5mmowWXNWxv 2026-09-05 4/200 2026-09-06 12:29 by eObJPa4gWmp6
[硕博家园] 售SCI一区T0P文章,我:8.O55.1.O.54,科目全,可十急 +3 jPDp0sc2B7zQ 2026-09-05 7/350 2026-09-06 11:20 by eObJPa4gWmp6
[考研] 售SCI文章,我:8O5.5.1.O.54,科目齐全,可+急 +3 jPDp0sc2B7zQ 2026-09-05 4/200 2026-09-06 07:20 by E1iiBLMU2XnD
[论文投稿] 售SCI一区T0P文章,我:8.O.55.1.O54,科目全,可伽急 +6 7ZYIEW2YWn72 2026-09-04 9/450 2026-09-06 06:00 by E1iiBLMU2XnD
[教师之家] 售SCI一区T0P文章,我:8O.55.1.O.54,科目全,可伽急 +8 CRJ0Aq2FtVH0 2026-09-03 15/750 2026-09-06 05:48 by E1iiBLMU2XnD
[基金申请] 面上没中,邀请各位路过的虫友分析一下分数 +12 jackleilei 2026-09-03 13/650 2026-09-05 18:10 by fireguard
[基金申请] 学科评审组评审是指会评吗? +6 瞬息宇宙 2026-08-31 9/450 2026-09-05 13:11 by haizai99
[硕博家园] Ei源刊怎么投 +4 Fengshun9711 2026-09-04 4/200 2026-09-04 19:30 by 研途知予
[基金申请] 要骂人了,新模版改版就是要淡化问题凝练这种虚的东西,结果有个评委还在说凝练得不够 +9 瞬息宇宙 2026-08-31 17/850 2026-09-02 14:04 by anjeeshine
信息提示
请填处理意见