• 検索結果がありません。

NEE 研究会第 18 回講演討論会 OpenFOAM への計算機能追加連続的データ同化法 (VCA 法 ) の実装 大阪大学大学院工学研究科博士後期課程松尾智仁 内容 1.OpenFOAM を使う理由 1.1 OpenFOAMの特徴 1.2 OpenFOAMを使うにあたって 2.OpenFOAM

N/A
N/A
Protected

Academic year: 2021

シェア "NEE 研究会第 18 回講演討論会 OpenFOAM への計算機能追加連続的データ同化法 (VCA 法 ) の実装 大阪大学大学院工学研究科博士後期課程松尾智仁 内容 1.OpenFOAM を使う理由 1.1 OpenFOAMの特徴 1.2 OpenFOAMを使うにあたって 2.OpenFOAM"

Copied!
7
0
0

読み込み中.... (全文を見る)

全文

(1)

OpenFOAMへの計算機能追加

連続的データ同化法(VCA法)の実装

大阪大学大学院工学研究科 博士後期課程 松尾智仁 NEE研究会 第18回講演討論会 2015.01.27 於大阪大学中之島センター

内容

1.OpenFOAMを使う理由

1.1 OpenFOAMの特徴

1.2 OpenFOAMを使うにあたって

2.OpenFOAMへの計算機能追加

2.1 計算機能の追加の方法

2.2 VCA法によるデータ同化計算機能の追加

VCA法とは

計算例

2

1.OpenFOAMを使う理由

3

1.1 OpenFOAMの特徴

オープンソースである

=> 内部でどのような計算が行われているかわかる => 式や処理を自由に改変することができる • 研究で用いる場合… • どのような計算条件(離散化の方法、乱流モデル、差分 スキーム、……)で計算が行われているのかを明らかにす る必要がある • 従来とは違う計算手法を試したくなることがある

1.OpenFOAMを使う理由

4

1.1 OpenFOAMの特徴

機能が多彩である

=> たいていの計算であれば、コードを自作しなくても実行 できる => たとえば差分スキームの違いによる結果の差異などが 容易に評価できる • 研究で用いる場合… • 適切なスキームは条件によって異なる • コーディングは主な目的ではない

(2)

1.OpenFOAMを使う理由

5

1.2 OpenFOAMを使うにあたって

導入のハードルが高い

日本語文献がまだ多くはない

TutorialやUserGuideがあまり親切ではない

Linux 上で動作する

GUIが無い

1.OpenFOAMを使う理由

6

1.2 OpenFOAMを使うにあたって

