Upload
fumiya-nozaki
View
2.276
Download
8
Embed Size (px)
Citation preview
SU2 について
インストール Quick Start Tutorial の実行
Fumiya Nozaki
1
SU2 (Stanford University Unstructured) は,オープンソースの数値流体力学(CFD)計算用ソフトウェアです.
• 開発元: スタンフォード大学 Aerospace Design Lab
• 開発言語: C++
• ライセンスの種類: GNU General Public License (GPL) v3
• ホームページ: http://su2.stanford.edu/
2
SU2 の概要
• 流速が速く,圧縮性が無視できない流れの計算に向いている.
3
OpenFOAM と比較した優位点
• Adjoint 法を使用した形状最適化計算の機能が実装されている.
4
OpenFOAM と比較した優位点
形状表面の感度分布 Free-Form デフォーメーション
ソフトウェアの ダウンロード&インストール
最新バージョン v3.0.0 (2014年1月19日現在)
5
6
ソフトウェアのダウンロード
ダウンロードには,簡単な登録作業が必要です.
http://adl.stanford.edu/docs/display/SUSQUARED/Download
ここをクリック
7
ソフトウェアのダウンロード
ダウンロードには,簡単な登録作業が必要です.
氏名
メールアドレス
所属 Academia, Government, Industry, Personal use から選択
国名
市町村名
知ったきっかけ
8
ソフトウェアのダウンロード
登録作業が完了すると,ダウンロードサイトにアクセスできます.
自分の環境にあった ソフトウェアを ダウンロード
Windows の場合,
単体 or 並列計算用で 実行ファイルが異なります
チュートリアル一式を ダウンロード
9
ソフトウェアのインストール
インストール手順については,以下のURLに説明があります.
http://adl.stanford.edu/docs/display/SUSQUARED/Installation
Windows に関しては,インストーラーが用意されているので,ウィザードに従って,簡単にインストールが可能です.
10
ソフトウェアのインストール|Windows
Windows の場合のインストール手順は以下のようになります.
単体計算用
1. ダウンロードしたファイル SU2-3.0.000-64-bit-Single-threaded を実行
2. 環境変数に実行ファイルへのPATHを追加 (例)PATH変数に追加 C:¥apps¥Stanford ADL¥SU2¥bin;
並列計算用のソフトウェア(SU2-3.0.000-64-bit-Parallel)をインストールする場合には,Microsoft® HPC Pack, 2012 のインストールが別途必要です.
手順:http://adl.stanford.edu/docs/display/SUSQUARED/Windows+Installation
インストールフォルダ(適宜自分の環境にあわせる)
11
ソフトウェアのインストール|Linux
Linux の場合,ソースからのインストール手順の概要は以下のようになります.
1. 圧縮されたソースファイル SU2v3.0.0.tgz を解凍
2. (optional) サードバーティーのメッシャーで作成した CGNS フォーマットのメッシュを使用する場合 → CGNS ライブラリのインストール
3. (optional) 並列計算に対応する場合 → METIS,OpenMPI(or MPICH2)のインストール
4. Makefileの作成(configure),コンパイル(make),インストール(make install)の実行
5. 環境変数の設定
手順: http://adl.stanford.edu/docs/display/SUSQUARED/Linux+and+Mac+Installation+from+Source
12
実行モジュール
インストールフォルダの中を見てみましょう.
以下の名前の実行ファイルがあるはずです.
• SU2_CFD: Computational Fluid Dynamics 偏微分方程式(Euler,NS方程式など)を離散化して解く, 最も基本となるモジュール
• SU2_DDC: Domain Decomposition Code 並列計算を実行する際に領域分割を行うモジュール
• SU2_MAC: Mesh Adaptation Code 解に対応して,計算格子を細分化するモジュール
• SU2_MDC: Mesh Deformation Code ボリュームメッシュのモーフィングを行うモジュール
など
13
プリ・ポスト処理について
プリ処理
• SU2 が対応可能なメッシュのフォーマット
独自のファイルフォーマット(拡張子:.su2)
CGNS フォーマット
• メッシュの作成方法
SU2 に付属のスクリプトを使用して,.su2 形式のメッシュを作成 → 複雑な形状は現実的に不可能
外部のメッシャーで作成した CGNS 形式のメッシュを使用する
ポスト処理
ポスト処理には,以下のソフトが使用可能です.
• Tecplot
• ParaView
チュートリアルの実行
Quick Start Tutorial http://adl.stanford.edu/docs/display/SUSQUARED/Quick+Start+Tutorial
14
チュートリアルの準備
TestCases.tgz ファイルを解凍 TestCases フォルダが作成される
チュートリアル一式
15
16
Quick Start Tutorial の内容
このチュートリアルでは,Adjoint 法を使用することで,一様流中におかれた NACA0012 翼型の抗力に関する感度分布を計算します.
使用するモジュール
SU2_CFD
チュートリアルフォルダ
euler¥naca0012
計算条件
遷音速流れ(オイラー方程式)
マッハ数: 0.8
圧力: 大気圧
温度: 273.15K
迎え角: 1.25° 計算領域
翼周りのメッシュ
• このチュートリアルでは,まず流れ場の計算を行い,その結果を用いてAdjoint場の計算を行います.
• この二つの計算ではともに,SU2_CFD モジュールを使用します.
• この二つの計算結果を用いて,感度分布を計算します.
Quick Start Tutorial の計算の流れ
17
流れ場の計算
Adjoint場の計算
SU2_CFD モジュールを使用
フォルダの確認
フォルダ(euler¥naca0012)の中を見ると,3つのファイルが用意されています.
.cfg ファイル: 計算の各種条件の設定ファイル
.su2 ファイル: メッシュファイル
% ----------- COMPRESSIBLE AND INCOMPRESSIBLE FREE-STREAM DEFINITION ----------% % % Mach number (non-dimensional, based on the free-stream values) MACH_NUMBER= 0.8 % % Angle of attack (degrees) AoA= 1.25 % % Free-stream pressure (101325.0 N/m^2 by default, only Euler flows) FREESTREAM_PRESSURE= 101325.0 % % Free-stream temperature (273.15 K by default) FREESTREAM_TEMPERATURE= 273.15
18
inv_NACA0012.cfg ファイル の内容の一部
19
流れ場の計算の実行
1. コマンドプロンプトを開く
2. 設定ファイルが置いてあるフォルダ( euler¥naca0012 )へ移動
3. 計算結果の出力フォーマットを TECPLOT から PARAVIEW へ変更
4. 計算実行(実行コマンドは下記太字部分)
…¥euler¥naca0012>SU2_CFD inv_NACA0012.cfg
% % Output file format (PARAVIEW, TECPLOT) OUTPUT_FORMAT= TECPLOT
ここを PARAVIEW に変更
inv_NACA0012.cfg ファイル内
20
流れ場の計算結果のファイル
計算が終了すると,以下の結果ファイルが作成されます.
• flow.vtk - 内部ボリュームの計算結果
• surface_flow.vtk - 境界上の計算結果
• surface_flow.csv - 翼境界上の Cp 値,Ma 数の値
• restart_flow.dat - 計算をリスタートする際に使用するファイル
• history.csv - 抗力,揚力や残差の時間履歴
OpenFOAM の用語を使うと,
flow.vtk が internalField のデータ,surface_flow.vtk が boundaryField のデータ に対応します.
21
計算結果のデータ
ParaView を起動して,flow.vtk ファイルを読み込みます.
Mach(マッハ数),Pressure(圧力),Pressure_Coefficient(圧力係数)
については,その名前が示す通りです.ここで,圧力係数とは次式で定義される無次元数です.
計算結果の変数のリスト
𝐶𝑝 =𝑝 − 𝑝∞
12
𝜌∞𝑉∞2
その他の変数については次のページ.
22
計算結果のデータ
4つの変数 Conservative_1 ~ Conservative_4 は,以下に示す保存量を表しています.
• Conservative_1
• Conservative_2
• Conservative_3
• Conservative_4
ここで,𝜌 は密度,𝑣1 および 𝑣2 は速度成分,𝐸 は単位質量当たりのエネルギーを表します.
三次元計算の場合には,上記に 𝜌𝑣3 が加わります.
𝜌
𝜌𝑣1
𝜌𝑣2
𝜌𝐸
23
圧力,マッハ数分布
圧力(Pressure)コンター図 マッハ数(Mach)コンター図
圧力,マッハ数の分布を可視化してみましょう.
次に,速度分布を可視化してみましょう. 1. 変数 Conservative_2,つまり,𝜌𝑣1 から 𝑣1 を作成します.
2. もう一方の速度成分 𝑣2 も Conservative_3 から同様に作成します. 24
速度成分の可視化
1-1. Calculator を選択 1-2. Calculator の設定
Conservative_2(𝜌𝑣1) を Conservative_1(𝜌) で割ることで,𝑣1 を算出し,それに v1という名前(Result Array Name) を付けています.
25
速度成分の可視化
速度成分の コンター図
26
速度ベクトルの可視化
速度成分 𝑣1 および 𝑣2 から速度ベクトルを作成します. ここでも,Calculator の機能を使用します.
Calculator の設定
スカラー量である速度成分 𝑣1 および 𝑣2 と
x,y 方向の単位ベクトル iHat および jHat から
速度ベクトル v1*iHat+v2*jHat
を作成し,Velocityと名前を付けています.
27
速度ベクトルの可視化
Glyph を使用して,速度ベクトルを可視化してみましょう.
28
計算結果の可視化
抗力係数,密度の残差の時系列変化 翼上の圧力係数の分布
history.csv をグラフ化 surface_flow.csv をグラフ化
29
流れ場の計算
Adjoint場の計算
お疲れ様でした.ここまでで, チュートリアルの前半部分が終了です.
次のページから Adjoint場の計算に移ります.
• SU2_CFD モジュールを使用する
• 流れ場の計算結果を使用する
の2点だけ頭に入れておいてください.
30
Adjoint場の計算の実行
流れ場の計算を実行したフォルダにとどまって計算を実行します.
1. 設定ファイル(inv_NACA0012.cfg)を開いて,変数 MATH_PROBLEM の値を DIRECT から ADJOINT に変更します.
% ------------- DIRECT, ADJOINT, AND LINEARIZED PROBLEM DEFINITION ------------% % % Physical governing equations (POTENTIAL_FLOW, EULER, NAVIER_STOKES, % MULTI_SPECIES_NAVIER_STOKES, TWO_PHASE_FLOW, % COMBUSTION) PHYSICAL_PROBLEM= EULER % % Mathematical problem (DIRECT, ADJOINT, LINEARIZED, ONE_SHOT_ADJOINT) MATH_PROBLEM= DIRECT % % Restart solution (NO, YES) RESTART_SOL= NO % % Console output (VERBOSE, CONCISE, QUIET) CONSOLE= VERBOSE
ここを ADJOINT に変更
この変数で,通常の流体計算(DIRECT)と Adjoint計算(ADJOINT)とを切り替えます.
31
Adjoint場の計算の実行
1. あい
2. ファイル restart_flow.dat の名前を solution_flow.dat に変更します.
3. 計算実行(実行コマンドは下記太字部分)
…¥euler¥naca0012>SU2_CFD inv_NACA0012.cfg
このファイルから流れ場の計算結果が読み込まれます.
32
Adjoint場の計算結果のファイル
計算が終了すると,以下の結果ファイルが作成されます.
• adjoint.vtk - 内部ボリュームの計算結果
• surface_adjoint.vtk - 境界上の計算結果
• surface_adjoint.csv - 翼境界上の感度およびAdjoint変数の値
• restart_adj_cd.dat - 計算をリスタートする際に使用するファイル
• history.csv - 残差の時間履歴
リスタートファイルの名前の中の cd は cfgファイルで指定した目的関数に対応して変化します.このチュートリアルでは,目的関数として DRAG を考えているのでこのような名前が付けられています.
% Optimization objective function with optional scaling factor % ex= Objective * Scale OPT_OBJECTIVE= DRAG * 0.001
33
感度分布
ファイル surface_adjoint.csv に保存されている感度情報をグラフにしてみましょう.
-1.0
-0.8
-0.6
-0.4
-0.2
0.0
0.2
0.4
0.6
0.8
1.0
0.0 0.2 0.4 0.6 0.8 1.0
Su
rface S
en
sit
ivit
y
x/c
翼下面
翼上面 翼上面
翼下面
• 感度は翼面上の点を法線方向に移動したときの目的関数(今の場合は 抗力)の変化の割合を表します.
• 感度の値は翼面上の各節点で計算されます.
• 必要な情報の多くはここから入手可能
http://adl.stanford.edu/docs/display/SUSQUARED/SU2+Home
• 計算モデルからクラスの説明までとても詳しい資料
http://su2.stanford.edu/documents/SU2_AIAA_ASM2013.pdf
• CFD Online の Forum
http://www.cfd-online.com/Forums/su2/
34
参考となるサイト・資料
今後も資料を更新していく予定です.
質問,コメントなんでも受け付けています.
最後までご覧いただきありがとうございました.
35
付録
メッシュのフォーマット
36
37
% % Problem dimension % NDIME= 2 % % Inner element connectivity % NELEM= 8 5 0 1 3 0 5 1 4 3 1 5 1 2 4 2 5 2 5 4 3 5 3 4 6 4 5 4 7 6 5 5 4 5 7 6 5 5 8 7 7
(右上へ続く)
% % Node coordinates % NPOIN= 9 0.00000000000000 0.00000000000000 0 0.50000000000000 0.00000000000000 1 1.00000000000000 0.00000000000000 2 0.00000000000000 0.50000000000000 3 0.50000000000000 0.50000000000000 4 1.00000000000000 0.50000000000000 5 0.00000000000000 1.00000000000000 6 0.50000000000000 1.00000000000000 7 1.00000000000000 1.00000000000000 8 % % Boundary elements % NMARK= 4 MARKER_TAG= lower MARKER_ELEMS= 2 3 0 1 3 1 2 MARKER_TAG= right MARKER_ELEMS= 2 3 2 5 3 5 8 MARKER_TAG= upper MARKER_ELEMS= 2 3 8 7 3 7 6 MARKER_TAG= left MARKER_ELEMS= 2 3 6 3 3 3 0
メッシュファイル (.su2) のフォーマット
% がコメントアウト
1
2
3
4
• メッシュファイル (.su2) は大きく 4つの部分から構成されます.
38
メッシュファイル (.su2) のフォーマット
• 前ページのメッシュファイルは,上図の2Dメッシュを表現しています.
• 次ページから詳しく見ていきましょう.
0 1 2
3 4 5
6 7 8
0
1
2
3
4
5
6
7
: 節点番号
: セル(要素)番号
39
メッシュファイル (.su2) のフォーマット
% % Problem dimension % NDIME= 2
1
• 解こうとしている問題の空間の次元を,変数 NDIME に指定します.
• SU2 で取り扱いが可能なのは,2次元 または 3次元 の問題 したがって NDIME= 2 または NDIME= 3
2次元の問題を解きます
40
% % Inner element connectivity % NELEM= 8 5 0 1 3 0 5 1 4 3 1 5 1 2 4 2 5 2 5 4 3 5 3 4 6 4 5 4 7 6 5 5 4 5 7 6 5 5 8 7 7
2
メッシュファイル (.su2) のフォーマット
メッシュは, • 8つの要素からできており, • それぞれの要素は三角形 であることがわかります.
• 要素の個数を変数 NELEM に指定します. • 以下の8行では,それぞれの要素の形状および要素を構成する
節点番号のリスト,要素の番号を指定します.
次ページで詳しく見てみましょう.
41
0 1 2
3 4 5
6 7 8
0
1
2
3
4
5
6
7
: 節点番号
: セル(要素)番号
% % Inner element connectivity % NELEM= 8 5 0 1 3 0 5 1 4 3 1 5 1 2 4 2 5 2 5 4 3 5 3 4 6 4 5 4 7 6 5 5 4 5 7 6 5 5 8 7 7
5 0 1 3 0
• NELEM= 8 のすぐ下の行は,要素 についての設定です.
要素 0
要素 7
0
要素の形状を指定
要素の頂点をなす節点番号のリスト
SU2 では三角形を5で表現します.詳しくは次のページ.
要素の番号(番号は0からスタート)
42
メッシュファイル (.su2) のフォーマット
要素のタイプ SU2での識別番号
線(LINE) 3
三角形(TRIANGLE) 5
四角形(Quad) 9
四面体(TETRA) 10
六面体(HEXAHEDRON) 12
三角柱(WEDGE) 13
ピラミッド(PYRAMID) 14
SU2 では下の表のように,各要素のタイプを整数値で識別します.
43
メッシュファイル (.su2) のフォーマット
要素を構成する節点リストの並びは,VTK (Visualization Toolkit)の仕様に準拠します.
http://www.vtk.org/VTK/img/file-formats.pdf の9ページをご参照ください.
44
メッシュファイル (.su2) のフォーマット
% % Node coordinates % NPOIN= 9 0.00000000000000 0.00000000000000 0 0.50000000000000 0.00000000000000 1 1.00000000000000 0.00000000000000 2 0.00000000000000 0.50000000000000 3 0.50000000000000 0.50000000000000 4 1.00000000000000 0.50000000000000 5 0.00000000000000 1.00000000000000 6 0.50000000000000 1.00000000000000 7 1.00000000000000 1.00000000000000 8
3
• メッシュが9つの節点から構成されていること
• それぞれの節点の座標 がわかります.
• 節点の個数を変数 NPOIN に指定します. • 以下の9行では,それぞれの節点の座標および番号を指定して
います. • 例えば次の行は,節点番号が5の節点は,
X座標=1,Y座標=0.5 であることを意味しています.
1.00000000000000 0.50000000000000 5
45
% % Boundary elements % NMARK= 4 MARKER_TAG= lower MARKER_ELEMS= 2 3 0 1 3 1 2 MARKER_TAG= right MARKER_ELEMS= 2 3 2 5 3 5 8 MARKER_TAG= upper MARKER_ELEMS= 2 3 8 7 3 7 6 MARKER_TAG= left MARKER_ELEMS= 2 3 6 3 3 3 0
4
メッシュファイル (.su2) のフォーマット
メッシュ内に, lower,right,upper,left という名前の4つの境界があることがわかります.
• 境界の個数を変数 NMARK で指定します.
• 各境界に対して, 名前(MARKER_TAG), 境界上の要素数(MARKER_ELEMS) を指定します.
• .cfg ファイルで境界条件を設定する際にこの境界名を使用します.
次のページで1つ目の境界について詳しく見てみましょう.
1つ目の境界
2つ目の境界
3つ目の境界
4つ目の境界
46
3 4 5
6 7 8
0
1
2
3
4
5
6
7 : 節点番号
: セル(要素)番号
MARKER_TAG= lower MARKER_ELEMS= 2 3 0 1 3 1 2
1つ目の境界
• 四角形の計算領域の下辺に相当する境界に lower という名前を付けて,
• その境界が,2つの線要素(節点0と1とを結ぶ線分,節点1と2とを結ぶ線分)で構成される
という指定になっています.
0 1 2
OpenFOAMのpolyMeshとの比較
• ともに非構造のデータの持ち方をしていますが,
• OpenFOAM がメッシュデータを複数のファイル(points,facesなど)に分割してもつのに対して, SU2 では情報を一つのファイル(.su2)で持つ点に違いがあります.
• OpenFOAMでは,任意の多面体のセルを扱えるのに対して, SU2
では扱えるセルタイプは30~31ページに記載したものに限られます.
• 二次元計算の場合,OpenFOAMでは奥行き方向に1セル作成する必要がありますが,SU2 の場合には,奥行き方向を無視して,完全に二次元として取り扱います(32ページの節点座標を指定するところで二つの座標成分しか指定していないことからもわかります).
47