計算格子の読み込み

CGNSファイルから、計算格子を読み込みます。iRIClib では、構造格子の読み込みの関数のみ提供します。

表 62 利用する関数

関数

備考

cg_iric_gotogridcoord2d_f

2次元構造格子を読み込む準備をする

cg_iric_getgridcoord2d_f

2次元構造格子を読み込む

cg_iric_gotogridcoord3d_f

3次元構造格子を読み込む準備をする

cg_iric_getgridcoord3d_f

3次元構造格子を読み込む

cg_iric_read_grid_integer_node_f

格子点で定義された整数の属性を読み込む

cg_iric_read_grid_real_node_f

格子点で定義された倍精度実数の属性を読み込む

cg_iric_read_grid_integer_cell_f

セルで定義された整数の属性を読み込む

cg_iric_read_grid_real_cell_f

セルで定義された倍精度実数の属性を読み込む

cg_iric_read_complex_count_f

複合型の属性のグループの数を読み込む

cg_iric_read_complex_integer_f

複合型の属性の整数の条件を読み込む

cg_iric_read_complex_real_f

複合型の属性の倍精度実数の条件を読み込む

cg_iric_read_complex_realsingle_f

複合型の属性の単精度実数の条件を読み込む

cg_iric_read_complex_string_f

複合型の属性の文字列の条件を読み込む

cg_iric_read_complex_functionalsize_f

複合型の属性の関数型の条件のサイズを調べる

cg_iric_read_complex_functional_f

複合型の属性の倍精度実数の関数型の条件を読み込む

cg_iric_read_complex_functionalwithname_f

複合型の属性の単精度実数の関数型の条件を読み込む

cg_iric_read_complex_functional_realsingle_f

複合型の属性の値を複数持つ倍精度実数の関数型の条件を読み込む

cg_iric_read_grid_complex_node_f

格子点で定義された複合型の属性を読み込む

cg_iric_read_grid_complex_cell_f

セルで定義された複合型の属性を読み込む

cg_iric_read_grid_functionaltimesize_f

次元「時刻」(Time) を持つ格子属性の、時刻の数を調べる

cg_iric_read_grid_functionaltime_f

次元「時刻」(Time)の値を読み込む

cg_iric_read_grid_functionaldimensionsize_f

次元の数を調べる

cg_iric_read_grid_functionaldimension_integer_f

整数の次元の値を読み込む

cg_iric_read_grid_functionaldimension_real_f

倍精度実数の次元の値を読み込む

cg_iric_read_grid_functional_integer_node_f

次元「時刻」を持つ、格子点で定義された整数の属性を読み込む

cg_iric_read_grid_functional_real_node_f

次元「時刻」を持つ、格子点で定義された倍精度実数の属性を読み込む

cg_iric_read_grid_functional_integer_cell_f

次元「時刻」を持つ、セルで定義された整数の属性を読み込む

cg_iric_read_grid_functional_real_cell_f

次元「時刻」を持つ、セルで定義された倍精度実数の属性を読み込む

cg_iric_read_grid_integer_node_f など属性読み込み用の関数は、 2次元構造格子、3次元構造格子で共通で利用することができます。 2次元構造格子を読み込む処理の記述例を リスト 95 に示します。

リスト 95 2次元格子を読み込む処理の記述例
 1program Sample3
 2  implicit none
 3  include 'cgnslib_f.h'
 4
 5  integer:: fin, ier, discharge_size, i, j
 6  integer:: isize, jsize
 7  double precision, dimension(:,:), allocatable:: grid_x, grid_y
 8  double precision, dimension(:,:), allocatable:: elevation
 9  integer, dimension(:,:), allocatable:: obstacle
10  integer:: rain_timeid
11  integer:: rain_timesize
12  double precision, dimension(:), allocatable:: rain_time
13  double precision, dimension(:,:), allocatable:: rain
14
15  ! CGNS ファイルのオープン
16  call cg_open_f('test.cgn', CG_MODE_MODIFY, fin, ier)
17  if (ier /=0) STOP "*** Open error of CGNS file ***"
18
19  ! 内部変数の初期化
20  call cg_iric_init_f(fin, ier)
21  if (ier /=0) STOP "*** Initialize error of CGNS file ***"
22
23  ! 格子のサイズを調べる
24  call cg_iric_gotogridcoord2d_f(isize, jsize, ier)
25
26  ! 格子を読み込むためのメモリを確保
27  allocate(grid_x(isize,jsize), grid_y(isize,jsize))
28  ! 格子を読み込む
29  call cg_iric_getgridcoord2d_f(grid_x, grid_y, ier)
30
31  if (ier /=0) STOP "*** No grid data ***"
32  ! (出力)
33  print *, 'grid x,y: isize, jsize=', isize, jsize
34  do i = 1, min(isize,5)
35    do j = 1, min(jsize,5)
36      print *, ' (',i,',',j,')=(',grid_x(i,j),',',grid_y(i,j),')'
37    end do
38  end do
39
40  ! 格子点で定義された属性 elevation のメモリを確保
41  allocate(elevation(isize, jsize))
42  ! 属性を読み込む
43  call cg_iric_read_grid_real_node_f('Elevation', elevation, ier)
44  print *, 'Elevation: isize, jsize=', isize, jsize
45  do i = 1, min(isize,5)
46    do j = 1, min(jsize,5)
47      print *, ' (',i,',',j,')=(',elevation(i,j),')'
48    end do
49  end do
50
51  ! セルで定義された属性 obstacle のメモリを確保。セルの属性なのでサイズは (isize-1) * (jsize-1)
52  allocate(obstacle(isize-1, jsize-1))
53  ! 属性を読み込む
54  call cg_iric_read_grid_integer_cell_f('Obstacle', obstacle, ier)
55  print *, 'Obstacle: isize -1, jsize-1=', isize-1, jsize-1
56  do i = 1, min(isize-1,5)
57    do j = 1, min(jsize-1,5)
58      print *, ' (',i,',',j,')=(',obstacle(i,j),')'
59    end do
60  end do
61  ! Rain の時刻の数を読み込む
62  call cg_iric_read_grid_functionaltimesize_f('Rain', rain_timesize);
63  ! Rain の時刻を読み込むメモリを確保。
64  allocate(rain_time(rain_timesize))
65
66  ! セルで定義された属性 rain のメモリを確保。セルの属性なのでサイズは (isize-1) * (jsize-1)
67  allocate(rain(isize-1, jsize-1))
68  ! Time = 1 での属性を読み込む
69  rain_timeid = 1
70  call cg_iric_read_grid_functional_real_cell_f('Rain', rain_timeid, rain, ier)
71  print *, 'Rain: isize -1, jsize-1=', isize-1, jsize-1
72  do i = 1, min(isize-1,5)
73    do j = 1, min(jsize-1,5)
74      print *, ' (',i,',',j,')=(',rain(i,j),')'
75    end do
76  end do
77
78  ! allocate で確保したメモリを開放
79  deallocate(grid_x, grid_y, elevation, obstacle, rain_time, rain)
80
81  ! CGNS ファイルのクローズ
82  call cg_close_f(fin, ier)
83  stop
84end program Sample3

3次元の格子の場合も同様の処理になります。