声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 6433|回复: 13

[后处理] 用matlab对fluent导出的结果进行处理而且可以将数据导出的例子(转贴)

[复制链接]
发表于 2007-3-29 23:01 | 显示全部楼层 |阅读模式

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

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

x
matlab画图能力很强,而且其可编程性给处理问题带来很大方便,我尝试将fluent导出的ASCII数据导入matlab处理,原代码如下:

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


来自:http://wlflyy.blog.hexun.com/4722405_d.html

评分

1

查看全部评分

本帖被以下淘专辑推荐:

回复
分享到:

使用道具 举报

发表于 2007-3-30 15:39 | 显示全部楼层
呵呵,很感兴趣,能不能把画的图贴出来啊
发表于 2007-6-14 13:44 | 显示全部楼层

很好

请问可不可以输出数据到文本中呀?
jiangwenxue999@sina.com
发表于 2007-6-14 15:44 | 显示全部楼层
发表于 2008-4-25 10:55 | 显示全部楼层

请教

为什么我用fluent —Export输出数据并以ASCII形式保存,用Matlab打不开呢?
发表于 2008-4-25 15:30 | 显示全部楼层

回复 5楼 的帖子

在matlab中要用Import导入数据才可以的,此外你可以用记事本打开看看里面的格式是不是数组,否则导入是会出错的
发表于 2008-5-6 10:40 | 显示全部楼层
fid=fopen('post','r');
'post'    是什么格式的文件?我的fluent导出的数据文件不能用这句语言
发表于 2008-5-19 17:16 | 显示全部楼层
'post'是文件全名,无后缀名。你把你输出的数据文件全名改写'post'才能用使用这个程序。
再不明白就查matlab的帮助文件看吧
发表于 2008-5-21 13:20 | 显示全部楼层
谢谢,正需要,非常不错的贴子。
发表于 2008-5-23 16:26 | 显示全部楼层
呵呵。:@)
用matlab对fluent导出的结果进行处理,要求我们也要会matlab才行啊。
发表于 2008-9-6 17:34 | 显示全部楼层

回复六楼的大侠

我觉得六楼的兄弟对matlab用得很熟 啊。
发表于 2008-9-29 16:21 | 显示全部楼层

回复 11楼 taojunhust 的帖子

很熟说不上了,以前用过几年,也就懂些皮毛而已。
用这种东西,经验很重要,当然对于数理逻辑上的概念也很重要。
发表于 2012-2-27 12:52 | 显示全部楼层
请问fluent能不能导出声学模块计算的结果呢,在EXPORT我找不到这方面的结果。另外,能讲一下贴子中,针对哪种输出呢?
发表于 2012-2-27 17:38 | 显示全部楼层
yuanweizhao 发表于 2012-2-27 12:52
请问fluent能不能导出声学模块计算的结果呢,在EXPORT我找不到这方面的结果。另外,能讲一下贴子中,针对哪 ...

只要是数组就可以吧,符合一定标准格式

以前玩过一阵这个,不过是从CFX导出的数据,

现在竟忘了,

这个帖子不错,
多个软件结合应用的好例子。
您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-11-28 23:33 , Processed in 0.067964 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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