OpenFOAMチュートリアルCavityカスタマイズ:blockMeshDictを編集して複数のブロックを結合する方法

まくまく
まくまく
OpenFoamではじめての流体解析をしてみましょう。公式チュートリアルにあるcavityカスタマイズ編の続きです。今回はブロックの形状変更を行います。blockMeshDictを編集して複数のブロックを結合してみようと思います。



OpenFoamチュートリアルcavityについて

cavity流れについては以下の記事で書いていますので、まずはこちらを参照ください。>>>OpenFoamではじめての流体解析 まずはキャビティ流れを確認する

前回の記事と今回のゴール

前回までの記事で、cavityをカスタマイズして左から右へ流体が流れるようにしました。こちらの記事を参照ください。本記事ではこの記事に記載しているコードをベースにしています>>>OpenFOAMチュートリアルCavityカスタマイズ:流路長さを変更


こんな感じで左が流入側、右が流出側です。上下は壁です。

前回までは単純な長方形の解析領域だったため、ひとつのブロックのみを設定していましたが今回はもう一つブロックを加えて形状を変更してみようと思います。積み木のように矩形形状を組み合わせるだけなら、blockMeshの設定でなんとかなりそうです。

尚、本シリーズはOpenFoamの使い方に慣れることを目的としているので、解析の正確性などを保証するものではなく、まずは設定を変更して流体の流れを変えること。この実現をゴールとします。(試行錯誤して行っていますので余計な記載や、変更が十分でないところがあることご了承願います。また環境やバージョンによって結果が異なる可能性もあります。)

cavityのファイル構成を確認

まずはcavityのファイル構成を確認しましょう。


フォルダは「0」「constant」「system」の3つです。

「0」フォルダ:初期条件のファイルを含むフォルダです。初期速度、圧力など。

「constant」フォルダ:定数パラメータを含むフォルダです。物理的な特性など。

「system」フォルダ:計算の制御や設定を含むフォルダです。時間ステップの設定、ソルバーの選択、解析制御ファイルの作成方法など。

system – blockMeshDict

systemフォルダにあるblockMeshDicファイルから編集していきましょう。

今回はブロックを追加するためverticesに頂点を8つ追加、blocksにhex(六面体)をひとつ追加しました。

vertices
(
    (0 0 0) // 0
    (3 0 0) // 1
    (3 1 0) // 2
    (0 1 0) // 3
    (0 0 0.1) // 4
    (3 0 0.1) // 5
    (3 1 0.1) // 6
    (0 1 0.1) // 7

    (3 0.25 0) // 8
    (6 0.25 0) // 9
    (6 0.75 0) // 10
    (3 0.75 0) // 11
    (3 0.25 0.1) // 12
    (6 0.25 0.1) // 13
    (6 0.75 0.1) // 14
    (3 0.75 0.1) // 15
);

blocks
(
    hex (0 1 2 3 4 5 6 7) (60 20 1) simpleGrading (1 1 1)
    hex (8 9 10 11 12 13 14 15) (60 10 1) simpleGrading (1 1 1)
);

あと、boundaryも修正します。patch1とpatch2を追加して、これらが後述する共有面になります。

boundary
(
    inlet
    {
        type inlet;
        faces
        (
            (0 4 7 3)
        );
    }
    outlet
    {
        type outlet;
        faces
        (
            (10 14 13 9)
        );
    }
    fixedWalls
    {
        type wall;
        faces
        (
            (3 7 6 2)
            (1 5 4 0)
            (11 15 14 10)
            (9 13 12 8)
        );
    }
    patch1
    {
        type wall;
        faces
        (
            (2 6 5 1)
        );
    }
    patch2
    {
        type wall;
        faces
        (
            (8 12 15 11)
        );
    }
    frontAndBack
    {
        type empty;
        faces
        (
            (0 3 2 1)
            (4 5 6 7)
            (8 11 10 9)
            (12 13 14 15)
        );
    }
);

mergePatchPairsも加えます。ここで共有面を結合します。

mergePatchPairs
(
        (patch1 patch2)
);

あとは初期条件のUとpにpatch1を追加して任意の値を設定します。では、さっそく実行してみましょう。

実行


メッシュはこんな感じです。


流速を可視化してみました。形状の変更は成功です。比較的シンプルな形状なら、矩形の組み合わせで作成できますし、3次元CADからSTLを書き出して実行するより良いかもしれませんね。

OpenFOAMの使い方はこちらで体系的に学ぶことができます。

タイトルとURLをコピーしました