構造体配列の作成 †はじめに †複数の2次元領域で同じ変数を扱う場合は,領域数をnとすると !-- 宣言部 real*8, allocatable :: z(:,:,:) !***** ... !-- 配列の作成 allocate(z(ny,nx,n)) ということをしても問題ないが,各領域の要素の数(=ny,nx)が領域ごとに大きく異なる場合は無駄が多い. 方法 †!-- 構造体変数の定義 type GEO2D real*8, allocatable :: eta(:,:) !構造体の中の変数を動的配列にする end type GEO2D !-- 宣言 type(GEO2D), allocatable :: geo(:) !geoという変数の名前をつける,これも動的 !-- 配列の作成 allocate(geo(nregion)) ! 領域の数だけgeoの配列を作成 do k=1,nregion allocate(geo(k)%eta(ny(k),nx(k))) !領域それぞれでallocate enddo nyやnxを構造体の中に入れても良い.その場合参照するときは geo(k)%nx のようになるので注意. |