求大神帮我看看我的程序哪里出问题了?这是一个激光高斯面热源程序,我的意图是:激光脉宽0.008s,频率是10Hz,就是1秒激光打10次,每次持续0.008s。但是模拟的结果却是不能初始化,初始化时就卡主了,一直停在那。求大神救我!这是程序:DEFINE_PROFILE(heat_flux,t,i){real xx[ND_ND];real y,x,r,a,time_step;int n;face_t f;begin_f_loop(f,t){F_CENTROID(xx,f,t);y=xx[1];x=xx[0];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[ND_ND]; real y,x,r,a; int n; face_t f; begin_f_loop(f,t) { F_CENTROID(xx,f,t); y=xx[1]; x=xx[0]; 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)} |
|
|
|
|
共 5 个关于本帖的回复 最后回复于 2013-7-17 18:30