はじめに
よく忘れるので自分用のメモです。
本編
CGNSから読み込んだ際の格子点の属性の配列は1次元の配列で返ってくる。
データのインデックスは以下のようになる。
# --------------------------------------------------
# CGNSから読み込む時は1次元配列、順番は以下
# --------------------------------------------------
# j
# ↑
# 4| 24, 25, 26, 27, 28, 29
# 3| 18, 19, 20, 21, 22, 23
# 2| 12, 13, 14, 15, 16, 17
# 1| 6, 7, 8, 9, 10, 11
# 0| 0, 1, 2, 3, 4, 5
# ----------------------- → i
# 0 1 2 3 4 5
# --------------------------------------------------
下記のようなコードで以下の格子点のx座標、y座標を読み込んでみる
import iric
# ファイル名を指定(デバッグ用)
cgns_name = ".\project_py\Case1.cgn"
# CGNSを開く
fid = iric.cg_iRIC_Open(cgns_name, iric.IRIC_MODE_MODIFY)
# 格子サイズの読み込み
isize, jsize = iric.cg_iRIC_Read_Grid2d_Str_Size(fid)
print("isize=" + str(isize) + " jsize=" + str(jsize))
# 座標の読み込み
grid_x_arr, grid_y_arr = iric.cg_iRIC_Read_Grid2d_Coords(fid)
print("grid_x_arr")
print(grid_x_arr)
print("grid_y_arr")
print(grid_y_arr)
するとこうなる
isize=11 jsize=6
grid_x_arr
[ 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 0. 1. 2. 3. 4. 5. 6.
7. 8. 9. 10. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 0. 1. 2.
3. 4. 5. 6. 7. 8. 9. 10. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9.
10. 0. 1. 2. 3. 4. 5. 6. 7. 8. 9. 10.]
grid_y_arr
[0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0. 0.2 0.2 0.2 0.2 0.2 0.2 0.2
0.2 0.2 0.2 0.2 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.4 0.6 0.6 0.6
0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.6 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8 0.8
0.8 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. 1. ]
計算する時は$(i,j)$で指定したいことが多いので2次元配列にする際は以下のようにする。
# 格子の形に整形
grid_x_arr = grid_x_arr.reshape(jsize, isize).T
grid_y_arr = grid_y_arr.reshape(jsize, isize).T
print("Reshaped grid_x_arr")
print(grid_x_arr)
print("Reshaped grid_y_arr")
print(grid_y_arr)
出力結果
Reshaped grid_x_arr
[[ 0. 0. 0. 0. 0. 0.]
[ 1. 1. 1. 1. 1. 1.]
[ 2. 2. 2. 2. 2. 2.]
[ 3. 3. 3. 3. 3. 3.]
[ 4. 4. 4. 4. 4. 4.]
[ 5. 5. 5. 5. 5. 5.]
[ 6. 6. 6. 6. 6. 6.]
[ 7. 7. 7. 7. 7. 7.]
[ 8. 8. 8. 8. 8. 8.]
[ 9. 9. 9. 9. 9. 9.]
[10. 10. 10. 10. 10. 10.]]
Reshaped grid_y_arr
[[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]
[0. 0.2 0.4 0.6 0.8 1. ]]