changeDictionary

2017年5月23日

はじめに

changeDictionary についてのメモ。

使用バージョン

OpenFOAM 4.1

changeDictionary

changeDictionary は、辞書ファイルを書き換えるために使えるユーティリティである。実行には system/changeDictionaryDict が必要である。

たとえば、境界 frontAndBack の境界タイプを wall に設定したい場合、つぎのようなファイルを用意する。

system/changeDictionaryDict

FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      changeDictionaryDict;
}

boundary
{
    frontAndBack
    {
        type wall;
        inGroups 1(wall);
    }
}

※注意: 古いバージョンの OpenFOAM だと、boundary の部分を dictionaryReplacement という辞書の中に入れる必要がある。

dictionaryReplacement
{
    boundary
    {
        ...
    }
}

実行

$ changeDictionary

これで constant/polyMesh/boundary の内容が書き換わる。

フィールドファイルも変更できる。

U
{
    internalField uniform (1 0 0);

    boundaryField
    {
        inlet
        {
            type fixedValue;
            value uniform (1 0 0);
        }
    }
}

キーワードを削除したい場合は、チルダ (~) を用いる。

U
{
    boundaryField
    {
        inlet
        {
            type zeroGradient;
            ~value;
        }
    }
}

上の例の場合、境界条件タイプを fixedValue から zeroGradient に変更しても value が残るので、"~value" で value を削除している。

changeDictionary はオプションなしだとフィールドファイルは 0 ディレクトリのものが用いられるが、オプション "-time" や "-latestTime" で時刻を指定することもできる。

オプション

マルチリージョンの場合は、changeDictionaryDict を system のリージョンのディレクトリに入れ、changeDictionary をリージョンごとに実行する必要がある。

$ changeDictionary -region air

changeDictionaryDict で "#include" などを使う場合は、オプション "-enableFunctionEntries" を用いる。

$ changeDictionary -enableFunctionEntries

changeDictionaryDict で、古いバージョンの OpenFOAM 同様に設定を辞書 dictionaryReplacement の中に書きたい場合は、オプション "-subDict" を用いる。

$ changeDictionary -subDict dictionaryReplacement