gmsh / gnuplot / openfoam / paraviewによる open...

28
Gmsh / Gnuplot / OpenFOAM / ParaView による Open Source CAE Suite for Windows 建築分野向けチュートリアル 大嶋 拓也 新潟大学工学部 D R A F T 2008 年 4 月 18 日版 分割版〔第 2章〕

Upload: phamngoc

Post on 12-Mar-2018

239 views

Category:

Documents


3 download

TRANSCRIPT

Page 1: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

Gmsh / Gnuplot / OpenFOAM / ParaView による

Open Source CAE Suite for Windows建築分野向けチュートリアル

大嶋 拓也新潟大学工学部

D R A F T2008年 4月18日版

分割版〔第 2章〕

Page 2: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

目次

基礎事項11 31.1 数値シミュレーションとは 31.2 微分とは 31.3 微分方程式とは 41.4 解析解の求め方 41.4.1 一般解 4

1.4.2 初期条件・特殊解 4

1.5 数値解の求め方 41.5.1 離散化 4

1.5.2 差分方程式の解法 5

1.5.3 離散化誤差 6

1.6 偏微分方程式・メッシュ・セル・境界条件 81.6.1 偏微分方程式 8

1.6.2 メッシュ 9

1.6.3 境界条件 9

1.7 シミュレーションの手順 101.7.1 プリプロセッシング 10

1.7.2 解析実施 10

1.7.3 ポストプロセッシング 11

1.8 本チュートリアルで使用するソフトウエア 111.8.1 Gmsh 11

1.8.2 OpenFOAM 12

1.8.3 ParaView 12

1.8.4 Gnuplot 12

キャビティ流れの解析 121 52.1 概要 152.2 CFD とは 152.3 支配方程式 162.4 解析対象 162.5 解析の実行手順 172.5.1 FoamX の起動 17

2.5.2 メッシュの作成 18

2.5.3 境界条件・初期条件の作成 21

2.5.4 動粘性係数の設定 22

2.5.5 実行条件の設定 22

2.5.6 データの保存 23

2.5.7 メッシュの確認 23

2.5.8 解析の実行 24

2.5.9 結果の表示 24

2.5.10 流線を描く 27

2.6 速度成分のプロット 282.6.1 sample ユーティリティの実行 28

2.6.2 Gnuplot による抽出したデータのプロット31

2.7 メッシュの分割数を上げる(コマンドラインによる操作) 32

2.7.1 ケースのコピー 32

2.7.2 blockMeshDict ファイルの編集とメッシュの

生成 34

2.7.3 初期値と境界条件の確認 34

2.7.4 物性値の確認 35

2.7.5 実行条件の制御 36

2.7.6 メッシュの確認 37

2.7.7 解析の実行 37

2.7.8 結果の確認 37

2.7.9 速度成分のプロット 38

高層ビル周り気流の解析 431 13.1 概要 413.1.1 本章解析ケースの紹介 41

3.1.2 解析ケース概要 42

3.2 メッシュの作成 423.2.1 等間隔メッシュの作成 44

3.2.2 メッシュの再分割 46

3.2.3 メッシュの再々分割 49

3.2.4 建物内のメッシュの除去 50

3.2.5 高層建物周辺のメッシュ再分割 51

3.2.6 高層建物内のセルを取り除く 54

3.2.7 低層建物周辺メッシュの再分割 55

3.3 初期値の設定・実行条件の設定 573.4 ソルバの実行 583.5 実行結果の確認 583.5.1 ベクトルプロットの作成 59

3.5.2 流線のプロット 61

3.6 風洞実験結果との比較 63

Page 3: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

2

15

2 キャビティ流れの解析

概要2.1 「キャビティ」とは、「キャビティ流れ」とは、空洞の内部の流れのことである。本章では、図 2.1

のような空洞の周囲の壁の一部を動かしたときに、空洞内部の流体がどのように動くかを解析する。

流体の流れを解くシミュレーションとして、一般に最もポピュラーなケースである。なお、解析する個々

の問題のことを、ケースという。流体シミュレーションソフトウエアの性能評価や操作法習熟のため

の例題として、ほぼ必ず使われる問題である。

CFD とは2.2 流体とは、外から加えられた力に対して容易に変形する物質のことであり、一般には液体および気

体を指す。流体力学は、その流体の挙動に関する力学である。われわれの身近に普遍的に存在する

空気・水が流体であることからもわかるように、流体力学の応用範囲は非常に幅広い。具体的には、

航空機・自動車・鉄道車両・船舶・ターボ機械等の開発・設計、土木分野における水理計算、建

築分野における環境アセスメント、気象予報、さらには医学における人体血管内流れの解析におい

ても流体力学は活用されている。

これら流体にかかわる諸現象を数値シミュレーションによって解明したり、その数値シミュレーショ

ン手法そのものを研究する学問分野を、計算流体力学、ないし数値流体力学という。英語で称すれ

ば Computational Fluid Dynamicsであり、略して CFDと呼ばれている。CFDでは、流体の挙動を

表す支配方程式を書き下したコンピュータプロ

グラムを実行することで、コンピュータ内に流

れ場を再現し、諸現象の解明や予測を行う。

さらに先端的な応用では、流体物質間の化学

反応(エンジン内部の燃焼問題など)、固体と

の力学的な相互干渉問題(構造物と流体の連

成問題)なども解く。

流体の力学的な状態を決める物理量は流体

の速度および圧力である。したがって最も基

本的な CFDの目的は、流れの各点でのこれ

ら速度と圧力の値を求めることと言える。

キャビティ流れの解析

キャビティ流れ図 2.1

u = 1 m/s

1 m

1 m

x

Fixed wall

Moving wall

y

Page 4: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

16

支配方程式2.3 CFDで解く流れ場の支配方程式は、大別して流体の圧縮性、すなわち密度変化を考慮したものと、

非圧縮性、すなわち密度変化を考慮しないものに分けれられる。液体の流れ場を解析する場合は、

通常は非圧縮性の流体として扱う。気体の場合は、流れのマッハ数、すなわち音速 c0に対する流れ

場の代表的な速度 Uの比

M =U

c0 (2.1)

によって分けられる。概ねマッハ数が 0.3以下では非圧縮性、それ以上では圧縮性の支配方程式を

