格子の調査処理

格子を開き、格子のセルの面積の計算、特定の座標を含むセルの探索などを行います。調査が終わったら、格子を閉じます。

このグループの関数は、CGNS ファイルに含まれている格子が構造格子の場合と非構造格子の場合どちらでも使用できます。 格子の調査処理の手順は、以下の通りになります。

  1. CGNS ファイルに含まれる格子を開き、ハンドルを取得します。

  2. ハンドルを引数として渡し、格子について調査の処理を実行します。

  3. 使い終わったら、ハンドルを渡して格子を閉じます。

表 71 利用する関数

関数

備考

cg_iric_read_grid2d_open

格子を開く

cg_iric_read_sol_grid2d_open

計算結果の格子を開く

cg_iric_read_grid2d_close

格子を閉じる

cg_iric_read_grid2d_cellarea

格子のセルの面積を計算して返す

cg_iric_read_grid2d_findcell

指定した座標を含むセルのIDを返す

cg_iric_read_grid2d_cellnodecount

指定したセルを構成する頂点の数を返す

cg_iric_read_grid2d_interpolate

指定した位置での値を、格子での値を使って補間して計算するための情報を返す

cg_iric_read_grid2d_interpolatewithcell

指定した位置での値を、格子での値を使って補間して計算するための情報を返す

格子の調査処理の記述例を リスト 164 に示します。

リスト 164 格子の調査処理の記述例
 1program TestX
 2  use iric
 3  implicit none
 4
 5  integer:: i, ok
 6  integer:: fin, g_handle, ier
 7  integer:: nodecount, cellnodecount,
 8  double precision: area
 9  double precision, dimension(:), allocatable:: depth
10  integer, dimension(4):: nodeid_arr
11  double precision:: depth_interpolated
12  double precision, dimension(4):: weights_arr
13
14  ! CGNSファイルを開く
15  call cg_iric_open("test.cgn", IRIC_MODE_MODIFY, fin, ier)
16  if (ier /=0) stop "*** Open error of CGNS file ***"
17
18  ! 格子を開く
19  call cg_iric_read_grid2d_open(fin, g_handle, ier)
20
21  ! 格子のセルの面積を取得
22  call cg_iric_read_grid2d_cellarea(g_handle, 1, area, ier)
23
24  ! 格子の頂点の数を取得
25  call cg_iric_read_grid_nodecount(fin, nodecount, ier)
26
27  ! メモリを確保
28  allocate(depth(nodecount))
29
30  ! 計算結果 depth の値を取得
31  call cg_iric_read_sol_node_real(fin, 1, 'depth', depth, ier)
32
33  ! 座標 (10.8, 12.5) での値を補間して計算するための情報を取得
34  call cg_iric_read_grid2d_interpolate(g_handle, 10.8, 12.5, ok, cellnodecount, nodeid_arr, weights_arr)
35
36  ! 座標 (10.8, 12.5) での depth の値を、取得した情報に基づいて計算
37  depth_interpolated = 0
38  do i = 1, cellnodecount
39    depth_interpolated = depth_interpolated + depth(nodeid_arr(i)) * weights_arr(i)
40  end do
41
42  ! 格子を閉じる
43  call cg_iric_read_grid2d_close(g_handle, ier)
44
45  deallocate(depth)
46  stop
47end program TestX