計算条件 (もしくは格子生成条件) の読み込み

CGNSファイルから、計算条件 (もしくは格子生成条件) を読み込みます。

表 61 利用する関数

関数

備考

cg_iric_read_integer_f

整数の条件を読み込む

cg_iric_read_real_f

倍精度実数の条件を読み込む

cg_iric_read_realsingle_f

単精度実数の条件を読み込む

cg_iric_read_string_f

文字列の条件を読み込む

cg_iric_read_functionalsize_f

関数型の条件のサイズを調べる

cg_iric_read_functional_f

倍精度実数の関数型の条件を読み込む

cg_iric_read_functional_realsingle_f

単精度実数の関数型の条件を読み込む

cg_iric_read_functionalwithname_f

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

関数型以外の条件については、一つの関数で一つの条件を読み込むことができます。 整数の計算条件を読み込む処理の例を リスト 93 に示します。

リスト 93 整数型の計算条件を読み込む処理の記述例
 1program Sample1
 2  implicit none
 3  include 'cgnslib_f.h'
 4
 5  integer:: fin, ier, i_flow
 6
 7  ! CGNS ファイルのオープン
 8  call cg_open_f('test.cgn', CG_MODE_MODIFY, fin, ier)
 9  if (ier /=0) STOP "*** Open error of CGNS file ***"
10
11  ! 内部変数の初期化
12  call cg_iric_init_f(fin, ier)
13  if (ier /=0) STOP "*** Initialize error of CGNS file ***"
14
15  call cg_iric_read_integer_f('i_flow', i_flow, ier)
16  print *, i_flow;
17
18  ! CGNS ファイルのクローズ
19  call cg_close_f(fin, ier)
20  stop
21end program Sample1

一方、関数型の計算条件では、cg_iric_read_functionalsize_f, cg_iric_read_functional_f の 二つの関数を利用する必要があります。関数型の計算条件を読み込む処理の例を リスト 94 に示します。

リスト 94 関数型の計算条件を読み込む処理の記述例
 1program Sample2
 2  implicit none
 3  include 'cgnslib_f.h'
 4
 5  integer:: fin, ier, discharge_size, i
 6  double precision, dimension(:), allocatable:: discharge_time, discharge_value  ! discharge の時刻と値を保持する配列
 7
 8  ! CGNS ファイルのオープン
 9  call cg_open_f('test.cgn', CG_MODE_MODIFY, fin, ier)
10  if (ier /=0) STOP "*** Open error of CGNS file ***"
11
12  ! 内部変数の初期化
13  call cg_iric_init_f(fin, ier)
14  if (ier /=0) STOP "*** Initialize error of CGNS file ***"
15
16  ! まず、関数型の入力条件のサイズを調べる
17  call cg_iric_read_functionalsize_f('discharge', discharge_size, ier)
18  ! メモリを確保
19  allocate(discharge_time(discharge_size), discharge_value(discharge_size))
20  ! 確保したメモリに値を読み込む
21  call cg_iric_read_functional_f('discharge', discharge_time, discharge_value, ier)
22
23  ! (出力)
24  if (ier ==0) then
25    print *, 'discharge: discharge_size=', discharge_size
26    do i = 1, min(discharge_size, 5)
27      print *, ' i,time,value:', i, discharge_time(i), discharge_value(i)
28    end do
29  end if
30
31  ! allocate で確保したメモリを開放
32  deallocate(discharge_time, discharge_value)
33
34  ! CGNS ファイルのクローズ
35  call cg_close_f(fin, ier)
36  stop
37end program Sample2

計算条件 (もしくは 格子生成条件) の種類別の読み込み処理の記述例については、 計算条件・境界条件・格子生成条件の項目の定義と読み込み処理の例 を参照してください。