27
* 大学 システム 2013.07.18 * 学演 I2013 3 学演 I 2013.07.18 1 / 27

可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

  • Upload
    others

  • View
    0

  • Download
    0

Embed Size (px)

Citation preview

Page 1: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

可視化(後編)∗

陰山 聡

神戸大学 システム情報学研究科 計算科学専攻

2013.07.18

∗計算科学演習 I(2013年前期) 3号館 演習室計算科学演習 I 可視化(後編) 2013.07.18 1 / 27

Page 2: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

準備

アニメーション

2次元可視化

計算科学演習 I 可視化(後編) 2013.07.18 2 / 27

Page 3: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

準備

準備

計算科学演習 I 可視化(後編) 2013.07.18 3 / 27

Page 4: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

準備

準備

• 前回と同様に Xmingと Tera termの設定をすること

計算科学演習 I 可視化(後編) 2013.07.18 4 / 27

Page 5: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

アニメーション

アニメーション

計算科学演習 I 可視化(後編) 2013.07.18 5 / 27

Page 6: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

アニメーション

アニメーションデータ

アニメーションによって収束の様子を確認しよう。そのためのデータ(連番つきファイル群)を書き出すためのプログラム

/tmp/130718/heat3 print x prof for animation.f90

をコピーせよ。

このプログラムをコンパイル+実行せよ。

ジョブスクリプト heat3.sh

うまくいけば dataディレクトリに連番ファイルが出力されるはず。確認せよ。

計算科学演習 I 可視化(後編) 2013.07.18 6 / 27

Page 7: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

アニメーション

gnuplotによるアニメーション

• アニメーション=静止画の連続。• gnuplotのスクリプトを使えばアニメーションも簡単にできる。• pause t とすると t秒待ってから表示。• pause t 小数の tがサポートされるかどうかはプラットフォーム依存。

計算科学演習 I 可視化(後編) 2013.07.18 7 / 27

Page 8: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

アニメーション

アニメーション用スクリプトサンプル#

# gnuplot script generated by heat3_animation_x_prof_gp_generator.f90

#

set xlabel "x" # x-axis

set ylabel "temperature" # y-axis

set xrange [-0.5:0.5] # x-coordinate

set yrange [0.0:0.5] # temperature min & max

plot "../data/temp.j=middle.0000" w lp

pause 5

plot "../data/temp.j=middle.0001" w lp

pause 1

plot "../data/temp.j=middle.0002" w lp

pause 1

.

.

計算科学演習 I 可視化(後編) 2013.07.18 8 / 27

Page 9: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

アニメーション

【演習】1次元グラフ アニメーション

•/tmp/130718/heat3 print x prof for animation plotscript generator.f90をコピーせよ

• 変数 NGRID と counter end をチェックせよ。• gfortran heat3 print x prof for animation plotscript generator.f90

• ./a.out > anyname.gp

• ファイル anyname.gp の中身を確認する• gnuplot anyname.gp で実行

計算科学演習 I 可視化(後編) 2013.07.18 9 / 27

Page 10: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

2次元可視化

計算科学演習 I 可視化(後編) 2013.07.18 10 / 27

Page 11: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

2次元可視化

これまでは 1次元データの可視化であった。

これから gnuplotを利用して 2次元データの可視化を行う。

計算科学演習 I 可視化(後編) 2013.07.18 11 / 27

Page 12: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

2Dデータフォーマット

x00 y00 関数値x01 y00 関数値x02 y00 関数値・・・x09 y00 関数値(空行)x00 y01 関数値x01 y01 関数値・・x09 y01 関数値(空行)・・x09 y09 関数値

計算科学演習 I 可視化(後編) 2013.07.18 12 / 27

Page 13: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

diff heat3 print x prof for animation.f90heat4 print final 2d prof.f90

! heat4_print_final_2d_prof.f90

! + subroutine print__profile_2d

! c module constants --> module common

! + type ranks_t :: p

! + type span_t :: jj

! - myrank, nprocs, left, right (combined into "p")

! - jstart, jend (combined into "jj")

! + function adjust_jstart_and_jend

! + function set_prof_2d

計算科学演習 I 可視化(後編) 2013.07.18 13 / 27

Page 14: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

2Dデータ出力ルーチン(前半)

正方形上(x,y平面上)に分布する温度をすべて書き出す。

subrout ine p r i n t p r o f i l e 2 d (p , j j , f )type ( r a n k s t ) , i n t en t ( i n ) : : ptype ( s p an t ) , i n t en t ( i n ) : : j jr e a l (DP) , dimension ( 0 :NGRID+1, &

j j%s t t −1: j j%end+1) , i n t en t ( i n ) : : fr e a l (DP) , dimension ( 0 :NGRID+1 ,0:NGRID+1) &

: : f g l o b a l ! 2d p r o f to be savedi n t ege r : : c oun t e r = 0 ! has

save a t t r i b .type ( s p an t ) : : j j 2 ! used

f o r f g l o b a lcharacte r ( l en=4) : : s e r i a l n um ! put

on f i l e namecharacte r ( l en=∗) , parameter : : base = ” . . / data /temp . 2 d . ”i n t ege r : : i , j

計算科学演習 I 可視化(後編) 2013.07.18 14 / 27

Page 15: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

2Dデータ出力ルーチン(後半)

j j 2 = a d j u s t j s t a r t a n d j e n d (p , j j )wr i te ( s e r i a l n um , ’ ( i 4 . 4 ) ’ ) coun t e rf g l o b a l ( : , : ) = s e t p r o f 2 d ( j j , j j 2 , f )i f ( p%myrank==0 ) then

