既存の計算結果の読み込み

既存のCGNSファイルに格納されている計算結果を読み込みます。

表 78 利用する関数
関数 備考
cg_iric_read_sol_count 計算結果の数を取得する
cg_iric_read_sol_time 計算結果の時刻の値を取得する
cg_iric_read_sol_iteration 計算結果のループ回数の値を取得する
cg_iric_read_sol_baseiterative_integer 整数の計算結果の値を取得する
cg_iric_read_sol_baseiterative_real 倍精度実数の計算結果の値を取得する
cg_iric_read_sol_grid2d_coords 計算結果の2次元構造格子を取得する
cg_iric_read_sol_grid3d_coords 計算結果の3次元構造格子を取得する
cg_iric_read_sol_node_integer 整数の格子点ごとに値を持つ計算結果の値を取得する
cg_iric_read_sol_node_real 倍精度実数の格子点ごとに値を持つ計算結果の値を取得する
cg_iric_read_sol_cell_integer 整数の格子セルごとに値を持つ計算結果の値を取得する
cg_iric_read_sol_cell_real 倍精度実数の格子セルごとに値を持つ計算結果の値を取得する

既存のCGNSファイルを読み込み、格納されている計算結果を標準出力に 出力する処理の例を リスト 109 に示します。

リスト 109 計算結果を読み込む処理の記述例
 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
program SampleX
  use iric
  implicit none

  integer:: fin, ier, isize, jsize, solid, solcount, iter, i, j
  double precision, dimension(:,:), allocatable::grid_x, grid_y, result_real

  ! CGNS ファイルのオープン
  call cg_iric_open('test.cgn', IRIC_MODE_READ, fin, ier)
  if (ier /=0) STOP "*** Open error of CGNS file ***"

  ! 格子のサイズを調べる
  call cg_iric_read_grid2d_str_size(fin, isize, jsize, ier)

  ! 計算結果を読み込むためのメモリを確保
  allocate(grid_x(isize,jsize), grid_y(isize,jsize))
  allocate(result_real(isize, jsize))

  ! 計算結果を読み込み出力
  call cg_iric_read_sol_count(fin, solcount, ier)
  do solid = 1, solcount
    call cg_iric_read_sol_iteration(fin, solid, iter, ier)
    call cg_iric_read_sol_gridcoord2d(fin, solid, grid_x, grid_y, ier)
    call cg_iric_read_sol_real(fin, solid, 'result_real', result_real, ier)

    print *, 'iteration: ', iter
    print *, 'grid_x, grid_y, result: '
    do i = 1, isize
      do j = 1, jsize
        print *, '(', i, ', ', j, ') = (', grid_x(i, j), ', ', grid_y(i, j), ', ', result_real(i, j), ')'
      end do
    end do
  end do

  ! CGNS ファイルのクローズ
  call cg_iric_close(fin, ier)
  stop
end program SampleX

なお、計算結果読み込みの関数を用いて、既存のCGNSファイルの計算結果を 分析・加工することができます(計算結果分析ソルバーの開発手順 参照)。