24小时热门版块排行榜    

查看: 1334  |  回复: 11

奋斗的珊瑚礁

新虫 (初入文坛)

[求助] UDF加载到Fluent中出现错误,希望各位虫友们帮忙分析一下 已有3人参与

这是我编写的一个二维边界,y方向的速度是时间的余弦函数。
#include "udf.h"
DEFINE_PROFILE(wallz_y_velocity, thread, index)
{
real x[ND_ND];
real y;
real t=RP_Get_Real("flow-time";
cell_t c;
Thread*c_thread;
begin_c_loop(c,c_thread)
{
y=x[1];
C_PROFILE(c,thread,index)=0.77*cos(15.708*t);
}
end_c_loop(c,c_thread)
}

加载到Fluent中出现错误,大家帮我分析一下;谢谢了!
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: ()
回复此楼

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

合欢魅影

木虫 (正式写手)

引用回帖:
6楼: Originally posted by 奋斗的珊瑚礁 at 2014-11-26 14:59:57
我的边界条件是条线结构,不是面结构,边界相当于一个可移动的线·····...

#include "udf.h"
DEFINE_PROFILE(inlet_pressure, thread, position)
{
real t,p;
face_t f;
begin_f_loop(f, thread)
{
t=RP_Get_Real("flow-time";
if (t>0 && t<=0.001)
{
p=1000000000*t+100;
}
if (t>0.001&&t<=0.003)
{
p=1000000+100;
}
if(t>=0.003&&t<=0.004)
{
p=1000000000*(0.004-t)+100;
}
else if(t>0.004)
{
p=100;
}
{
F_PROFILE(f,thread,position)=p;
}
end_f_loop(f,thread)
}
}


这是我之前做二维模拟时用到的压力入口边界条件的UDF。亲测可用。
7楼2014-11-26 15:16:56
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

合欢魅影

木虫 (正式写手)

【答案】应助回帖

感谢参与,应助指数 +1
你这好像还没有提取坐标呀,y=x[1],x[1]有值吗?
2楼2014-11-26 10:58:29
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

合欢魅影

木虫 (正式写手)

【答案】应助回帖

#include "udf.h"
DEFINE_PROFILE(wallz_y_velocity, thread, index)
{
real x[ND_ND];
real y;
real t=RP_Get_Real("flow-time";
cell_t c;
Thread*c_thread;
begin_c_loop(c,c_thread)
{
C_CENTROID(x,c,c_thread)
y=x[1];
C_PROFILE(c,thread,index)=0.77*cos(15.708*t);
}
end_c_loop(c,c_thread)
}
3楼2014-11-26 11:03:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

合欢魅影

木虫 (正式写手)

【答案】应助回帖

上贴中少加入的一句后少了“;”。你也可以试试下面这个:
#include "udf.h"
DEFINE_PROFILE(wallz_y_velocity, thread, index)
{
real x[ND_ND];
real y;
real t=RP_Get_Real("flow-time" ;
face_t f;
begin_f_loop(f,thread)
{
F_CENTROID(x,f,thread)
y=x[1];
F_PROFILE(f,thread,index)=0.77*cos(15.708*t);
}
end_f_loop(f,thread)
}
4楼2014-11-26 11:12:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

奋斗的珊瑚礁

新虫 (初入文坛)

引用回帖:
3楼: Originally posted by 合欢魅影 at 2014-11-26 11:03:10
#include "udf.h"
DEFINE_PROFILE(wallz_y_velocity, thread, index)
{
real x;
real y;
real t=RP_Get_Real("flow-time";
cell_t c;
Thread*c_thread;
begin_c_loop(c,c_thread)
{
...

C_CENTROID(x,c,c_thread)
Fluent中,显示此局有语法错误·······
我之前也这么试过
5楼2014-11-26 14:58:13
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

奋斗的珊瑚礁

新虫 (初入文坛)

引用回帖:
4楼: Originally posted by 合欢魅影 at 2014-11-26 11:12:14
上贴中少加入的一句后少了“;”。你也可以试试下面这个:
#include "udf.h"
DEFINE_PROFILE(wallz_y_velocity, thread, index)
{
real x;
real y;
real t=RP_Get_Real("flow-time" ;
...

我的边界条件是条线结构,不是面结构,边界相当于一个可移动的线·····
6楼2014-11-26 14:59:57
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

合欢魅影

木虫 (正式写手)

刚才发的也有问题,发成我没修改的版本了。不过思路肯定一点问题没有。
8楼2014-11-26 15:22:18
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yongbinah

银虫 (小有名气)

【答案】应助回帖

感谢参与,应助指数 +1
Thread*c_thread;
这句不对吧!应该没用,非要加的话中间加个空格啊
金币的价值在于创造有质量的帖子
9楼2014-11-26 15:53:46
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

奋斗的珊瑚礁

新虫 (初入文坛)

引用回帖:
7楼: Originally posted by 合欢魅影 at 2014-11-26 15:16:56
#include "udf.h"
DEFINE_PROFILE(inlet_pressure, thread, position)
{
real t,p;
face_t f;
begin_f_loop(f, thread)
{
t=RP_Get_Real("flow-time";
if (t>0 && t<= ...

试了一下,是可以的,不过不是很明白UDF的编译格式,能不能推荐几本比较基础的书啊······
10楼2014-11-27 11:02:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 奋斗的珊瑚礁 的主题更新
信息提示
请填处理意见