Salomeで作成したPyramid要素を含むメッシュを利用する方法2025年03月27日 19:32

単純な形状であれば、計算精度の良い六面体メッシュ+プリズムでメッシュを切ることができます。
しかし、規則性の無い形状が含まれているときなど、四面体との混合メッシュになることがあります。

Salomeによりメッシュを切ると、六面体と四面体との接続部分にピラミッド要素が作成されます。
ピラミッド要素は、salomeからメッシュをエクスポートするときに標準的に使われるUNV形式が対応していません。

OneLab(Gmsh+GetDP), Elmer, PrePoMaxにおいて、Pyramid要素の取り込み・計算に成功しました。

Gmshは、SalomeのMed形式に対応しているので問題ありません。

Elmerでは、salomeToElmerのスクリプトを利用する方法が安心できます。
https://github.com/jvencels/salomeToElmer

PrePoMaxでは、Gmshにより一度古いGmsh形式(Ver.2, ASCII形式)で保存し、それを読み込みinp形式でエクスポートすれば利用できました。

どのCAEソフトを用いても、精度は問題ありませんが、変換の回数の面でPrePoMaxが不利だと思います。

詳細は、以下のQiitaのページに記載しました。
https://qiita.com/HD_mount_Music/items/ebe01ea83167c0bd6788

Qiitaへの投稿(構造解析用WSLディストロ、1D-CAE)2025年03月23日 17:04

WindowsのParaviewからLinuxフォルダのデータを開く
1.構造解析ソフト(FrontISTR, EasyISTR):Ready-to-Use WSLディストリビューションの紹介

Debian 12をベースにIntel oneAPIのMKLとMPIを組み込んでビルドしたバージョンを既に紹介しましたが、もっとコンパクトにしてほしいとの要望がありました。
ファイルサイズを小さくすることを目指して、FrontISTRの公式サイトのUbuntu 22.04のバイナリファイルを用いて構築することにより、配布用のzipファイル1.4GBとなりました。アップデータが全てバイナリファイルで行うことができるのでお手軽だと思います。

Intel MKLの直接法ソルバー"Pardiso"を使用されるのであれば、従来のソースコードからコンパイルしたものが快適だと思います。

wslのUbuntuにgnome-terminalのバグがありxfce4-terminalに変更しています。
EasyIstrが修正されるまでは、アップデートを行ったときに
/opt/easyIstr/easyistr_main2.pyの17240行目を
comm = "gnome-terminal -- bash --rcfile run &"
→ comm = "xfce4-terminal --command='bash --rcfile run'" に変更する必要があります。

詳細は以下URLに記載しています。
https://qiita.com/HD_mount_Music/items/dec3c980ed82454166c7

2.オープンCAE勉強会【岐阜】への投稿資料
岐阜高専の柴田良一先生が取り組んでいる「オープンCAE」に関する情報を発信している題記のサイトが、2025年3月28日で閉鎖されるとのことです。必要に応じて順次データを移動するとのことですので、再度見ることのできる内容や時期が不明です。

OpenCAE Users Wiki:3月28日まで
http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?OpenCAE%20Users%20Wiki

それ以降の移行先
https://opencae-dalab.org/

小生が発表した資料のうち、現在でも利用価値がありそうなもの(1D-CAE関連資料、フリーソフトによる偏微分方程式計算)の保管庫として、投稿いたします。

詳細は以下のURLに記載していまっす。
https://qiita.com/HD_mount_Music/items/f9172980a7edb7ab1483

MMGなどのライブラリが充実したElmerビルドスクリプト2025年03月20日 18:28

MMGは動的にFEMのメッシュを変形させることができる興味深いライブラリだと感じています。

例えば、小生のXの熱伝導解析を電場解析に変更した例。
https://x.com/HD_mount_Music/status/1900822790200324483

Mmgを利用しているプロジェクトで有名なのは、ElmerとGmsh(どちらもFreeCADにデフォルトで入っています)と思います。

Salomeに慣れてしまったので、Gmshは難しく感じています。
Gmsh and the SDK with pipのバージョンを入れて、ネイティブとPythonの両方から操作できるようにしましたが、挫折の連続です。

ElmerCSCのgithub(elmerfem/fem/tests, elmer-elmag, elmer-linsys)にMMG活用した例があり、どのような機能か試すことができます。
熱伝導解析と静電場解析でした。
https://github.com/ElmerCSC

最初の勉強用としてelmerを用いる敷居を下げたいと思い、スクリプトを整理しました。
また、設定済ですぐに使えるWSLディストリビューションを準備しました。

以前に作ったものは、Intel-MKLのPardisoのためにコンパイルを繰り返し、イメージが膨れ上がって約10GBになってしまいました。
Pardisoはあまり有用でなく、コンパイルが非常に難しくなるので、あきらめて少ない回数のコンパイルとして、膨張を抑えました。

