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

Similar documents
OpenFOAM_compile_basic 1 / /12/23 12: 年 12 月 13 日オープン CAE 富山 ( 富山県立大学中川慎二 ) Disclaimer OPENFOAM is a registered trade mark

2012/4/28 OpenCAE 初心者勉強会東海 1 twoliquidmixingdymfoam を用いた タンクでの塩水混合解析 ( その 1) TM

Microsoft PowerPoint OpenFOAMの使い方(柴田).ppt [互換モード]

OpenFOAM(R) ソースコード入門 pt1 熱伝導方程式の解法から有限体積法の実装について考える 前編 : 有限体積法の基礎確認 2013/11/17 オープンCAE 富山富山県立大学中川慎二

(Microsoft PowerPoint \225\327\213\255\211\357\(\215\202\213\264\).ppt)

OpenFAOM合同勉強会【関西】

技術資料 JARI Research Journal OpenFOAM を用いた沿道大気質モデルの開発 Development of a Roadside Air Quality Model with OpenFOAM 木村真 *1 Shin KIMURA 伊藤晃佳 *2 Akiy

ParallelCalculationSeminar_imano.key

パソコンシミュレータの現状

A Precise Calculation Method of the Gradient Operator in Numerical Computation with the MPS Tsunakiyo IRIBE and Eizo NAKAZA A highly precise numerical

Text

FEM原理講座 (サンプルテキスト)

大気環境シミュレーション

<4D F736F F F696E74202D208D E9197BF288CF68A4A B8CDD8AB B83685D>

様々なミクロ計量モデル†

はじめての OpenFOAM その 3 富 県 学 中川慎二 オープンCAE 富 2014 年 1 月 25 日 Disclaimer: OPENFOAM is a registered trade mark of OpenCFD Limited, the producer of the

差分スキーム 物理 化学 生物現象には微分方程式でモデル化される例が多い モデルを使って現実の現象をコンピュータ上で再現することをシミュレーション ( 数値シミュレーション コンピュータシミュレーション ) と呼ぶ そのためには 微分方程式をコンピュータ上で計算できる数値スキームで近似することが必要

Code_Aster / Salome-Meca 中級者への道 2015年5月31日

Microsoft Word - C言語研修 C++編 3.doc

NumericalProg09

Microsoft PowerPoint - 夏の学校(CFD).pptx

int main(int argc, char *argv[]) #include "setrootcase.h" #include "createtime.h" #include "createmesh.h" #include "createfields.h" #include "initcont

数値計算で学ぶ物理学 4 放物運動と惑星運動 地上のように下向きに重力がはたらいているような場においては 物体を投げると放物運動をする 一方 中心星のまわりの重力場中では 惑星は 円 だ円 放物線または双曲線を描きながら運動する ここでは 放物運動と惑星運動を 運動方程式を導出したうえで 数値シミュ

slide5.pptx

PowerPoint プレゼンテーション - 物理学情報処理演習

CLEFIA_ISEC発表

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdio.h> #define InFile "data.txt" #define OutFile "sorted.txt" #def

密集市街地における換気・通風性能簡易評価ツールの開発 (その2 流体計算部分の開発)」

Microsoft Word - NumericalComputation.docx

関数の呼び出し ( 選択ソート ) 選択ソートのプログラム (findminvalue, findandreplace ができているとする ) #include <stdiu.h> #define InFile "data.txt" #define OutFile "surted.txt" #def

この講習の目的 OpenFOAM のソースコードを読むのに必要な, 基礎的な知識を知る ソルバのソースコードから, その先で行われていることを探る方法を知る 基礎的なソルバの, 大まかな流れを知る 有限体積法が実装されていそうなことを感じ取る? 2

Slide 1

OpenFOAM 勉強会 C++ プログラム相談 のご案内 オープン CAE シンポジウム 2012 金田誠 (OpenFOAM 勉強会 for 関東 ) 1

<4D F736F F F696E74202D208BAB8A458FF08C8F82CC8AEE916282C68C8892E896402E707074>

OpenCAE勉強会 公開用_pptx

