0

グリッド上のすべての点で x と y の流速を与える 2D CFD コードがあります。現在、gnuplot でベクトル フィールドを使用してデータを視覚化しています。私の目標は、噴火からのプルームがどれだけ広がるかを確認することです。そのため、ベクトルが特定の大きさを下回った場合にフィールドにベクトルがまったく現れないようにできれば、はるかにクリーンになります。これについてどうすればよいか考えている人はいますか?現在の gnuplot スクリプトは以下のとおりです。必要に応じて入力ファイルを変更することもできます。

reset
set nokey
set term png
set xrange [0:5.1]
set yrange [0:10.1]
do for [i=0:10] {
    set title 'Eruption simulation: Timestep '.i
    set output 'path/FlowVel'.sprintf('%04.0f',i).'.png'
    plot 'path/Flow'.sprintf('%04.0f',i).'.dat' using 1:2:3:4 with vec
}
4

1 に答える 1

0

gnuplotにはない一種のフィルタリングが必要だと思いますが、次のトリックで実現できます(gnuplotの「例の使用のヘルプ」から取得)。

 One trick is to use the ternary `?:` operator to filter data:

       plot 'file' using 1:($3>10 ? $2 : 1/0)

 which plots the datum in column two against that in column one provided
 the datum in column three exceeds ten.  `1/0` is undefined; `gnuplot`
 quietly ignores undefined points, so unsuitable points are suppressed.
 Or you can use the pre-defined variable NaN to achieve the same result.

だから私はあなたがあなたの場合このようなものが欲しいと思います

plot "data.dat" u 1:2:($3**2+$4**2>mag_sq?$3:NaN):($3**2+$4**2>mag_sq?$4:NaN) w vector

ここで、mag_sqは目的の大きさの2乗です。

于 2013-03-21T06:31:48.980 に答える