忍者ブログ

Open Source CFD メモ帳

Open Source CFDの使い方に関するコツをメモ帳形式でまとめたものです。 Open Source CFD実施時に前処理(プリ)、ソルバー、後処理ポストについてそれぞれSALOME、OpenFOAM、Paraviewを利用しています。

OpenFOAMソルバー開発に必要な知識

×

[PR]上記の広告は3ヶ月以上新規記事投稿のないブログに表示されています。新しい記事を書く事で広告が消えます。

コメント

ただいまコメントを受けつけておりません。

OpenFOAMソルバー開発に必要な知識

目的

 OpenFOAMは既存のソルバーは多数存在していますが、それぞれのソルバーでは特定な機能しかもっていないため、ユーザーが独自の問題を解析しようとしても適切なソルバーがないのはよくあります。その際、ユーザー自らOpenFOAMのソースコードを改造し、自分に適したソルバーを作成することになります。しかし、OpenFOAMのソルバーを作成する際、どのように行われるかについて迷うことがよくあると思います。ここでは、OpenFOAMソルバー開発に必要な知識について説明します。

必要な知識

 1)流体力学の基礎知識
 流体力学の内容はかなり多いので、基本的以下の知識をしっかり理解できればよりでしょう。ほかの部分でも重要が、何処に何かある程度で記憶すれば十分だと思います。
  • 流体力学の支配方程式(連続の式、運動量の保存式など)
  • 乱流境界層理論
 なお、熱を伴い流体であれば、伝熱工学の基礎知識も必要になります。よく使うのは熱伝導・強制対流などの、そこをしっかり理解する必要があります。また、学習に役立つ本を以下2冊としたが、特に「」はすごく優れた本であり、やや値段高く、ページ数が長いが、質量・化学種・運動量・エネルギーの輸送現象を大変わかりやすく説明しており、かなり重宝としています。

 参考書籍:
    A) 粘性流体の力学 機械工学基礎講座, 生井武文, 井上雅弘 著.
    B) Transport Phenomena, R. B. Bird, W. E. Stewart, E. N. Lightfoot.

 2)数値流体力学の基本
 数値流体力学では、流体力学の支配方程式を時間・空間的に離散化し、計算機を用いて現実世界の流れを再現する学問ですので、ここで主に習得したのは以下の2つだと思います。

  • 離散化の方法(有限差分法)
 日本の教育では、直交座標空間における有限差分法を用いて支配方程式の離散化を行うのは一般的です。有限差分法は比較的に理解しやすいので、まず、これを勉強してもいいと思います。但し、直交座標空間では一般性(メッシュのタイプが限られる)を持っていないため、将来への有限体積法の展開の妨げ(考え方が固くなる)になることも多いです。また、OpenFOAMでソルバーを開発する際に、直接差分法に触れることはほとんどないため、有限差分法の離散化手法は必ずしも重要ではないです。

 参考書籍:
    A) 非圧縮性流体解析「数値流体力学シリーズ」, 数値流体力学編集委員会 編集.
    B) コンピュータによる流体力学, 小林敏雄 翻訳.

  • 流体解析プログラムの一般的流れ
 これは非常に重要な内容と思います。特に非圧縮流体では未知数の数が方程式の数より多い(密度が圧力に依存せずに、一定である)ため、速度と圧力のカップリング(連成)が必要とされ、このカップリングより得た圧力ポアソン方程式に反復が用いられ、圧力場を求め、さらに流速場が計算されることになります。ここでのカップリングの方法によって、主に以下の3つの手法(分類)が存在します。

 A)MAC系(Marker and Cell)
 初心者とって非常に理解・勉強しやい、流体数値計算の練習に非常に向いています。また、研究に用いられる混相流解析(例えば、平均化多流体モデル、VOFなど)では、よくこの手法を利用します。理由としては、混相流現象は非定常である場合がほとんどであり、クーラント条件の制約によって、他の手法にしてもあまり計算が早くならないようで、MAC法のプログラムが非常にシンプルであるため、よく利用されたと考えます。私も研究室時代よくこの解法を使っていました。但し、汎用流体解析ソフトでは、この手法はほとんど利用しないようです。勉強するには、以下の参考書籍Aを使うことはおすすめです。

 B)SIMPLE系(Semi-Implicit Method for Pressure Linked Equations)
 基本的に、定常計算のための手法ですが、汎用流体解析ソフトにあるSIMPLE系解法では非定常も利用できます。この手法では、圧力と速度が同時収束させるため、比較的に早く定常解が得られます。ほとんどの汎用流体解析ソフトにはこの手法を導入しています。勉強するには、以下の参考書籍Bを使うことはおすすめです。なぜなら、この本の原著者はSIMPLE法の開発者の一人であるS. V. Patankar氏であるから。

 C)PISO法(Pressure implicit with splitting of operator)
 この手法の参考書は比較的にすくないです。1985年にR. I. Issa博士(Imperial College, London)に開発されたものです。この手法では、速度について収束を行わないが、時間進行につれて全体的な流れ場を収束させる手法であり、収束計算の方程式数が減りますので、非定常現象をより速く解けます。また、定常現象でもPISO法が利用でき、流れ場の時間に対する変化が十分小さくなれば、定常(準定常とも言えるでしょう)に達したと考えます。私も幸運があって、2012年Issa先生の研究室に訪問でき、先生と夕食を一緒にしながら、混相流に関する議論を行うことができました。

 参考書籍:
    A) 非圧縮性流体解析「数値流体力学シリーズ」, 数値流体力学編集委員会 編集.
    B) コンピュータによる熱移動と流れの数値解析, 水谷幸夫, 香月正司 共訳.

 3)有限体積法の基本
 日本の大学で、最初から数値流体解析を有限体積法からのはほとんどいないでは、従って、汎用流体解析ソフトの開発に皆さんが違和感が感じるます。特に、離散する支配方程式では有限差分法は偏微分形式のものを使うに対して、有限体積法ではコントロールボリュームに対する積分形式のものを利用します。そうすると、ベクトルやテンソルの操作について詳しくなる必要があります。従って、ここでの勉強のポイントは「線形代数」となります。勉強するには、以下の参考書籍を利用することがお勧めです。
 また、既にベクトル・テンソル操作がお慣れの方に、OpenFOAMの「Programmer's Guide」にも是非一読しましょう。大変簡潔にまとまっており、便利に使えます。

 参考書籍:
    A) 連続体力学の基礎, 冨田佳宏 著
    B) OpenFOAMの「Programmer's Guide」

 4)C++言語の習熟
 OpenFOAMはC++で書かれているため、ソルバー開発を行うには、C++言語に関する基本的な知識が必要です。C++はCから拡張したオブジェクト指向の言語であり、基本的な記述はCと違いが、クラス構造を利用しています。このクラスの使い方是非マスターして欲しいです。また、C++ではポインターを使ってメモリのアクセスを効率よくしているので、このポインターの理解が非常に重要です。C++言語の教材について、沢山の本やウェブサイトがありますので、そちらを活用しましょう。

 5)他の専門知識
 現実世界では、単一の流体が流れる装置は以外と少ないです。流れ中に多数の相(気相、液相、固相)が存在したり、相中に多数の成分(化学種)が存在することが多いです。また、これら流体中に伝熱・反応・燃焼・相変化(蒸発・凝縮・溶解など)も存在しうるため、非常に複雑な形態となっている場合も少なくないです。このような流れについて、それぞれの専門書を読む必要になるでしょう。
  
 *注意:CFDはあくまでも問題解決の手段であり、対象問題が非常に複雑であっても、知りたい現象・解決したい問題によって、すべての現象を考慮するまでもないでしょう。現象を簡略化し、問題を支配する本質な現象を絞り出し、よりシンプルなCFD解析を実施することは本当のCFDの目的だと考えています。すなわち、現象の理解・抽出は本のエンジニアの能力となります。

以上です。
PR

コメント

ただいまコメントを受けつけておりません。

ブログ内検索

ページ

カレンダー

07 2017/08 09
S M T W T F S
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31

プロフィール

HN:
Z. ZHANG
性別:
非公開