解く必要があるとされる。常温、1気圧における音速はおよそ 343 m/sであるので、圧縮性・非圧

縮性の境界となる流速は概ね 100 m/sとなる。したがって、高層建築物における風荷重解析および

周辺風環境アセスメント、室内通風・気流解析、給排水管内流れなど、建築分野で行われるCFD

は概ね、非圧縮性の支配方程式を解くと考えてよい。本チュートリアルでも、非圧縮性流体の支配

方程式を解く。

三次元の空間座標を (x, y, z)、空間座標 (x, y, z)および時刻 t における流体速度の x、y、z軸成分

を u、 v、w、圧力を pとすると、非圧縮性流体の支配方程式は、以下の連続の式および運動方程式

を連立した連立偏微分方程式となる。

∂ u

∂ x+

∂ v

∂ y+

∂ w

∂ z= 0 (2.2)

∂ u

∂ t+ u

∂ u

∂ x+ v

∂ u

∂ y+w

∂ u

∂ z=

∂ p

∂ x+ ν

∂ 2u

∂ x2+

∂ 2u

∂ y2+

∂ 2u

∂ z2

∂ v

∂ t+ u

∂ v

∂ x+ v

∂ v

∂ y+w

∂ v

∂ z=

∂ p

∂ y+ ν

∂ 2v

∂ x2+

∂ 2v

∂ y2+

∂ 2v

∂ z2

∂ w

∂ t+ u

∂ w

∂ x+ v

∂ w

∂ y+w

∂ w

∂ z=

∂ p

∂ z+ ν

∂ 2w

∂ x2+

∂ 2w

∂ y2+

∂ 2w

∂ z2

(2.3)

ここでνは流体の動粘性係数であり、この値が大きいほど「粘り気が強い」流体である。動粘性係

数は粘性係数μ、および密度ρを用いて以下で表される。

ν =µ

ρ (2.4)

動粘性係数の値は流体ごとに定まり、空気の場合 1.5× 10- 5 m2/s、水は 1.0× 10- 5 m2/sである。

解析対象2.4 図 2.1に示した、一辺 1 mの壁面で囲まれた、正方形空洞内の流れを解析対象とする。壁面のう

ち一辺は、壁面と平行に 1 m/sで駆動される。動粘性係数は 0.01 m2/sとする(空気や水より粘り気

が非常に強いことになる)。

なお、流れの現象の規模を表す代表的な大きさを Lとすると、以下の無次元数はレイノルズ数と

呼ばれる。

Page 5: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

17

2 キャビティ流れの解析

Re =U L

ν (2.5)

異なる代表的スケールまたは代表流速域の流体現象であっても、レイノルズ数が等しければ相似

な現象であるとされる。本ケースでは

Re =1m/s× 1m

0.01m2/s= 100 (2.6)

となる。

解析の実行手順2.5 OpenFOAM で は、

ケースごとにそのケース

専用のフォルダを作成す

る。このフォルダのこと

を以下、ケースフォルダ

と呼ぶ。本ケースでは解

析に必要な入力データの

ほとんどが既に準備され

ており、以下のフォルダ

に存在する。

z:\OpenFOAM\run\tutorials\icoFoam\cavity

各ケースフォルダの下は、図 2.2に示す構成になっている。サブフォルダ名 0の下には解析上の時

刻 0におけるデータ、すなわち初期条件および境界条件が格納される。解析結果データは、データ

を書き出す各時刻ステップをフォルダ名とするフォルダに格納される。例えば、時刻ステップ 1ごと

にデータを書き出せば、1、2、3、...と名付けられたサブフォルダが作成される。constantサブ

フォルダには、時間によって変化しない各種の

定数などが格納される。本ケースの場合、動粘

性係数を記したデータがこのフォルダに格納さ

れる。さらにconstantサブフォルダの下には、polyMeshサブフォルダにメッシュデータが格

納される。systemサブフォルダには、解析終

了時刻、時間刻み、離散化手法などの解析実

行条件が格納される。

FoamX の起動2.5.1 

OpenFOAMでは前述のとおり、FoamXとい

うアプリケーションを使用して操作する方法、テ

ケースフォルダ

0

1

...

constant

polyMesh

system

初期条件、境界条件

各時刻ステップの解析結果データ

時間によって変化しない、各種定数など

メッシュ設定ファイル、メッシュデータ

実行条件(解析終了条件、時間刻みなど)

(解析実行時に作成されるので、最初は存在しない)

ケースフォルダの構成図 2.2

ケースを開く図 2.3

1.

2.

3.

1.、2.、3. の順にダブルクリック

Page 6: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

18

キストエディタによって設定ファイルを

編集し、キーボードからのコマンド入

力の組合せで操作する方法の 2とおり

が用意されている。ここでは比較的初

心者向けの FoamXによる操作を行っ

てみよう。

まず、FoamXを起動する。Windows

の〔スタート〕メニューから〔すべて

のプログラム〕▶〔OpenFOAM〕▶

〔FoamX〕を選択する。

FoamXが起動したら、図 2.3のよう

にホスト名をダブルクリックし、さらに

〔$FOAM_RUN/tutorials/icoFoam〕▶〔cavity〕をダブルクリックすると、キャビティ流れの解析ケー

スが開く。

メッシュの作成2.5.2 

ここでは図 2.1の解析領域を x軸、y軸方向ともに 20分割したメッシュを作成する。なお、図 2.1

に示すとおり、解析ケース自体は 2次元の問題であるが、OpenFOAMでは必ず 3次元で作成する

必要がある。そのため 2次元問題のメッシュを作成する場合は、z軸方向についてはセル数を 1とし

て、寸法を適当に決める。ここでは z軸方向の寸法を 0.1 mとする。

メッシュの作成にはメッシュ作成専用のソフトウエアを使用するなど、様々な方法があるが、ここで

はOpenFOAM付属の blockMeshユーティリティを使用する。まず、直方体形状をした解析領域の

8つの端点に、図 2.4のように 0番から 7番までの番号を振る。OpenFOAMにおいては、番号は 0

番から始まることに注意されたい。ついで、OpenFOAMでは全ての境界面に名前を付ける必要があ

るので、同図のとおり名付ける。なお、各部位に区切られた境界面のことを、パッチ(patch)という。

以上を blockMeshの設定ファイルにすると以下のようになる。なおこのファイルは、ケースフォル

