查看: 820|回复: 0

[Fluent应用] matlab读取fluent数据

[复制链接]
发表于 2015-10-20 08:39 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有帐号?我要加入

x
  1. matlab画图能力很强,而且其可编程性给处理问题带来很大方便,我尝试将fluent导出的ASCII数据导入matlab处理,原代码如下:
  2. %打开文件并读入数据
  3. fid=fopen('post','r');
  4. name2=input('input the file name\n','s')
  5. fgetl(fid)
  6. data1=fscanf(fid,'%f %f %f %f %f',[5 inf]);
  7. fclose(fid);
  8. fid=fopen(name2,'r');
  9. fgetl(fid);
  10. data2=fscanf(fid,'%f %f %f %f %f',[5 inf]);
  11. fclose(fid);
  12. %对数据按坐标升序排列
  13. xudata1=sortrows(data1',2);
  14. xudata2=sortrows(data2',2);
  15. xudata1=xudata1';xudata2=xudata2';
  16. %找出sym和avg数据
  17. maxr=max(xudata1(3,:));stp=0.0002;%y坐标最大值,求avg时候的x步长
  18. avg1=zeros(2,round(1+0.02/stp));avg1(1,:)=0:stp:0.02;avg2=avg1;%对avg坐标赋初值
  19. j=1;j2=1;jj=1;%j记录avg的当前index;j2记录avg(j)中第一个加入的xudata的index;jj记录sym的当前index
  20. for i=1:length(xudata1)
  21.      if xudata1(3,i)>maxr-0.00004
  22.      sym1(1,jj)=xudata1(2,i);sym1(2,jj)=xudata1(5,i);
  23.      sym2(1,jj)=xudata1(2,i);sym2(2,jj)=xudata2(5,i);
  24.      jj=jj+1;
  25.      end
  26.       mii=fix((xudata1(2,i)+stp/2)/stp)+1;
  27.      avg1(2,mii)=avg1(2,mii)+xudata1(5,i);
  28.      avg2(2,mii)=avg2(2,mii)+xudata2(5,i);
  29.      if mii>j|i==length(xudata1)
  30.      avg1(2,j)=avg1(2,j)/(i-j2);
  31.      avg2(2,j)=avg2(2,j)/(i-j2);
  32.      i-j2
  33.      j=j+1;j2=i;
  34.      end
  35. end
  36. %绘图
  37. figure(1)
  38. plot(sym1(1,:),sym1(2,:),sym2(1,:),sym2(2,:))
  39. figure(2)
  40. plot(sym1(1,:),sym1(2,:),sym2(1,:),sym2(2,:),avg1(1,:),avg1(2,:),avg2(1,:),avg2(2,:));
  41. legend('sym1','sym2','avg1','avg2');
  42. hold on
  43. plot(sym1(1,:),sym2(2,:)./sym1(2,:),avg1(1,:),avg2(2,:)./avg1(2,:));
  44. legend('symrate','avgrate');
  45. fid=fopen(['tec' name2],'w');
  46. fprintf(fid,'TITLE = "heat transfer coefficient" \nVARIABLES = "x/d", "yta or rate" \nZONE T="sym", I=%d, F=POINT\n',length(sym2));
  47. fprintf(fid,'.6f .6f',sym2);
  48. fprintf(fid,'ZONE T="avg", I=%d, F=POINT\n',length(avg2));
  49. fprintf(fid,'.6f .6f',avg2);
  50. fclose(fid)
  51. %用tecplot格式输出
  52. fid=fopen('tecpost','w');
  53. fprintf(fid,'TITLE = "heat transfer coefficient" \nVARIABLES = "x/d", "yta or rate" \nZONE T="sym", I=%d, F=POINT\n',length(sym1));
  54. fprintf(fid,'.6f .6f',sym1);
  55. fprintf(fid,'ZONE T="avg", I=%d, F=POINT\n',length(avg1));
  56. fprintf(fid,'.6f .6f',avg1);
  57. fclose(fid)
复制代码


转自:http://blog.sina.com.cn/s/blog_5116499f0100uyn2.html
回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

快速回复 返回顶部 返回列表