データのマッピング

2015年1月8日

使用バージョン

OpenFOAM 2.3.0

データのマッピング

あるケースの計算データを別のケースへとマッピングするには、mapFields を使う。mapFields を使うには、ケースディレクトリの system/mapFieldsDict を用意する。

mapFieldsDict

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      mapFieldsDict;
}

patchMap        ( );

cuttingPatches  ( );

たとえば、icoFoam のチュートリアルケース cavity の計算結果をもう 1 つの cavity の初期値に設定するには、次のようになる。

$ cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity .
$ blockMesh -case cavity
$ cp -r cavity cavity2
$ icoFoam -case cavity
$ gedit cavity2/system/mapFieldsDict

... mapFieldsDict を用意 ...

$ mapFields cavity -sourceTime latestTime -case cavity2

最後のコマンドでマッピングを行っている。mapFields の第 1 引数はデータをもってくるケースのディレクトリ、オプション "-sourceTime latestTime" はデータの参照先として最後の時刻を指定している。任意の時刻を指定することもできる。上の例では cavity の 0.5 の結果を cavity2 の 0 にマッピングしている。

形状が同じものにマッピングする場合、-consistent オプションにより mapFieldsDict なしで mapFields を実行できる。

パッチの名前がケース間で異なる場合は、mapFieldsDict の patchMap で対応するパッチを指定する。

patchMap        (fixedWalls2 fixedWalls);

形状が異なるメッシュ間でパッチにマッピングさせる場合は、mapFieldsDict の cuttingPatches を使用する。たとえば、cavity3 として cavity の blockMesh の convertToMeters を 0.05 にしたものを用意する。mapFieldsDict の cuttingPatches を次のように設定する。

cuttingPatches  (movingWall fixedWalls);

結果が下図である。

注意: マッピングさせたいパッチのタイプを fixedValue にしておく必要がある。

オプション "-mapMethod" で以下のようなマッピング手法を指定できる。

  • cellVolumeWeight (default)
  • direct
  • mapNearest