ダの下の

constant\polyMesh\blockMeshDict

である。

/*---------------------------------------------------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox || \\ / O peration | Version: 1.4 || \\ / A nd | Web: http://www.openfoam.org || \\/ M anipulation | |\*---------------------------------------------------------------------------*/

FoamFile{

x

z

y

0 (0, 0, 0)

4 (0, 0, 0.1)

1 (1, 0, 0)5 (1, 0, 0.1)

6 (1, 1, 0.1)7 (0, 1, 0.1)2 (1, 1, 0)3 (0, 1, 0)

movingWall

�xedWalls

frontAndBack

解析領域のメッシュ分割図 2.4

Page 7: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

19

2 キャビティ流れの解析

version 2.0; format ascii;

root ""; case ""; instance ""; local "";

class dictionary; object blockMeshDict;}

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

convertToMeters 1; ←縮尺の設定(以下の座標を 1倍 = 原寸大)

vertices ←解析領域の端点座標の設定( (0 0 0)  ← 0番目の端点座標 (1 0 0)  ← 1番目 (1 1 0)  ← 2番目 (0 1 0)  ← 3番目 (0 0 0.1) ← 4番目 (1 0 0.1) ← 5番目 (1 1 0.1) ← 6番目 (0 1 0.1) ← 7番目);

blocks ←解析領域端点をどのように結んで解析領域を作成し、メッシュ分割するかを設定( hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)); 8つの端点を結んで直方体(hexahedron)を作成し、x、y軸に沿った各辺を等間隔に 20分割

edges ←端点どうしを曲線で結ぶ場合の設定。本ケースでは使用しない();

patches ←境界面の設定( wall movingWall ←上端の壁は壁面(wall)。movingWallと名づける。 ( (3 7 6 2) ←上端壁面の端点番号。解析領域内側から見て時計回り(以下同様)。 ) wall fixedWalls ←左右、下端の壁面は fixedWallと名づける。 ( (0 4 7 3) ←左側壁面の端点番号 (2 6 5 1) ←右側壁面 (1 5 4 0) ←下端壁面 ) empty frontAndBack ← 2次元問題を 3次元で扱うためのダミー境界面なので、空(empty)。 ( (0 3 2 1) ← back側の面 (4 5 6 7) ← front側の面 )

Page 8: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

20

);

mergePatchPairs ←複数ブロック作成時、接続する境界面の設定。本ケースでは使用しない();

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

blockMeshDictの内容を確認したら、図 2.5のとおり、FoamX画面で〔cavity〕をマウスの右ボ

タンでクリック▶〔Foam Utilities〕▶〔mesh〕▶〔generation〕▶〔blockMesh〕を選択して、

blockMeshプログラムを走らせる。

すると図 2.6の画面が開くので、〔Execute〕ボタンをクリックする (ここで〔Edit dictionary〕ボタ

ンを押すと blockMeshDictファイルを編集することが出来るが、ここでは編集不要 )。blockMeshの

実行が終わったら、ケースフォル

ダの下の constant\polyMesh

デ ィ レ クト リ に boundary、faces、neighbor、owner、pointsというファイルが作成

される。これらがメッシュファ

イルである。メッシュファイルは

〔Mesh〕を右クリックして〔Read

Mesh&Fields〕をクリックして読み

込む。

blockMesh プログラムの選択図 2.5

1.

1. を右クリック▶ 2. を左クリック▶図 2.6 の blockMesh 実行後、3. を 右 ク リ ッ ク ▶〔Read Mesh&Fields〕を選択

2.

blockMesh の実行図 2.6

constant

polyMesh

boundary

faces

neighbor

owner

points

メッシュファイル図 2.7

3.

Page 9: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

21

2 キャビティ流れの解析

境界条件・初期条2.5.3 

件の作成

 メッシュを読み込

ん だ ら、 図 2.8 に 示

す〔Mesh〕の左側の鍵

マークをクリックして、さ

ら に〔Patches〕 の 左

側の鍵マークをクリッ

クする。〔movingWall〕、

〔 f i x e d W a l l s 〕

〔frontAndBack〕 を ダ

ブルクリックして、それ

ぞれメッシュ生成時に

blockMeshDict で 指 定

したとおり、boundary

type が〔wall〕、〔wall〕、

〔empty〕となっていることを確認する。これらが境界条件の種類となる。

つぎに境界値と解析領域内部の初期値を指定する。〔Fields〕の左側の鍵マークをクリックすると、

〔U〕、〔p〕の 2項目が現れる。〔U〕は速度、〔p〕は圧力に関する項目である。まず〔U〕をダブルクリッ

クし、〔Internal Field Value〕をクリック、さらに右端の〔...〕をクリックして現れる画面で〔uniform 0.0

0.0 0.0〕となっていることを確認する。これは解析領域内部の速度の初期値が全て 0であることを示

している。次に同様に〔movingWall〕をクリック、今度は速度の x成分が 1.0となっていることを確

認する。これは x軸方向に 1.0 m/sで動く壁を境界条件として指定したこと示す。〔fixedWall〕は固定

された壁という境界条件なので、全て 0であることを確認する。

〔p〕については初期値のみを指定する。〔Internal Field Value〕が 0であることを確認する。

これらの境界条件・初

期条件はケースフォルダ

の下の 0というフォルダ

に作成される。各変数に

つき 1つのファイルが、

変数の名前をファイル名

として作成される。本ケー

スでは U、pが作成され

る。

境界条件・初期条件の設定図 2.8

5.

1.2.

3.

6.

1.、2. をクリック▶ 3. を上から順にダブルクリックして境界条件を確認▶ 4. をクリック▶ 5. をダブルクリック▶ 6. をクリック

4.

controlDict の設定項目図 2.9

赤丸で囲んだ 3 項目が重要

Page 10: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

22

動粘性係数の設定2.5.4 

動粘性係数の設定は〔Dictionaries〕▶〔transportProperties〕の左側の鍵マークをクリックし、〔nu〕

をダブルクリックすると現れる画面で〔0.01〕が指定されていることを確認する。

実行条件の設定2.5.5 

時間刻みなどの実行条件は〔Dictionaries〕▶〔controlDict〕で設定する。設定項目は多数あるが、

特に重要なのは〔endTime〕、〔deltaT〕、〔writeInterval〕の 3項目である。

