DEXCS2012 for OpenFOAM(R) 特別版

6月20日(木)に実施される、オープンCAEワークショップ2013の講習会で使用予定の、表記のisoイメージが完成、DVD焼付けを依頼中です。

同日より、会場もしくは、オープンCAE学会のWebサイトにて販売される予定です。

ここでは、公開版の同梱プログラムとの違いについて整理しておきます。ご質問、不具合情報などは、本スレッドにぶら下げて(コメント投稿して)下さい。

 ヴァージョンアップしたもの

新規に追加したもの

その他、特記事項

  • 当初、OpenFOAMのヴァージョンアップだけを予定していたのですが、ヴァージョンアップに伴って、ケースパラメタ設定ファイルの変更などがあった為、DEXCSランチャーや、TreeFoamにおいても、ヴァージョンアップ対応が必要になりました。
  • 講習会にて「OpenFOAMのためのメッシュ生成入門」として、様々なメッシュ作成演習が実施されることになり、オープンソースのメッシュツールも、講習では使用しないものも含めて各種組み込むこととしました。
  • サイズが3.8GBとなってしまい、そろそろライブDVDとしてのサイズ限界に近づいてきました。
  • 本isoイメージを使って、仮想マシンを作成するには、ディスク容量として一般的なデフォルトサイズ20GBでは足りません。最低でも25GBは必要になるようです。

 

 

FreeCADメモ:回転押し出しでbendingPypeを作ってみた

範囲を選択_080

流れ計算のベンチマーク問題でよく見かける形状(たとえば、こちら)ですが、これをFreeCADで作成してみました。 モデルダウンロードは⇒こちら

使用ヴァージョン

範囲を選択_093

使い慣れたCADがあれば、ごく簡単にできるもので、管理人もblenderで作成するならば、10分もあれば出来てしまう問題です。

しかしながら、blenderには後述する様々な問題があって、今回はFreeCADに挑戦してみたということです。

なおFreeCADも最近はマニュアルも日本語化され、様々なチュートリアル(たとえば、こちら)も出まわるようになってきたので、何とかなるだろう・・・と思って取り組みを開始。またFreeCADを日常的にお使いの人であれば、これも簡単に出来たことだったかもしれないのですが、管理人のようにたまにしか使わない人間にとっては、コツを掴むまでに半日以上の試行錯誤があってようやくという、まだまだハードルの高い問題でした。しかも、これも1週間もすれば忘れてしまいそうな内容なので、ここにメモとして記しておくことにしました。

 

 この問題での使用法ノウハウ

  1. 曲がりパイプの作成方法
  2. 曲がりパイプと短径の直パイプの結合

くらいですが、このうち、2.の部分は、FreeCADを使ったことがあるという人にとっては、ごく簡単で問題ないので、ここでは記しません。

曲がりパイプの作成方法

基本的には、

スケッチ画面で断面形状(この場合は円)を描いて、ストレート部分は単純押し出し、曲がり部は回転押し出しでつなげていく。

ということで良く、単純に押し出した端面を直接操作するのでなく、端面で新たにスケッチを作成するというひと手間が必要という面はあるのですが、回転押し出しにはコツが必要だったというか、機能に制限があったということです。

回転押し出しの留意点:回転軸は固定?

多分、普通にCADを使っている人であれば(blenderでもそうですが)、回転押し出しの回転軸や押出角度は自由に設定できるであろう・・・という先入観でモデルを作成してしまいがちですが、FreeCADの場合、回転軸は水平軸もしくは垂直軸しか選べないということです。

そこはマニュアルにも記してあるのですがね。ただ、そこには

ただしPropertiesテーブルを使うと任意の軸を定義することができます。

ということも記してあったので、その方法をいろいろ探ってみたのですが、さっぱりわかりませんでした。メニューらしきものはあったのですが、キー入力を受け付けてもらえなく、まだ開発途上ということかもしれません。

ということで、スケッチ画面で断面形状を作成する場合には、最初から回転軸の位置を想定した部位に断面形状を配置しておく必要があったということです。

回転軸が水平軸もしくは垂直軸しか選択できないということが判った上でモデル作成すれば、何のことはなかったかもしれませんが、関連してもう1点制限があったので、手こずったところです。

エラー:Revolve axis intersect the sketch

たとえば、以下のようなスケッチ画面の例で、緑色の円を回転押し出ししたいという場合、

範囲を選択_084

 

垂直軸で回転押し出ししようとすると、、、

範囲を選択_089

 

以下のようになってしまう。

範囲を選択_088

「回転軸がスケッチと交錯する」といわれているんだが、それがどうした?!という感でしたね。この例の場合、水平軸の回転押し出しはちゃんと作成してくれたので、ここにきて交錯した場合には作成できない!ということがようやくわかった次第です。

実は、最初に始めたのが、回転軸が固定の意味も判らないまま、スケッチ軸原点を中心にした円を作成して作業していたので、この場合は、どう頑張っても作成出来ないということで、このエラーの意味に悩みました。

 

