はじめに
前回の記事で有限要素法の実装について色々話ました。
有限要素法ソルバーについては実装→Verificationまで終わった段階です。
これからはFEMプログラム用にGUIを開発していく予定です。
そこで、作業の記録を兼ねて日記(週報?)をつけていこうと思います。
第1回としてGUIの構想と使用するライブラリについて説明します。
なぜGUIを開発したくなったか
そもそも有限要素法のプログラムは自分の研究のためが目的でした。
そのため、テキストで解析条件を読み込んでテキストで解析結果を出力するで十分でした。
しかし、人間欲が出てくるもので自分のプログラムを他の人にも使ってもらいたくなりました。
そのためには入力データの作成や解析結果の図化など手作業ではなかなか難しいです。
GUIを開発したほうが圧倒的に使ってもらえる可能性が高いと感じて挑戦することにしました。
GUIの構想
GUIは、まずポストプロセッサーを先行して開発し、その後プリプロセッサー機能を追加する予定です。
最終的にはプリプロセッサー、ソルバー、ポストプロセッサーを統合した解析環境を目指します。
1. ポストプロセッサーの開発
1.1. XYグラフ表示
- 結果CSVの読み込み
- 複数ケースの読み込み
- p'-q, q-εa, εv-εa などのXYグラフ表示
- グラフ種類の切り替え
- 凡例、軸ラベル、表示/非表示の切り替え
1.2. メッシュ・結果可視化
- nodes.csv, elements.csv の読み込み
- メッシュの可視化
- 変形図の表示
- コンター図の表示
- 時刻歴アニメーションの表示
2. プリプロセッサーの開発
2.1. 既存入力ファイルの確認
- 既存入力ファイルの読み込み
- メッシュの可視化
- 境界条件を矢印や記号で可視化
- 荷重条件、排水条件の可視化
- 材料番号、要素番号、節点番号の表示
2.2. 入力ファイル編集機能
- 材料設定GUIの実装
- 解析条件設定GUIの実装
- 境界条件設定GUIの実装
- 荷重条件設定GUIの実装
2.3. メッシュ作成機能
- 矩形メッシュの自動生成
- Gmsh等の外部メッシュツールとの連携
- 将来的にはGUI上での簡易メッシュ作成を検討
3. 統合
- プリプロセッサーとポストプロセッサーの統合
- GUIからソルバーを実行
- 入力作成、解析実行、結果確認を一連の流れで行える環境を目指す
開発環境
1. 開発言語
- Rust(ソルバーと統一、クロスプラットフォーム)
2. ライブラリ(現時点で)
- csv = "1.4.0"
- eframe = "0.34.3"
- egui = "0.34.3"
- egui_plot = "0.35.0"
- rfd = "0.17.2"
- serde = { version = "1.0", features = ["derive"] }
eguiは軽量で学習コストが低いという理由で選びました。