SwiftBlock

表題のツールを使うと、blender上で図形を見ながらGUIでblockMeshDictを作成できるという嬉しさがあって、速報ではごく簡単な直方体だけの場合の作成例を紹介した。

しかし、wikiのページに掲載された例では、円柱用のblockMeshDictも作成できるとあり、更にはそこからダウンロードできるexampleケースを使うと、下図のような、そこそこに複雑な六面体のブロック集合モデル(この種のモデルであれば、blenderで結構簡単に作成できる)から、

作成したblockMeshDictを使ってメッシュ作成すると・・・

何と、見事な六面体メッシュが出来てくれたので、新鮮な驚きでありました。

2つのオブジェクトを使用してblockMeshDictを作成

そこで、どうやったらこれが出来るかのかを調べたところ、まず、このblenderのモデルには、2つのオブジェクトが存在しているという点。

モデルを開いた時の状態は、blockモデルしか表示されていないが、画面右上のオブジェクトツリーを見ると、もう一つpartモデルがあることがわかり、このeyeマークをクリックするとモデル画面上に表示される。

要するに、blockモデルを使ってblockMeshDictを作成するんですが、その際に曲線部などはpartモデルにフィッティングするよう、blockMeshDict中のedge定義をpoyLineで自動作成してくれているんだということです。

2つのオブジェクトで節点共有させておくのがミソ

そこまでのところは、すぐに判ったのですが、問題は、それでどうやってモデルを作ったら良いのか? という点です。マニュアルによれば、Set edgesにチェックマークが入っており、

If an edge in your block structure has both vertices co-located with vertices from the typed object, SwiftBlock will find out the closest path in the mesh of the object

blockモデルと、partモデルでco-located(節点共有?)させなさい・・・ということらしい。で、co-locateさせるにはどうしたら良いのかというと、

To co-locate a block vertex with a vertex of a Geometry object (to allow for non-straight block edges), use Blender’s snapping magnet in vertex mode.

という説明でおしまい。これも、blender使いには、こういう説明で判るかもしれないが、凡人には無理。あれこれ調べて、ようやく判明しました。

 節点共有させる方法

円柱用のblockMeshを作成する場合を例として説明する。

まず、円柱と直方体を別々のオブジェクトとして作成する。上下端面の高さは一致させてあり、直方体は、円柱の内部に収まる形で配置。

円柱用のblockMeshは、中央直方体の4つの側面に台形ブロックを継ぎ足す方法が普通のやり方。最終的に下図のような、5つのブロックがあれば、円柱用のblockMeshDictを作成できることになる。

これを実現するやり方として、普通に考えつくのは、側面を伸長させる方法だろう。Edit Modeの面編集モード(Face select mode)にて、

ひとつの側面を選択状態にして、Eキーを押す(又は、Meshメニューから、Extrude Region を選択する)と、マウスの動きと共に面の法線方向へブロックが伸長する。

適当な長さまで引き伸ばす。マウス左ボタンをクリックすれば確定する。ついで、頂点編集モードにて、

適当な長さにまで拡張したブロックの端点を選択した状態の上図にて、問題はこの点を円柱モデル上の点、たとえば下図

の選択点と、どうやって一致させるかという事。ここでポイントになるのが、中央の選択点の右にある赤白の破線の丸印で示されるカーソルです。これを使って選択点を所望の点と一致させます。

Meshメニューから、Snapを選択すると・・・

selectionをどうしたい、cursorをどうしたい、という選択肢が出てきます。ここまでくればおわかりでしょう・・・

まずは、カーソルを選択点(円柱のメッシュ点)に持っていきます(下図)。

この時点で、円柱を対象のEdit Mode になっていますが、Tabキーを押して、Object Mode にして、対象Objectを円柱からブロックに変更し、もう一度Tabキーを押して、再度Edit Modeに戻す。

そうすると、ブロックのEdit状態であるので、選択点はカーソルから離れて、ブロック上のどこかへ移動する。ここで、共有したい節点を選択し、再度、MeshメニューからSnapを選択

今度は、Selection to Cursor を選択してやれば、


上図のようになって、ブロックの角端点が、円柱のメッシュ点と一致してくれるようになる訳です。残りの3点も同様のやり方で円柱のメッシュ点と一致させる。さらに中央直方体の残り3つの側面も同じように拡張して、最終的に上のほうで見た5つのブロックが出来れば完成ということです。

 