〔endTime〕では、解析を終了する解析上の時刻を設定する。ここでは〔5.0〕(5 s)を設定する。

〔deltaT〕では時間刻みを設定する。一般には時間刻みを大きく取れば計算時間は少なくて済むが、

シミュレーションの精度は悪くなる。また本ケースでは、以下の式を満たすように時間刻みを設定し

なければならない。

C =|U |∆t

∆x< 1 (2.6)

ここでUは解析領域内の最大値、Δtは時間刻み、Δxは流体が流れる方向のセル幅である。この C

の値をクーラン数という。上式は直感的に解釈すると、「時間刻みごとの流体の移動距離が、セルの

幅を超えてはならない」ことを表している。本ケースに限らず、多くのシミュレーションでクーラン数

による時間刻みの制限が存在する。本ケースでは想定されるUの最大値をmovingWallの移動速度

の 1.0 m/sと見積もり、Δx = 1.0 / 20 = 0.05 mとして Δtを見積もると

∆t <∆x

|U |=

0.05

1.0= 0.05 [s]

(2.7)

となるので、この値をセット

する。

〔writeInterval〕では、 時

間刻みを何回進める度に解

析結果を保存するかを指定す

る。例えば 20と設定すると、

計算が 0.05× 20 = 1 s進む

ごとに解析結果を保存するこ

とになる。時間刻みを進め

る度に解析結果を保存すると

データ量が大量になり、また

保存処理にも余分な時間が

かかるので、通常はこの程度

の値を使用する。 gmshFoam の起動画面図 2.10

1. をクリック▶〔Options〕をクリック

1.

Page 11: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

23

2 キャビティ流れの解析

データの保存2.5.6 

以上の設定が終わったら、FoamX画面

上端のフロッピーディスクのアイコンをク

リックして設定を保存する。

メッシュの確認2.5.7 

これで解析を実行する準備が整った

が、その前にメッシュと初期条件を表示

して確認しておこう。図 2.5と同様にして

〔cavity〕で右クリック▶〔Foam Utilities〕

▶〔gmshFoam〕をクリックし、さらに

〔Execute〕をクリックすると、図 2.10の

画面が現れる。

図 2.10の赤丸で囲んだ部分をクリッ

クし、開いたメニューの一番下の項目

〔Options...〕をクリックすると、図 2.11

の画面となる。図で示した通りに順にクリッ

クしていくと、図 2.12のようにメッシュが

表示される。図 2.12では、メッシュの色が圧力の値、矢印の大きさと色が速度の値を表している。

圧力は解析領域全体で 0となっており、速度はmovingWallの境界面速度のみ矢印の色から 1となっ

ている。よってメッシュ、初期条件、境界条件が正しくセットされていることがわかる。

gmshFoamを終了するには、〔File〕▶〔Quit〕を選択する。

1.

2.

1. をクリック▶2. をクリックして

〔Dimension - 2〕を選択

Options 画面図 2.11

メッシュ表示図 2.12

Page 12: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

24

解析の実行2.5.8 

解析を実行するには、FoamX画面上端の を

クリックする。本ケースは非常に小さなケースなので、

解析は数秒で終了する。

結果の表示2.5.9 

解析が終了したら、結果を表示させてみよう。2.5.7節と同じ手順で gmshFoamを起動する。

グラフィック画面の表示角度・表示サイズのリセット、時刻ステップ間の移動は、図 2.13に示すよ

うに、グラフィック表示ウインドウ下端のボタンで操作する。計算終了時刻の 5 sまでコマ送りで見ると、

時刻によってあまり変化しないほぼ一定の状態、つまり定常状態に落ち着いていくことがわかる。

さらに解析領域境界面に囲まれて内部が見えないので、図 2.14のように、解析領域を切断面によっ

て薄切りにして内部が見えるようにする。解析領域の切断面を設定するには、まず切断面の方程式

Ax +By +C z +D = 0 (2.8)

アニメーション・画面リセットボタン図 2.13

再生

コマ戻し最初に戻す

コマ送り

縮尺を戻す

回転をリセット時刻

切断面の設定図 2.14

1. 2.

3.1. を選 択 ▶ 2. の View[0]、[1]、[2]を Shift+ クリックで選択▶ 3. のとおり入力▶ 4. をクリックして完了

x

z

y

法線ベクトル(0, 0, -1)

残す領域

取除く領域

切断面(z = 0.05)

切断面の設定図 2.15

4.

Page 13: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

25

2 キャビティ流れの解析

の形で決める必要がある。ここでは z軸方向の解析領域中心である z = 0.05の面で切断することとす

ると、A、B、C、Dの組合せは、C、Dの符号によって

(A,B ,C , D) = (0,0,1,−0.05), (0,0,−1,0.05) (2.9)

の 2とおりが存在することになる。gmshFoamの場合、「平面の法線ベクトル (A, B, C)の向いている

方向の解析領域が切断後に残され、法線ベクトルと逆方向の解析領域が切り取られる」仕組みになっ

ているので、画面手前側が切り取られるように法線ベクトルとしては (0, 0, -1)を指定することになる。

従って A、B、C、Dの組合せは

(A,B ,C , D) = (0,0,−1,0.05) (2.10)

に決まる。

このように決まった切断面を入力するには、図 2.15左のように〔Tool〕メニューから〔Clipping

Planes〕を選択し、続いて現れる図 2.15右の画面で A、B、C、Dの値を入力する。すると図 2.16

のように、内部の速度ベクトルが見えるようになる。図中の解析領域内の塗り潰しは、色で圧力を表

している。青色が圧力の低い部分を、赤色が圧力の高い部分を表している。矢印は流体の速度ベク

トルで、矢印の大きさと色で速度の大きさ(速さ)を表している。圧力は解析領域左上で低く、画

面右端で高くなっていることがわかる。速度ベクトルの表示からは、流体が解析領域全体を周回する

渦を描いており、渦の中心は解析領域やや右上寄りにあることが読み取られる。速さは解析領域上

端のmovingWallの近くが大きく、解析領域左右下端で小さくなっていることがわかる。なお phiは、

セル間の界面を流れる流体の流量(フラックス)を表す。

解析結果の切断表示図 2.16

流体の速度ベクトル。色と大きさは速度の大きさ(速さ)を表す(青 = 遅い、赤 = 速い)

