複合型¶
概要¶
複合型は、ここまでで説明してきた、文字列、整数、実数などの条件を複数組み合わせたものです。
valueType に complex を指定した <Definition> 要素を作成し、その内側に整数型、実数型などの 条件を定義します。
定義方法¶
1<Item name="fish" caption="Fishes">
2 <Definition valueType="complex" >
3 <Item name="type" caption="Type">
4 <Definition valueType="integer" option="true" default="1">
5 <Enumerations>
6 <Enumeration value="1" caption="Fish"/>
7 <Enumeration value="2" caption="Crub"/>
8 <Enumeration value="3" caption="Shrimp"/>
9 </Enumerations>
10 </Definition>
11 </Item>
12 <Item name="size" caption="Size">
13 <Definition valueType="real" default="0.13" />
14 </Item>
15 <Item name="remarks" caption="Remarks">
16 <Definition valueType="string" default="" />
17 </Item>
18 </Definition>
19</Item>
条件の表示例¶
読み込み処理の記述方法¶
計算条件・格子生成条件¶
FORTRAN¶
1integer:: ier, fish_count
2integer, dimension(:), allocatable:: fish_type
3double precision, dimension(:), allocatable:: fish_size
4character(200), dimension(:), allocatable:: fish_remarks
5integer:: i
6
7! サイズを調べる
8call cg_iRIC_Read_Complex_Count(fid, "fish", fish_count, ier)
9! メモリを確保
10allocate(fish_type(fish_count))
11allocate(fish_size(fish_count))
12allocate(fish_remarks(fish_count))
13! 確保したメモリに値を読み込む
14do i = 1, fish_count
15 call cg_iRIC_Read_Complex_Integer(fid, "fish", i, "type", fish_type(i), ier)
16 call cg_iRIC_Read_Complex_Real(fid, "fish", i, "size", fish_size(i), ier)
17 call cg_iRIC_Read_Complex_String(fid, "fish", i, "remarks", fish_remarks(i), ier)
18end do
C/C++¶
1int ier, fish_count;
2std::vector<int> fish_type;
3std::vector<double> fish_size;
4int strlen;
5std::vector<std::vector<char> > fish_remarks;
6
7// サイズを調べる
8ier = cg_iRIC_Read_Complex_Count(fid, "fish", &fish_count)
9// メモリを確保
10fish_type.assign(fish_count, 0);
11fish_size.assign(fish_count, 0);
12fish_remarks.assign(fish_count, "");
13// 確保したメモリに値を読み込む
14for (int i = 0; i < fish_count; ++i) {
15 ier = cg_iRIC_Read_Complex_Integer(fid, "fish", i + 1, "type", &fish_type[i]);
16 call cg_iRIC_Read_Complex_Real(fid, "fish", i + 1, "size", &fish_size[i]);
17 auto& remarks = fish_remarks[i];
18 call cg_iRIC_Read_Complex_StringLen(fid, "fish", i + 1, "remarks", &strlen);
19 remarks.assign(strlen + 1, 0);
20 call cg_iRIC_Read_Complex_String(fid, "fish", i + 1, "remarks", remarks.data());
21}
Python¶
1# サイズを調べる
2fish_count = cg_iRIC_Read_Complex_Count(fid, "fish")
3# リストを用意
4fish_type = list()
5fish_size = list()
6fish_remarks = list()
7
8for i in range(fish_count):
9 fish_type.append(cg_iRIC_Read_Complex_Integer(fid, "fish", i + 1, "type"))
10 fish_size.append(cg_iRIC_Read_Complex_Real(fid, "fish", i + 1, "size"))
11 fish_remarks.append(cg_iRIC_Read_Complex_String(fid, "fish", i + 1, "remarks"))
名前の読み込み¶
複合型の項目につけた名前 (例: 図 59 の例なら「Item2」) を読み込みたい時は、 cg_iRIC_Read_Complex_String を、引数 name に "_caption" を指定して実行します。
引数の詳細な説明は cg_iRIC_Read_Complex_String を参照してください。