メッシュの結合

2013年8月24日

はじめに

複数のメッシュを結合する方法について。

使用バージョン

OpenFOAM 2.2.1

ファイル

モデル

icoFoam のチュートリアルケース cavity をふたつにわけ、結合する。結合面でメッシュが一致する場合としない場合について考える。

とりあえず合体

mergeMeshes で複数のメッシュを合体できる。たとえば、ケース cavity1 と ケース cavity2 のメッシュを合体するには、つぎのようにすればよい。

$ cp -r cavity1 cavity12
$ mergeMeshes -overwrite cavity12 cavity2

メッシュの結合

メッシュが一致する場合

stitchMesh を使う

stitchMesh で面をくっつけることができる。

$ stitchMesh -overwrite internalWallRight internalWallLeft

cyclic を使う

結合面の境界タイプを cyclic にすれば、両者をつなぐことができる。changeDictionary を使うなら、つぎのようにする。

system/changeDictionaryDict

/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.2.1                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      changeDictionaryDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dictionaryReplacement
{
    boundary
    {
        internalWallRight
        {
            type            cyclic;
            neighbourPatch  internalWallLeft;
        }
        internalWallLeft
        {
            type            cyclic;
            neighbourPatch  internalWallRight;
        }
    }
}

// ************************************************************************* //

実行

$ changeDictionary

メッシュが一致しない場合

stitchMesh を使う

stitchMesh で面をくっつけることができる。

$ stitchMesh -overwrite internalWallRight internalWallLeft

cyclicAMI を使う

結合面の境界タイプを cyclicAMI (AMI: Arbitrary Mesh Interface) にすれば、両者をつなぐことができる。changeDictionary を使うなら、つぎのようにする。

system/changeDictionaryDict

/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2.2.1                                 |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      changeDictionaryDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

dictionaryReplacement
{
    boundary
    {
        internalWallRight
        {
            type            cyclicAMI;
            neighbourPatch  internalWallLeft;
        }
        internalWallLeft
        {
            type            cyclicAMI;
            neighbourPatch  internalWallRight;
        }
    }
}

// ************************************************************************* //

実行

$ changeDictionary

cyclic, cyclicAMI では、結合面のメッシュのずれの大きさによっては、matchTolerance を設定する必要が生じる場合がある。