setSet コマンド
setSetコマンドとは、任意のセルや面をまとめたセットを対話的に作成するユーティリティです。
これにより、メッシュ上の任意の領域に名前をつけて管理することができます。
以下はtutorials/incompressible/icoFoam/cavity/cavity で実行した例となります。
まずblockMeshコマンドにより、メッシュを作成します。
$ blockMesh
ここでは、メッシュをX方向に分割したセルゾーンを作成する手順を示します。
まず、setSetコマンドを実行します。
$ setSet
…
readline>
すると、最下行でカーソルが止まり、入力待ちの状態となります。
ここでは、以下のようにコマンドを入力していきます。
readline> cellSet inlet_side new boxToCell (0 0 0) (0.05 0.1 0.01)
readline> cellSet outlet_side new boxToCell (0.05 0 0) (0.1 0.1 0.01)
cellSetコマンドのnewにより、セルをまとめたセットが作成されます。
inlet_side, outlet_side はセットの名前であり、任意の名前をつけることができます。
boxToCellは2点の対角線とする六面体の領域を指定します。
この六面体の内部に含まれるセルがセットに含まれます。
これらのセットをcellZoneに変換するには以下のようにします。
readline> cellZoneSet inlet_zone new setToCellZone inlet_side
readline> cellZoneSet outlet_zone new setToCellZone outlet_side
これにより、cellZoneが作成され、constant/polyMesh/cellZonesに結果が出力されます。
また、setSetコマンドでは作成したセットやcellZoneをVTKファイルに出力しています。
VTKディレクトリ以下に名前ごとのディレクトリがあり、その中にvtkファイルが作成されています。
このvtkファイルをparaviewなどで読み込むことで、作成したセットを可視化して、
領域がどのように指定されたかを確認することができます。
図20はsetSetコマンド実行前の状態です。
図21は作成したセットのvtkファイルを読み込み、それぞれ色分けした図となっています。
コマンドで指定したように、X方向に分割されているのがわかります。
コマンドラインオプション
setSetコマンドはケースディレクトリ上で以下のように実行することで使用することができます。
$ setSet
setSetコマンドは、設定ファイルを用意する必要はありません。
ただ、setSetで使用するコマンドをファイルに書きだしており、
そのコマンドを一括で実行したい場合は以下のように-batchオプションにより実行することができます。
(make_cellZone.setSetがファイル名となります)
$ setSet -batch make_cellZone.setSet
オプションとしては、以下があります。
-batch <file>:fileを読み込み、書いてあるコマンドを実行します(対話式ではない)
-case <dir>:ケースディレクトリを指定します。デフォルトでは現在いるディレクトリです。
-constant:constantディレクトリにも適用します。
-decomposeParDict <file>:特定の場所からdecomposeParDictファイルを読み込む場合に使用します。
-latestTime:最新の時間ステップのみに適用します。
-loop:バッチコマンドをすべての時間ステップに対して実行します。
-newTimes:新しい時間ステップのみに適用します。
-noFunctionObjects:functionObjects を実行しないようにします。
-noSync:隣り合ったパッチを選択しないようにします。
-noVTK:VTKファイルを出力しないようにします。
-noZero:0ディレクトリを除外します。
-parallel:並列で実行します。
-region <name>:別のメッシュ領域を指定します。
-roots <(dirs)>:複数のケースを処理する場合にディレクトリを指定します。
-time <ranges>:指定した時間ステップ内に適用します。 設定例: ‘:10,20,40:70,1000:’
-srcDoc:ブラウザを用いてソースコードを表示します。
-doc:ブラウザを用いてドキュメントを表示します。
-help:ヘルプを表示します。
setSet内のコマンド
setSetコマンドは対話式であり、さまざまなコマンドを入力していくことで任意のセットを作成することができます。
基本的なコマンドは以下となります。
help | ヘルプを表示します。 |
list | 作成したセットやゾーンを一覧表示します。 |
quit | コマンドを終了します。 |
time <time ddd> | 時間ステップを変更します。 |
次に、セットを作成するコマンドです。
セットには3種類あります。
cellSetとfaceSet、pointSetであり、それぞれセル、面、点をまとめたセットとなります。
これらのコマンドには以下のように引数が必要となります。
readline> cellSet <setName> <action>
setNameは操作するセットの名前です。任意の名前をつけることができます。
actionにはセットに対して行う操作を指定します。
これには以下の操作があります。
list | セットの内容を表示します。 |
clear | セットの中身を削除します。 |
invert | 選択を反転します。これによりセットに含まれていない部分がセットになります。 |
remove | セットを削除します。 |
new <source> | sourceを元に新しくセットを作成します。 |
add <source> | 今あるセットにsourceを追加します。 |
delete <source> | セットからsourceを除外します。 |
subset <source> | セットの中からsourceを抽出してサブセットを作成します。 |
actionの一部の操作は引数sourceを必要とします。
sourceの指定には様々な方法がありますが、セルにおける代表的なものは以下となります。
boxToCell <p0> <p1> | 点p0と点p1を対角線とする六面体の内部のセルを指定します。 |
cellToCell <setName> | すでにあるセットを指定します。 |
面における代表的なものは以下となります。
boxToFace <p0> <p1> | 点p0と点p1を対角線とする六面体で面を指定します。 |
cellToCell <setName> | すでにあるセットを指定します。 |
patchToFace <patchName> | パッチにより面を指定します。 |
例として、以下のように実行します。(六面体領域内のセルを元にセットinlet_sideを作成します)
readline> cellSet inlet_side new boxToCell (0 0 0) (0.05 0.1 0.01)
セットをゾーンに変換するには以下のコマンドを使用します。
cellZoneSet <zoneName> <action> | cellZoneを操作します。 |
cellToCell <setName> | faceZoneを操作します。 |
actionには以下の操作があります。
new <source> | sourceを元にゾーンを作成します。 |
list | ゾーンの内容を表示します。 |
clear | ゾーンの中身を削除します。 |
invert | 選択を反転します。 |
remove | ゾーンを削除します。 |
newを使用する場合はsourceの指定が必要となります。
指定方法として以下の方法があります。
setToCellZone <setName> | セットからcellZoneを作成します。 |
setToFaceZone <setName> | セットからfaceZoneを作成します。 |
例として、以下のように実行します。(セットinlet_sideからcellZoneであるinlet_zoneを作成します)
readline> cellZoneSet inlet_zone new setToCellZone inlet_side
これらのコマンドによる結果はconstant/polyMeshディレクトリ以下やVTKディレクトリ以下に随時出力されます。
※このオプションはOpenFOAM V1612で動作を確認しています。お使いのバージョンによりましては、本ユーティリティならびにオプションが使えない場合がございます。