解析領域内の塗り潰された面の色は圧力を表す。(青= 圧力が低い、赤 = 高い)

Page 14: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

26

1.

4.

3.

流線描画の設定図 2.17

2.

1. をクリックして、描画を消す▶ 2. をクリックしてメニューを表示し、さらに〔Plugins...〕を選択▶ 3. を選択▶ 4. のとおり入力▶ 5. をクリック▶ 6. をクリックして完了

5. 6.

Page 15: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

27

2 キャビティ流れの解析

流線を描く2.5.10 

今度は、解析領域内に散布した粒子が、流体と共に運動したときに描く軌跡を描いてみよう。この

ような軌跡のことを、流線という。流線の計算原理は、粒子の初期位置 (x, y, z) = (x0, y0, z0)を適当

に決定し、式 (1.11)を x、y、zそれぞれについて計算する。さらに各時刻における粒子位置の間を

直線で結ぶことで、近似的に流線が計算される。ただしこのとき、式 (1.4)では定数であった速度 U0

は、各時刻での粒子の位置を含むセルにおける速度の値が使用される。

まず、流線を見やすいように、図 2.17の手順 1.で圧力・速度・フラックスの描画を消去し、手順 2.、

3.で、流線描画設定画面を表示させよう。粒子は、点 (X0, Y0, Z0)を起点とする 2つのベクトル

U = (X1,Y1,Z1)− (X0,Y0,Z0),

V = (X2,Y2,Z2)− (X0,Y0,Z0) (2.11)

によって張られる平面に均等に配置される。ここでは、解析領域全体に均等に粒子を配置することに

すると、

(X0,Y0,Z0) = (0,0,0.05),

(X1,Y1,Z1) = (1,0,0.05),

(X2,Y2,Z2) = (0,1,0.05) (2.12)

座標軸の表示設定図 2.18

1.

2.

3.

4.

5.

6.1. をクリックしてメニューを表示し、さらに

〔Options...〕を選択▶ 2. をクリック▶ 3. で〔Box〕を選択▶ 4. のチェックマークを消す

▶ 5. のとおり入力▶ 6. をクリックして完了

Page 16: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

28

とするのがよい。粒子の個数は、U、V

方向ともに 10個ずつ、平面全体で合計

10× 10 = 100個とする。時間刻みは式

(2.7)と同様の理由から 0.05秒とし、100

時刻ステップを計算することにすると、ちょ

うど解析終了時刻の 5 sまで計算されるこ

とになる。

以上の数値を図 2.17のように入力し、

〔Run〕をクリックする。さらに、このま

までは解析領域の境界が判らず見辛いの

で、図 2.18に示すとおりに操作して箱型

の座標軸を表示させる。そして再生ボタ

ンをクリックすると、流線描画のアニメー

ションが開始される。

100ステップ経過後の最終状態は図

2.19のようになる。色は各粒子の初期位

置からの移動距離で、青は移動距離の短

い部分、赤は移動距離の長い部分を表す。

画面上端のmovingWall以外の壁面近くでは一般に流れが遅く、また画面左右下端のほか、中央や

や右上の渦中心部にも、流体がほとんど動かず、淀みとなっている部分があることがわかる。

画像を保存するときは、〔File〕▶〔Save As...〕をクリックして現れる画面で、〔Format:〕に〔PNG

(*.png)〕を選択し、〔Filename:〕欄に保存したいファイルの名前を入力する。ただし、ファイル名の

最後を必ず .pngとすること。

以上で、解析の手順をひととおり実行したことになる。

速度成分のプロット2.6 本ケースは、キャビティ流れの信頼できる解析データを提供す

る論文の一つとされる、文献 [2.1]における Re = 100のケースと

同一の解析対象となっている。文献 [2.1]では、x = 0.5 mの断面

における速度の x成分、および y = 0.5 mの断面における速度の

y成分が与えられている(図 2.20)。これらの値と本ケースの同断

面における速度成分を、グラフにプロットして比較してみよう。

sample ユーティリティの実行2.6.1 

解析領域内のデータを、ある線分に沿って抽出(サンプリング)

するには sampleユーティリティを、ある断面に沿って抽出するに

流線表示画面(最終状態)図 2.19

淀み

x

z

y

y = 0.5 m

x = 0.5 m

データの抽出面図 2.20

Page 17: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

29

2 キャビティ流れの解析

は sampleSurfaceユーティリティを使用する。本ケースは二次元なので、x = 0.5 m、y = 0.5 mのい

ずれの断面についても、どちらのユーティリティを使用しても本質的には同じである。ここでは、より

簡単に使用できる sampleユーティリティを使用する。

sampleユーティリティの設定ファイルは、ケースフォルダの下の

system/sampleDict

である。内容は以下のようになっている。

/*---------------------------------------------------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox || \\ / O peration | Version: 1.4 || \\ / A nd | Web: http://www.openfoam.org || \\/ M anipulation | |\*---------------------------------------------------------------------------*/

FoamFile{ version 2.0; format ascii;

root ""; case ""; instance ""; local "";

class dictionary; object sampleDict;}

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

interpolationScheme cellPoint; ←各サンプル点の値を、セル中心の値から補間して与える

writeFormat raw; ←出力データのフォーマット指定。最も簡単なフォーマットを使用

sampleSets ←サンプリングする直線の指定( uniform ←線分上を等間隔にサンプリングする { name xCenter; ←出力データの名前。ファイル名に使用される axis y; ←出力データの座標に y座標のみを出力する start (0.5 0 0.05); ←線分の始点の座標 end (0.5 1 0.05); ←線分の終点の座標 nPoints 129; ←サンプリングする点数の指定 } uniform ←もう一組のデータ。意味は上と同様 { name yCenter; axis x; start (0 0.5 0.05); end (1 0.5 0.05); nPoints 129; }

Page 18: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

30

);

fields ←サンプリングする変数(速度、圧力など)の指定( U ←速度をサンプリングする);

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

なお、以降のファイル内容例では、各ファイル冒頭の

