24小时热门版块排行榜    

查看: 3916  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 求调剂 +7 18880831720 2026-03-11 7/350 2026-03-13 16:10 by JourneyLucky
[考研] 314求调剂 +7 无懈可击的巨人 2026-03-12 7/350 2026-03-13 15:40 by JourneyLucky
[考研] 283求调剂 +4 小楼。 2026-03-12 7/350 2026-03-13 15:30 by JourneyLucky
[考研] 085600调剂 +4 漾漾123sun 2026-03-12 4/200 2026-03-13 14:50 by 晃晃不许晃
[考研] 308求调剂 +3 是Lupa啊 2026-03-12 3/150 2026-03-13 14:30 by 求调剂zz
[考研] 26调剂/材料科学与工程/总分295/求收留 +8 2026调剂侠 2026-03-12 8/400 2026-03-13 13:21 by JourneyLucky
[考研] 304求调剂(085602一志愿985) +12 化工人999 2026-03-09 12/600 2026-03-13 12:02 by JourneyLucky
[考研] 化学调剂0703 +3 啊我我的 2026-03-11 3/150 2026-03-13 11:00 by houyaoxu
[考研] 070303一志愿西北大学学硕310找调剂 +3 d如愿上岸 2026-03-13 3/150 2026-03-13 10:43 by houyaoxu
[考研] 材料与化工一志愿南昌大学327求调剂推荐 +4 Ncdx123456 2026-03-13 4/200 2026-03-13 10:32 by houyaoxu
[考研] b区环境工程求调剂 +3 Maps1 2026-03-10 5/250 2026-03-13 10:28 by Yuyi.
[考研] 材料工程085601调剂求老师收留 +11 强木木木 2026-03-07 13/650 2026-03-13 08:53 by Linda Hu
[考研] 333求调剂 +3 152697 2026-03-12 4/200 2026-03-13 07:08 by Iveryant
[考研] 308求调剂 +4 是Lupa啊 2026-03-11 4/200 2026-03-11 20:01 by 清风月
[考研] 材料工程专硕调剂自荐信,初试323 +6 李白26 2026-03-07 6/300 2026-03-10 16:16 by 无际的草原
[基金申请] PDF在线压缩软件 10+3 haxia 2026-03-08 4/200 2026-03-10 13:44 by lfy8008
[考研] 070300化学求调剂 +5 扑风铃的猫 2026-03-08 10/500 2026-03-09 13:58 by macy2011
[考研] 0856材料与化工290求调剂 +7 Nebulala 2026-03-08 8/400 2026-03-09 05:25 by houyaoxu
[考博] 26年博士申请 +4 科研狗111 2026-03-07 4/200 2026-03-08 21:56 by 0611517sll
[考研] 346分材料求调剂 +5 snow_反季节版 2026-03-07 5/250 2026-03-07 22:40 by Leeding1356
信息提示
请填处理意见