エラー処理の記述

格子生成条件に問題があった場合のエラー処理を記述します。

エラー処理を追記したソースコードを リスト 22 に示します。太字で示したのが追記した部分です。追記した部分により、格子の格子点数が 100000 を超えるような imax, jmax を指定した時は、エラーが発生するようにしました。

コンパイルしたら、 格子の出力処理の記述 の時と同様の手順で格子を生成し、imax x jmax が 100000より大きくなる条件の時には、 図 38 に示すようなダイアログが表示されることを確認してください。例えば、 IMax, JMax にそれぞれ 10000 を指定してみてください。

エラー処理に使う関数の詳細については エラーコードの出力 を参照してください。

リスト 22 エラー処理を追記したソースコード (抜粋)
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
! (前略)

  ! 格子生成条件の読み込み
  ! 簡潔に記述するため、エラー処理は行っていない
  call cg_iric_read_integer_f("imax", imax, ier)
  call cg_iric_read_integer_f("jmax", jmax, ier)
  call cg_iric_read_integer_f("elev_on", elev_on, ier)
  call cg_iric_read_real_f("elev_value", elev_value, ier)

  ! エラー処理
  if (imax * jmax > 100000 ) then
    ! 100000 より大きい格子は生成できない
    call cg_iric_write_errorcode(1, ier)
    cg_close_f(fin, ier)
    stop
  endif

  ! 格子生成用のメモリを確保
  allocate(grid_x(imax,jmax), grid_y(imax,jmax)
  allocate(elevation(imax,jmax))

! (後略)
../_images/gridgenerator_error_dialog.png

図 38 格子生成エラーダイアログ 表示例