計算格子の読み込み

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

表 69 利用する関数

関数

備考

cg_iric_read_grid2d_str_size

2次元構造格子のサイズを読み込む

cg_iric_read_grid2d_coords

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

cg_iric_read_grid_nodecount

2次元非構造格子の格子点の数を読み込む

cg_iric_read_grid_cellcount

2次元非構造格子の格子セルの数を読み込む

cg_iric_read_grid_triangleelements

2次元非構造格子の三角形の頂点IDのリストを読み込む

cg_iric_read_grid_integer_node

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

cg_iric_read_grid_real_node

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

cg_iric_read_grid_integer_cell

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

cg_iric_read_grid_real_cell

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

cg_iric_read_complex_count

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

cg_iric_read_complex_integer

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

cg_iric_read_complex_real

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

cg_iric_read_complex_realsingle

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

cg_iric_read_complex_string

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

cg_iric_read_complex_functionalsize

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

cg_iric_read_complex_functional

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

cg_iric_read_complex_functionalwithname

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

cg_iric_read_complex_functional_realsingle

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

cg_iric_read_grid_complex_node

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

cg_iric_read_grid_complex_cell

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

cg_iric_read_grid_functionaltimesize

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

cg_iric_read_grid_functionaltime

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

cg_iric_read_grid_functionaldimensionsize

次元の数を調べる

cg_iric_read_grid_functionaldimension_integer

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

cg_iric_read_grid_functionaldimension_real

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

cg_iric_read_grid_functional_integer_node

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

cg_iric_read_grid_functional_real_node

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

cg_iric_read_grid_functional_integer_cell

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

cg_iric_read_grid_functional_real_cell

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

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

リスト 162 2次元格子を読み込む処理の記述例
 1program Sample3
 2  use iric
 3  implicit none
 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_iric_open('test.cgn', IRIC_MODE_MODIFY, fin, ier)
17  if (ier /=0) STOP "*** Open error of CGNS file ***"
18
19  ! 格子のサイズを調べる
20  call cg_iric_read_grid2d_str_size(fin, isize, jsize, ier)
21
22  ! 格子を読み込むためのメモリを確保
23  allocate(grid_x(isize,jsize), grid_y(isize,jsize))
24  ! 格子を読み込む
25  call cg_iric_read_grid2d_coords(fin, grid_x, grid_y, ier)
26
27  if (ier /=0) STOP "*** No grid data ***"
28  ! (出力)
29  print *, 'grid x,y: isize, jsize=', isize, jsize
30  do i = 1, min(isize,5)
31    do j = 1, min(jsize,5)
32      print *, ' (',i,',',j,')=(',grid_x(i,j),',',grid_y(i,j),')'
33    end do
34  end do
35
36  ! 格子点で定義された属性 elevation のメモリを確保
37  allocate(elevation(isize, jsize))
38  ! 属性を読み込む
39  call cg_iric_read_grid_real_node(fin, 'Elevation', elevation, ier)
40  print *, 'Elevation: isize, jsize=', isize, jsize
41  do i = 1, min(isize,5)
42    do j = 1, min(jsize,5)
43      print *, ' (',i,',',j,')=(',elevation(i,j),')'
44    end do
45  end do
46
47  ! セルで定義された属性 obstacle のメモリを確保。セルの属性なのでサイズは (isize-1) * (jsize-1)
48  allocate(obstacle(isize-1, jsize-1))
49  ! 属性を読み込む
50  call cg_iric_read_grid_integer_cell(fin, 'Obstacle', obstacle, ier)
51  print *, 'Obstacle: isize -1, jsize-1=', isize-1, jsize-1
52  do i = 1, min(isize-1,5)
53    do j = 1, min(jsize-1,5)
54      print *, ' (',i,',',j,')=(',obstacle(i,j),')'
55    end do
56  end do
57  ! Rain の時刻の数を読み込む
58  call cg_iric_read_grid_functionaltimesize(fin, 'Rain', rain_timesize);
59  ! Rain の時刻を読み込むメモリを確保。
60  allocate(rain_time(rain_timesize))
61
62  ! セルで定義された属性 rain のメモリを確保。セルの属性なのでサイズは (isize-1) * (jsize-1)
63  allocate(rain(isize-1, jsize-1))
64  ! Time = 1 での属性を読み込む
65  rain_timeid = 1
66  call cg_iric_read_grid_functional_real_cell(fin, 'Rain', rain_timeid, rain, ier)
67  print *, 'Rain: isize -1, jsize-1=', isize-1, jsize-1
68  do i = 1, min(isize-1,5)
69    do j = 1, min(jsize-1,5)
70      print *, ' (',i,',',j,')=(',rain(i,j),')'
71    end do
72  end do
73
74  ! allocate で確保したメモリを開放
75  deallocate(grid_x, grid_y, elevation, obstacle, rain_time, rain)
76
77  ! CGNS ファイルのクローズ
78  call cg_iric_close(fin, ier)
79  stop
80end program Sample3