createPatch

2.1 createPatch

 

2.1.1 createPatch コマンドとは

createPatchコマンドとは、パッチやフェイスセットから境界面を作成するユーティリティです。

これにより、複数のパッチをまとめて境界面の名前や境界条件を設定することができます。

以下はチュートリアルの tutorials/incompressible/icoFoam/cavity/cavity において実行した例です。

具体的には、blockMeshDict内のboundary内の設定を削除したあとに、以下のコマンドを実行します。

 

  $ blockMesh  

  $ autoPatch 90 -overwrite  

 

blockMeshコマンドにより、計算領域全体の六面体メッシュを作成します。

autoPatchコマンドにより、計算領域の外側の面をパッチとして抽出します。

引数の90は面を区別するための角度になります。

これにより、図14,15のようなパッチ群が作成されます。

 

  

図14:元のパッチ1                    図15:元のパッチ2

 

その後、以下のコマンドにより境界面を作成することができます。

 

  $ createPatch -overwrite  

 

これにより、図16,17のようにパッチが統合され、境界面が作成されます。

比較するとわかるように、

  パッチauto0, auto1, auto2  —>  fixedWalls

  パッチauto3         —>  movingWall

  パッチauto4, auto5      —>  frontAndBack

にそれぞれまとめられているのがわかります。

またtypeも設定されているので、このままソルバーにより解析を行うことができます。

 

 

  

 図16:createPatchによる境界面の作成1           図17:createPatchによる境界面の作成2

 

 

2.1.2 コマンドラインオプション

createPatchコマンドを使用するには、system/createPatchDictファイルが必要となります。

このファイルがあるケースディレクトリ内で以下のコマンドを実行することで、境界面を作成することができます。

 

  $ createPatch  

 

オプションとしては、以下があります。

-case <dir> ケースディレクトリを指定します。デフォルトでは現在いるディレクトリです。
-decomposeParDict <file> 特定の場所からdecomposeParDictファイルを読み込む場合に使用します。
-dict <file> ディクショナリファイルを指定します。デフォルトではsystem/createPatchDictです。
-noFunctionObjects functionObjects を実行しないようにします。
-overwrite すでにあるファイルに上書きして設定を反映させます。
-parallel 並列で実行します。
-region <name> 別のメッシュ領域を指定します。
-roots <(dir1 .. dirN)> 複数のケースを処理する場合にディレクトリを指定します。
-writeObj マッチング処理を示すobjファイルを作成します。
-srcDoc ブラウザを用いてソースコードを表示します。
-doc プラウザを用いてドキュメントを表示します。
-help ヘルプを表示します。

 

 

2.1.3 createPatchDict ファイル

createPatchを実行するには、createPatchDictファイルが必要となります。

createPatchDictファイルは /applications/utilities/mesh/manipulation/createPatch にあります。

以下の内容は、実行するのに用いた設定です。

matchTolerance 1E-3; //許容される誤差(オプション)

// Do a synchronisation of coupled points after creation of any patches.

// Note: this does not work with points that are on multiple coupled patches

// with transformations (i.e. cyclics).

//パッチ作成後に点の位置を調節するかどうか

//cyclicのように複数のパッチにまたがる場合は機能しない

pointSync true;

 

// Patches to create. //パッチを作成する

patches 

(

  {

    // Name of new patch //作成するパッチ名

    name movingWall; 

 

    // Dictionary to construct new patch from

    patchInfo

    {
      
type wall;  //タイプを指定

      //type cyclic;

      //neighbourPatch n_patch;  //cyclicの場合は隣のパッチを指定

      //transform rotational;  //どのようにパッチ同士をあわせるか

      //rotationAxis (1 0 0);  //テンソルで指定

      //rotationCentre (0 0 0);

      //transform translational;

      //separationVector (1 0 0);

    }

 

    // How to construct: either from ‘patches’ or ‘set’

    //パッチ作成元をpatchesかsetを選択する

    constructFrom patches; 

 

    // If constructFrom = patches : names of patches. Wildcards allowed.

    //patchesの場合はパッチ名(ワイルドカード使用可)

    patches (auto3); 

      //setの場合はfaceSetの名前を指定

      //set s0;

  }

  {

    name fixedWalls;

    patchInfo

    {

      type wall;

    }

    constructFrom patches;

    patches (auto0 auto1 auto2);

  }

  {

    name frontAndBack;

    patchInfo

    {

      type empty;

    }

    constructFrom patches;

    patches (auto4 auto5);

  }

);

 

それぞれの項目について説明します。

 

・matchToleranceは、許容誤差を指定します。

・pointSyncは、パッチを作成した際に点の位置を調節するかどうかを指定します。

  これは、単一のパッチ内でのみ機能するもので、パッチのtypeにcyclicを指定した場合は、

  複数パッチにまたがるので調節は行われません。

・patchesは、リスト内に作成するパッチを指定します。

  それぞれのパッチは、ブロックで分けて記述します。

・nameには、パッチの名前を指定します。

・patchInfoには、パッチの詳しい情報を設定します。

・typeでは、パッチのタイプを指定します。

  patch, wall, cyclicなどが指定出来ます。

  cyclicを指定した場合には、どのパッチと接続するかを指定する必要があります。

・constructFromでは、パッチの作成元を指定します。

  パッチから作成する場合はpatches、フェイスセットから作成する場合はsetを指定します。

・patchesやsetでそれぞれの作成元を指定します。

  patchesの場合はワイルドカードを使って指定をすることができます。