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に入れ替えた場合、右のような計算結果になるということです。
したがって、これらの経時データを図化処理する際の、スクリプトにおいても、当該ファイルの参照場所を変更しないと使えないということです。これまでは、ケースファイルを開くとすぐに見えていた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”
で良かろ、ってことです。