HexaBlock を使う

2013年7月3日

はじめに

HexaBlock を使ってみる。

バージョン

Salome-Meca 2013.1 (Salome 6.6.0)

注: Salome 7.2.0 だと後半が上手くいきません。

HexaBlock

HexaBlock は、その中に六面体メッシュを作る六面体ブロックでモデルを構成し、それをジオメトリにマッピングすることで全体を六面体メッシュで切ろうという、そのためのモジュールである。

たとえば、円筒ジオメトリに 8 つの頂点をもたせておき、六面体ブロック 1 つの 8 つの頂点と 8 つの辺をそれぞれ円筒のそれぞれに対応させることで、円筒に六面体メッシュを貼り付けることができる。

準備

Salome-Meca ではモジュールがロードされていないので、Salome-Meca のインストールディレクトリの appli_V6_6_0/SalomeApp.xml のモジュール指定部分をつぎのように書き換える。

<parameter name="modules" value="GEOM,SMESH,HEXABLOCK,VISU, ...

HexaBlock を使ってみる

  1. Salome-Meca を起動する。モジュールから "HexaBlock" を選ぶ。
  2. モジュールを起動するけどどうするか選べと言われるので、"New" を選ぶ。
  3. メニュー [Document]-[New Document] を選ぶと、ウインドウが表示される。
  4. とりあえず、ここではひとつブロックを作ってみる。まず、[Model]-[Construction]-[Add Vertex] で点 (0, 0, 0) を作る。続いて、同じく [Add Vector] で (100, 100, 100) のベクトルを作る。
    オブジェクトブラウザの上にタブがあるが、そこの "Model" に作成したものが表示される。ここでは "Data" の "Vertices" と "Builder" の "Vectors" に項目が追加されている。
  5. [Model]-[Construction]-[Make Grid] を選ぶ。"Make Grid" は "Cartesian" のままとする。"Arguments" の "Vertex:" の入力欄をクリックして、"Model" タブの "Vertices" から作った点を選ぶ。同様に "Vector:" でも "Verctors" の項目を選ぶ。以降はそのままで、"Apply" する。するとブロックが表示される。
  6. オブジェクトブラウザのところの "Mesh" タブにメッシュの設定があるが、そこで "Propagations" に項目ができているのを確認する。
    これは、クリックしてみるとわかるが、分割数が対応する辺が組になっている。"Laws" は分割数などを指定する項目である。メニュー [Mesh]-[Add Law] を選ぶ。"Arguments" の "nb nodes" で辺の分割数を設定する。ここでは 10 にでもしておく。"Apply"。
    つづいて [Mesh]-[Set Propagation] を選ぶ。ここでは "Propagations" に分割数を設定する。"Arguments" の "Propagation (s)" の入力欄をクリックし、"Mesh" タブの "Propagations" から項目を選ぶ (x を押すとリストから削除できる)。"Law" の入力欄をクリックして先ほど追加した "Laws" の項目を選ぶ。"Apply"。
  7. [Mesh]-[Compute Mesh] を選ぶ。そのまま "Apply"。メッシュが追加されるので、Mesh モジュールに切り替えて、"Compute" でメッシュを表示する。
  • [Add Vertex] で 8 つの点を作り、[Add Hexahedron] の "Vertecies" で点を選ぶことで同じものを作ることができる。点の選び方は、下から手前左の点、右の点、奥の左の点、右の点、上も同様、という順番である。ただし、点から作ると Propagations ができないので、Hexahedra を一度消して "Quads" で作り直すとよい。
  • [Make Grid] の "n (x):" などを指定すると、たくさんブロックを作ることができる。ブロックをさらに六面体で分割するため、ブロックを 10x10x10 で作って、辺を 10 分割すると、メッシュは 100x100x100 となる。

ブロックとジオメトリを関連づける

今度はブロックとジオメトリを関連づけてみる。

  1. Salome-Meca を起動する。モジュールから "HexaBlock" を選び、"New" を選ぶ。
  2. メニュー [Document]-[New Document] を選ぶと、ウインドウが表示される。"HEXABLOCK: OCC scene:1 - viewer:1" と "HEXABLOCK: VTK scene:1 - viewer:1" の 2 つのウインドウが表示されている。あとの作業のために、"VTK" のほうの右クリックして "Split Vertically" を選んでおく。
  3. 上と同様にブロックを 1 つ作る。
  4. Geometry モジュールで半径 100、高さ 100 の円筒を作る。
  5. 下のように円筒側面に 3 つの線を作る (円弧の辺上に点をパラメタで 0.25, 0.5, 0.75 と 3 つ、上下に作り、それらをそれぞれつなぐ)。
  6. Partition で円筒を線で分割する。これでトポロジはブロックと同じになる。
  7. HexaBlock モジュールに戻り、メニュー [Association]-[Make Vertex association] を選ぶ。"Vertex of the model" の "Name" をクリックし、ブロックの点を (VTK ウインドウで) 選ぶ。"Point of the geometry" の "Points" の左から 2 番目を選び、円筒の対応する点を (OCC ウインドウで) 選ぶ。"Apply" を押す。これを 8 点分繰り返す。
  8. 今度は [Association]-[Make Edge Association] を選び、"Arguments" の "Edge of model" でブロックの辺を (VTK ウインドウで) 選び、"Line of the geometry" で円筒の対応する辺を (OCC ウインドウで) 選ぶ。"Apply" を押す。これを 8 辺分繰り返す。ブロックのほうは透明表示に見えるが、裏側が手前の面で隠されているようで、回転させないと裏側の辺が選択できない。
  9. オブジェクトブラウザのところの "Model" タブの "Vertecies" や "Edges" で関連付けの確認ができる。関連付けが間違っていれば、項目を右クリックして "Remove association(s)" で関連を削除して、設定しなおす。
  10. 上と同様に分割設定をして、メッシュを作成する。