見出し画像

Ubuntuで構造解析をやってみた

ふと、部品の構造解析をしたくなったので、Ubuntu PCで環境構築と手持ちの3Dモデルで簡単な構造解析を試してみました。

今回はこちらで(100円で)販売している3Dモデルを使用してみました。


構造解析の環境設定

FreeCAD

解析用の3Dモデルを作成するのに、(操作性に癖は有りますが、)オープンソースのFreeCADを使用すると便利です。

アプリセンターからインストールするのが簡単です。

CalculiX

構造解析のソルバーにはCalculiXを使用します。

選定基準として以下のことを考慮しました。

  • 無料で商用利用可能なOSS(オープンソースソフトウェア)であること

  • サポートコミュニティが比較的大きいこと

  • 構造解析以外にも複数の物理現象を組み合わせる、連成解析がしやすいように、preCICEの公式アダプタが用意されていること

インストールにはaptを使用します。

sudo apt install calculix-cgx calculix-ccx
sudo apt install libarpack2-dev libspooles-dev libyaml-cpp-dev

Wine

CalculiXのプリ・ポストプロセッサーにはGUIが直感的で使いやすいと評判のPrePoMaxを使用することにしました。

ただし、PrePoMaxはWindows用に作成されているので、Ubuntu上でWindowsアプリを動かすことのできる、Wineをインストールしておく必要があります。

以下、インストール方法です。

32bitアーキテクチャの有効化とWineリポジトリのGPGキー追加します。

sudo dpkg --add-architecture i386
sudo mkdir -pm755 /etc/apt/keyrings
sudo wget -O /etc/apt/keyrings/winehq-archive.key https://dl.winehq.org/wine-builds/winehq.key

Wineリポジトリの追加します(Ubuntu 24.04 - Noble Numbatの場合)。

sudo wget -NP /etc/apt/sources.list.d/ https://dl.winehq.org/wine-builds/ubuntu/dists/noble/winehq-noble.sources

Wineをインストールします。

sudo apt update
sudo apt install --install-recommends winehq-stable

Wineの設定画面で表示を確認します。

winecfg

日本語フォントが正しく表示されない場合、Winetricksをインストールしておきます。

sudo pacman -S winetricks

CJK(中国語、日本語、韓国語)フォントのインストールします。

winetricks cjkfonts

PrePoMax

https://prepomax.fs.um.si/

※2024/10/25(金)から、サーバーがセキュリティ攻撃を受けているため、公式ページを開くことができなくなっているようですが、一時的にこちらで最新バージョンのPrePoMaxがダウンロードできるようにしてくれています。

ZIPファイルをダウンロードして解凍したものを、任意のディレクトリに保存してください。

解析条件を設定する

「PrePoMax.exe」が含まれるディレクトリに移動して、以下を実行してWineからPrePoMaxを起動します。

wine PrePoMax.exe

左側のメニューで「Geometry」が選択されていることを確認します。

新規解析用ファイルを立ち上げる

メニューバーの「File」→「New」を選択して、開いたウィンドウで以下の操作を行います。

  • Model Spaceで「3D」を選択

  • Unit System Typeで「mm, ton, s, ℃」を選択

  • 「OK」ボタンを押す

3Dモデルをインポートする

FreeCADで作成した3DモデルをSTL形式で保存したものを、「File」→「Import」から開きます。

メッシュを生成する

左側メニューバーのから「Mesh Setup」を右クリック→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Typeで「Meshing Parameters」を選択

  • 3Dモデルを選択

  • PropertiesでMax element sizeで、メッシュの最大寸法を適切な値に変更(部品の最長辺の長さの1/20〜1/50程度が目安。今回は2mmとした)

  • 「OK」ボタンを押す

メニューバーから「Mesh」→「Create Mesh」を選択してメッシュを生成します。

成功すると左側メニューが「FE Model」タブに切り替わります。

拘束する箇所と荷重をかける箇所を設定する

