cavity(OpenFOAMのチュートリアル)を試す

はじめに

昨日、OpenFOAMとParaViewをインストールして、ポアズイユ流れ(Hagen-poiseuille flow)をシミュレーション・可視化を試してみた。今回は書籍に従って、OpenFOAM組込みのチュートリアルの中からcavityを実行してみた。

情報源

  • OpenFOAMの歩き方 - 昨夜ネットを見ていて、OpenFOAMをきちんと理解するためにも、この書籍が欲しくなったので、初めてKindle版を購入した。ペーパーバックの書籍より安いし、直ぐに読めるのが魅力。今回試すcavityもこの書籍を参考に実施した。

OpenFOAMによるシミュレーション

情報源の書籍の「第3章 チュートリアルケース」に従って、実行した。なお、動作環境については昨日の投稿を参照されたい。

チュートリアルを作業領域にコピー

以下の通り、~/tutディレクトリ配下にcavityディレクトリ配下をコピーする。

foam@382d42eb836b:~/tut$ cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity . 
foam@382d42eb836b:~/tut$ openfoam2406
openfoam = /usr/lib/openfoam/openfoam2406

 * Using:     OpenFOAM-v2406 (2406) - visit www.openfoam.com
 * Build:     _9bfe8264-20241212 (patch=241212)
 * Arch:      label=32;scalar=64
 * Platform:  linux64GccDPInt32Opt (mpi=sys-openmpi)

OpenFOAM shell session - use 'exit' to quit

