計算格子の読み込み¶
CGNSファイルから、計算格子を読み込みます。iRIClib では、構造格子の読み込みの関数のみ提供します。
関数 |
備考 |
|---|---|
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 に示します。
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次元の格子の場合も同様の処理になります。