24小时热门版块排行榜    

Znn3bq.jpeg
查看: 4035  |  回复: 4

王璐FT

新虫 (初入文坛)

[求助] UDF代码串行改并行 已有2人参与

#新人一枚,金币不足,请各位大佬见谅#
FLUENT UDF编程,串行改并行,根据FLUENT help里的帮助进行了更改,但是仍显示错误,求各位大佬帮助!!!
串行代码:
#include "udf.h"

DEFINE_EXECUTE_AT_END(centroid)       /*centroid函数名DEFINE_EXECUTE_AT_END宏*/
{
   cell_t c;                           /*变量c为cell_t数据类型*/
   real cx,cy;                         /*声明变量cx,cy为实数,需求的质心坐标*/
   real x,y;
   real wcx=0.0;                      /*声明wcx为实数,初值为0,质心x坐标*单元体积*/                           
   real wcy=0.0;
   real va_liq=0.0;                 /*液相总体积*/
   real z[ND_ND];                 /*定义质心的二维坐标,数据类型为real*/
   FILE *fout1;
   FILE *fout2;
   Domain *subdomain= Get_Domain(3);       /*区域 用*d输出指针d指向的值*/
   Thread *t;                       /*与它描述的单元或面的组合相关的数据容器*/
  thread_loop_c(t,subdomain)                 /*遍历求解域中所有单元的边界*/
  {
   begin_c_loop(c, t)                /*遍历网格单元*/
   {     
    if(0.5<=C_VOF(c,t)&&C_VOF(c,t)<=1.0)    /*找到液相单元,C_VOF(c,t)单元液相体积分数*/   
   {
    va_liq = va_liq + C_VOLUME(c,t);   
    C_CENTROID(z,c,t);            /*一个函数,读取网格单元质心二维坐标并赋值给z*/
    wcx = wcx + z[0]*C_VOLUME(c,t);       /*x[0]质心横坐标,x[1]质心纵坐标*/
    wcy = wcy + z[1]*C_VOLUME(c,t);       /*C_VOLUME(c,t)获取单元体积*/
   }
   }
   end_c_loop(c, t)
  }
  cx = wcx/va_liq;
  cy = wcy/va_liq;

  fout1 = fopen("X-centroid of liquid.txt","a";
  fout2 = fopen("Y-centroid of liquid.txt","a";

  fprintf(fout1,"%g,%g\n",CURRENT_TIME,cx);
  fprintf(fout2,"%g,%g\n",CURRENT_TIME,cy);

  fclose(fout1);
  fclose(fout2);

  Message("\n X-centroid of liquid = %g\n", cx);
  Message("\n Y-centroid of liquid = %g\n", cy);
}
更改后代码:
DEFINE_EXECUTE_AT_END(centroid)       /*centroid函数名DEFINE_EXECUTE_AT_END宏*/
{
        real wcx = 0.0;                      /*声明wcx为实数,初值为0,质心x坐标*单元体积*/
        real wcy = 0.0;
        real va_liq = 0.0;                 /*液相总体积*/
   
#if !RP_HOST
        real cx, cy;                         /*声明变量cx,cy为实数,需求的质心坐标*/
        real x, y;
   cell_t c;                           /*变量c为cell_t数据类型*/
   real z[ND_ND];                 /*定义质心的二维坐标,数据类型为real*/
   Domain *subdomain= Get_Domain(3);       /*区域 用*d输出指针d指向的值*/
   Thread *t;                       /*与它描述的单元或面的组合相关的数据容器*/
   #if !RP_NODE
   FILE *fout1;
   FILE *fout2;
   #endif
  thread_loop_c(t,subdomain)                 /*遍历求解域中所有单元的边界*/
  {
  begin_c_loop(c, t)                /*遍历网格单元*/
  {     
    if(0.5<=C_VOF(c,t)&&C_VOF(c,t)<=1.0)    /*找到液相单元,C_VOF(c,t)单元液相体积分数*/   
  {
    va_liq = va_liq + C_VOLUME(c,t);   
    C_CENTROID(z,c,t);            /*一个函数,读取网格单元质心二维坐标并赋值给z*/
  wcx = wcx + z[0]*C_VOLUME(c,t);       /*z[0]质心横坐标,z[1]质心纵坐标*/
   wcy = wcy + z[1]*C_VOLUME(c,t);       /*C_VOLUME(c,t)获取单元体积*/
}
   }
   end_c_loop(c, t)
}
#if RP_NODE
  va_liq =PRF_GRSUM1(va_liq);
  wcx =PRF_GRSUM1(wcx);
  wcy =PRF_GRSUM1(wcy);
  # endif
  cx = wcx/va_liq;
  cy = wcy/va_liq;
  #endif
  #if !PARALLEL
  fout1 = fopen("X-centroid of liquid.txt","a";
  fout2 = fopen("Y-centroid of liquid.txt","a";
  fprintf(fout1,"%g,%g\n",CURRENT_TIME,cx);
  fprintf(fout2,"%g,%g\n",CURRENT_TIME,cy);
  fclose(fout1);
  fclose(fout2);
  #endif
}
编译时显示错误:
Error: C:/Users/MSI/AppData/Local/Temp/centroid_parallel_wl.c.23224.4.c: line 35: MPT_gdsum1: no function prototype
求大神指导!!!
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

SuperUDF

银虫 (小有名气)

读写文件和网格操作的并行编程是最麻烦的。
2楼2019-09-11 09:19:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

swirl

新虫 (正式写手)

【答案】应助回帖

并行优化UDF,使用全局求和宏的时候用compiled编译导入fluent,否则就会出现no function prototype报错。
3楼2021-04-13 09:59:53
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

28通信调剂

新虫 (初入文坛)

大佬,问题有解决嘛?同问题求解惑

发自小木虫手机客户端
4楼2024-11-25 14:24:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

大胃马里奥

捐助贵宾 (初入文坛)

【答案】应助回帖

“Error: C:/Users/MSI/AppData/Local/Temp/centroid_parallel_wl.c.23224.4.c: line 35: MPT_gdsum1: no function prototype”,这个错误提示表明在编译过程中,编译器未能找到函数 MPT_gdsum1 的原型声明。
解决方案:

    检查头文件:确保所有相关的头文件都已正确包含在您的源代码中。特别是涉及到 MPT_gdsum1 函数的头文件。例如,如果 MPT_gdsum1 是 Ansys 并行计算库的一部分,您需要确保包含了相应的并行计算库的头文件。

    验证库链接:确保在编译时正确链接了所需的库文件。如果您使用的是 Ansys 的特定库,请检查项目设置或编译命令中是否正确指定了这些库的路径。

    查看官方文档:查阅 Ansys 官方文档,了解 MPT_gdsum1 函数的具体用法和依赖关系。官方文档通常会提供详细的函数原型和使用示例。

    更新软件:确保您使用的 Ansys 软件版本是最新的。有时,旧版本的软件可能会存在一些已知的问题,这些问题在新版本中已经被修复。

示例:

假设 MPT_gdsum1 是 Ansys 并行计算库的一部分,您可以在代码中添加以下头文件:

#include "parallel.h"  // 假设 parallel.h 包含了 MPT_gdsum1 的原型声明

然后确保在编译命令中链接了相应的库:

gcc -o my_program my_program.c -L/path/to/ansys/lib -lansys_parallel
5楼2024-11-28 12:22:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 王璐FT 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] 河北省自然科学基金 +5 Peterchao 2026-05-18 8/400 2026-05-24 11:58 by 晓晓爱翠翠
[基金申请] 西安交大新媒学院副院长用撤稿论文结题 +3 bjvtcliu 2026-05-24 5/250 2026-05-24 10:16 by kudofaye
[教师之家] 论文撤稿了 +3 bjvtcliu 2026-05-24 5/250 2026-05-24 10:06 by Equinoxhua
[教师之家] 某211大学教师把个人教师官方主页改成:我跑了我跑了我跑了!官宣跑路! +4 zju2000 2026-05-21 5/250 2026-05-24 09:35 by songwz
[考博] 26/27申博自荐 10+4 ZXW0202 2026-05-22 9/450 2026-05-24 08:47 by bjvtcliu
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 hvkbtfonbv 2026-05-23 3/150 2026-05-24 08:01 by 9ps9vgkqva
[硕博家园] 售SCI一区T0P文章,我:8.O.5.5.1.O.5.4,科目齐全,可+急 +3 pmo95bazuy 2026-05-23 7/350 2026-05-24 06:35 by fpo5ljpv91
[基金申请] 揭秘青基评审内幕:几个A才能顺利中标 +3 国自然国社科中 2026-05-23 4/200 2026-05-23 15:37 by 2000zf36392
[基金申请] 青B发送上会通知了吗 +5 chemBioBro 2026-05-22 7/350 2026-05-23 12:35 by zhuifengzhy
[考博] 博士申请 +3 焦晓明 2026-05-21 3/150 2026-05-23 11:26 by mlc840311
[论文投稿] 投稿求助,期刊 +4 希冀,有书读 2026-05-20 8/400 2026-05-22 10:16 by 希冀,有书读
[文学芳草园] 献血感触 +7 呀呀好傻 2026-05-19 13/650 2026-05-21 20:15 by 呀呀好傻
[基金申请] 面上本子正文33页,违规吗?会被低分嘛? +14 1234567wang 2026-05-17 16/800 2026-05-21 17:58 by 脆脆的饼干
[基金申请] 国自然评分 +4 无名者登山 2026-05-20 5/250 2026-05-21 16:35 by swuq
[基金申请] 国自然上会要求 +7 无名者登山 2026-05-18 11/550 2026-05-21 15:50 by draco1987
[基金申请] 提交了我也来说说感想 +9 fummck 2026-05-20 10/500 2026-05-21 14:17 by draco1987
[基金申请] 评审有感 +15 popular289 2026-05-18 26/1300 2026-05-21 10:35 by 西葫芦炒鸡蛋
[考博] 如果工作了想读博,可以边工作边读全日制嘛? 30+3 铁达火车 2026-05-18 5/250 2026-05-20 09:33 by tfang
[考博] 博士申请 +5 星…… 2026-05-18 6/300 2026-05-18 23:49 by 糊糊涂涂好
[硕博家园] 我在等一个没有答案的答案 +3 Love_MH 2026-05-17 3/150 2026-05-18 02:22 by 竹林孤影
信息提示
请填处理意见