/*---------------------------------------------------------------------------*\| ========= | || \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |...(中略)... class dictionary; object sampleDict;}

の部分を省略する。

抽出する点数を 129点としたのは文献 [2.1]に合わせたためであるが、それに対して本ケースの x、

y各方向のメッシュ分割数は各 20しか無いので、そのままプロットすると不連続なプロットとなる。こ

こでは interpolationSchemeを cellPoint、すなわちメッシュを構成する各セル間の値を補間することに

より、滑らかなプロットとなるようにしている。

sampleユーティリティは、図 2.5と同様にして、〔cavity〕を右クリック▶〔Foam Utilities〕▶

〔postProcessing〕▶〔miscellaneous〕▶〔sample〕をクリックする。ここでは最後に保存された時刻ステッ

プのみを抽出するために、続いて現れる図 2.21左端の画面で、〔Edit Arguments〕をクリックしよう。

さらに図 2.21の手順で操作し、〔latestTime〕のオプション設定を〔on〕として sampleユーティリティ

を実行する。抽出されたデータは、ケースフォルダの下の samples/5ディレクトリに、xCenter_

U.xyおよび yCenter_U.xyの名前で作成される。参考までに xCenter_U.xyの最初の5行は、

以下のようになっている(ここでは見やすいよう、列を揃えている)。

↓ 1列目 : y座標 ↓ 2列目から 4列目 : 速度の x、y、z各成分

1.2.

3.

4.

5.

6.1. を ク リ ッ ク ▶2. の右端をクリック▶ 3. をクリック▶ 4. をクリック▶5.をクリック▶ 6.をクリック

sample ユーティリティの実行図 2.21

Page 19: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

31

2 キャビティ流れの解析

0 0 0 00.0078125 -0.00469095 6.12964e-05 0 ←この行の 3列目は、6.12964× 10

-5の意0.015625 -0.00938189 0.000122593 00.0234375 -0.0140728 0.000183889 00.03125 -0.0187638 0.000245186 0

Gnuplot による抽出したデータのプロット2.6.2 

グラフ作成ソフトの Gnuplotを使っ

て、sample ユーティリティで抽出し

たデータを、文献 [2.21]のデータと

重ねてプロットしてみよう。なお文献

[2.21]のデータは、ケースフォルダ

に velocityUat100.txt(x = 0.5

mにおける速度の x成分)、およびvelocityVat100.txt(y = 0.5 m に

おける速度の y成分)の名前で用意され

ている。

Windowsの「スタート」メニュー▶〔す

べてのプログラム〕▶〔Gnuplot〕を選

択し、起動する。すると

gnuplot> _

と表示されて入力待ちの状態となる。

Gnuplotの操作は、ここからコマンド

をキー入力することで進める。なお

Gnuplotでは、上向き矢印キー〔↑〕

を押すことで、過去のキー入力を呼び出

すことが出来る。これによって、類似し

たキー入力を続けて行う場合の労力を軽

減できるようになっているので、活用さ

れたい。

まずは横軸に y座標、縦軸に x = 0.5

mにおける速度の x成分をプロットしたグラフを作成するため、以下のコマンドを入力しよう。なお

以下のコマンド行末の "\"は、紙面の都合で次の行に折り返したコマンドであり、実際は次の行まで

続けて入力することを表す。

cd "z:/OpenFOAM/run/tutorials/icoFoam/cavity" ←ケースフォルダに移動するset xlabel "y [m]" ← x軸ラベルの設定 set ylabel "u-velocity [m/s]" ← y軸ラベルの設定

x = 0.5 m における速度の x 成分のプロット図 2.22

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 0.2 0.4 0.6 0.8 1

u-ve

loci

ty [m

/s]

y [m]

OpenFOAM calculationSolution by Ghia

-0.25

-0.2

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0 0.2 0.4 0.6 0.8 1

v-ve

loci

ty

x [m]

OpenFOAM calculationSolution by Ghia

y = 0.5 m における速度の y 成分のプロット図 2.23

Page 20: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

32

plot "samples/5/xCenter_U.xy" u 1:2 t "OpenFOAM calculation", "velocityUat100.txt"\ t "Solution by Ghia" ←データをプロットする

最後のコマンドの "u 1:2"は、3列以上のデータを持つデータファイルをプロットする際に、1列目を

横軸、2列目を縦軸とすることを意味する。以上のコマンドにより、図2.22のようにグラフが表示される。

本ケースのデータが赤色の点で、文献 [2.1]のデータが緑色でプロットされており、両者が比較的良

好に一致していることがわかる。

表示させたグラフをグラフィックデータとして保存するには、以下のように入力する。

set terminal emf ←保存する形式を EMF(Windowsの標準グラフィック形式)とするset output "cavity-u-velocity.emf" ←ファイル名を cavity-u-velocity.emfとするplot "samples/5/xCenter_U.xy" u 1:2 t "OpenFOAM calculation", "velocityUat100.txt"\ t "Solution by Ghia" ←データを再度プロットするset output ←ファイル名をリセットするset terminal windows ←保存する形式をリセットする

これらのコマンドによって、グラフが EMF形式(Windowsの標準的なグラフィック形式)で保存される。

このファイルはMicrosoft Word等のワードプロセッサに取り込むことができる。

つぎに、y = 0.5 mにおける速度の y成分をプロットしてみよう。x成分の場合と同様に、以下のよ

うに入力する。

set xlabel "x [m]"set ylabel "v-velocity"plot "samples/5/yCenter_U.xy" u 1:3 t "OpenFOAM calculation", "velocityVat100.txt"\ t "Solution by Ghia" ←速度の y成分を取り出すため、u 1:3となっていることに注意

すると図 2.23のようにプロットされる。今度は、x = 0.2 mと x = 0.8 mの速度成分が最大・最小値

を取る近辺で、本ケースの結果と文献 [2.1]のデータが一致していないことがわかる。

メッシュの分割数を上げる(コマンドラインによる操作)2.7 前節までの解析では、速度が文献 [2.1]と合わなかったが、今度はメッシュの分割数を x、y軸方

向にそれぞれ倍の 40× 40として解析してみよう。さらにここまでは FoamXを使用して操作してきた

が、2.5.1節で述べたとおり、OpenFOAMではエディタでの設定ファイルの編集と、キーボードから

のコマンド入力による操作が可能である。ここではそれら設定ファイルと主要なコマンドのイントロダ

クションも兼ねて、この方法による解析を行う。

ケースのコピー2.7.1 

まず FoamX画面上端の をクリックし、前節で行っていた解析ケースを閉じる。つぎに図 2.24

のとおり操作し、cavityケースをコピーしてcavityFineケースを作成する。さらに〔File〕メニュー▶〔Exit〕

により、FoamXを終了する。ここから先はキーボードによる操作となる。

Windowsの「スタート」メニュー▶〔すべてのプログラム〕▶〔OpenFOAM〕▶〔OpenFOAM

Terminal〕をクリックし、図 2.25のコマンド入力画面を開く。なお、このコマンド入力画面では、黄

Page 21: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

33

2 キャビティ流れの解析

色字で表示されている現在いるフォルダを基準にしてファ

イルのコピー、移動、削除などの操作を行うようになっ

ている。現在いるフォルダを移動するには、cdコマンド

(change directory)コマンドを入力して cavityFineのケー

スフォルダに移動する。

cd OpenFOAM/run/tutorials/icoFoam/cavityFine

ここで "/"は、フォルダ階層の区切り文字を表す。上記フォ

ルダの場合、エクスプローラで見ると図 2.26のフォルダ

階層に対応する。なお、このコマンド入力画面では、以

下の機能があるので活用されたい。

上矢印キー〔↑〕:過去に入力したコマンドを再表示•

タブキー〔TAB〕: ファイル名やフォルダ名を途中まで入力して押すと、名前の残りが一意に決•

ケースのコピー図 2.24

4.

3.

2.

1.

1. を右クリック▶ 2. をクリック▶ 3. のとおり入力▶4. をクリック▶続いて現れる画面で〔Yes〕をクリック

コマンド入力画面図 2.25

黄色字 : 現在いるフォルダ("~" は z:/ を表す)

このように入力する

フォルダ階層図 2.26

Page 22: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

34

まるところまで補完される

FoamXによるケースのコピーでは、ケースフォルダの下の constantフォルダと systemフォル

ダのみがコピーされ、初期値の入った 0フォルダがコピーされないので、以下の cp(copy)コマン

ドで cavity/0フォルダを cavityFineのケースフォルダにコピーする。ここで "-r"はフォルダごとコ

ピーすること、".."は現在いるフォルダの上の階層のフォルダ、"."は現在いるフォルダを表す。

cp -r ../cavity/0 .

これで必要なファイルが全てコピーされた。

blockMeshDictファイルの編集とメッシュの生成2.7.2 

つぎに blockMeshDictファイルを修正する。「スタート」メニュー▶〔すべてのプログラム〕▶〔秀

丸エディタ〕で constant/polyMesh/blockMeshDictファイルを開き、45行目の

hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)

のメッシュ分割数を記述している (20 20 1)を (40 40 1)に変更し、

hex (0 1 2 3 4 5 6 7) (40 40 1) simpleGrading (1 1 1)

として保存する。

さらに、blockMeshを実行してメッシュを生成する。blockMeshに限らず、OpenFOAMのほぼ全

てのコマンドは、コマンド名の後に 2つのフォルダ名を記述するようになっている。最初のフォルダ

名はコマンドを実行するケースフォルダの一つ上のフォルダ(ルートパス)、次のフォルダ名はケース

フォルダ名である。本ケースでは、ルートパスは現在いるケースフォルダの上の階層のフォルダなの

で ".."、ケースフォルダ名は cavityFineである。

blockMesh .. cavityFine

以上によってメッシュが生成された。

初期値と境界条件の確認2.7.3 

こんどは初期値と境界条件を確認する。ケースフォルダの下の 0/Uが速度、0/pが圧力の設定ファ

イルとなっている。0/Uファイルは以下のとおりである。

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

dimensions [0 1 -1 0 0 0 0]; ←単位。左から kg、m、s、K、mol、A、cdの乗数。この場合、m/sを表す

internalField uniform (0 0 0); ←解析領域内部の速度は一様に、全座標軸成分とも 0

boundaryField ←境界条件の指定{

Page 23: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

35

2 キャビティ流れの解析

movingWall ← movingWallの境界条件 { type fixedValue; ←境界面での値を指定(Dirichlet境界条件) value uniform (1 0 0); ←一様に x方向成分のみ 1 m/s、その他は 0 }

fixedWalls ← fixedWallsの境界条件 { type fixedValue; value uniform (0 0 0); ←固定壁なので、全座標軸成分とも 0 }

frontAndBack ← frontAndBackの境界条件 { type empty; ← 2次元問題を扱うためのダミー境界なので、empty }}

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

0/pファイルは以下のとおりである。

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

dimensions [0 2 -2 0 0 0 0]; ←単位。物理的な圧力を密度で除していることに注意

internalField uniform 0; ←解析領域内部の圧力初期値は一様に 0

boundaryField{ movingWall { type zeroGradient; ←境界面での圧力勾配が 0(Neumann境界条件) }

fixedWalls { type zeroGradient; }

frontAndBack { type empty; }}

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

圧力の単位は通例、SI単位系で [N/m2]、すなわち [kg・m-1・s-2]であるが、OpenFOAMでは圧力

を密度([kg/m3])で除した [m2・s-2]で与えていることに注意されたい。

物性値の確認2.7.4 

動粘性係数はケースフォルダ下の constant/transportPropertiesファイルで設定する。内

容は以下のとおりである。

Page 24: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

36

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

nu nu [0 2 -1 0 0 0 0] 0.01; ←単位は m2/s。最後の 0.01が動粘性係数

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

実行条件の制御2.7.5 

時間刻み、終了時刻などの設定はケースディレクトリ下の system/controlDictファイルで行う。

内容は以下のとおりである。なお、時刻の単位は全て [s](秒)である。

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

application icoFoam;

startFrom startTime; ←計算開始時点の指定。latestTimeなら保存された最終時刻

startTime 0; ←計算開始時刻

stopAt endTime;

endTime 10; ←計算終了時刻。元の設定の倍である 10 sに変更すること

deltaT 0.025; ←時間刻み。元の設定の半分である 0.025 sに変更すること

writeControl timeStep; ← writeIntervalの単位。runTimeなら、解析上の時刻

writeInterval 20; ← writeControlが timeStepのとき、何 deltaT毎に保存するか

purgeWrite 0;

writeFormat ascii; ←データをテキスト形式で保存。binaryならバイナリ形式

writePrecision 6; ←テキスト形式でデータを保存する際の数値精度

writeCompression uncompressed; ←保存データのデータ圧縮(gzip)の有無

timeFormat general;

timePrecision 6; ←時刻の取扱い上の精度

runTimeModifiable yes;

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

セル幅を半分にしたことに合わせて、(2.6)式のクーラン条件から時間刻みも半分の 0.025 sとしてい

ることに注意されたい。また今度は定常状態まで計算するため、解析終了時刻も倍の 10 sまで計算

することとしよう。その他の controlDictファイルの設定内容概略は上記のとおりであるが、さらなる

詳細については、OpenFOAMユーザーガイド [2.2]の 4.3節を参照されたい。

ソルバの実行を制御するためのファイルとしては、controlDictの他にもsystem/fvSchemes

ファイルと system/fvSolutionファイルがある。いずれも離散化手法の詳細を設定するため

Page 25: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

37

2 キャビティ流れの解析

のファイルであるが、やや高度な内容

であるため、ここでは説明を省略する。fvSchemes に つ い て は OpenFOAM

ユーザーガイドの 4.4節、fvSolution

については 4.5節を参照されたい。

メッシュの確認2.7.6 

以上でソルバの実行に必要なファイル

をひととおり見たことになる。全てのファ

イルの確認が完了したら、ソルバの実行

前にメッシュと境界条件を gmshFoamで

表示させて確認しよう。

gmshFoam .. cavityFine

gmshFoamが起動した後、2.5.7節と同様

に操作すると、図 2.27のように表示され

る。図 2.12と比較すると、メッシュが細

かくなっていることがわかる。

解析の実行2.7.7 

メッシュの確認が済んだら、解析を実行しよう。以下のように入力すると、ソルバが起動して解析

の実行が始まる。

icoFoam .. cavityFine

メッシュ分割数が 20× 20の時より、メッシュ数と時刻ステップ数が増えた分、解析に多少の時間が

かかる。画面に多数のメッセージが表

示された後、数十秒から数分程度で実

行が終了する。

結果の確認2.7.8 

2.7.6節と同様に、再度

gmshFoam .. cavityFine

で gmshFoamを実行し、結果を確認し

よう。〔p〕と〔phi〕をクリックして圧力

とフラックスの表示を消し、速度ベクト

ルの表示のみを残してアニメーション再

-0.4

-0.2

0

0.2

0.4

0.6

0.8

1

0 0.2 0.4 0.6 0.8 1

u-ve

loci

ty [m

/s]

y [m]

OpenFOAM calculationSolution by Ghia

x = 0.5 m における速度の x 成分のプロット図 2.28

cavityFine ケースのメッシュ図 2.27

Page 26: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

38

生すると、次第に定常状態へ落ち着い

ていく様子がわかる。

速度成分のプロット2.7.9 

2.6節と同様に、sampleユーティリ

ティによって図 2.20に示した断面にお

ける速度成分を抽出し、Gnuplotによっ

てプロットする。sampleDictは 2.6.1節

と同一のものを使用することができるの

で、sampleユーティリティをすぐに実行

することができる。ただし、最終時刻ス

テップのみのデータを取り出すため、コ

マンドの最後に -latestTimeと書く。

sample .. cavityFine -latestTime ←最後に "-latestTime"を追加する

以上によってデータが抽出されたので、2.6.2節と同様にしてGnuplotでプロットする。Gnuplot

を起動後、以下のように入力する。

cd "z:/OpenFOAM/run/tutorials/icoFoam/cavityFine" ←ケースフォルダに移動するset terminal emf ←保存する形式を EMF(Windowsの標準グラフィック形式)とするset xlabel "y [m]" ← x軸ラベルの設定 set ylabel "u-velocity [m/s]" ← y軸ラベルの設定set output "cavityFine-u-velocity.emf" ←ファイル名を cavity-u-velocity.emfとするplot "samples/10/xCenter_U.xy" u 1:2 t "OpenFOAM calculation", \"../cavity/velocityUat100.txt" t "Solution by Ghia" ← x成分データをプロットするset xlabel "x [m]"set ylabel "v-velocity [m/s]"set output "cavityFine-v-velocity.emf"plot "samples/10/yCenter_U.xy" u 1:3 t "OpenFOAM calculation", \"../cavity/velocityVat100.txt" t "Solution by Ghia" ← y成分データをプロットするset output ←ファイル名をリセットするset terminal windows ←保存する形式をリセットする

以上によって得られるグラフは、図 2.28および図 2.29となる。メッシュ分割数 20× 20での結果で

ある図 2.22、図 2.23と比べると、Ghiaの結果と良く一致していることがわかる。

演習問題セルの間隔は必ずしも一定である必要はなく、位置によって異なる大きさのセルを生成することも

できる。blockMeshDictの以下の行

hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)

の末尾に書かれている (1 1 1)は隣り合うセル同士のセル幅比率であり、例えば (1.05 0.95 1)

x = 0.5 m における速度の x 成分のプロット図 2.29

-0.25

-0.2

-0.15

-0.1

-0.05

0

0.05

0.1

0.15

0.2

0 0.2 0.4 0.6 0.8 1

v-ve

loci

ty [m

/s]

x [m]

OpenFOAM calculationSolution by Ghia

Page 27: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

39

2 キャビティ流れの解析

等とすることによってセル幅を連続的に変化させることができる。このようなメッシュを作成して、解

析を行え。なお、クーラン条件に注意すること。

参考文献U. Ghia, K. N. Ghia and C. T. Shin, "High-Re solutions for incompressible flow using the [2.1]

Navier-Stokes equations and a multigrid method," Journal of Computational Physics, 48, pp. 387-

411, 1982.

OpenCFD Ltd.: [2.2] OpenFOAM: The Open Source CFD Toolbox User Guide, Version 1.4, 2007

山根隆一郎 , 中村雅英 , 「基礎流体科学」, 朝倉書店 , 1994[2.3]

梶島岳夫 , 「乱流の数値シミュレーション」, 養賢堂 , 1999[2.4]

Page 28: Gmsh / Gnuplot / OpenFOAM / ParaViewによる Open ...oshima.eng.niigata-u.ac.jp/OpenFOAM/ja/cavityDivided.pdfGmsh / Gnuplot / OpenFOAM / ParaViewによる Open Source CAE Suite for

40