左側メニューから「Node Sets」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Propertiesの「Name」に「Node_Support」と入力する

  • Set Selectionウィンドウ下部の「More」ボタンを押す

  • FE mesh based selectionの「Face angle」を「5°」に設定する

  • 3Dモデルの固定したい面を選択する

  • 「OK」ボタンを押す

再度、左側メニューから「Node Sets」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Propertiesの「Name」に「Node_Load」と入力する

  • Set Selectionウィンドウ下部の「More」ボタンを押す

  • FE mesh based selectionの「Face angle」を「5°」に設定する

  • 3Dモデルの荷重をかけたい面を選択する

  • 「OK」ボタンを押す

左側メニューから「Surfaces」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Propertiesの「Name」に「Surface_Load」と入力する

  • 「Region type」で「NodeSet」を選択する

  • 「Node set」で「Node_Load」を選択する

  • 「OK」ボタンを押す

物性値を設定する

左側メニューから「Materials」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Material Modelsから「Elastic」をダブルクリックする

  • 「Young's modulus」で「2000 MPa」、「Poisson's ratio」で「0.35」を入力する(解析を行う部品の材質はPLAを想定)

  • 「OK」ボタンを押す

左側メニューから「Sections」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Typeから「Solid Section」を選択する

  • 「Region type」で「Part name」を選択する

  • 「Part name」で解析を行う部品を選択する(デフォルトは「Solid_part-1」)

  • 「OK」ボタンを押す

解析の種類を設定する

左側メニューから「Steps」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Typeから「Static Step」を選択する(今回は「静的解析」を行う)

  • 「Region type」で「Part name」を選択する

  • 「Part name」で解析を行う部品を選択する(デフォルトは「Solid_part-1」)

  • 「OK」ボタンを押す

拘束条件と荷重の条件を設定する

左側メニューから「BCs」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Typeから「Displacement/Rotation」を選択する

  • 「Name」を「Displacement_Rotation_Support」に変更する

  • 「Region type」で「Node set name」を選択する

  • 「Node set」で「Node_Support」を選択する

  • 「U1」、「U2」、「U3」で「Fixed」を選択する(「UR1」、「UR2」、「UR3」はそのまま)

  • 「OK」ボタンを押す

※拘束箇所について、X、Y、Z方向それぞれ、「変位なし&回転の制約なし」に設定しています。

左側メニューから「Loads」→「Create」を選択して、開いたウィンドウで以下の設定を行います。

  • Typeから「Surface Traction」を選択する

  • 「Name」を「Surface Traction_Load」に変更する

  • 「Region type」で「Surface name」を選択する

  • 「Surface」で「Surface_Load」を選択する

  • 「F1」を「0 N」、「F2」を「0 N」、「F3」を「-10 N」に設定する

  • 「OK」ボタンを押す

※荷重をかける箇所の表面力について、Z軸のマイナス方向に10N(約1kgf)に設定しています。

解析条件を確認する

ここまでで、解析条件の設定が完了しました。

解析実行前に解析条件に間違いがないか確認しておきます。

解析を実行する

左側メニューから「Analysis」→「Run」を実行します。

解析が成功すると以下のようなウィンドウが表示されるので、「Results」を押して解析結果を表示します。

解析結果を確認する

左側メニューが「Results」タブに切り替わります。

このとき、デフォルトでは左側メニューの「DISP」→「ALL」(全方向の変位)が表示されます。

フックの先端におよそ0.6mmの変位が発生するようです。

左側メニューから他のパラメータについても解析結果を確認できます。

例えば「STRESS」→「MISES」を選択して、ミーゼス応力を表示してみます。

フックの根本におよそ13MPaのミーゼス応力が発生します。

PLAの引張強さが60MPaなので、10Nの等分布荷重であればフックは降伏しないようです。

あとがき

無料のGUIでストレスなく構造解析ができてしまうのはありがたいですね。

とはいえ、Wineのインストールが不完全で、一部文字化けが残ったり、ツールバーにカーソルを合わせるとPrePoMaxが落ちてしまったりする不具合が残ってしまったので、この辺についてはぼちぼち修正していきたいと思います。

この記事が気に入ったらサポートをしてみませんか?