格子の出力処理の記述

格子の出力処理を記述します。

まずは、iRIC との連携が正しく行えることを確認するため、 単純な格子を生成して出力する処理を記述します。

格子を出力する処理を追記したソースコードを リスト 20 に示します。追記した部分を強調して示します。

リスト 20 格子を出力する処理を追記したソースコード
 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
program SampleProgram
  implicit none
  include 'cgnslib_f.h'

  integer:: fin, ier
  integer:: icount, istatus
  integer:: imax, jmax
  double precision, dimension(:,:), allocatable::grid_x, grid_y
  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)

  imax = 10
  jmax = 10

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

  ! 格子を生成
  do i = 1, imax
    do j = 1, jmax
      grid_x(i, j) = i
      grid_y(i, j) = j
    end do
  end do

  ! 格子を出力
  cg_iric_writegridcoord2d_f(imax, jmax, grid_x, grid_y, ier)

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

コンパイルしたら、できた実行プログラムを フォルダの作成 で作成したフォルダにコピーし、名前を 基本情報の作成 で executable 属性に指定した名前 (この例なら "generator.exe" ) に変更してください。またこの時、格子生成プログラムの実行に必要な DLLなども同じフォルダにコピーしてください。

この段階で、iRIC から格子生成プログラムが正しく起動できるか確認します。

ソルバーに "Nays2DH" を指定して、新しいプロジェクトを開始し、 基本情報の作成 で行ったのと同じ操作で 格子生成アルゴリズムに "Sample Grid Creator" を選択し、格子生成ダイアログを表示します。表示されるダイアログを 図 36 に示します。

../_images/gridgen_cond_dialog_for_testing.png

図 36 格子生成条件設定ダイアログ 表示例

"格子生成" ボタンを押します。すると、格子生成プログラムが 10 x 10 の 格子を生成し、それがiRIC 上に読み込まれるのが確認できます。 "格子生成" ボタンを押した後のプリプロセッサの表示画面を 図 37 に示します。

../_images/preprocessor_after_gridgen.png

図 37 プリプロセッサ表示例

なお、この節で追加した格子出力用の関数の詳細については、 計算格子の出力 を参照してください。ただし、 計算格子の出力 では3次元格子の出力用関数についても 解説していますが、格子生成プログラムで利用できるのは、2次元格子の出力用関数だけです。