格子生成条件の読み込み処理の記述

格子生成条件の読み込み処理を記述します。

iRIC は、 格子生成プログラム定義ファイルの作成 で作成した 定義ファイルに従って格子生成条件を格子生成データファイルに出力しますので、 それに対応するように格子生成条件の読み込み処理を記述します。

格子生成条件の読み込み処理を追記したソースコードを リスト 21 に示します。追記した部分を太字で示します。格子生成条件を読み込む関数に 渡す引数が、 格子生成条件の定義 で定義ファイルに記述したItem 要素の name 属性と一致していることに 注目してください。

コンパイルしたら、 格子の出力処理の記述 の時と同様の手順で格子を生成し、指定した通りの格子生成条件で 格子が生成することを確認してください。

定義ファイルで定義する格子生成条件と、それを読み込むための iRIClib の関数の対応関係については、計算条件・境界条件・格子生成条件の項目の定義と読み込み処理の例 を参照してください。格子生成条件の読み込みに使う関数の詳細については、 計算条件 (もしくは格子生成条件) の読み込み を参照してください。

リスト 21 格子生成条件の読み込み処理を追記したソースコード
 1program SampleProgram
 2  use iric
 3  implicit none
 4
 5  integer:: fin, ier
 6  integer:: icount, istatus
 7  integer:: imax, jmax
 8  integer:: elev_on
 9  double precision:: elev_value
10  double precision, dimension(:,:), allocatable::grid_x, grid_y
11  double precision, dimension(:,:), elevation
12
13  character(200)::condFile
14
15  icount = nargs()
16  if ( icount.eq.2 ) then
17    call getarg(1, condFile, istatus)
18  else
19    stop "Input File not specified."
20  endif
21
22  ! 格子生成データファイルを開く
23  call cg_iric_open(condFile, IRIC_MODE_MODIFY, fin, ier)
24  if (ier /=0) stop "*** Open error of CGNS file ***"
25
26  ! 格子生成条件の読み込み
27  ! 簡潔に記述するため、エラー処理は行っていない
28  call cg_iric_read_integer(fin, "imax", imax, ier)
29  call cg_iric_read_integer(fin, "jmax", jmax, ier)
30  call cg_iric_read_integer(fin, "elev_on", elev_on, ier)
31  call cg_iric_read_real(fin, "elev_value", elev_value, ier)
32
33  ! 格子生成用のメモリを確保
34  allocate(grid_x(imax,jmax), grid_y(imax,jmax)
35  allocate(elevation(imax,jmax))
36
37  ! 格子を生成
38  do i = 1, isize
39    do j = 1, jsize
40      grid_x(i, j) = i
41      grid_y(i, j) = j
42      elevation(i, j) = elev_value
43    end do
44  end do
45
46  ! 格子を出力
47  cg_iric_write_grid2d_coords(fin, imax, jmax, grid_x, grid_y, ier)
48  if (elev_on == 1) then
49    cg_iric_write_grid_real_node(fin, "Elevation", elevation, ier);
50  end if
51
52  ! 格子生成データファイルを閉じる
53  call cg_iric_close(fin, ier)
54end program SampleProgram