surfaceFeatureExtract コマンド

surfaceFeatureExtract コマンドとは、表面形状ファイルから特徴線を抽出するユーティリティです。

この特徴線データを用いることで、よりよい精度のメッシュ作成を行うことができます。
以下は、OpenFOAM のチュートリアルである motorBike で使用した例です。
tutorials/resources/geometryから[motorBike.obj.gz]を
tutorials/incompressible/simpleFoam/motorBike/constant/triSurfaceの中にコピーします。
ケースディレクトリ内で以下のコマンドを実行します。

  $ surfaceFeatureExtract 

constant/triSurface ディレクトリ内に、motorBike.eMesh が作成されます。
図4 は元の motorBike.obj に、抽出した特徴線を赤色の線で重ねて表示しています。
特徴線によって、形状の輪郭が抽出出来ていることがわかります。

図 4: motorBike と特徴線
コマンドラインオプション

surfaceFeatureExtract コマンドを実行するには、surfaceFeatureExtractDict ファイルが必要となります。
コマンドは以下のようになります。

 $ surfaceFeatureExtrac 

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

-case <dir>:ケースディレクトリを指定します。デフォルトでは現在いるディレクトリです。
-dict <file>:ディクショナリファイルを指定します。
-noFunctionObjects:functionObjects を実行しないようにします。
-srcDoc:ブラウザを用いてソースコードを表示します。
-doc:ブラウザを用いてドキュメントを表示します。
-help:ヘルプを表示します。

surfaceFeatureExtractDict ファイル

surfaceFeatureExtract コマンドを実行するには、surfaceFeatureExtractDict ファイルが必要となります。
内容としては、以下のようになります。

motorBike.obj
{
  // How to obtain raw features※どのように特徴線を抽出するか (extractFromFile※特徴点ファイルから抽出 ||
  // extractFromSurface※表面形状ファイルから抽出)
  extractionMethod   extractFromSurface;

  extractFromSurfaceCoeffs
  {
    // Mark edges whose adjacent surface normals are at an angle less
    // than includedAngle as features※隣り合った面の法線のなす角が includedAngle 以下の場合に特徴線とみなす
    // – 0 : selects no edges※- 0 : どのエッジも選択しない
    // – 180: selects all edges※- 180: すべてのエッジを選択する
    includedAngle   150;
  }

  subsetFeatures
  {
    // Keep nonManifold edges※nonManifold エッジを残すかどうか (edges with >2 connected faces)
    ※それぞれ異なる法線を持っている面によって2つより多くの面に接しているエッジ
    nonManifoldEdges   no;

    // Keep open edges ※開かれたエッジを残すかどうか(edges with 1 connected face)※1つの面のみにつながっているエッジ
    openEdges   yes;
  }
  // Write options※出力オプション

    // Write features to obj format for postprocessing※ポストプロセッシング用に特徴線を obj 形式で出力する
    writeObj   yes;
}

以下、主要な設定についての説明です。

まず、元となる表面形状ファイルを指定します。
 上記の例では OpenFOAM のチュートリアルに含ま れている motorBike.obj を指定しています。

extractionMethod では、特徴線の抽出方法について指定します。
 extractFromSurface では、表面形状か ら特徴線を抽出します。
 extractFromFile では、別に用意した特徴線ファイルによって抽出します。

includedAngle では、特徴線を抽出する際の面同士の角度のしきい値を指定します。
 ここで指定した 角度より面の法線のなす角が小さい場合は特徴線として抽出されます。

nonManifoldEdges では、連続でないエッジの扱いについて指定します。
 yes の場合は2つより多い面に接している線も特徴線とします。

openEdges では、開かれたエッジの扱いについて指定します。
 yes の場合は1つの面にしか属していない線も特徴線とします。

writeObj では、ポストプロセッシング用に抽出した特徴線を obj 形式で出力するかどうかを指定します。
 これにより、抽出した特徴線を可視化することができます。

※このオプションはOpenFOAM V1612で動作を確認しています。お使いのバージョンによりましては、本ユーティリティならびにオプションが使えない場合がございます。