open (10 , f i l e=base // s e r i a l n um )do j = 0 , NGRID+1

do i = 0 , NGRID+1wr i te (10 ,∗ ) i , j , f g l o b a l ( i , j )

end dowr i te (10 ,∗ ) ’ ’ ! gnup l o t r e q u i r e s a b l ank l i n e he r e .

end doc l o se (10)

end i fcoun t e r = coun t e r + 1

end subrout ine p r i n t p r o f i l e 2 d

計算科学演習 I 可視化(後編) 2013.07.18 15 / 27

Page 16: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

出力データの確認../data ディレクトリ中の連番つきファイル temp.2d.????の中身は以下のようになっているはず。確認せよ。

55 35 0.1165598588705999

56 35 9.9624877672293416E-002

57 35 8.1734108631726782E-002

58 35 6.2857224006520482E-002

59 35 4.2963409431420671E-002

60 35 2.2021479795155254E-002

61 35 0.000000000000000

0 36 0.000000000000000

1 36 2.1867122785152873E-002

2 36 4.2655284590767971E-002

3 36 6.2396502500601705E-002

4 36 8.1122529495226178E-002

・・・

計算科学演習 I 可視化(後編) 2013.07.18 16 / 27

Page 17: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

gnuplot スクリプトを作る/tmp/130718/heat4_plot_contour_lines

#

# A sample gnuplot script: heat4_plot_contour_lines.gp

#

# [ line contours ]

#

# set size square # same side lengths for x and y

set size 0.65, 1 # same side lengths for x and y

set xlabel "i" # x-axis

set ylabel "j" # y-axis

set xrange[0:50] # i-grid min & max

set yrange[0:50] # j-grid min & max

set nosurface # do not show surface plot

unset ztics # do not show z-tics

set contour base # enables contour lines

set cntrparam levels 10 # draw 10 contours

set view 0,0 # view from the due north

set title "Temperature"

splot "../data/temp.2d.0000" using 1:2:3 w l # with lines

pause -1計算科学演習 I 可視化(後編) 2013.07.18 17 / 27

Page 18: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

【演習】2次元等高線の表示

• data/temp.2d.0000のファイルに記された温度の分布を gnuplotの等高線で可視化してみよう。

• ファイル名:heat4 plot contour lines.gp

• 実行方法: gnuplot heat4 plot contour lines.gp

• ファイル名やパラメータ等を自由に変更してその効果を試せ。

計算科学演習 I 可視化(後編) 2013.07.18 18 / 27

Page 19: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

結果の例

計算科学演習 I 可視化(後編) 2013.07.18 19 / 27

Page 20: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

色分布による可視化(静止画)

• 等高線を描く代わりに正方形領域内部各点の温度を色で表現することも可能である。

• 実際に描いてみよう。• gnuplotのサンプルスクリプトは次のとおり。

計算科学演習 I 可視化(後編) 2013.07.18 20 / 27

Page 21: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

heat4 plot contour colors.gp

#

# A sample gnuplot script: heat4_plot_contour_colors.gp

#

# [ color contours ]

#

# set size square # same side lengths for x and y

set size 0.65, 1 # same side lengths for x and y

set xlabel "i" # x-axis

set ylabel "j" # y-axis

set xrange[0:50] # i-grid min & max

set yrange[0:50] # j-grid min & max

set palette defined (0 "blue", 0.15 "red", 0.3 "yellow")

set nosurface # do not show surface plot

unset ztics # do not show z-tics

set pm3d at b # draw with colored contour

set view 0,0 # view from the due north

set title "Temperature "

splot "../data/temp.2d.0000" using 1:2:3

pause -1計算科学演習 I 可視化(後編) 2013.07.18 21 / 27

Page 22: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

結果の例

計算科学演習 I 可視化(後編) 2013.07.18 22 / 27

Page 23: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

gnuplotによる鳥瞰図(静止画)

• 2次元温度分布 T(x,y)を高さ (z)で表すことも可能である。• この時の描画は 3次元的に行う必要がある。• 空をとぶ鳥から見下ろしたような図は一般に鳥瞰図(bird’s eyeview)とも呼ばれる。

計算科学演習 I 可視化(後編) 2013.07.18 23 / 27

Page 24: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

gnuplot スクリプトファイル名:plot4_plot_birdseyeview.gp

#

# a sample gnuplot script: plot4_plot_birdseyeview.gp

#

# [ Bird"s Eye View ]

#

# set size square # same side lengths for x and y

set size 0.65, 1

set xlabel "i" # x-axis

set ylabel "j" # y-axis

set xrange[0:50] # i-grid min & max

set yrange[0:50] # j-grid min & max

set contour base # enables contour lines

set cntrparam levels 10 # draw 10 contours

# set palette defined (0 "blue", 0.15 "red", 0.3 "yellow")

# set pm3d # draw with colored contour

set title "Temperature "

splot "../data/temp.2d.0000" using 1:2:3 w l

pause -1計算科学演習 I 可視化(後編) 2013.07.18 24 / 27

Page 25: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

結果の例

計算科学演習 I 可視化(後編) 2013.07.18 25 / 27

Page 26: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

gnuplotによる鳥瞰図(回転のアニメーション)

gnuplotでは viewというパラメータで視線の方向(「鳥」がどの方向から見下ろしているか)を指定することが出来る。

この viewパラメータを変更したアニメーションを作ってみよう。

計算科学演習 I 可視化(後編) 2013.07.18 26 / 27

Page 27: 可視化(後編) - Kobe University...可視化(後編) 陰山聡 神戸大学システム情報学研究科計算科学専攻 2013.07.18 I計算科学演習(2013 年前期)3

2次元可視化

gnuplotスクリプト生成プログラム

/tmp/130718/heat4 plot rotating birdseyeview generator.f90

計算科学演習 I 可視化(後編) 2013.07.18 27 / 27