次に gtool4 形式ファイルのデータをプログラムに入力する方法について解説 します. これは出力結果を初期値として計算を継続する場合, 初期値を変えた 計算を行うなどの場合に必要となります.
データを入力するには HistoryGet サブルーチンを用います.
real(8) :: u(10,20,30) call HistoryGet(file='xhistget1.nc', varname='u', array=u)
file には入力するデータの格納されたファイル名を, varname には入力するデータの変数名を与えます. array にはデータが入力されて返ります.
入力されたデータは file@varname のデータのうち最も新しい時刻 のデータが入力されます.
array は入力するデータと同じ次元, 配列サイズで なければならないので注意してください. (異なる場合, エラーと なります).
以下のように文字型引数 range を末尾に与えることで, 入力範囲を指定することも可能です.
real(8) :: v(20) call HistoryGet(file='xhistget2.nc', varname='v', array=v, range='x=180.0,y=-10.0:10.0,t=3.5')
range の表記方法は gtool4 netCDF 規約 の「5.4 コンマ記法」です. 詳しくはそちらを参照してください.
データの入力にポインタ型の引数を与えることで、入力するデータに 合わせて配列サイズを自動的に設定することも出来ます. (次元数は一致している必要があります).
real(8), pointer :: w(:,:,:) => null() call HistoryGetPointer('xhistget3.nc', 'w', w)
この場合, データが入力されるポインタ型の引数は必ず空状態 にして与えてください.
HistoryGetPointer でも上記と同様に range 引数を利用できます.