【让网格动起来】在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)} 如果只是没有发热的话,是不是因为坐标系的原因,网格点不在你选的范围内。 我把问题想得太麻烦了,用这个就好多了!热源= 周期控制函数1*周期控制函数2*热源强度。谢谢啦!问题解决了! 谢谢专家咯 路过学习一下 可以分享一下,解决问题的方法和结果,供大家学习
页:
[1]