gamma surface with gnuplot
tags: research, gnuplot 材料の機械的性質を議論する場合,generalized stacking fault もしくは gamma surface を考える場合が多い. その場合,ある面内で上下の原子をシフトした場合のエネルギーがどう変化するかを調べるわけだが,その可視化として二次元カラーで表示することが多いようだ. これは,gnuplotで以下のようにして可視化できる.
Data format
x座標,y座標,データの3列のデータを以下のように並べる. :
0.000 0.000 -9.96910530855912E+001
0.000 0.033 -9.89868134250834E+001
0.000 0.067 -9.74010559556275E+001
...
0.000 0.967 -9.88510003534038E+001
0.000 1.000 -9.96910530855912E+001
0.200 0.000 -9.32691179812626E+001
0.200 0.033 -9.14654801350688E+001
のように xデータの値が変わるところで空行が必要. これが結構厄介. ココ などでawk空行を挿入するスクリプトなどが公開されているが, そもそもxデータが毎行変化するようなデータの場合は毎行に空行を入れる必要がある(これ自体は簡単だが,そもそもそれが必要な意味が...)
pm3d
reset
unset key
set pm3d map
set pm3d interpolate 10,10
set xrange [0:1]
set yrange [0:1]
set cbrange [0:10]
set format x ""
set format y ""
set palette rgbformulae 33,13,10
splot fname us 1:2:($3-(e0)) with pm3d
こうすると,以下のようなカラーマップで出力できる.
{.align-right width=“500px”}
ここで, :
set pm3d map
とし, :
set pm3d interpolate 10,10
のようにすることで,少ないデータ点の間を補間してなめらかなカラーマップとできる. :
set palette rgbformulae 33,13,10
のところは, :
set palette defined (0 "blue", 5 "white", 10 "red")
のような指定の仕方もあるらしい.この場合以下のようになる
{.align-right width=“500px”}
等高線も付ける
等高線も付ける場合は以下のようにする. 以下の例では,全ての等高線を黒線としている.このようにline styleを指定しないと各等高線は別々の色となる. :
reset
unset key
set pm3d map
set pm3d interpolate 10,10
set contour
set cntrparam cubicspline
set cntrparam levels 10
set style line 1 lw 1.0 lc rgb "#000000"
set style line 2 lw 1.0 lc rgb "#000000"
set style line 3 lw 1.0 lc rgb "#000000"
set style line 4 lw 1.0 lc rgb "#000000"
set style line 5 lw 1.0 lc rgb "#000000"
set style line 6 lw 1.0 lc rgb "#000000"
set style line 7 lw 1.0 lc rgb "#000000"
set style line 8 lw 1.0 lc rgb "#000000"
set style line 9 lw 1.0 lc rgb "#000000"
set style line 10 lw 1.0 lc rgb "#000000"
set style line 11 lw 1.0 lc rgb "#000000"
set style line 12 lw 1.0 lc rgb "#000000"
set style line 13 lw 1.0 lc rgb "#000000"
set style line 14 lw 1.0 lc rgb "#000000"
set style increment user
set xrange [0:1]
set yrange [0:1]
set format x ""
set format y ""
set cblabel "Stacking fault energy (mJ/m^2)"
set palette rgbformulae 33,13,10
splot fname us 1:2:($3-(e0))/area*gpa with pm3d, \
fname us 1:2:($3-(e0))/area*gpa w l lt -1 lw 1.0 nosurface
結果は以下のような感じ.
{.align-right width=“500px”}
set cblabel "..."
でカラー・マップのラベルを指定している.