Java知識テスト問題

航空機の運動方程式

プログラミング実習I

Microsoft Word - Training10_プリプロセッサ.docx

FIT2016( 第 15 回情報科学技術フォーラム ) RC-010 スーパーコンピュータ 京 における C++ アプリケーションの評価 Evaluation of Compiler Optimization of C++ application on the K computer 千葉修一 1

NS NS Scalar turbulence 5 6 FEM NS Mesh (A )

memo

...Y..FEM.pm5

画像ファイルを扱う これまでに学んだ条件分岐, 繰り返し, 配列, ファイル入出力を使って, 画像を扱うプログラムにチャレンジしてみよう

0 21 カラー反射率 slope aspect 図 2.9: 復元結果例 2.4 画像生成技術としての計算フォトグラフィ 3 次元情報を復元することにより, 画像生成 ( レンダリング ) に応用することが可能である. 近年, コンピュータにより, カメラで直接得られない画像を生成する技術分野が生

Microsoft PowerPoint - 第7章(自然対流熱伝達 )_H27.ppt [互換モード]

Microsoft PowerPoint - 10Com2.ppt

PowerPoint Presentation

TFTP serverの実装

Microsoft PowerPoint - ●SWIM_ _INET掲載用.pptx

PowerPoint プレゼンテーション

とても使いやすい Boost の serialization

kantan_C_1_iro3.indd

微分方程式 モデリングとシミュレーション

PowerPoint プレゼンテーション

シミュレーション物理4

Prog1_6th

CAEソリューションズのご紹介

計算機シミュレーション

Microsoft PowerPoint - 4.pptx

PowerPoint プレゼンテーション

swak4Foamを使って見ました.odp

Microsoft PowerPoint - 6.PID制御.pptx

PowerPoint Presentation

ポインタ変数

今後の予定 6/29 パターン形成第 11 回 7/6 データ解析第 12 回 7/13 群れ行動 ( 久保先生 ) 第 13 回 7/17 ( 金 ) 休講 7/20 まとめ第 14 回 7/27 休講?

<4D F736F F F696E74202D20834A815B836C838B835C815B835882CC95E082AB95FB F4B2E B8CDD8AB B83685D>

Microsoft PowerPoint Java基本技術PrintOut.ppt [互換モード]

今回のプログラミングの課題 ( 前回の課題で取り上げた )data.txt の要素をソートして sorted.txt というファイルに書出す ソート (sort) とは : 数の場合 小さいものから大きなもの ( 昇順 ) もしくは 大きなものから小さなもの ( 降順 ) になるよう 並び替えること

第 1 章 : はじめに RogueWave Visualization for C++ の Views5.7 に付属している Views Studio を使い 簡単な GUI アプリケーションの開発手順を紹介します この文書では Windows 8 x64 上で Visual Studio2010

kiso2-03.key

<4D F736F F D20332E322E332E819C97AC91CC89F090CD82A982E78CA982E9466F E393082CC8D5C91A291CC90AB945C955D89BF5F8D8296D85F F8D F5F E646F63>

PowerPoint プレゼンテーション

COMSOL Multiphysics®Ver.5.3 パイプ流れイントロダクション

JavaプログラミングⅠ

Microsoft PowerPoint - Š’Š¬“H−w†i…„…C…m…‰…Y’fl†j.ppt

1. 関数 scanf() 関数 printf() は変数の値を画面に表示しますが それに対し関数 scanf() はキーボードで入力した値を変数に代入します この関数を活用することで対話式 ( ユーザーの操作に応じて処理を行う ) プログラムを作ることができるようになります 整数の和

スライド 1

熱伝達の境界条件 (OF-2.1 OF-2.3) 1/7 藤井 15/01/30 熱伝達の境界条件 (OF-2.1 OF-2.3) 目次 1. はじめに 2. 熱伝達の境界条件 (fixedalphatemp) の作成 2-1. 考え方 2-2. fixedalphatemp の作成 3. 作動確認

program7app.ppt

Microsoft PowerPoint - ロボットの運動学forUpload'C5Q [互換モード]

