ただし空気抵抗は無視しないものとする

流体解析の勉強の題材として日頃気になったことをまとめたり確かめたりしていく予定です。OSSしか使わないつもりです。

SALOMEのSHAPERモジュールでヘキサメッシングしてみた

はじめに

先日SALOMEの9.4.0がリリースされました。 前回のSALOME 9.3.0から追加されたSHAPERモジュールが、今回の9.4.0でバグ修正や機能追加が行われており結構使いやすくなってきています。 今回はこのSHAPERを用いてヘキサメッシュを行う方法について紹介します。

作業環境

  • OS : Ubuntu 18.04 LTS
  • SALOME : 9.4.0

作成したメッシュ

こんなアルミ缶のメッシュを作成しました。

f:id:inabower:20191229230451p:plain
350mLアルミ缶

  • メッシュ数:104768
  • 形状:ヘキサメッシュ
  • 最大非直交性:56.77
  • 平均非直交性:23.14
  • 最大歪: 1.349
  • 最大アスペクト比:5.921

SHAPERモジュール

SHAPERモジュールとは

元々SALOMEでは作図のGEOMETRYモジュールとメッシングのMESHモジュールが搭載されていました。 GEOMETRYモジュールでは点→線→面→立体と拡張していきながら3D図形を作成していきますが、作成前に座標などを正確に把握する必要がありました。 一方で今回のSHAPERモジュールはスケッチを起点にインタラクティブな作図を行うことができるようになります。 将来的にはGEOMETRYモジュールがSHAPERに取り込まれるとのウワサもあります。

公式ドキュメントはこちら

docs.salome-platform.org

公式チュートリアル動画もあります。


Salome Shaper Tutorial 1 : Modeling a Parametric Nut

ボタンの概要

このボタンがSHAPERです。

f:id:inabower:20191229232125p:plain
SHAPERモジュール

操作の感覚としてはFreeCADに近いかと思います。 スケッチ面を決定してその中の図形を、長さや角度などで拘束しながら作図していきます。

f:id:inabower:20191230000509p:plain
スケッチの機能

具体的には実例を見せながら説明していきます。

1. スケッチ面を作成して画面を合わせる

まずスケッチ面を作成します。 今回はX-Z面を使用します。 ただこの指定により作成されるスケッチ面は自動的に1m×1mの大きさになり、今回作成するアルミ缶の大きさに対して大きすぎるので、直線を一本引いてその長さを指定し、それに合わせて拡大していき画面のスケールを合わせます。

f:id:inabower:20191229231412g:plain
スケッチ作成→画面合わせ

f:id:inabower:20191230002916p:plain
使った機能

2. 線を引く

次に大体の線を引いていきます。 点や線の上に重なった状態で点を打つとそこで拘束されます。 もし外れてしまった場合は拘束しなおせばOKです。 また水平や垂直はある程度自動で設定されます。 もし水平垂直が不要な場合にはVHを選んでDELキーで消去します。

f:id:inabower:20191230001031g:plain
線を引く

f:id:inabower:20191230003108p:plain
使った機能

3. 線を拘束する

長さや角度などを拘束していくことにより図形を目的のものに近づけていきます。 完全に拘束されて自由度が0になると線が緑色になり、この状態を目標にしていきます。 拘束が過剰になるとそれ以上変更できなくなるので、元に戻すか該当の拘束を削除します。

f:id:inabower:20191230014134g:plain
線の拘束

f:id:inabower:20191230014713p:plain
使った機能

4. 分割用の内部線を作成する

今回はヘキサメッシュを目的としていますので、面は四角形で分割する必要があります。 この四角形分割でSHAPERモジュールが力を発揮します。 面をきれいな四角形に分割するために、例えば水平拘束をしたり、少しだけ角度をつけたり、同じ長さにしたりなど、調整をしながら線を描いていくことができます。 もともとのGEOMETRYモジュールにおける作図では予め座標の計算などを行わなくてはいけなかったところをインタラクティブに行うことができるようになりました。

f:id:inabower:20191230005646g:plain
内部線の作成

5. Partsを作成してGEOMETRYモジュールに送る

スケッチからオブジェクトに起こすにはPartsという機能を用います。 まずPartNew Partで新しいPartスペースを作成して、そこに今回はスケッチからシェルオブジェクトを作成します。

f:id:inabower:20191230020500g:plain
Partの起動

作成した後はExport to GEOMでGeometryモジュールに送ります。

f:id:inabower:20191230015947p:plain
Export to GEOM

f:id:inabower:20191230001420g:plain
Partの作成→GEOMETRYに送る

GEOMETRY

ここからは元々の機能ですのでサクサクやっていきます。

こちらの詳細は過去の記事で紹介しています。

inabower.hateblo.jp

6. 分割用の内部面を作成する

回転した円筒を六面体で分割できるように8角柱ベースで分割しています。

f:id:inabower:20191230021335g:plain
内部面の作成

7. 内部線のグループわけ

OperationsBlocksPropagateで同じ分割数にすべき線を自動でグループ化してくれます。 少なくともこのグループで線の分割数を指定してあげればヘキサメッシュを切ることができます。 今回は更にこのグループ同士Unionすることで後のMESH工程での指定を簡単にしています。

f:id:inabower:20191230021451g:plain
propagate機能

MESH

8. 線毎に分割数を指定してメッシュ作成

普通にやります。

f:id:inabower:20191230021608g:plain
メッシュの作成

できました

f:id:inabower:20191229230451p:plain
350mLアルミ缶

最後に

なんとなくSHAPERで綺麗なメッシュが切れるのが分かりましたでしょうか。 まだ出たての新機能であまり資料はありませんが是非試してみてください。