24小时热门版块排行榜    

查看: 2399  |  回复: 8

azhu081127

铜虫 (初入文坛)

[求助] 求解答--UDF中DEFINE_ADJUST报错 已有2人参与

以前使用过简单的DEFINE_PROFILE语句来定义入口边界条件,可能因为语句比较简单,所以没有出现过问题。
但最近在用FLUENT做室内热舒适评价的过程中却遇到诸多问题。为逐步解决这些问题,我决定先从最简单的计算出发,一步步解决。
但是,没想到,下面两个简单的UDF竟然会如此棘手。。。
求好心的朋友们帮忙解答~~感谢万分~~~

一、FLUENT UDF tutorial中关于DEFINE_ADJUST的UDF,求解湍流耗散的体积积分,此UDF与tutorial完全一致。

#include "udf.h"
DEFINE_ADJUST(turb_diss, d)
{
  Thread *t;
  real sum_diss=0.;
  cell_t c;
    thread_loop_c (t,d)
  {
   begin_c_loop (c,t)
       sum_diss += C_D(c,t)*C_VOLUME(c,t);
   end_c_loop (c,t)
  }
   printf("Volume integral of turbulent dissipation: %g\n", sum_diss);
}

(1)若使用Interpret功能,则可以正常运行得出结果。

(2)但若使用Compile功能,则会出现如下错误提示:
# Generating udf_names.c because of makefile turb_diss.obj
udf_names.c
udf_names.c(7) : error C2085: ‘udf_data’ : not in formal parameter list
udf_names.c(7) : error C2143: syntax error : missing ‘;’ before ‘=’
udf_names.c(8) : warning C4138: ‘*/’ found outside of comment
udf_names.c(10) : error C2065: ‘udf_data’ : undeclared identifier

(3)求助:是什么原因造成compile编译出现错误?

二、 对于自己编写一个求解摄氏度的非常简单程序:
#include "udf.h"
DEFINE_ADJUST(temp1, d)
{
  Thread *t;
  real tempa=0.;
  cell_t c;
  thread_loop_c (t,d)
  {
   begin_c_loop (c,t)
       tempa = C_T(c,t) - 273.15;
       C_UDSI(c,t,0)=tempa;
   end_c_loop (c,t)
  }
}

(1)使用Interpret功能时报错:
Chip-exec: temp1: wrong return type: float udf function expected
Chip-exec: temp1: argument 1: incorrect type (36): int expected
Chip-exec: temp1: argument 2: incorrect type (0): pointer expected
Chip-exec: temp1: argument 3: incorrect type (0): int expected
Error:
FLUENT received fatal signal (ACCESS_VIOLATION)
1. Note exact events leading to error.
2. Save case/data under new name.
3. Exit program and restart to continue.
4. Report error to your distributor.
Error Object: ()

(2)若使用Compile功能,则出现与tutorial case相同的错误,即:
udf_names.c(7) : error C2085: ‘udf_data’ : not in formal parameter list
udf_names.c(7) : error C2143: syntax error : missing ‘;’ before ‘=’
udf_names.c(8) : warning C4138: ‘*/’ found outside of comment
udf_names.c(10) : error C2065: ‘udf_data’ : undeclared identifier

(3)求助:
(3.1) 是什么原因造成了interpret出现错误?
(3.2) 同样,又是什么原因造成compile的错误?
(3.3) 关于user defined scalar(UDS): 在一个DEFINE_ADJUST中,能否通过C_UDSI(c,t,0),C_UDSI(c,t,1),C_UDSI(c,t,2)….. C_UDSI(c,t,i)来同时定义多个不同的UDS?还是说,要定义i个不同的DEFINE_ADJUST,来分别定义多个不同的UDS?
回复此楼

» 猜你喜欢

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

小七工作室1

新虫 (著名写手)

【答案】应助回帖

感谢参与,应助指数 +1
这个做的比较多,可以交流下
2楼2016-04-14 14:45:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

azhu081127

铜虫 (初入文坛)

引用回帖:
2楼: Originally posted by 小七工作室1 at 2016-04-14 14:45:10
这个做的比较多,可以交流下

你好,CFD模拟方面,我还是新手,很多问题都不是特别明白。
就像我在帖子中写的那样,我原来以为是特别简单的问题,结果却让我毫无头绪。。。
请问,你有没有遇到过类似的问题,你又是怎么解决的?
3楼2016-04-14 15:06:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

azhu081127

铜虫 (初入文坛)

大家请来帮帮忙啊~~~
4楼2016-04-14 18:54:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

keeep0394

新虫 (正式写手)

多核还是单核计算?这里面有累加,需注意

发自小木虫IOS客户端
5楼2016-04-14 21:55:42
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

azhu081127

铜虫 (初入文坛)

引用回帖:
5楼: Originally posted by keeep0394 at 2016-04-14 21:55:42
多核还是单核计算?这里面有累加,需注意

目前还是单核计算。如果成功运行,我会准备写并行计算的。之前有写过一个简单的并行计算下的UDF,但是里面没有累加计算。
不过,现在棘手的问题是:为什么这么简单的UDF,即使完全按照tutorial写,compile都不能运行。
DEFINE_ADJUST不是既可以interpret也可以compile的么?
真是沮丧啊~~
6楼2016-04-15 09:37:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

azhu081127

铜虫 (初入文坛)

求助,求助~
大家在运行UDF的时候没有遇到类似的问题么~~~
7楼2016-04-15 09:55:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

keeep0394

新虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
引用回帖:
6楼: Originally posted by azhu081127 at 2016-04-15 09:37:04
目前还是单核计算。如果成功运行,我会准备写并行计算的。之前有写过一个简单的并行计算下的UDF,但是里面没有累加计算。
不过,现在棘手的问题是:为什么这么简单的UDF,即使完全按照tutorial写,compile都不能运 ...

很大可能是环境变量没设置对,用的哪个版本的VS

发自小木虫IOS客户端
8楼2016-04-15 10:09:58
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

azhu081127

铜虫 (初入文坛)

引用回帖:
8楼: Originally posted by keeep0394 at 2016-04-15 10:09:58
很大可能是环境变量没设置对,用的哪个版本的VS
...

版本比较老了呵~~用的是VS6.0。
我之前写的DEFINE_PROFILE和DEFINE_CG_MOTION运行都没问题。。。
运行DEFINE_ADJUST会有问题么??
9楼2016-04-15 10:17:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 azhu081127 的主题更新
信息提示
请填处理意见