さらに、tarファイルであったものを、tar.gzファイルをzip圧縮することで、最終的にダウンロードするファイルサイズは、約1.8GBになりました。

導入手順は
1. 圧縮ファイル"ElmerWSL_Deb12_202503.zip"を私のOneDriveからダウンロードする。
https://1drv.ms/u/c/ca3fad7a4b4217c1/EWMBXK6DuPJEqKfmEvr3zt0BCFrDRkJ6PX3MSY12qo1suQ?e=nYfOy7

2. 解凍すると、以下のファイルができます(本家のフォーラムを主に考えているの英文です。すいません)。
- "ElmerWSL_Deb12_202503_build_by_Scripts.tar.gz"
- "ReadMe1st.txt"
- "ReadMe1st.md"

3. tar.gzファイルをWSLにインポートする。
           <DistroName>  <InstallLocation>    <InstallTarFile>
wsl --import ElmerWSL-2025 C:\ElmerWSL C:\path\to\downloaded\file\ElmerWSL_Deb12_202503_build_by_Scripts.tar.gz

詳細情報は
Qiita:
https://qiita.com/HD_mount_Music/items/2695e7480c9585aaf632

Elmer本家のフォーラム(英語):
https://www.elmerfem.org/forum/viewtopic.php?t=8590
https://www.elmerfem.org/forum/viewtopic.php?t=8591

オープンCAEソフトによる熱応力解析2025年02月26日 17:19

下からSalome-meca, EasyISTR, Elmer, PrePoMax
オープンCAEソフトは無償で使用できますが、サポートがありません。
結果に自信を持つために複数のソフトにより、比較することが望ましいと思います。桁間違いなどの基本的なミスを気づく機会が増えます。

EasyISTR5操作マニュアル4.11
熱伝導解析(静解析)および熱応力を用いて、4種類のソフトを比較しました。

モデル
全体が100 x 50 x 10 mmのAl材の中心部に、50 x 40 x 10 mmのGlassが埋め込まれた形状。
メッシュは1mmの六面体要素にしています。
片側の温度が20℃、反対側に1e5W/m^2の熱流束を加える。

操作方法
Salome-meca: Xに方法をアップロードしました。
https://x.com/HD_mount_Music/status/1894354588851191874

EasyISTR: メッシュを細かくした以外はマニュアル通り

Elmer: フォーラムに記載されている熱応力解析を参考にしました。

Variable = "Displacement"
Variable DOFs = Integer 3
https://www.elmerfem.org/forum/viewtopic.php?p=30463&hilit=thermal+stress#p30463
https://x.com/HD_mount_Music/status/1893635765487190179

PrePoMax: 以前Qiitaと電子書籍により使用したことがあったので、直観的に操作できました。

結果
温度、変位は同じになりました。

SalomeからPyramidメッシュのエクスポート2025年02月17日 16:46

先端に-Z方向の荷重をかけたときの変形(上がElmer、下がSalome-Meca)
オープンソースのCAEソフト「Elmer」での作図とメッシュの作成は、GmshとSalomeを使用するユーザーが多いとのことです。
https://www.elmerfem.org/forum/viewtopic.php?t=2023

Gmshは、GUI操作よりもネイティブもしくはPythonのスクリプト言語で操作するイメージで敷居が高いです。GetStartedElmerのChapter 9
Elmer and External Toolsに基本的な使用方法が記載されています。
http://www.nic.funet.fi/pub/sci/physics/elmer/doc/GetStartedElmer.pdf
私にはGmshが難しくて、Salomeを使うことが多いです。

Elmerで直接読み取ることができるメッシュの形式はunvファイルですが、Pyramid要素を変換できません。このため、六面体と四面体の混合メッシュではエクスポートできない問題があります。

以下の二つの方法で正常に認識して、Elmerで計算できました。
なお、どちらの方法も2次要素にする場合は、一次要素を作り、ElmerGridのコマンドで2次要素に変換するのが無難です。
ElmerGrid xx 2 Mesh_1.zzz -autoclean -increase

(1) Salomeから、faces+solids要素出力を指定してmed形式でエクスポート。Gmshに取り込みmsh(Ver.2、ASCIIフォーマット)でエクスポート。
ElmerGUIからPyramids要素 (605)として読めます。

(2) フォーラムに投稿されたスクリプトを使用する
Salomeからメッシュファイルを選択した状態でsalomeToElmer.pyのスクリプトを実行する。
https://www.elmerfem.org/forum/viewtopic.php?t=7084
https://github.com/jvencels/salomeToElmer

salomeToElmer.pyの修正(古くて推奨されない記述のためWarningが表示される:189行目)
if len(parents) is 2 and elemTypeNbr is not 202:
if len(parents) == 2 and elemTypeNbr != 202:

メッシュのフォルダ(Mesh_1)にentities.sifが作られないので
ElmerGrid 2 2 Mesh_1 -autoclean
を実行。