加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

gnuplot绘制OpenFOAM计算残差

(2015-11-02 23:03:54)
标签:

openfoam

cfd

it

分类: OpenFOAM学习

基本参照本文的代码,我对代码进行一点解释:

http://www.cfd-online.com/Forums/openfoam-solving/64146-tutorial-how-plot-residuals.html

第一步:计算的过程中一定要使用日志文件: 比如  turbFoam >log

第二步:在计算过程中或者计算结束之后都可以plot残差数据已对计算过程进行监控。绘制残差的代码如下:

 

set logscale y      //将y坐标设为对数坐标
set title "Residuals"       //图形名称为Residuals
set ylabel 'Residual'    //y轴名称为Residual
set xlabel 'Iteration'     //x轴名称为Iteration,即迭代次数
plot "< cat log | grep 'Solving for Ux' | cut -d' ' -f9 | tr -d ','" title 'Ux' with lines,\
"< cat log | grep 'Solving for Uy' | cut -d' ' -f9 | tr -d ','" title 'Uy' with lines,\
"< cat log | grep 'Solving for Uz' | cut -d' ' -f9 | tr -d ','" title 'Uz' with lines,\
"< cat log | grep 'Solving for omega' | cut -d' ' -f9 | tr -d ','" title 'omega' with lines,\
"< cat log | grep 'Solving for k' | cut -d' ' -f9 | tr -d ','" title 'k' with lines,\
"< cat log | grep 'Solving for p' | cut -d' ' -f9 | tr -d ','" title 'p' with lines
pause 1     //暂停
reread       //重新读取并绘图,以保证对计算结果实时监控

============================

需要解释的是每一行中 在文本中提取数据的linux命令

cat就是将读取文本,|为管道,将上一个命令的结果直接输入到下一个命令,grep为搜索带有Solving for Ux的行,然后使用cut命令以空格符为分隔符将这一行分隔,然后取第9个数据,使用tr命令将取得数据末尾的逗号,去掉,这就得到了Ux的初始残差。其他几行的意思都差不多。但是这样的处理方法有一个问题,当使用pimple算法是,需要迭代两次的压力项,这样每个迭代步就出现了两行完全相同的压力数据,使用这种提取方法无法分辨这两种数据,所以也就无法plot压力项的残差了。但是可以使用python绘图语言来解决这个问题

如我的另一篇博文所示:

http://blog.sina.com.cn/s/blog_a0b4201d0102vq8o.html

 


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有