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

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

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

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

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

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

リスト 21 格子生成条件の読み込み処理を追記したソースコード
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
program SampleProgram
  implicit none
  include 'cgnslib_f.h'

  integer:: fin, ier
  integer:: icount, istatus
  integer:: imax, jmax
  integer:: elev_on
  double precision:: elev_value
  double precision, dimension(:,:), allocatable::grid_x, grid_y
  double precision, dimension(:,:), elevation

  character(200)::condFile

  icount = nargs()
  if ( icount.eq.2 ) then
    call getarg(1, condFile, istatus)
  else
    stop "Input File not specified."
  endif

  ! 格子生成データファイルを開く
  call cg_open_f(condFile, CG_MODE_MODIFY, fin, ier)
  if (ier /=0) stop "*** Open error of CGNS file ***"

  ! 内部変数の初期化。戻り値は 1 になるが問題ない。
  call cg_iric_init_f(fin, ier)

  ! 格子生成条件の読み込み
  ! 簡潔に記述するため、エラー処理は行っていない
  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)

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

  ! 格子を生成
  do i = 1, isize
    do j = 1, jsize
      grid_x(i, j) = i
      grid_y(i, j) = j
      elevation(i, j) = elev_value
    end do
  end do

  ! 格子を出力
  cg_iric_writegridcoord2d_f(imax, jmax, grid_x, grid_y, ier)
  if (elev_on == 1) then
    cg_iric_write_grid_real_node_f("Elevation", elevation, ier);
  end if

  ! 格子生成データファイルを閉じる
  call cg_close_f(fin, ier)
end program SampleProgram