blender on ubuntu 12.04

ubuntu 12.04 上で、blenderの表示不具合が生じる件について調べてみた。

 

ubuntu-12.04の実マシン上で動くblenderは問題ないが、仮想マシン上で動くblenderに問題あり・・・ということです。

仮想マシンは、いろいろな構成で試してみましたが同一症状でした・・・ので、OSの問題なのか、blenderの問題なのか、依然結論は出ませんが、ここしばらくは、こういうものだ・・・と思って使っていくしかなさそうです。

ちなみに上の画面キャプチャーは、

  • 実マシン(ubuntu 12.04 32bit) × VirtualBox(ubuntu 12.04 32bit)

にて実施したものですが、以下の構成でも確認しました。

  • 実マシン(ubuntu 10.04 64bit) × VmwarePlayer(ubuntu 12.04 64bit)
  •  実マシン(ubuntu 10.04 64bit) × VirtualBox(ubuntu 12.04 64bit)
  •  実マシン(Windows Vista 32bit) × VirtualBox(ubuntu 12.04 64bit)

 

 



SwiftSnap and SwiftBlock, GUIs for OpenFOAM’s meshers

一昨日、CFD Onlineにて発見した表題ツールですが、機能と使い方の概要が判って、自前サンプルでの動作確認も出来たので、まずは速報です。

下の図は、DEXCS for OpenFOAM(R) をご利用の人にはお馴染みの、仮想風洞試験を模擬したモデルです。blenderの画面構成が、従来のVer.2.49からVer2.5以降大幅に変更になっており、従来のモデルをそのまま読み込むこともできたのですが、サイドメニューなどの画面構成を下図のように再構築する方法がまだよく判っていないので、普通に新しいblenderを立ち上げて、モデルの3つのパーツをstl形式で個別にインポート(+基礎メッシュ部分は四辺形モデルに変更)し、blender形式で保存したものです。(⇒dexcs.blend)

この段階では、モデルの3つのパーツが用途に応じて別々のオブジェクトになっているという点が重要で、この点はこれまでのDEXCSでモデル作成していた場合と全く同じです。

さて、ここで表題のツールをblenderにインストールしてあれば、それらのツールを使って、blockMeshと、snappyHexMeshの設定を完了して下の図の状態になります。(⇒dexcsSwift.blend)

図中、モデルのパーツ毎に色分けされていますが、該当色の部分にそれなりの設定が織り込み済みだということです。

SwiftSnapでsnappyHexMeshDictとtriSurfacesデータを自動作成

ここで、モデルを開いたばかりの時点だと、中央のDEXCSフォントを選択した状態になっているはずです。表面がカラー表示の場合は、選択状態がわかりづらいので、Zキーを押して、透過表示にすると、下のような状態になって、DEXCSフォント部分が選択されていることがわかります。

加えるに、注目点は、右方、赤枠で囲った部分に、表題ツールのGUIメニューが構成されていることです。そして、現在はsnappyの対象となるオブジェクトを選択しているので、SwiftSnapのメニュー(②)が展開された状態になっています。この②の部分を拡大したのが下の図です。

ここで、①のwriteボタンを押せば、②〜④で設定済のパラメタを織り込んだsnappyHexMeshDictと、triSurfaceフォルダを作成し、その中にsnappyHexMeshを実行する際に必要となるstlデータなどを出力してくれるというものです。

  • snappyHexMeshDictの一部抜粋

  • triSurfaceフォルダに出来たファイル

SwiftBlockでblockMeshDictを自動作成

一方、モデル表示画面にて、下図のように、基礎メッシュ領域を選択すると・・・

右方のメニューブロックで、①のSwiftBlockの部分が展開されるようになります(SwiftBlockの設定が織り込み済みだということです)。②のSwiftSnapの部分はボタン化されています。

さて、ここSwiftBlockのメニュー部分で色分けされていますが、これはオブジェクトを色付き表示させれば(Zキーを押す)一目瞭然です。下図のようになっているはずです。

つまり、パッチを部分ごとに名前を付けて、境界条件のtypeも区別指定してあり、どこがどうなっているかは、この色で判別できるということです。

