計算格子の出力 (計算開始後の格子)

CGNSファイルに、計算開始後の計算格子を出力します。計算中に格子形状が 変化するソルバーでのみ行います。

特定の時間での計算格子を出力する前に、必ず 時刻 (もしくはループ回数) の出力 で示した時刻 (もしくはループ回数) の出力を行ってください。

以下に示す場合の格子の出力については、計算格子の出力 で示した関数を利用してください。

  • ソルバーで新たに格子を生成した

  • ソルバーで格子を再分割するなどして、次元や格子点数が異なる格子を生成した

  • 格子生成プログラム内で格子を生成した

表 69 利用する関数

関数

備考

cg_iric_write_sol_grid2d_coords

2次元構造格子を出力する

cg_iric_write_sol_grid3d_coords

3次元構造格子を出力する

2次元構造格子を出力する処理の例を リスト 101 に示します。

リスト 101 2次元構造格子を出力する処理の記述例
 1program Sample5
 2  use iric
 3  implicit none
 4
 5  integer:: fin, ier, isize, jsize
 6  double precision:: time
 7  double precision, dimension(:,:), allocatable:: grid_x, grid_y
 8
 9  ! CGNS ファイルのオープン
10  call cg_iric_open('test.cgn', IRIC_MODE_MODIFY, fin, ier)
11  if (ier /=0) STOP "*** Open error of CGNS file ***"
12
13  ! 格子のサイズを調べる
14  call cg_iric_read_grid2d_str_size(fin, isize, jsize, ier)
15  ! 格子を読み込むためのメモリを確保
16  allocate(grid_x(isize,jsize), grid_y(isize,jsize))
17  ! 格子を読み込む
18  call cg_iric_read_grid2d_coords(fin, grid_x, grid_y, ier)
19
20  ! 初期状態の情報を出力
21  time = 0
22
23  call cg_iric_write_sol_start(fin, ier)
24  call cg_iric_write_sol_time(fin, time, ier)
25  ! 格子を出力
26  call cg_iric_write_sol_grid2d_coords(fin, grid_x, grid_y, ier)
27  call cg_iric_write_sol_end(fin, ier)
28
29  do
30    time = time + 10.0
31    ! (ここで計算を実行)
32    call cg_iric_write_sol_start(fin, ier)
33    call cg_iric_write_sol_time(fin, time, ier)
34    call cg_iric_write_sol_grid2d_coords(fin, grid_x, grid_y, ier)
35    call cg_iric_write_sol_end(fin, ier)
36    If (time > 1000) exit
37  end do
38
39  ! CGNS ファイルのクローズ
40  call cg_iric_close(fin, ier)
41  stop
42end program Sample5