借助matlab批量处理OpenFOAM-CFD数据

32 篇文章 30 订阅
3 篇文章 1 订阅

CFD一个计算的周期,前处理、计算、后处理都要花不少的时间。其中,计算主要由电脑负责,人在一边喝喝茶就可以了(bushi)。人需要花时间的地方,莫过于前处理和后处理了。在后处理的过程中,我们要提取数据,并进行一定的处理(取平均、均方根),然后作图,和其他结果比较等。这些操作相对机械简单,但如果数据一多,处理起来就很繁琐了。这时候,运用程序或脚本来帮我们处理就显得非常重要,就能省下很多时间喝茶了!

matlab文件已开源在gitee上,欢迎下载使用:

https://gitee.com/chen-jingle219/matlab-data-processing-script/settings#index

处理过程讲解

给定一组OpenFOAM算例文件(结构基本相同的),每一个文件夹内都有必备的文件。

 那么,我们需要做的事情就是读取每一个算例里面的升阻力系数,然后截取需要的部分作处理。

首先使用dir指令读取所有文件夹:

subdir=dir(fullfile(pwd,'viv*'));

然后,对于每一个子文件夹,都要设置coefficient.dat的地址:

timePath=fullfile(pwd,subdir(i).name,'postProcessing','forceCoeffs');

需要注意的是,OpenFOAM里可能会输出多个时间点的forceCoeff,也就是说forceCoeff里面会有好几个文件夹存放coefficient.dat。那么,默认找时间最靠后的那一个:

timewanted=num2str(max(str2double(timewanted),str2double(timedir(j).name)));

最后用importdata函数来读取数据:

forceCoeff_cell{1,i}=importdata(str);

这样做有一个好处就是,正常导入升阻力系数时需要勾选需要的数据列,且取消带有字符的部分:

 就需要鼠标一点一点消掉,十分麻烦。importdata会把数据分成字符和数字两部分,读取起来也十分方便:

Cd=forceCoeff_cell{1,i}.data(:,2);

其他情况也类似。最后,把平均阻力系数存放在预先定义好的results矩阵里:

results(i,2)=mean(Cd);

最后输出的结果是这样的:

至于每列代表什么,都可自己定义。

  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Kino Chan

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值