Tweet
昨年のビットキーのアドカレをきっかけに,
定期的に記事を書こうと思って結局続かず一年が経ってしまいました
年末さんこんにちはです.師走っていきましょう.年末って追われていて楽しいですよね!
はい,ということで,今年も記事を書いていこうと思います
Prologue
今回は,"Gmsh x ElmerFEM による静磁場解析 with ChatGPT" です
この記事では,ChatGPT にすがりながら進めていった過程のうち
- 解析ツールや静磁場解析について ← ここ
- Gmsh (Python) でメッシュ (解析場) を生成
- ElmerFEM (GUI tool) で静磁場のマクスウェル方程式を解く
- Paraview (GUI tool) で可視化
について記載しようと思います.続きは別記事で (後日記事書いたらリンク貼ります)
Who is this article for?
- ハードウェアエンジニアの ChatGPT 活用事例を知りたい
- 解析初めてなんだけど,それなりにちゃんとした解析をしたい
- 後解析とかもあるので,ある程度の自由度を持って解析を進めていきたい
- Slidworks とか高額費用かけずに無償でやりたい
こんな方々に記事が届けば嬉しいなと思って書いてみました
ちなみに,私がこれを始めようと思った時の状態ですが
- 静磁場解析をやったことがない
- 有限要素法 (FEM: Finite Element Method) は学生のころ応力解析だけはやってみた
- 学部/修士は機械工学は出たのでほんのちょっとだけ電磁気がわかる
- 専門職は電子回路設計
といった感じです.微素人ですね.
そんな状態でも始められる,ということも私と同じレベルの方々に伝わって
少し背中を押せたらなという想いで記事書き進めていきたいと思います
1. 解析ツールを調査
まず,静磁場解析をしようと思った時に,どんなツールがあるんだろう? を調べました
必要になってくるのは
- 解析領域のメッシュファイルを生成するツール
- Solver を解くツール
- 可視化するツール
この3つが必要になってきます.
とりあえずは,一番重要となる Solver を解く Tool について世にどういったものがあるか調べてみました.こんなところらしいです.下にいくほど,導入ハードルが高くなっていきます
| カテゴリ | 代表ツール | 次元 | 多物理・非線形 | コスト感 | 向いている人 |
|---|---|---|---|---|---|
| Web/ブラウザ簡易 | JMAG-Express, K&J Magnetics | 主に2D相当/テンプレ | 限定的 | 無料〜低額 | モータ/磁石の初期設計、ざっくり見積 |
| 無償 2D GUI | FEMM | 2D/軸対称 | 非線形磁性○、他は限定 | 無料 | 教育・個人・簡単な磁気回路設計 |
| 無償 3D OSS | Gmsh + ElmerFEM, GetDP, MaxFEM | 2D/3D | 多物理◎ | 無料 | 研究、カスタムツールチェーン、自動化したい人 |
| 商用 EM 専用 | JMAG, Ansys Maxwell, COMSOL, CST | 2D/3D | 多物理◎ | 高価 | 企業の量産製品設計、品質保証が必要な現場 |
| CADアドイン | EMS + SOLIDWORKS/Inventor, Fusion + Ansys SI | 主に3D | 製品による | 中〜高価 | CAD 主体で設計するメカ/電気設計者 |
さぁ,まず最初の悩みはここですよね.で,大抵は
- 商用かぁ.... Solidworks や Ansys は100万円オーダーよなぁ.予算なぁ.....
- Web で気軽な Free のやつでいくか.あぁ,複雑な形状の解析はやっぱ無理よなぁ....
- Open Source.... いやぁ,自力で頑張るん難しいよなぁ....
よし,うん,諦めよう.
そう,この流れですよね.もうダチョウ倶楽部くらい鉄板の華麗な思考フロー
わかります
ただここ数年で ChatGPT の能力も本当に飛躍的に高まってきたので,
- 高機能で素晴らしくしかも無償 ↑
- だけど難しくて専門職の人でなきゃ無理そう ↓
みたいなのを諦めなくて済むようになったこと,本当に歓喜です.
"高機能で優秀なツールが無償で軽い気持ちで使い始められる時代"
なんていい響きだんだろうか,と. (ちょっと長い)
ということで,今回は Open Source を使うことにしました
ちなみにですが,商用であっても,
村田ソフトウェアさんの Femtet なんかは非常に安くて (料金表)
- 基本パックは20万円
- 静磁場解析に必要な磁場拡張オプション20万円 (これはそのうち基本パックになるかも)
- CAD で作ったファイル取り込みたければ CADトランスレータで20万円
- CPU 並列計算で高速化したいなら高速化オプションで20万円
で合計 40 ~ 80万円 といったところで他商用ツールよりは安価で大変有難いツールもあったりします.トライアルもさせていただいたのですが,複雑な解析ではない限りは大抵の解析はできそうでした
1.1 Solver (メッシュファイル) を生成するTool
ここからは,先ほどの必要ツール3点について
Open Source を使う場合に必要になってくるものについて触れていきます
まずは,一番最初に必要となる,メッシュファイルを生成できるツールについてです
お分かりかと思いますが,こういうやつですね
代表的なところでいくとこんなところみたいです.いろいろあるみたいです
| ツール名 | 種別・位置づけ | GUI | スクリプト / API | 特徴・典型用途 |
|---|---|---|---|---|
| Gmsh | CAD 内蔵の汎用メッシャー+ポスト | あり | .geo / Python / C/C++ など | 汎用メッシャー兼ポスト。CAD 作成もでき、Python からパラメトリック生成しやすく電磁・構造・CFD など幅広く使われる。 |
| Netgen | 単体 3D テトラメッシャー | あり | Python API / CLI | 外部 CAD(STEP/IGES/STL)から 3D テトラを自動生成する専用メッシャー。「テトラだけ素早く欲しい」用途向き。 |
| SALOME / SMESH | CAD+メッシュ+ポストの統合環境 | あり | ほぼ全機能に Python インターフェース | CAD〜メッシュ〜可視化を 1 つの GUI で実行。SMESH で複数アルゴリズムを選べ、Elmer / Code_Aster 等の前処理に多用。 |
| FreeCAD FEM Workbench | CAD+FEM の統合 GUI(中で Gmsh/Netgen 使用) | あり | Python マクロ | FreeCAD の CAD モデルから Gmsh/Netgen でメッシュを切るフロントエンド。CAD 主体のワークフローでメッシュを得やすい。 |
| TetGen | 3D テトラメッシュ専用メッシャー | 公式 GUI なし(ラッパ多数) | CLI / C/C++ ライブラリ / 各種バインディング | 高品質 3D テトラ専用ライブラリ。自作パイプラインから呼び出し、大規模 3D ボディのテトラメッシュ生成に向く。 |
当初私が ChatGPT に聞いたときは Gmsh しか紹介してくれなかったので,
Gmsh を使ってメッシュを生成していきました
生成方法としては GUI tool で進めることもできるのですが,
初見だとちょっと慣れるまで体力すり減らしそうと思ってしまったのと,
きっとそこは Python コードを ChatGPT が生成してくれた方が GUI よりも楽で速いだろうと思ったので,Gmsh の Python ライブラリーを使って生成することにしました
また,公式のドキュメントがかなり丁寧に記載されているので,それを ChatGPT に読んでもらって会話していくと結構いい感じにすぐ生成することができたし,細かいところの寸法条件も Python の方が楽なので,Python 少しできるのであればぜひ
1.2 Solver を解く Tool
次,Solver を解くツールについて調べました.
ここは有用なものに絞ると選択肢はほぼ ElmerFEM か GetDP の2択になってくるそう
| 観点 | ElmerFEM | GetDP |
|---|---|---|
| 想定ユーザー・用途 | 多物理 CAE として 電磁+熱+構造などを実務で回したい人 | Maxwell 方程式を 弱形式からいじりたい研究・数値解析寄りの人 |
| モデルの書き方 | 「MagnetoDynamics」「HeatSolver」など、物理名ベースの設定 | FunctionSpace / Formulation 等で 弱形式をテキスト記述 |
| Gmsh との組み合わせ | Gmsh メッシュを ElmerGrid で変換して利用。Gmsh とは疎結合 | Gmsh+ONELAB とセット運用が多く、開発元も近くて相性良し |
| 多物理・連成のしやすさ | 電磁/熱/構造などが揃っており、GUI から連成も組みやすい | 何でも連成できるが、方程式を自分で全部書く前提 |
| 学習コスト・とっつきやすさ | 中:GUI+チュートリアルを追えば実務レベルまでは入りやすい | 高:FEM と弱形式が分かっていないとつらい |
| 一言でいうと | 実務寄りマルチフィジックスソルバ | 電磁PDEの自由度高 |
ぱっと見て,GetDP ちょっと難しそうですよね
GUI もないのでかなり初心者にはハードルが高くて研究よりなんだろうな,って感じです
それに比べて ElmerFEM は GUI もあるので解析の設定を進めるのが直感的にも分かりやすく,また,GetDP は解析手法などに精通してないと簡単な解析でも実行まで辿り着くのが大変ですが,ElmerFEM は用意されている手法や境界条件などの設定項目をいじれば実行まで進めるので,初めてでも解析実行まで辿り着くことができます
あと,Github に結構丁寧に Document や Tutorial (Youtube もある) があるので,
資料が少なくて何もわからない,みたいなことにはならない本当に有難いツールです
↓ ElmerFEM はこんな感じ ↓
ちなみに,信頼性については気になるところかと思いますが,
- フィンランドの国立スーパーコンピュータセンター CSC が 1990 年代から開発・保守している多物理 FEM ソルバで,公的研究機関主導の長期プロジェクトとして育っている
- 氷床力学(Elmer/Ice),結晶成長,電磁気・MHD など複数分野の査読付き論文で,
実験や他コードとの比較を通じて妥当性を検証しながら幅広く利用されている
といったところで,ある程度の確度を持って使えるツールだと思って問題なさそうです
Solver を解くためのモデル式についてもそれなりの 資料 がちゃんと存在します
もちろん,そのモデル式が解きたい Solver の条件 (Scale とか) に適しているか,などは意識して使わないとかなり外れた解析結果が出てきてしまうので確認/注意は必要ですが
1.3 可視化 Tool
最後に,可視化についてです.こんなのがあるそうです
| ツール | 種別 / 立ち位置 | 操作スタイル | 特徴・どういう時にこれを選ぶか |
|---|---|---|---|
| ParaView | VTK ベースの定番 3D 可視化アプリ | GUI / バッチ両方あり |
.vtu を標準で読める王道ツール。大規模データや複雑な可視化をしたいならまずこれ。 |
| ElmerVTK(ElmerGUI 内蔵) | Elmer に付属の VTK ビューア | GUI | Elmer プロジェクトをそのまま開いて手軽に結果を見る用。簡易チェックなら十分だが、本格可視化は ParaView 推奨。 |
| VisIt | ParaView と同系統の VTK ベース可視化ツール | GUI / バッチ両方あり | ParaView と同じく .vtu に対応。時系列・HPC 寄りの解析で、VisIt 文化圏の人はこっちでも良い。 |
| Python + PyVista | VTK ラッパの Python ライブラリ | Python(Jupyter 向き) |
pyvista.read("xxx.vtu") で読み込んで、そのまま 3D 可視化&解析。Jupyter 上で数値処理+可視化を一体でやりたい人向き。 |
| Python + Mayavi | アプリ兼ライブラリの 3D 可視化ツール | GUI / Python 両方 |
.vtu を読み込んで 3D シーンを作れる。インタラクティブ 3D アプリ感が欲しいときの選択肢。 |
| Python + 純正 vtk | VTK 本体の Python バインディング | Python(コード主体) | 一番低レイヤーで柔軟だがコード量は多い。特殊な処理を書き込みたいときや PyVista では足りない時の最終手段。 |
大きくは2つで,
- Viewer で結果が大まかに把握できればOK → Paraview, ElmerVTK, VisIt の GUI tool
- 解析結果をいろんな角度から集計して解析したい → Python x (どれか)
です.誰かに見せるようのデータとしては,Paraview はとても見栄えがよく,しかも扱いやすいです.なので,
データを見ながら誰かと会話するときは Paraview
詳細なデータ解析 (断面の磁束合計を集計など) をするときは Python
の二刀流が私としてはとても都合がよかったです
比較はしていませんが,Python の場合は PyVista を使いました.特にトラブルもなくすんなり使えたので,特にこだわりない方であればまずはこれでいいのかなと思います
↓ Paraview はこんな感じ ↓