その他の問題

つぎに押し出した端面で新たにスケッチを作成する必要があるのですが、この作業にはちょっとしたコツというか、FreeCADのGUIにはまだまだ洗練されていない部分があるようです。

参照線(既存形状の輪郭線)の選択

端面を選択して、スケッチ図を作成する場合に、その端面の輪郭線を参照線にしてスケッチ図を作成するのが効率的で食い違いなく押し出しできます。

範囲を選択_097

問題は、この輪郭線を選択するのが難しい場面があったことです。

範囲を選択_094

 

解決策は、単純で、図形を拡大して選択しましょう・・・でした。

範囲を選択_096

マウスの操作モード

デフォルトの操作モードは、とくに物体を回転させる方法が面倒くさくて、そういう場合を想定してか、Inventor navigation というモードも用意されており、これを使うとParaViewと同じような一般的なマウスの操作方法で画面操作ができるのですが・・・

範囲を選択_092

このままだと、前節の端面の選択が出来なかったり、スケッチモードで、部品が配置出来なかったりします。

判っていれば、どうってことない問題ですぐ対処できますが、慣れるのにしばらく経験が必要のようです。

 モデルエクスポートの問題

igesは駄目ですね。stepにしましょう。Netgenですべてデフォルトのままメッシュ作成してみました。

igesの場合

NETGEN - -home-et-Desktop-mixing_elbow-mixing_elbow3.igs_098

 

stepの場合NETGEN - -home-et-Desktop-mixing_elbow-mixing_elbow2.stp_099

但し、Netgenの場合、igesで上記のようになったとしても、

Geometry > IGES/STEP Topology Explore/Doctor… > Heal geometry

のメニューを実行すれば、stepとほぼ同じ結果にはなってくれます。

また、stl(エクスポートでMesh formats を選択)はバイナリ形式なので、このままでは上のNetgenや、OpenFOAMでは使えません。別途ツールでアスキー形式に変換する必要があります。

(6/10 追記)

メッシュメニューで、 「図形からメッシュを作成する」を実行すれば、同じメッシュメニューから、「ExportMesh」することができ、こちらの方法であれば、アスキー形式の出力も可能でした。

 

blenderのモデル作成上の問題

なんといってもマウス操作が独特で、CAE分野の一般的なソフトの中にあって特異で、馴染めない人が多い。

ポリゴン(多面体)形式で形状を作成するので、本例のような円筒面や球といった、滑らかな曲面は作成できない。メッシュ分割を細分化しても、ポリゴンの分割線はそのまま残ってしまう。

 

 

forces problem on OpenFOAM-2.2.x

DEXCS2012 for OpenFOAM-2.1.x をお使いの人で、OpenFOAMを最新の2.2.xで使いたいという人向けの情報です。

(DEXCS2012 for OpenFOAM-2.2.xは、6月のオープンCAEワークショップの開催記念に、特別版にてリリース予定です)

基本的に、OpenFOAMを入れ替えて、DEXCSランチャーや、TreeFOAMのソースコード中、OpenFOAMの環境指定部分を2.1.xから、2.2.xに変更してやれば使えるようになります(詳細は別記事としてアップ予定)。

但し、DEXCSランチャーの標準問題(DEXCSフォント周りの流れ解析)において、OpenFOAMのヴァージョンアップに伴って、表題のforcesやprobes出力など、FunctionObjectに関する仕様変更があった為、これらデータを図化する為のテンプレートケースを変更する必要がありました(変更概要を以下に記しますが、詳細は別記事としてアップ予定)。

OpenFOAM-FunctionObjectの仕様変更

OpenFOAMでは、controlDict中に、

functions
(
forces
{
type                forces;
functionObjectLibs  ( “libforces.so” );
outputControl       timeStep;
outputInterval      1;
patches             (Dexcs_ExportedfromBlender-2.64(sub0));
pName               p;
UName               U;
rhoName             rhoInf;
log                 true;
rhoInf              1.225;
CofR                (0.25 0.007 0.125);
}
)

など記しておけば、上の場合、指定したpatchに加わるforces(流体力)を 出力させることができるようになっていますが、OpenFOAM-2.2.0 以降、この仕組みが少々変更されました。

従来は、ケースフォルダ中に、forcesというフォルダが作成され、その中に時系列データとして出力されていましたが、2.2以降は、postProcessingというフォルダが作成され、その下に、その他のfunctionで指定した、probeやsampleなどのデータも併せて出力されるようになりました。FunctionObjectで出力されるデータを1つのフォルダにまとめて、参照しやすくしたということでしょう。

下図は、DEXCSの標準ケース(DEXCSフォント周りの流れ計算)でのケースファイルの階層を示しており、DEXCS2012 for OpenFOAM において、OpenFOAMを2.2.xに入れ替えた場合、右のような計算結果になるということです。