OpenFOAM 流体構造連成解析 概要 : OpenFOAM-1.5-dev に搭載されている連成解析 ソルバー (icofsifoam) と 公開されている片持ち梁の 例題 (flappingconsolesmall) を使って それらの使用方法と ( 例題の ) 拡張方法を演習する

Microsoft PowerPoint - 第8章

(Microsoft PowerPoint - \221\34613\211\361)

02: 変数と標準入出力

Microsoft PowerPoint - 知財報告会H20kobayakawa.ppt [互換モード]

PowerPoint プレゼンテーション

Microsoft PowerPoint - 発表II-3原稿r02.ppt [互換モード]

Agenda 富士通 C++ コンパイラ C++ コンパイラの概要 C++ コードに対する課題 最適化の拡張 性能状況 OpenFOAM FX10 向けOpenFOAM OpenFOAM 構築 OpenFOAM 利用 OpenFOAMの性能改善 流体解析ヘルプデスク (OpenFOAM) 1

Microsoft PowerPoint - 計算機言語 第7回.ppt

CW単品静解析基礎

PGRelief C/C++ 強化ポイント説明書

Microsoft PowerPoint - H22制御工学I-2回.ppt

DVIOUT

Microsoft PowerPoint - H21生物計算化学2.ppt

Microsoft PowerPoint SIGAL.ppt

目次 はじめに 4 概要 4 背景 4 対象 5 スケジュール 5 目標点 6 使用機材 6 第 1 章 C# 言語 7 C# 言語の歴史 7 基本構文 8 C 言語との違い 9 Java 言語との違い 10.Netフレームワーク 10 開発資料 10 第 2 章 Mono 11 Monoの歴史 1

PowerPoint プレゼンテーション

Taro-ポインタ変数Ⅰ(公開版).j

PowerPoint プレゼンテーション

Transcription:

NEE 研究会第 18 回講演討論会 OpenFOAM への計算機能追加連続的データ同化法 (VCA 法 ) の実装 大阪大学大学院工学研究科博士後期課程松尾智仁 内容 1.1 OpenFOAMの特徴 1.2 OpenFOAMを使うにあたって 2.OpenFOAM への計算機能追加 2.1 計算機能の追加の方法 VCA 法とは 計算例 2015.01.27 於大阪大学中之島センター 2 1.1 OpenFOAM の特徴 オープンソースである => 内部でどのような計算が行われているかわかる => 式や処理を自由に改変することができる 研究で用いる場合 どのような計算条件 ( 離散化の方法 乱流モデル 差分スキーム ) で計算が行われているのかを明らかにする必要がある 従来とは違う計算手法を試したくなることがある 1.1 OpenFOAM の特徴 機能が多彩である => たいていの計算であれば コードを自作しなくても実行できる => たとえば差分スキームの違いによる結果の差異などが容易に評価できる 研究で用いる場合 適切なスキームは条件によって異なる コーディングは主な目的ではない 3 4

