• 追加された行はこの色です。
  • 削除された行はこの色です。
現在(&lastmod;)作成中です。
既に書いている内容も&color(#ff0000){大幅に変わる};可能性が高いので注意。

-------

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

-------

-------
【目次】
#contents
-------

前回の宿題は、「thermal_diffusion.f90を理解しておくこと」であったので、
その中身がわかっているものと仮定して今回は話を進める。


* 2次元可視化 [#bf59a9bb]
今回は2次元データの可視化を行う。
前回と同様gnuplotを利用する。

gnuplotで2次元データをプロットする場合、そのデータのフォーマットは
 x00 y00 関数値
 x01 y00 関数値
 x02 y00 関数値



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



 x09 y01 関数値
 (空行)



 x09 y09 関数値
である。


* 2次元データ出力ルーチン [#y1cbe462]

thermal_diffusion.f90による2次元データ出力ルーチン
temperature__output_2d_profile
は、正方形上(x,y平面上)に分布する温度をすべて書き出すものである。
中身を見てみよう。

  subroutine temperature__output_2d_profile
    real(DP), dimension(0:MESH_SIZE+1,    &
                        0:MESH_SIZE+1) :: prof
    integer                            :: counter = 0   ! saved
    integer                            :: ierr          ! use for MPI
    integer                            :: jstart_, jend_
    character(len=4)                   :: serial_num    ! put on file name
    character(len=*), parameter        :: base = "../data/temp.2d."
    integer :: i, j
    call set_jstart_and_jend(jstart_,jend_)
    write(serial_num,'(i4.4)') counter
    prof(:,:) = parallel__set_prof_2d(jstart_,jend_,temp(:,jstart_:jend_))
    if ( myrank==0 ) then
       open(10,file=base//serial_num)
       do j = 0 , MESH_SIZE+1
          do i = 0 , MESH_SIZE+1
             write(10,*) i, j, prof(i,j)
          end do
          write(10,*)' ' ! gnuplot requires a blank line here.
       end do
       close(10)
    end if
    counter = counter + 1
  end subroutine temperature__output_2d_profile



*  &color(#0000ff){【演習】}; [#ibe877dc]
heat2_sendrecv_check.f90をmpif90コマンドでコンパイルし、



--


#ref()



* 宿題 [#g714ae01]

上記 thermal_diffusion.f90コードを理解しておくこと。(レポート提出必要なし。)


* 授業アンケート [#k7c29103]
今回の演習内容はどうでしたか?(どれか一つ、一度だけ押してください。)
#vote(簡単すぎた[0], 難しすぎた[0], ちょうどよかった[0])


* 質問、コメントなど自由にどうぞ [#ve482de9]

「お名前」欄は空欄で可。

#pcomment


------------------------------

as of &_now; (&counter;)