CGNS / IPRO → CSV 変換(現状実装まとめ)¶
ゴール¶
- プロジェクトフォルダ /
.ipro(iRIC の出力一式)を入力として受け取り、Result_*.csv群を生成する。 - 最初のスコープは「ノード座標系データのみ」(セル中心などは扱わない)。
現状の実装¶
モジュール構成¶
iRIC_DataScope/common/cgns_reader.py.ipro/フォルダ入力から CGNS を解決(.iproは ZIP から一時展開)- CGNS(HDF5) を読み込み、ステップ単位で
pandas.DataFrameを生成 - 公開 API:
resolve_case_cgn(input_path, case_name)iter_iric_step_frames(cgn_path, ...)iter_iric_step_frames_from_input(input_path, case_name=..., ...)
iRIC_DataScope/common/iric_project.py- 入力フォルダが「プロジェクトフォルダ」か「CSVフォルダ」かを判定
Solution*.cgnの列挙・並び替えロジックを共通化iRIC_DataScope/common/iric_csv_writer.pyIricStepFrameを iRIC 互換のResult_*.csvに書き出し- 公開 API:
write_iric_result_csv(frame, out_path)export_iric_result_csv(frames, out_dir, filename_template=...)
iRIC_DataScope/common/cgns_converter.py- 従来の「入力→CSV出力」の入口を維持するラッパ
ConversionOptionsとconvert_iric_project()を提供
変換の仕様(CSV出力)¶
- ステップは
ZoneIterativeData/FlowSolutionPointersを基準にResult_{step}.csvを生成。 Solution*.cgnが存在する場合は 1ファイル=1ステップ として扱い、ファイル名の番号をResult_{step}.csvに反映する。- 時刻は
BaseIterativeData/TimeValuesを優先して読み込み(無い場合は 0)。 - 座標は
GridCoordinates/CoordinateX/CoordinateYを使用。 - 変数は FlowSolution 配下のキーを走査し、以下のみ出力:
- Dataset 直下に配列があるもの
- Group 配下の
" data"に配列があるもの - かつ座標と同形状(ノード座標と同shape)のもの
- 出力 CSV は iRIC 互換フォーマット:
- 1行目:
iRIC output t = ... - 2行目:
imax,jmax - 3行目以降: ヘッダ + データ(I,J,X,Y,+スカラー)
ランチャー統合(app.py)のイメージ¶
(現状は 自動変換を挟まない)
- 入力 UI は「フォルダ / .ipro」を受け付ける。
- 各機能は プロジェクトフォルダ / .ipro / CSVフォルダ を直接読み込む。
- CSV 変換は必要な場合のみ手動で利用する(共通モジュールとして維持)。
依存ライブラリ¶
h5py(HDF5 読み取り用)numpy,pandas(データ処理)
制限と今後の拡張¶
- 境界データは扱わない(FlowSolution 以外は対象外)。
- セル中心データ(CellCenter)は現状「座標と同shapeのもののみ出力」なので、セル中心で shape が異なる変数はスキップされる。
- 将来的に「CellCenter の座標生成」「Vertex/Cell の選択 UI」を追加して対応する。
- ゾーン名・ケース名は当面デフォルト固定(Case1.cgn, iRIC/iRICZone)。要望があれば UI から指定できるようにする余地を残す。
参考(試作スクリプト)¶
sandbox/cgns_to_csv.pyは試験用のスクリプト。現行アプリではcommon/配下のモジュールを使用する。