Pythonでモデルを編集する

今週は、SalomeMecaで作成したメッシュをpythonでも作成・編集できるという情報がありました。そこで、伝熱解析に使用したメッシュを編集しました。
使用ソフト:Salome-Meca 2019(Ubuntu18.04LTS+VirtualBox)

1.使用したメッシュのモデル

メッシュサイズ

1.1 概要
このモデルは、単位をメートルとして作成しています。
内径10m、外径20m、高さ15m
(こんな大きな物体どうやって製造するのか?という指摘はありますが、動作確認のため、なのでこのままにします。)

このときの解析は、軸対称モデルによる解析をしています。
SalomeMecaでは対象とする軸をY軸に設定しないと軸対称モデルとして解析できないため、Y軸を円筒の中心軸としています。

1.2モデルの設定
1)Geometry
 上図のモデルを作成し、Geometoryでの操作で辺と四角形に名前を付けて設定しています。
 辺:inside、top、outside、bottom
    面:plate
2)Mesh
メッシュ:4角形1次要素
Y方向に10分割、X方向に500分割しています。

2.今のメッシュを確認する

2.1 モデルをpython形式で出力する

メニューバーのFile→DumpStudyを選択すると、python形式で出力ができます。

操作

2.2.pythonでどう記述されているかを見る

本文全体は長文なので、要点を確認していきます。
(1) 座標系
原点とX座標、Y座標系、Z座標系を作ります。

O = geompy.MakeVertex(0, 0, 0)
OX = geompy.MakeVectorDXDYDZ(1, 0, 0)
OY = geompy.MakeVectorDXDYDZ(0, 1, 0)
OZ = geompy.MakeVectorDXDYDZ(0, 0, 1)

(2) 寸法
長方形作成、移動を使って作っていきます。
”MakeFaceHW”が長方形作成、”TranslaeteDXDYDZ”が長方形移動
それぞれの()内の数値を変更することで、モデル寸法の変更が可能と推測します。
Plateは、面の名前で、並びはX,Y,Zの順番に並んでいます。

plate = geompy.MakeFaceHW(5, 15, 1)
geompy.TranslateDXDYDZ(plate, 7.5, 7.5, 0)

<作成イメージ>

モデル作成


(3)メッシュ分割
メッシュは、SalomeMecaのオートメッシュ機能を使い、4角形1次要素にてX方向、Y方向共に10分割してから、X方向を500分割しました。

Number_of_Segments_1 = Regular_1D.NumberOfSegments(10)
Number_of_Segments_2 = Regular_1D_1.NumberOfSegments(500)

3.メッシュ分割数を調整する

3.1 pythonファイルを編集する

2.2( 3)にてメッシュ分割数を調整するパラメータがありましたので、メモ帳やTeraPadなどのテキストエディタで編集します。
分割は、X方向:30分割、Y方向:20分割

Number_of_Segments_1=Regular_1D.NumberOfSegments(30)
Number_of_Segments_2 = Regular_1D_1.NumberOfSegments(20)

最後にメッシュを自動的に出力できるように、ファイルの最後に以下を追記します。この場合は、med形式ですが、unv形式も出力可能なようです。
“/XXX”はパス名で、名前をMesh_flat.medとしました。

Mesh_flat.ExportMED('/XXX/Mesh_flat.med')

3.2 pythonファイルを読み込む

メニューバーからFile→LoadSprictを選択し、編集したpythonファイルを選択します。 
結果を見ると、意図したとおりの分割ができていました。

分割結果

4.まとめ

作成済みのモデルの寸法・メッシュサイズをpython形式に出力してテキストエディタで編集することで短時間で編集ができます。
そのため、解析作業の効率向上が見込めます。

(お礼)
以下のページや動画を見ながら行いました。
公開いただきました皆様にはお礼を申し上げます。

1)inabower様
http://inabower.hateblo.jp/entry/2019/04/06/100746

2)PENGUINITIS様
http://penguinitis.g1.xrea.com/study/Salome/python/python.html

3)Cyprien Rusu様