範囲を選択_052

 

したがって、これらの経時データを図化処理する際の、スクリプトにおいても、当該ファイルの参照場所を変更しないと使えないということです。これまでは、ケースファイルを開くとすぐに見えていたforcesやprobesというフォルダがpostProcessingというフォルダの下に隠れてしまって、使えなくなってしまったのか?と勘違いしたところでもあります。

蛇足ながら、swak4Foamを使った類似出力は従来通りです。

 何が問題か

実は、patcheの名前を指定している部分、

patches             (Dexcs_ExportedfromBlender-2.64(sub0));

これが云うことを聞いてくれなくなってしまいました。このpatchの名前は、場の計算をする際に、boundaryの名前としてちゃんと有効になっていることは間違いないのですが・・・

色々調べた結果、名前の中にかっこ記号を含んでいなければ、問題ないことはわかったんですが、まぁ、仕様変更に伴って生じたバグといってよいものでしょう。ただバグレポートを見てもそれらしいものは上がっていません。そもそもpatchの名前の中にかっこ記号を含めるまでは、普通しないだろうから、まだ誰も気づいていない、ということだとは思いますがね。

また、それじゃpatchの名前の中に、かっこ記号を含めなければいいじゃん! ということにもなるのですが、問題は、blenderを使ってエクスポートしたstlファイルを使うと、どうしてもかっこ記号が付いてしまうということです。patch名中の、_ExportedfromBlender-2.64(sub0)の部分は、blenderが勝手に付けた部分です。

 で、どうする/したか?

ま、一番まっとうな方策は、バグレポートを上げて、OpenFOAMの本体を直してもらうことですが、英語能力の問題もあって、そこは何方かにやってもらうことにして、ここで記しておくのは、DEXCSでは、こういう対処が出来たということです。DEXCSでは、どうせblenderもSwiftツール込みのカスタマイズ版として組み込んであるので、ついでにpatch命名部分もカスタマイズしてしまおう、ということです。

ただ、さすがにblender本体のカスタマイズにまでは手を出せませんが、blenderでstlファイルをエクスポートする部分はaddonスクリプトでやっていることは想像できたので、ここを調べることは、さほど難しくありませんでした。

スクリプトは、scripts/addons/io_mesh_stl/sti_utils.py があって、この中で、 89行目あたり、

def _header_version():
import bpy
return “Exported from Blender-” + bpy.app.version_string

として、この部分がpatchの命名に関わってくることがわかりました。なので、ここを変えてやれば良い。具体的には、

def _header_version():
import bpy
#return “Exported from Blender-” + bpy.app.version_string
return “Exported from Blender”

で良かろ、ってことです。

 

OpenFOAMによる熱解析の基礎講座 ~1人1台PC実習付~

講習テキストより

表題の講習会を、来る4月3日に東京、JTC(日本テクノセンター)で実施します。有料で、個人で受講するには、約5万円と少々お高いですが、興味のある方は受講下さい。 ⇒ セミナー申し込みページ

内容は、熱解析の具体例サンプルを同梱したDEXCS for OpenFOAM(R) の特別版を使用して、拙事業で実施している、OpenFOAMの初心者向け体験コースをベースに、この熱解析事例を併せて実習できるようにしたものです。

冒頭のイメージは、テキストの一部を抜粋したものですが、熱解析の事例としては、ヒートシンクをとりあげ、製品カタログに示された実測値との比較も実施しています。

DEXCS2012 for OpenFOAM(R) Winkチュートリアル その2と3

DEXCS2012からは、ランチャーでメッシュ作成する際にSwiftツール使う方法を採用することとした為、これまでのやり方とは大きく変更になります。ようやくチュートリアルも出来たのでここに公開です。

その2(Swiftツールの使い方)

その3(メッシュ作成)

  • Winkチュートリアルはこちら
  • 従来は、メッシュ1(blockMesh作成)とメッシュ2(snappyHexMesh作成)の2つのタグメニューを使ってやっていましたが、一つのタグメニューの中でやれるようになりました。
  • SwiftSnapでは現在のところ、cellZone指定できないという問題もありますが、DEXCSツール(snappyDictExporter.pyの改良版)で補完する方法についても解説しています。

今後の予定

  • winkチュートリアルとしては、残り2つ。計算実行の部分と後処理の部分ですが、これらは従来のやり方とほとんど変更はない為、いよいよゴールは見えてきた・・・の感です。
  • その他、Blenderの画面やメニューが、従来と大きく変更になったいる為、使用法マニュアルも更新する必要がありそうです。
  • snappyDictExporter.pyの改良版ですが、上記用途(SwiftSnapの不足機能補完)に使えるべく、必要最小限は実装できているのですが、もう1点改良したい部分(対象ケースのsnappyHexMeshDictファイルから、細分化パラメタを読み込む機能を実装すること)があり、これをどうするか思案中。(2012/12/7 実装はほぼ完了)