ポリゴンもしくは折れ線ごとに値を持つ計算結果

ポリゴンもしくは折れ線ごとに値を持つ計算結果を出力する場合、 表 84 に示す関数を 使用します。

ポリゴンもしくは折れ線では、複数のグループを出力することができます。 各グループの出力の最初と最後で、 cg_iric_write_sol_polydata_groupbegincg_iric_write_sol_polydata_groupend を呼び出してください。

出力するプログラムの例は、リスト 175 を参照してください。

注釈

粒子の座標ごとに値を持つ計算結果を出力する関数では、 一度の関数の呼び出して全ての粒子の座標や値を出力しますが、 ポリゴンもしくは折れ線ごとに値を持つ計算結果では、一度の関数呼び出しでは ポリゴンもしくは折れ線一つ分のデータを出力します。

注釈

ポリゴンもしくは折れ線ごとに値を持つ計算結果は、2次元にのみ対応しています。

注釈

一つのグループの中にポリゴンと折れ線を混在させることもできます。

注釈

ポリゴンもしくは折れ線では、計算結果の値はスカラー量にのみ対応しています。

表 84 ポリゴンもしくは折れ線ごとに値を持つ計算結果の出力に利用する関数

関数

備考

cg_iric_write_sol_polydata_groupbegin

ポリゴンもしくは折れ線で定義された計算結果の出力を開始する

cg_iric_write_sol_polydata_groupend

ポリゴンもしくは折れ線で定義された計算結果の出力を終了する

cg_iric_write_sol_polydata_polygon

計算結果としてポリゴンの形状を出力する

cg_iric_write_sol_polydata_polyline

計算結果として折れ線の形状を出力する

cg_iric_write_sol_polydata_integer

整数のポリゴンもしくは折れ線ごとに値を持つ計算結果を出力する

cg_iric_write_sol_polydata_real

倍精度実数のポリゴンもしくは折れ線ごとに値を持つ計算結果を出力する

リスト 175 サンプルプログラム (ポリゴンもしくは折れ線ごとに値を持つ計算結果)
 1program SampleProgram
 2  use iric
 3  implicit none
 4
 5  integer:: fin, ier, isize, jsize
 6  integer:: canceled
 7  integer:: locked
 8  double precision:: time
 9  double precision, dimension(:,:), allocatable::grid_x, grid_y
10  integer:: numpolygons = 10
11  integer:: numpoints = 5
12  double precision, dimension(:), allocatable:: polydata_x, polydata_y,
13  double precision:: temperature = 26
14  integer:: i
15  integer:: status = 1
16  character(len=20):: condFile
17
18  condFile = 'test.cgn'
19
20  ! CGNS ファイルのオープン
21  call cg_iric_open(condFile, IRIC_MODE_MODIFY, fin, ier)
22  if (ier /=0) STOP "*** Open error of CGNS file ***"
23
24  ! 格子のサイズを調べる
25  call cg_iric_read_grid2d_str_size(fin, isize, jsize, ier)
26  ! 格子を読み込むためのメモリを確保
27  allocate(grid_x(isize, jsize), grid_y(isize, jsize))
28  ! 計算結果を保持するメモリを確保。一つのポリゴンの点数は5点
29  allocate(polydata_x(numpoints), polydata_y(numpoints))
30
31  ! 格子を読み込む
32  call cg_iric_read_grid2d_coords(fin, grid_x, grid_y, ier)
33
34  ! 初期状態の情報を出力
35  time = 0
36  call cg_iric_write_sol_start(fin, ier)
37  call cg_iric_write_sol_time(fin, time, ier)
38
39  call cg_iric_write_sol_polydata_groupbegin(fin, 'fish', ier)
40  do i = 1, numpolygons
41    ! (ここで polydata_x, polydata_y, temperature, status に適切な値を設定)
42    call cg_iric_write_sol_polydata_polygon(fin, numpoints, polydata_x, polydata_y, ier)
43    call cg_iric_write_sol_polydata_real(fin, 'Temperature', temperature, ier)
44    call cg_iric_write_sol_polydata_integer(fin, 'Status', status, ier)
45  end do
46  call cg_iric_write_sol_polydata_groupend(fin, ier)
47  call cg_iric_write_sol_end(fin, ier)
48
49  do
50    time = time + 10.0
51
52    ! (ここで計算を実行)
53
54    call iric_check_cancel(canceled)
55    if (canceled == 1) exit
56
57    ! 計算結果を出力
58    call cg_iric_write_sol_start(fin, ier)
59    call cg_iric_write_sol_time(fin, time, ier)
60    call cg_iric_write_sol_polydata_groupbegin(fin, 'fish', ier)
61    do i = 1, numpolygons
62      ! (ここで polydata_x, polydata_y, temperature, status に適切な値を設定)
63      call cg_iric_write_sol_polydata_polygon(fin, numpoints, polydata_x, polydata_y, ier)
64      call cg_iric_write_sol_polydata_real(fin, 'Temperature', temperature, ier)
65      call cg_iric_write_sol_polydata_integer(fin, 'Status', status, ier)
66    end do
67    call cg_iric_write_sol_polydata_groupend(fin, ier)
68    call cg_iric_write_sol_end(fin, ier)
69
70    if (time > 1000) exit
71  end do
72
73  ! CGNS ファイルのクローズ
74  call cg_iric_close(fin, ier)
75  stop
76end program SampleProgram