さつまろぐ

CAEとかプログラムとか、出来たことの記録など、誰かのお役に立てれば幸い。

メッシュデータの出力(Export)

Gmshでは、モデルの作成とメッシュ分割を行うことができますが、実際の解析を行うのはソルバーの役目となります。 そのため、作成したメッシュのデータをソルバーが必要とする形で引き渡す必要があります。 そこで行うのがExportです。

出力するモデル

例として下記のようなモデルを作成しました。

  • x=2, y=1, z=1 の直方体
  • 0.5×0.5×0.5 の立方体、16要素でメッシュ分割
  • x=0のY-Z平面を拘束、反対面上辺に荷重をかけることを想定した物理グループを作成

f:id:satsuma4801:20201004151941p:plain
出力するモデル

このモデルを出力してみます。

Exportする

メニューからExportを選択すると、保存画面が出てきますので、出力形式を選択し名前を付けて保存します。出力する形式は利用するソルバーにより異なりますので、それぞれの環境に合わせて選択してください。

f:id:satsuma4801:20201005015511p:plain
Exportで出力

f:id:satsuma4801:20201005015427p:plain
メッシュデータの出力

ここではGmshと同様にオープンソースソフトで無料で使用できるCalculixでの解析を想定していますので、Abaqus INP形式で出力します(Calculixは商用ソフト Abaqusと同じ入力形式のようです)。ファイル名は何でもよいので、ここでは「model.mesh」という名前で保存します。(「.inp」はCalculixへの入力ファイルにつける拡張子なので、メッシュデータの拡張子が「.inp」である必要はありません。メッシュデータであることを分かりやすくするために「.mesh」という拡張子を付けています。)

f:id:satsuma4801:20201005021305p:plain
Abaqus INP を選択し保存

Abaqus INP形式で出力する場合、下図のオプション画面が出るので、「Save all elements」「Save groups of nodes」の両方にチェックを入れて「OK」を押します。現れるオプション画面は、選択した出力形式により異なります。

f:id:satsuma4801:20201005022046p:plain
出力オプションの選択(出力形式により異なる)

なお、色々な出力形式がありますが、ほとんどよくわかりません。

メッシュデータの中身(.inpの場合)

出力されたデータをテキストエディタで開いてみると、下記の内容が記載されています。

*Heading
 C:\Users\(保存先パス)\model\model.mesh
*NODE
1, 0, 0, 0
2, 0, 0, 1
(中略)
44, 1, 0.5, 0.5
45, 1.5, 0.5, 0.5
******* E L E M E N T S *************
*ELEMENT, type=T3D2, ELSET=Line1
15, 1, 7
16, 7, 2
(中略)
*ELEMENT, type=T3D2, ELSET=Line12
1, 5, 11
2, 11, 6
*ELEMENT, type=CPS4, ELSET=Surface1
3, 1, 8, 12, 7
4, 8, 3, 10, 12
5, 7, 12, 9, 2
6, 12, 10, 4, 9
(中略)
*ELEMENT, type=CPS4, ELSET=Surface6
77, 13, 21, 42, 29
78, 21, 5, 11, 42
79, 29, 42, 28, 14
80, 42, 11, 6, 28
*ELEMENT, type=C3D8, ELSET=Volume1
81, 12, 7, 1, 8, 43, 36, 15, 30
82, 43, 36, 15, 30, 44, 37, 16, 31
(中略
95, 26, 34, 44, 40, 27, 35, 45, 41
96, 27, 35, 45, 41, 6, 28, 42, 11
*ELSET,ELSET=Load
1, 2, 
*ELSET,ELSET=Fix
3, 4, 5, 6, 
*NSET,NSET=Load
5, 6, 11, 
*NSET,NSET=Fix
1, 2, 3, 4, 7, 8, 9, 10, 12, 

CalculiXの仕様では「*」から始まるキーワードはカードと呼ばれ、定義や設定をする際に使用されるようです。また、カードの後にオプションを付けてさらに細かい設定ができます。

各部分を見ていきます。

*Heading

このメッシュデータの出力パスとファイル名が書かれています。解析には影響無いようです。

*NODE

メッシュの節点(node)の情報が記載されています。

*NODE
1, 0, 0, 0
2, 0, 0, 1

ノード番号, x座標, y座標, z座標、の順で並んでおり、ノード1 (0,0,0)、ノード2 (0,0,1) となっています。 また節点数は全部で45あることが分かります。

*ELEMENT

要素が定義されています。

*ELEMENT, type=T3D2, ELSET=Line1
15, 1, 7
16, 7, 2

「type」で要素の種類を指定しています。「T3D2」はマニュアルに「Two-node 3D truss element (T3D2)」 と記載されており、2節点のトラス要素であることが分かります。 「ELSET」でこの要素に「Line1」という名前を付けています。

以上を踏まえ、記載内容を読み解くと、

  • *ELEMENT:これは要素である。
  • type=T3D2:要素の種類は、2節点トラス要素である。
  • ELSET=Line1:このカードで定義される要素のグループをLine1と名付ける
  • 15, 1, 7 : 線番号15は、節点番号1と7から構成される。
  • 16, 7, 2 : 線番号16は、節点番号7と2から構成される。

となります。実際に見てみましょう。

f:id:satsuma4801:20201007022218p:plain
ELSET=Line1 部分

15番の線が節点1と7、16番の線が節点7と2、となっていることが分かります。

同様に面要素、体積要素の定義を見てみます。

面要素

*ELEMENT, type=CPS4, ELSET=Surface1
3, 1, 8, 12, 7                      //面番号3は、節点1,8,12,7から構成される。

体積要素

*ELEMENT, type=C3D8, ELSET=Volume1
81, 12, 7, 1, 8, 43, 36, 15, 30           //体積番号81は、節点12, 7, 1, 8, 43, 36, 15, 30から構成される。

「type=CPS4」は4節点平面応力要素、「type=C3D8」は8節点ブリック要素を指定しています。このグループの名前をSurface1、Volume1と設定し、それぞれ2行目以降では、面番号、体積番号とそれを構成する節点番号が書かれています。

解析する問題により、線、面、体積のどれが必要になるかは異なります。構造体ならば体積を、シェル要素を使いたいならば面を残し、不要な要素の定義は削除した方が、ファイル容量、メモリの節約になるかと思います。

ELSET, NSET

ELSET, NSET では物理グループを設定した部分の要素と節点(ノード)のグループを定義しています。

*ELSET,ELSET=Load
1, 2, 
*ELSET,ELSET=Fix
3, 4, 5, 6, 
*NSET,NSET=Load
5, 6, 11, 
*NSET,NSET=Fix
1, 2, 3, 4, 7, 8, 9, 10, 12, 

このグループ定義により、CalculiXの入力データでは

*BOUNDARY          //境界条件
Fix, 1, 3               // Fixというグループの節点全てに、x, y, z方向の拘束をかける。

といった指定ができるようになります。CalculiXの入力データの作り方は別途作成します。

以上が、メッシュデータの出力と、.inp形式で出力した際の中身となります。他の出力形式でもだいたい同じようなことが書かれていると思いますので、それぞれのマニュアルを確認ください。

以上


上記は、私がネットの情報やマニュアルを調べたり試行錯誤した上で、「こうやったらできた」というものであり、スマートな方法ではないかも知れません。内容に誤りや、「もっとこうしたほうがいい」という点がありましたら、コメントにて指摘いただければ幸いです。

広告