Fortranの構造体

今日はFortranです。
転職してから仕事で使うことは皆無ですが・・・。

f90以降では構造体を使えます。
正直、C++で良いじゃん!って思いますが、
一応機能として使えるので、簡単な使い方だけ説明します。

ここでは、構造体にx、yの座標(real)を持たせるものとし、その座標をlocateとする配列にしています。

このlocateはimax(=10)個持たせ、各locateのx,yに値を入力しています。

最後に出力して確認しています。
(面白くもないですが・・・)

構造体でデータを持たせた場合のパフォーマンスについては、調査してません。
どうなんでしょうかね。。。
もしかしたら、大規模な計算だとパフォーマンスが落ちるかもしれません。

program main
  implicit none
  integer i,imax
  ! 構造体の宣言
  type point
     real(8) :: x,y
  end type point
  type(point),allocatable :: locate(:)
  ! 座標の数(=10)
  imax = 10
  ! 構造体配列の確保
  allocate( locate(imax) )
  ! 座標の入力 構造体のメンバー変数には「%」でアクセス
  do i = 1,imax
     locate(i)%x = real(i)
     locate(i)%y = real(i)*2.0d0
  end do
  ! 入力値の確認
  do i = 1,imax
     print *,locate(i)%x,locate(i)%y
  end do
end program main