Msuki 发表于 2013-6-25 15:41:45

【让网格动起来】在Fluent中,用udf 热源进行初始化,为什么卡住了?能否帮我看下程序哪里有错误?

求大神帮我看看我的程序哪里出问题了?这是一个激光高斯面热源程序,我的意图是:激光脉宽0.008s,频率是10Hz,就是1秒激光打10次,每次持续0.008s。但是模拟的结果却是不能初始化,初始化时就卡主了,一直停在那。求大神救我!这是程序:DEFINE_PROFILE(heat_flux,t,i){real xx;real y,x,r,a,time_step;int n;face_t f;begin_f_loop(f,t){F_CENTROID(xx,f,t);y=xx;x=xx;r=0.001;a=0;n=0;if(a<=1){if(a>=0.108*n&&a<=0.108*n+0.08){if(sqrt(x*x+y*y)<=0.001){F_PROFILE(f,t,i)=1160*0.7/(3.1415926*r*r)*exp(-(x*x+y*y)/(r*r));}else{F_PROFILE(f,t,i)=0;}RP_Get_Real("flow-time" ;a=RP_Get_Real("flow-time" ;n=(int)a/0.108;}else{F_PROFILE(f,t,i)=0;}}else{Error("error reading file" ;}}end_f_loop(f,t)}这些天想了想,好像是begin_f_loop(f,t)和循环程序冲突了,所以才会卡主,begin_f_loop(f,t)扫描出一个面网格中心P,然后把符合(sqrt(x*x+y*y)<=0.001)的P丢进循环语句执行,执行过一次之后,a和n的值就已经超出了循环条件所规定的范围,不能再进行循环了。我就改了一下,但下面这个程序却没有发热,不知道哪有问题了?求大神救我#include "udf.h"DEFINE_PROFILE(heat_flux,t,i){real xx;real y,x,r,a;int n;face_t f;begin_f_loop(f,t){    F_CENTROID(xx,f,t);    y=xx;    x=xx;    r=0.001;   if(sqrt(x*x+y*y)<=0.001)      for(a=n=0;a>=0.1*n&&a<=0.1*n+0.008&&a<=1;n=(int)a/0.1)      {      F_PROFILE(f,t,i)=1160*0.7/(3.1415926*r*r)*exp(-(x*x+y*y)/(r*r));      a=RP_Get_Real("flow-time");      }}end_f_loop(f,t)}

谢清乐 发表于 2013-6-25 17:27:17

如果只是没有发热的话,是不是因为坐标系的原因,网格点不在你选的范围内。

江威 发表于 2013-6-26 11:26:00

我把问题想得太麻烦了,用这个就好多了!热源= 周期控制函数1*周期控制函数2*热源强度。谢谢啦!问题解决了!

Msuki 发表于 2013-6-27 11:20:11

谢谢专家咯

陈琳 发表于 2013-6-27 15:02:56

路过学习一下

陈文龙 发表于 2013-7-17 18:30:34

可以分享一下,解决问题的方法和结果,供大家学习
页: [1]
查看完整版本: 【让网格动起来】在Fluent中,用udf 热源进行初始化,为什么卡住了?能否帮我看下程序哪里有错误?