1.2 OpenFOAM を使うにあたって 導入のハードルが高い 日本語文献がまだ多くはない TutorialやUserGuideがあまり親切ではない Linux 上で動作する GUIが無い 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 に関する情報多数 ( 非公式 ) 5 Google(https://www.google.co.jp/) 大抵のことは検索すれば見つけられます 6 1.2 OpenFOAM を使うにあたって 使用環境 仮想環境 : VMware player (Windows 上で動作 ) 作業環境 : ワークステーション上の Linux(ssh 接続 ) Linux : Ubuntu1204 64bit OpenFOAM : OpenFOAM 2.3.0 ソースコード操作 :Eclipse ( with Pleiades ) 結果処理 : paraview 2.OpenFOAM への計算機能追加 ソルバの場所 : /opt/openfoam2.3.0/applications/solver 以下 ソースコードは C++ で書かれている いわゆるオブジェクト指向で クラスの継承 オーバーロード ( 関数 / 演算子の多重定義 ) オーバーライド ( 関数の上書き ) といった C++ に特有の機能が使われている 高度にモジュール化されている 機能追加は比較的簡単に行なえる 7 8

2.OpenFOAM への計算機能追加 クラスや関数の定義はすでになされているため 主としてそれらを組み合わせることで任意のソルバを作成する たいていは 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" 計算ケースの読み込み 計算条件 ( 時間 ) の読み込み メッシュの作成 変数 ( 速度 圧力など ) の作成 オプションの設定 初期残差の計算 9 simplecontrol simple(mesh); SIMPLE の繰返しの制御の作成 例 :simplefoam の main 関数 ( つづき ) 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; SIMPLE のループ 例 : 非圧縮定常流れの運動量方程式 ( ν U ) = p ( UU ) + eff fvscalarmatrix UEqn( fvm::div(phi, U) + turbulence->divdevreff( U) == fvoptions(u) ); solve( UEqn() == -fvc::grad(p) ); 対流項 粘性項 オプション ( 何もしない ) 圧力項 12

方程式を追加する場合 微分方程式は行列の形で表現される 例 : 非定常の物質の保存式 C + ( ρuc) = ( Γ C) + S t fvscalarmatrix Equation( fvm::ddt(conc) +fvm::div(phi,conc) == fvm::laplacian(turbulence->nueff(), conc) +fvoption(conc) ); 非定常項対流項 拡散項オプション ( ソース項 ) 13 VCA 法とは Variational Continuous Assimilation method データ同化法の一種で 観測データを用いて CFD モデルを修正しながら計算を行う手法 Derber(1989) A variational continuous assimilation technique 数値解析 観測データ データ同化 修正された数値解析 14 VCA 法の概要 - CFD モデルの修正式を定義 n A n n 1 Ψ = Ψ + λ n φ - 評価関数を用いて観測値との誤差を評価 1 P p ~ p T p ~ p I = 2 ( Ψ Ψ ) ( Ψ Ψ ) p= 1 - 誤差を最小化する修正項を求める P p I Ψ = φ p= 1 φ T p ~ p ( Ψ Ψ ) = 0 CFD の支配方程式 修正項 計算値と観測値の差分 I φ 修正項 φ が評価関数 I を最小化するとき I の φ に関する勾配が 0 になる VCA 法の計算フロー 計算開始 CFD 解析 観測値の読み込み CFD と観測値の誤差を評価 計算終了 修正項を更新

計算例 : 未知の汚染放出源の放出源位置と濃度の推定 室内に未知の放出源があるケースを想定 吸込み口の濃度を観測データとして与える 流れ場 / 放出時刻は既知 観測データ取得位置における濃度のデータから 放出源の位置と放出強度を推定 観測データ取得位置 U [m/s] 2.0 1.0 CFD 計算条件 計算条件 流れ場 非圧縮等温定常流れ 吸込口 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) 0.0 濃度分布計算結果 VCA 計算条件 計算条件 流れ場 既知 放出源 未知 ( 放出源がない場合の数値計算からスタート ) 観測点数 10 点 観測間隔 0.1 sec 観測点位置 吸込口 U [m/s] 2.0 観測データ取得位置 1.0 19 0.0

濃度分布 正解値との比較 正解値 推定値 修正項 φ の分布 φ [g/ms/s] +0.03 VCA 計算条件 濃度 放出源位置ともに 実際よりも拡散している 観測される濃度が拡散していることを反映 +0.02 +0.01 制約条件として 放出源強度は負にならない という条件を与えてみる +0.00-0.01-0.02

正解値との比較 修正項 φ の分布 φ [g/ms/s] 0.06 0.05 0.04 0.03 0.02 正解値 推定値 0.01 0.00 制約条件がない場合に比べ 推定精度が向上? 適切な制約条件を与えることで 推定精度を高めることができる? まとめ 前半では オープンソース CFD ライブラリである OpenFOAM を用いて数値解析をおこなう理由と方法について簡単に触れました 後半では 実際に OpenFOAM に計算機能を追加して行った計算を紹介しました VCA 法を用いたデータ同化計算機能を追加しました 計算例では 未知の物質放出源の位置 / 強度 および濃度分布の推定をおこなった例を紹介しました 28