technical logs - invisible yet indispensable -
freecad + FEM workbenchでの構造計算
大学院生だったころ、光学系に関連した構造計算を行う可能性があったので、有償ソフトウェア(当時はANSYSだった)の講習会を受けにKEKに出向いたことがあった。それから随分と時間が経った今、また構造計算を行う機会がありそうなので、ツールもさぞかし進化しているのかと調べてみたところ、今ではLinuxで動くフリーウェアで商用と大きく遜色ない精度で構造計算が可能であるらしい。 Ubuntu24.04LTS上で動くものとして、 chatGPTにはfreecad + FEM workbench を勧められ、 freecadは使ったことがあったので早速トライ。というわけでメモを残しておく。…AIの参入でこういったメモを残す意義も小さくなってきたものの、作業の意味を理解しないとトラブルシュートも応用もままならないので、作業手順そのものというより、現在の目的にに必要な最低限の要素を把握するという観点からのメモにしたつもり。
freecad+必要ツールのインストール
freecad のインストール
最近のfreecad はデフォルトで FEM workbench は付属しているらしいが、どこが配布しているものを使うかはその後の作業のしやすさを多少左右する。apt/snap/flatpakの使い分けはひとまず別記事に任せるとして、それらを試した結果、freecad に関しては flatpak を使用するのがよいという結論に至った。flatpak がコマンドとして使える状態になっているという前提で、fluthubをレポジトリとして使用。 登録済みのレポジトリの確認は
$ flatpak remotes
これで Name Options flathub system と出ればOK.確認を飛ばして「なければ追加登録、すでにあれば無視」にしたければ
$ flatpak remote-add –if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo
でレポジトリ追加される。インストール
$ flatpak install flathub org.freecad.FreeCAD
ここで最後の引数のパッケージ名が長いので、一度検索して確認したい場合は$ flatpak search freecad
などで。メッシュツール gmsh のインストール
flatpak からインストールしたfreecad では、NetGenと gmshからメッシュツールが選択可能であるようにGUIが準備されているが、これらのメッシュツールは別途インストールが必要。ここでは gmsh を使うことにする。$ sudo apt install gmsh
ソルバー(有限要素法計算)ツール calculix のインストール
$ sudo apt install calculix-ccx
freecad の立ち上げ
$ flatpak run org.freecad.FreeCAD
apt やsnapのようにインストールしたコマンド直打ちではなく、実行時にもflatpak コマンドを使用する。インストール時のパッケージ名(freepak の application ID)が引数としてそのまま使われる。 これでGUI画面が立ち上がればOK.最低限何を設定するか
ここから先はざっくりと何を設定する必要があるかだけを書く。実際にこれを追えば作業できる、という「マニュアル」より簡便になっていることに注意。- workbench上部のプルダウンメニューで”Part”を選び、構造計算したいパーツの形状を選択。モデルタブに項目が新規作成される(複雑な形状のパーツであれば、part design から始めて自分でパーツの形状を構築するのだろう。)
workbench FEM に移って、解析コンテナを追加。“A” というアイコンクリックで「モデル」タブにアイコン追加されればOK。
先程のパーツの材質を指定。上部メニューバーに「固体material」があるのでそれをクリック。「モデル」タブに”MaterialSolid” が追加されればOK。よく使用される物質であれば、基本特性がデータベースに登録済みなのでそこから選ぶだけで良い。自分でヤング率、ポアソン比、密度を指定して新しい物質を登録することもできる。
負荷(かかる力)を定義。今回は自重変形を計算したい。重力定数の値を含めてすでに自重計算のモデルは準備されているので、上部メニューバーからConstratintSelfWeightを選択。
境界条件を設定(これ、忘れがち)。パーツのうちどの部分が固定されていて動かないか、を指定しないと、計算結果が異常に大きい値になる。この設定が実際には計算精度と設計の肝(支持具の構造や支持部の面積の設定)。ConstraintDisplacement で固定したい部分を選択。
(ここまで一通り復習)形状、素材、負荷、境界条件。これが入力の肝。
これが終わったら物体をメッシュに切る。先程 gmsh を選択しているので、上部メニュータブから gmsh を選択。メッシュサイズの指定が出てくるので適宜大きさを指定。あとは自動でメッシュを切ってくれるので確認。
ソルバーを登録。先程の calculixcxxになるが、上部メニュータブの中の”S”アイコンで登録(freecad のバージョンによってアイコンが違うので読み替えて)。
計算が終わると、変位やフォン・ミーゼス応力など、自分が見たい出力が選べるので適宜選んでプロット、またはファイルに出力。
基本的な流れは以上。もう少し触ってみないと使いこなすところまではいかないが、とりあえず基本的な流れは掴めたので、これから実際に計算したいもののパラメータを少しずつ現実的に詰めてゆく。