計算格子の読み込み¶
CGNSファイルから、計算格子を読み込みます。iRIClib では、構造格子の読み込みの関数のみ提供します。
関数 |
備考 |
---|---|
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 に示します。
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