ここで、①のwriteボタンを押せば、上記設定を織り込んだblockMeshDictが作成できるということです。

  • blockMeshDictの一部抜粋

これまでのblockMeshDictExporterでは、この名前付まではやってくれなかったので、この後で、autoPatch⇒createPatch という手間をかける必要がありましたが、これがちゃんと使えれようになれば必要なくなるということです。

以上の動作確認ができるように、Swiftツール(表題の2つのツールをまとめてこう呼ぶことにする)による設定が織り込み前のモデル(dexcs.blend)と、織り込み後のモデル(dexcsSwift.blend)を、まとめて(⇒dexcsSwift.zip)ダウンロードできるようにしておいたので、興味のある方はblenderにSwiftツールをインストールして確認してみて下さい。

なお、本稿では、Swiftツールを使って具体的にどうやってパラメタ設定するかの方法についてまで説明しません。ツールに添付のマニュアル、もしくはwikiのページにも具体的なやり方までは書いてなくて、管理人が試行錯誤でやったもので、正しいやり方であったかどうかも怪しい、結果オーライものです。織り込み前のモデルから各自の方法でやってどうなるかも挑戦してみてほしい。

ここでは以下、Swiftツールを導入するに際しての注意点を記しておきます。

blenderのヴァージョン問題

CFD Onlineの記事中には、ヴァージョンが2.6.x、多分2.5.xでも大丈夫と書いてありまして現時点の最新版は、2.6.3です。しかし、どうもこの最新版ではうまく動かないようです。GUIでの設定などは問題なく出来そうですが、writeする時に、何やらエラーを吐き出して、Dictファイルを作成してくれません。管理人はubuntu10.04/11.10(64bit)と、Windows7(64bit)上の、blenderで、本症状を確認。2.6.1と、2.6.2で正常動作することを確認しました。

blenderは過去の全ヴァージョンが、http://download.blender.org/release/から入手できる。ubuntuの場合は、

blender-2.**-linux-glibc27-i686.tar.bz2(32bit版)

blender-2.**-linux-glibc27-x86_64.tar.bz2(64bit版)

を適当な場所で展開して出来たバイナリがそのまま動くので、それを使えば良い。

ubuntu-12.04上での問題

自分が試したubuntuの最新ヴァージョンでは、何故かオブジェクトモードでの表示が異常になる。透過表示では問題ないのだが、非透過(シェイディング)表示でほとんど何も表示されなくなってしまう。つまり、透過表示でオブジェクトの選択切り替え作業は出来るのだが、エディットモードでSwiftツールで設定したパラメタを、オブジェクトモードにて確認する際、モデルの表面色での確認が出来ないということ。

これには表示関係のあれこれ設定を変えてみたが解決せず、最後には本家の掲示板にも同様のトラブル情報を見つけることとなった。しかし、今日現在ではまだ解決策らしき回答が出ていないようなので、ここで諦めた。

ただ、ubuntu-12.04そのものの問題なのか、マシンに固有の問題なのか、vmwareの問題である可能性もある。もう少し調べてみるが、どちらの問題にせよ、しばらく様子見せざるを得ない状況。

Swiftツールのインストール方法

インストール方法は、

Untar files into your Blender add-on directory. Then start up Blender

In Blender’s User Preferences, enable ‘Community’ add-ons, and locate SwiftSnap under the OpenFOAM category. Click to enable. Locate STL file export/import and enable. Return to 3D view.

と簡単に書いてあるだけで、判る人には判るんだろうけど、始めての人には、戸惑うことが多いでしょう。自分でも、すぐには判らなかった。

Swiftツールをダウンロードして解凍して出来るフォルダを、下図のように、addonsフォルダの下に入れてから、blenderを起動する。

blenderを起動したら、File – User Preferences のメニューを選択

Addons のタブを選択すると、アドオンファイルの一覧がリストアップされている。

左側のカラムで種類ごとに区分できるので、OpenFOAMを選択すると下図のように、addonsディレクトリにインストールしたSwiftツールがリストアップされるはず。但し、このままでは有効になっていないので、

右端のチェクボックスを有効にして、Save As Default ボタンを押す。

最後に、Swiftツールのメニューウィンドウは、Propertyウィンドウの、

Objectボタンを押すと・・・

一番下の方に、Swiftツールが組み込まれているのが判ります。