24小时热门版块排行榜    

查看: 3917  |  回复: 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的回帖

28通信调剂

新虫 (初入文坛)

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

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

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的回帖

大胃马里奥

捐助贵宾 (初入文坛)

【答案】应助回帖

“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的回帖
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 285求调剂 +6 柴郡猫_ 2026-03-12 6/300 2026-03-13 20:46 by hmn_wj
[考研] 0703化学求调剂 +7 绿豆芹菜汤 2026-03-12 7/350 2026-03-13 17:25 by njzyff
[考研] 302求调剂 +6 负心者当诛 2026-03-11 6/300 2026-03-13 16:11 by JourneyLucky
[考研] 283求调剂 +4 小楼。 2026-03-12 7/350 2026-03-13 15:30 by JourneyLucky
[考研] 308求调剂 +3 是Lupa啊 2026-03-12 3/150 2026-03-13 14:30 by 求调剂zz
[考研] 304求调剂(085602一志愿985) +12 化工人999 2026-03-09 12/600 2026-03-13 12:02 by JourneyLucky
[考研] 277求调剂 +4 anchor17 2026-03-12 4/200 2026-03-13 11:15 by 白夜悠长
[考博] 26读博 +4 Rui135246 2026-03-12 10/500 2026-03-13 07:15 by gaobiao
[考研] 081200-11408-276学硕求调剂 +3 崔wj 2026-03-12 4/200 2026-03-12 19:33 by 求调剂zz
[考研] 2026考研求调剂-材料类-本科211一志愿985-初试301分 +10 虫友233 2026-03-07 11/550 2026-03-12 14:52 by ruiyingmiao
[考研] 0856材料与化工309分求调剂 +5 ZyZy…… 2026-03-10 5/250 2026-03-12 11:31 by 2020015
[考研] 一志愿江南大学085701环境工程专硕总分287求调剂 +5 18266118446 2026-03-09 5/250 2026-03-11 16:51 by 2020015
[考研] 083000环境科学与工程调剂 +8 mingmingry 2026-03-09 9/450 2026-03-11 10:23 by 沙漠之狐994
[考研] 材料专硕288分求调剂 一志愿211 +3 在家想你 2026-03-11 3/150 2026-03-11 08:13 by ms629
[考研] 298求调剂 +3 Vv呀! 2026-03-10 3/150 2026-03-10 22:40 by 剑诗杜康
[考研] 327求调剂 +3 Ffff03 2026-03-10 3/150 2026-03-10 22:30 by macy2011
[考研] 0817一志愿苏州大学280复试调剂 +9 kk扛 2026-03-07 9/450 2026-03-10 14:20 by peike
[考研] 295复试调剂 +4 简木ChuFront 2026-03-09 4/200 2026-03-09 21:49 by wangjihu
[考研] 一志愿211 材料与化工 280求调剂 +3 Sanity蒋 2026-03-08 3/150 2026-03-09 06:35 by houyaoxu
[考研] 346分材料求调剂 +5 snow_反季节版 2026-03-07 5/250 2026-03-07 22:40 by Leeding1356
信息提示
请填处理意见