パッチの作成2015年1月26日 | |
はじめにメッシュの特徴面からパッチを作成する。 使用バージョンOpenFOAM 2.3.1 パッチの作成icoFoam のチュートリアルケース cavity で実演する。 $ cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity . blockMesh がパッチを作らないように constant/polyMesh/blockMeshDict の boundary を空にする。 constant/polyMesh/blockMeshDict
...
convertToMeters 0.1;
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 0.1)
(1 0 0.1)
(1 1 0.1)
(0 1 0.1)
);
blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
);
edges
(
);
boundary
(
);
mergePatchPairs
(
);
メッシュの作成。 $ blockMesh autoPatch を使ってメッシュの特徴面から自動的にパッチを作る。 $ autoPatch 90 引数にはパッチを区別するための角度を与える。時間ステップが 1 つ進んだディレクトリが作成され、そこに新しいメッシュが入る。paraFoam を起動し、時間を 1 つ進めてから "Apply" を押す。"Mesh Parts" で全項目を選び、"Patch Names" にチェックを入れるとパッチ名が表示されるので、思ったようにパッチが作られているか確認する。また、位置と名前の対応もチェックする。 問題なさそうなら、autoPatch を上書きで実行する。 $ autoPatch 90 -overwrite autoPatch は "auto0"、"auto1" といった名前のパッチを作る。これらから適当な名前のパッチを作る。そのためには createPatch を使う。まず、system/createPatchDict を用意する。 system/createPatchDict
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object createPatchDict;
}
pointSync false;
patches
(
{
name inlet;
patchInfo
{
type patch;
}
constructFrom patches;
patches (auto0);
}
{
name outlet;
patchInfo
{
type patch;
}
constructFrom patches;
patches (auto1);
}
{
name wall;
patchInfo
{
type wall;
}
constructFrom patches;
patches (auto2 auto3);
}
{
name frontAndBack;
patchInfo
{
type empty;
}
constructFrom patches;
patches (auto4 auto5);
}
);
createPatch を実行。 $ createPatch autoPatch 同様、時間ステップが 1 つ進んだディレクトリが作成され、そこに新しいメッシュが入る。paraFoam でパッチ名を確認する (0 ディレクトリのせいで起動に失敗するので、一時的に 0 ディレクトリの名前を変える)。問題なければ、createPatch を上書きで実行する。 $ createPatch -overwrite createPatch を使えば、セットからパッチを作ることもできる。たとえば、auto4、auto5 からセット f0 を作る。 setBatch faceSet f0 new patchToFace auto4 faceSet f0 add patchToFace auto5 setSet を実行。 $ setSet -batch setBatch createPatchDict で次のように設定する。 createPatchDict
...
{
name frontAndBack;
patchInfo
{
type empty;
}
constructFrom set;
set f0;
}
);
| |
| PENGUINITIS | |