gnuplot绘制OpenFOAM计算残差
(2015-11-02 23:03:54)
标签:
openfoamcfdit |
分类: OpenFOAM学习 |
基本参照本文的代码,我对代码进行一点解释:
http://www.cfd-online.com/Forums/openfoam-solving/64146-tutorial-how-plot-residuals.html
第一步:计算的过程中一定要使用日志文件: 比如
第二步:在计算过程中或者计算结束之后都可以plot残差数据已对计算过程进行监控。绘制残差的代码如下:
set logscale
y
set ylabel
'Residual'
set xlabel
'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

加载中…