“常用公式”在线计算,“设计手册”在线查询
求大神帮我看看我的程序哪里出问题了?这是一个激光高斯面热源程序,我的意图是:激光脉宽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)}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 支持支持 反对反对

共 5 个关于本帖的回复 最后回复于 2013-7-17 18:30

沙发
谢清乐 认证专家 发表于 2013-6-25 17:27:17 | 只看该作者
研发埠培训中心
如果只是没有发热的话,是不是因为坐标系的原因,网格点不在你选的范围内。
板凳
江威 新来的 发表于 2013-6-26 11:26:00 | 只看该作者
研发埠人才中心
我把问题想得太麻烦了,用这个就好多了!热源= 周期控制函数1*周期控制函数2*热源强度。谢谢啦!问题解决了!
地板
Msuki 管理员 发表于 2013-6-27 11:20:11 | 只看该作者
谢谢专家咯
5#
陈琳 八品司务 发表于 2013-6-27 15:02:56 | 只看该作者
路过学习一下
6#
陈文龙 十品草民 发表于 2013-7-17 18:30:34 | 只看该作者
可以分享一下,解决问题的方法和结果,供大家学习
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关注我们

360网站安全检测平台