openfoam2406:~/tut/
foam$ cd cavity
openfoam2406:~/tut/cavity/
foam$ ls -l
total 12
drwxr-xr-x 2 foam foam 4096 Jan  6 00:03 0
drwxr-xr-x 2 foam foam 4096 Jan  6 00:03 constant
drwxr-xr-x 2 foam foam 4096 Jan  6 00:03 system
openfoam2406:~/tut/cavity/
foam$ ls -l */*
-rw-r--r-- 1 foam foam 1143 Jan  6 00:03 0/U
-rw-r--r-- 1 foam foam 1104 Jan  6 00:03 0/p
-rw-r--r-- 1 foam foam  867 Jan  6 00:03 constant/transportProperties
-rw-r--r-- 1 foam foam 1262 Jan  6 00:03 system/PDRblockMeshDict
-rw-r--r-- 1 foam foam 1447 Jan  6 00:03 system/blockMeshDict
-rw-r--r-- 1 foam foam 1188 Jan  6 00:03 system/controlDict
-rw-r--r-- 1 foam foam  917 Jan  6 00:03 system/decomposeParDict
-rw-r--r-- 1 foam foam 1210 Jan  6 00:03 system/fvSchemes
-rw-r--r-- 1 foam foam 1314 Jan  6 00:03 system/fvSolution

メッシュを作成

作成するメッシュの定義は、system/blockMeshDictに記述。その説明が書籍に続くので読む。読み終わって、次のとおりメッシュを作成する。

foam$ blockMesh
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2406                                  |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : _9bfe8264-20241212 OPENFOAM=2406 patch=241212 version=2406
Arch   : "LSB;label=32;scalar=64"
Exec   : blockMesh
Date   : Jan 06 2025
Time   : 01:16:51
Host   : 382d42eb836b
PID    : 867
I/O    : uncollated
Case   : /home/foam/tut/cavity
nProcs : 1
trapFpe: Floating point exception trapping enabled (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 5, maxFileModificationPolls 20)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Creating block mesh from "system/blockMeshDict"
Creating block edges
No non-planar block faces defined
Creating topology blocks

Creating topology patches - from boundary section

Creating block mesh topology - scaling/transform applied later

Check topology

	Basic statistics
		Number of internal faces : 0
		Number of boundary faces : 6
		Number of defined boundary faces : 6
		Number of undefined boundary faces : 0
	Checking patch -> block consistency

Creating block offsets
Creating merge list (topological search)...

Creating polyMesh from blockMesh
Creating patches
Creating cells
Creating points with scale (0.1 0.1 0.1)
    Block 0 cell size :
        i : 0.005 .. 0.005
        j : 0.005 .. 0.005
        k : 0.01 .. 0.01

No patch pairs to merge

Writing polyMesh with 0 cellZones
----------------
Mesh Information
----------------
  boundingBox: (0 0 0) (0.1 0.1 0.01)
  nPoints: 882
  nCells: 400
  nFaces: 1640
  nInternalFaces: 760
----------------
Patches
----------------
  patch 0 (start: 760 size: 20) name: movingWall
  patch 1 (start: 780 size: 60) name: fixedWalls
  patch 2 (start: 840 size: 800) name: frontAndBack

End

計算実行

次のとおりソルバを実行する。

foam$ icoFoam
/*---------------------------------------------------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  2406                                  |
|   \\  /    A nd           | Website:  www.openfoam.com                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
Build  : _9bfe8264-20241212 OPENFOAM=2406 patch=241212 version=2406
Arch   : "LSB;label=32;scalar=64"
Exec   : icoFoam
Date   : Jan 06 2025
Time   : 02:49:03
Host   : 382d42eb836b
PID    : 868
I/O    : uncollated
Case   : /home/foam/tut/cavity
nProcs : 1
trapFpe: Floating point exception trapping enabled (FOAM_SIGFPE).
fileModificationChecking : Monitoring run-time modified files using timeStampMaster (fileModificationSkew 5, maxFileModificationPolls 20)
allowSystemOperations : Allowing user-supplied system call operations

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Create time

Create mesh for time = 0


PISO: Operating solver in PISO mode

Reading transportProperties

Reading field p

Reading field U

Reading/calculating face flux field phi


Starting time loop

*** omitted in the middle ***

Time = 0.5

Courant Number mean: 0.222158 max: 0.852134
smoothSolver:  Solving for Ux, Initial residual = 2.3091e-07, Final residual = 2.3091e-07, No Iterations 0
smoothSolver:  Solving for Uy, Initial residual = 5.0684e-07, Final residual = 5.0684e-07, No Iterations 0
DICPCG:  Solving for p, Initial residual = 8.63844e-07, Final residual = 8.63844e-07, No Iterations 0
time step continuity errors : sum local = 8.8828e-09, global = 4.94571e-19, cumulative = 1.10417e-17
DICPCG:  Solving for p, Initial residual = 9.59103e-07, Final residual = 9.59103e-07, No Iterations 0
time step continuity errors : sum local = 9.66354e-09, global = 1.13175e-18, cumulative = 1.21735e-17
ExecutionTime = 0.31 s  ClockTime = 2 s

End

ポスト処理

ParaViewで読み込むため、次のとおりfoamファイルを作成する。

foam$ touch cavity.foam
foam$ ls -l
total 32
drwxr-xr-x 2 foam foam 4096 Jan  6 00:03 0
drwxr-xr-x 3 foam foam 4096 Jan  6 02:49 0.1
drwxr-xr-x 3 foam foam 4096 Jan  6 02:49 0.2
drwxr-xr-x 3 foam foam 4096 Jan  6 02:49 0.3
drwxr-xr-x 3 foam foam 4096 Jan  6 02:49 0.4
drwxr-xr-x 3 foam foam 4096 Jan  6 02:49 0.5
-rw-r--r-- 1 foam foam    0 Jan  6 02:53 cavity.foam
drwxr-xr-x 3 foam foam 4096 Jan  6 01:16 constant
drwxr-xr-x 2 foam foam 4096 Jan  6 00:03 system

ParaViewによる可視化

cavity.foamを読込む

MacでParaViewを起動し、NFSマウントしているcavity.foamファイルを読込む。次のイメージは、読込んだ直後のParaViewのスクリーンショットである。

cavity01

速度場の表示

情報源に従って、Color Map Editorでカラーマップを変更、等高線図(コンタ)の色分け数を(11に)変更し、流速ベクトル表示したスクリーンショット。

cavity02

まとめ

以上のように、情報源で紹介した書籍に従って、一つのチュートリアルを実行した。書籍に記述された一連の流れを追っていくことで、OpenFOAMとParaViewの理解を深めることが出来た。

書籍の例をもう一つ追って、更に理解を深めたい。