• 参考サイトなど • OpenCAE学会(http://www.opencae.jp/) • OpenFOAMのユーザガイド翻訳など • PENGUINITIS(http://www.geocities.jp/penguinitis2002/study/OpenFO AM/index.html) • 計算実行、ソース解読などについての多くの情報 • OpenFOAM wiki (英語) (https://openfoamwiki.net/index.php/Main_Page) • OpenFOAMに関する情報多数(非公式) • Google(https://www.google.co.jp/) • 大抵のことは検索すれば見つけられます

1.OpenFOAMを使う理由

7

1.2 OpenFOAMを使うにあたって

• 使用環境

• 仮想環境 : VMware player (Windows上で動作) • 作業環境:ワークステーション上のLinux(ssh接続) • Linux : Ubuntu1204 64bit

• OpenFOAM : OpenFOAM 2.3.0

• ソースコード操作:Eclipse ( with Pleiades ) • 結果処理 : paraView

2.OpenFOAMへの計算機能追加

8

2.1 計算機能の追加の仕方

• ソルバの場所 : /opt/openfoam2.3.0/applications/solver 以下 • ソースコードはC++で書かれている。 • いわゆるオブジェクト指向で • クラスの継承 • オーバーロード(関数/演算子の多重定義) • オーバーライド(関数の上書き) といったC++に特有の機能が使われている • 高度にモジュール化されている。 • 機能追加は比較的簡単に行なえる

(3)

2.OpenFOAMへの計算機能追加

9

2.1 計算機能の追加の仕方

• クラスや関数の定義はすでになされているため、主としてそ れらを組み合わせることで任意のソルバを作成する。 • たいていはmain関数だけを作り変えれば足りる

例:simpleFoamのmain関数

simpleFoam : 非圧縮流体の定常流れを計算するソルバ int main(int argc, char *argv[])

{ #include "setRootCase.H" #include "createTime.H" #include "createMesh.H" #include "createFields.H" #include "createFvOptions.H" #include "initContinuityErrs.H" simpleControl simple(mesh); 計算ケースの読み込み 計算条件(時間)の読み込み メッシュの作成 変数(速度、圧力など)の作成 オプションの設定 初期残差の計算 SIMPLEの繰返しの制御の作成

Info<< "¥nStarting time loop¥n" << endl; while (simple.loop())

{

Info<< "Time = " << runTime.timeName() << nl << endl; { #include "UEqn.H" #include "pEqn.H" } turbulence->correct(); runTime.write();

Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s" << " ClockTime = " << runTime.elapsedClockTime() << " s" << nl << endl;

}

Info<< "End¥n" << endl; return 0; }

例:simpleFoamのmain関数(つづき)

結果ファイル書き出し 速度の計算 圧力の計算 乱流に関する計算 SIMPLEの ループ

2.1 計算機能の追加の仕方

12

方程式を追加する場合

微分方程式は行列の形で表現される。

例:非圧縮定常流れの運動量方程式

(

U

)

p UU +∇⋅ eff∇ =−∇ ⋅ ∇ ( ) ν fvScalarMatrix UEqn( fvm::div(phi, U) + turbulence->divDevReff( U) == fvOptions(U) );

solve( UEqn() == -fvc::grad(p));

対流項 粘性項

オプション(何もしない) 圧力項

(4)

13 例:非定常の物質の保存式

(

C

)

S UC ρ t C + ∇ Γ ⋅ ∇ = ⋅ ∇ + ∂ ∂ ) ( fvScalarMatrix Equation( fvm::ddt(conc) +fvm::div(phi,conc) == fvm::laplacian(turbulence->nuEff(), conc) +fvOption(conc) ); 対流項 拡散項 オプション(ソース項) 非定常項

2.1 計算機能の追加の仕方

方程式を追加する場合

微分方程式は行列の形で表現される。

2.2 VCA法によるデータ同化計算機能の追加

14 Variational Continuous Assimilation method

データ同化法の一種で、観測データを用いてCFDモデルを修正し ながら計算を行う手法

Derber(1989) “A variational continuous assimilation technique”

VCA法とは 数値解析 修正された数値解析 観測データ データ同化 VCA法の概要 - CFDモデルの修正式を定義 - 評価関数を用いて観測値との誤差を評価 - 誤差を最小化する修正項を求める

(

) (

)

=

Ψ

Ψ

Ψ

Ψ

=

P p p p p p

I

1 T

~

~

2

1

計算値と観測値の差分

(

~

)

0 1 T = Ψ − Ψ         ∂ Ψ ∂ = ∂ ∂

= P p p p p I

φ

φ

φ

λ

n n n n

A

Ψ

+

=

Ψ

−1 修正項 CFDの支配方程式 I φ 修正項φが評価 関数 I を最小化 するとき、 Iのφに 関する勾配が0に なる。

2.2 VCA法によるデータ同化計算機能の追加

VCA法の計算フロー

修正項を更新 CFD解析 CFD CFDと観測値の 誤差を評価 計算終了 観測値の読み込み 計算開始

2.2 VCA法によるデータ同化計算機能の追加

(5)

2.2 VCA法によるデータ同化計算機能の追加

・室内に未知の放出源があるケースを想定 ・吸込み口の濃度を観測データとして与える ・流れ場/放出時刻は既知。 ・観測データ取得位置における濃度のデータから、放出源の位置と 放出強度を推定。

計算例:未知の汚染放出源の

放出源位置と濃度の推定

観測データ 取得位置 U [m/s] 2.0 1.0 0.0

2.2 VCA法によるデータ同化計算機能の追加

計算条件 流れ場 非圧縮等温定常流れ 吸込口 1.0 m/s 吹出し口 自由開放 放出源大きさ 0.01 m2 (室内中央) 放出強度 100.0 g/m2/s 放出時間 1.0 秒間 速度-圧力解法 SIMPLE 時間の差分スキーム 1次精度オイラー法(Euler) 対流の差分スキーム 2次精度中心差分+TVD制限(Gauss limitedLinear) 勾配の差分スキーム 線形補間(Gauss Linear)

拡散の差分スキーム 線形補間(Gauss linear corrected)

CFD計算条件

19

2.2 VCA法によるデータ同化計算機能の追加

濃度分布計算結果

2.2 VCA法によるデータ同化計算機能の追加

VCA計算条件

計算条件 流れ場 既知 放出源 未知(放出源がない場合の数値計算からスタート) 観測点数 10点 観測間隔 0.1 sec 観測点位置 吸込口 観測データ 取得位置 U [m/s] 2.0 1.0 0.0

(6)

2.2 VCA法によるデータ同化計算機能の追加

VCA推定結果

濃度分布

2.2 VCA法によるデータ同化計算機能の追加

正解値との比較

正解値 推定値

2.2 VCA法によるデータ同化計算機能の追加

VCA推定結果

修正項

φ

の分布

φ[g/ms/s] +0.03 +0.02 -0.02 +0.01 +0.00 -0.01

2.2 VCA法によるデータ同化計算機能の追加

VCA計算条件

濃度、放出源位置ともに、実際よりも拡散している

観測される濃度が拡散していることを反映

制約条件として、「放出源強度は負にならない」とい

う条件を与えてみる

(7)

2.2 VCA法によるデータ同化計算機能の追加

正解値との比較

正解値 推定値

2.2 VCA法によるデータ同化計算機能の追加

VCA推定結果

修正項

φ

の分布

φ[g/ms/s] 0.06 0.05 0.00 0.04 0.03 0.02 0.01

2.2 VCA法によるデータ同化計算機能の追加

VCA推定結果

制約条件がない場合に比べ、推定精度が向上?

適切な制約条件を与えることで、推定精度を高め

ることができる?

まとめ

前半では、オープンソースCFDライブラリである

OpenFOAMを用いて数値解析をおこなう理由と方法に

ついて簡単に触れました

後半では、実際にOpenFOAMに計算機能を追加して

行った計算を紹介しました

VCA法を用いたデータ同化計算機能を追加しました

計算例では、未知の物質放出源の位置/強度、およ

び濃度分布の推定をおこなった例を紹介しました

28

参照

関連したドキュメント

専攻の枠を越えて自由な教育と研究を行える よう,教官は自然科学研究科棟に居住して学

大学は職能人の育成と知の創成を責務とし ている。即ち,教育と研究が大学の両輪であ

プログラムに参加したどの生徒も週末になると大

テューリングは、数学者が紙と鉛筆を用いて計算を行う過程を極限まで抽象化することに よりテューリング機械の定義に到達した。

研究計画書(様式 2)の項目 27~29 の内容に沿って、個人情報や提供されたデータの「①利用 目的」

1-1 睡眠習慣データの基礎集計 ……… p.4-p.9 1-2 学習習慣データの基礎集計 ……… p.10-p.12 1-3 デジタル機器の活用習慣データの基礎集計………

層の項目 MaaS 提供にあたっての目的 データ連携を行う上でのルール MaaS に関連するプレイヤー ビジネスとしての MaaS MaaS

2020年 2月 3日 国立大学法人長岡技術科学大学と、 防災・減災に関する共同研究プロジェクトの 設立に向けた包括連携協定を締結. 2020年