24小时热门版块排行榜    

查看: 4168  |  回复: 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 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[基金申请] filecode=后面第一个是大写字母 +6 wangze12014 2026-08-14 7/350 2026-08-15 20:12 by gltch
[基金申请] 有时候,自然基金真的不能太认真 (我的申报经验) +8 majunge000 2026-08-11 10/500 2026-08-15 18:55 by Equinoxhua
[基金申请] filecode +8 cratir 2026-08-14 12/600 2026-08-15 18:08 by zyfgau
[基金申请] 关于Filecode分析方法 +10 majunge000 2026-08-10 13/650 2026-08-15 12:26 by hanpeng972
[基金申请] 咱们一起用铁证分析2026国家社科基金中标与否 +7 启萌科技 2026-08-12 22/1100 2026-08-14 23:45 by Noways
[基金申请] 奇怪,两个人的filecode固定段从头到尾一模一样 +8 布布和一二 2026-08-10 11/550 2026-08-14 14:58 by Equinoxhua
[基金申请] 应该是93bebmhtak前后十一个字符比较关键 +23 Lanmanbaby 2026-08-09 37/1850 2026-08-14 13:40 by Equinoxhua
[硕博家园] 读博的好处 +4 lnee 2026-08-11 4/200 2026-08-14 10:20 by ahsoarli
[基金申请] filecode +15 documentary 2026-08-10 17/850 2026-08-14 10:08 by kissu88
[基金申请] FileCode能看出啥? +10 要乐观耀哥 2026-08-10 32/1600 2026-08-14 09:37 by 要乐观耀哥
[基金申请] 我的国基提前知道中了,可是同事的操作让我实在接受不了,怎么会有这样的人 +10 家与远方 2026-08-10 15/750 2026-08-14 02:08 by 绵羊哥哥
[文学芳草园] 阿姨 +4 汪汪锅 2026-08-09 4/200 2026-08-13 19:43 by arzu_hma
[基金申请] 不应该看fileCode +7 且听虎啸 2026-08-12 9/450 2026-08-13 14:27 by flydreamws
[基金申请] Filecode 又变了,巨变 +3 WH3796 2026-08-12 4/200 2026-08-13 14:13 by 小木虫6752397
[基金申请] 分享一下我之前已中青C的计划书的filecode +4 布布和一二 2026-08-11 5/250 2026-08-13 12:56 by cratir
[基金申请] 结合人工智能,周易传统文化,filecode打分制来了,3分以上希望很大。 +3 Tide man 2026-08-12 4/200 2026-08-13 08:35 by ZJTJZ
[基金申请] 2019年青年基金涵评意见,大家看看几个A,几个B? +11 Tide man 2026-08-11 11/550 2026-08-13 07:35 by 撸猫猫
[基金申请] 综述论文作为代表作会不会影响评审专家的印象分? +11 yufeiwaner 2026-08-09 13/650 2026-08-12 08:17 by yufeiwaner
[基金申请] 帮忙看看fileCode +7 wwncly 2026-08-10 13/650 2026-08-11 19:36 by 冰心玉壶晴
[基金申请] 面上项目filecode邪修 +5 西山十月 2026-08-09 7/350 2026-08-10 07:32 by 仁砚薪传
信息提示
请填处理意见