河村 哲也、佐々木 桃 (2023) Python による流体解析

  • 河村 哲也、佐々木 桃, 2023: Python による流体解析 (実践 Python ライブラリー)。朝倉書店, 216 pp. ISBN 978-4-254-12902-1.

2023年7月の新刊。A5判 横書きのペーパーバック。

河村 (2014) 『流体解析の基礎』をもとに、その本の Fortran または C によるプログラムを佐々木さんが Python に書きかえたものである。

題材はおもに、非圧縮流体の運動方程式系を差分近似でとくものである。付録で、有限要素法や有限体積法の考えかたも紹介されている。

非圧縮流体の運動方程式は、圧力の式と速度の式の連立になるが、圧力を消去して変形した方程式系をつかう方法がある。2次元のばあいは「流れ関数」と渦度、3次元のばあいは「ベクトルポテンシャル」と渦度である。他方、連立のままとく方法もある。ここで非圧縮流体ならば速度ベクトルの発散は 0 となるべきなのだが、それをみたす数値解を求めるのは困難だ。厳密には 0 にならないがじゅうぶん小さくなるようなくふうがあり、MAC (marker and cell) 法とよばれている。本書では 2次元と 3次元の問題に MAC 法を適用している。

現実的な問題として室内気流をあつかっている。ここでは温度による密度変化があるので厳密には非圧縮ではないのだが、密度の変化の効果は浮力にだけあらわれるという Boussinesq (ブシネスク) 近似をしている。

本書のプログラムは、Python 文法にあってはいるが、「Python らしいプログラム」というよりも「Fortran らしいプログラム」だと思う。しかし、Python であまり複雑なプログラムを書くことはすすめられず、本格的な流体シミュレーションをするには Fortran か C にうつったほうがよいから、むしろ「Fortran らしい Python」のほうが初級むけの教材としてはよいのかもしれない。

それにしても、配列の添え字の順序とループの関係はこれでよいのだろうか。Fortran では、配列 A(i,j) の内容は、計算機の記憶装置内の位置が、1つめの添え字 (ここでは i) が 1つちがうものがとなりどおしにあり、あとの添え字 (ここでは j) が 1つちがうものはもっと遠い。それで、二重ループは i によるものを内側にしたほうがよいとされている。ところが Python の配列変数 A[i,j] では、あとの添え字 (ここでは j) のほうが内側だと聞いた。そうすると、j によるループのほうを内側に書いたほうがよいと (わたしは) 思う。【むしろ、Fortran の A(i,j) には Python の A[j,i] を対応させるべきだという考えもある。わたしは自分の気象データ処理ではその考えにしたがっている。】 しかし本書では A[i, j] をあつかうループは i のほうが内側に書かれている。著者の判断は、その順序の入れかえによる実行効率のちがいは無視できるということなのかもしれない。それよりも、Fortran にうつることになったばあいのうつりやすさのほうが重視されているのかもしれない。

文献

  • 河村 哲也, 2014: 流体解析の基礎。朝倉書店。

折りかえしのあとに目次をつける。

== 目次 ==
はじめに
目次
1. 常微分方程式の差分解法
– 1.1 差分方程式の構成法
– – 1.1.1 微分の定義を用いる方法
– – 1.1.2 テイラー展開
– – 1.1.3 ラグランジュ補間の応用
– 1.2 境界値問題
– 1.3 初期値問題 1
– 1.4 初期値問題 2
– 1.5 数値積分の応用
2. 線形偏微分方程式の差分解法
– 2.1 2階線形偏微分方程式の分類
– 2.2 楕円型偏微分方程式
– 2.3 放物型偏微分方程式 1
– 2.4 放物型偏微分方程式 2
– 2.5 双曲型偏微分方程式
– 2.6 移流拡散方程式と上流差分法
– 2.7 非線形移流方程式の差分解法
– – 2.7.1 上流差分
– – 2.7.2 マコーマック法
– – 2.7.3 1次元オイラー方程式
3. 非圧縮性ナビエ-ストークス方程式の差分解法
– 3.1 ナビエ-ストークス方程式
– 3.2 圧力を消去する方法
– – 3.2.1 流れ関数-渦度法
– – 3.2.3 ベクトルポテンシャル-渦度法
– 3.3 圧力を求める方法
– – 3.3.1 MAC法
– – 3.3.2 SMAC法
– – 3.3.3 プロジェクション法
– – 3.3.4 フラクショナル・ステップ法
4. 熱と乱流の取り扱い (室内気流の解析)
– 4.1 室内気流の層流解析
– – 4.1.1 流れ関数-渦度法 (非定常)
– – 4.1.2 MAC法
– 4.2 熱の取り扱い
– – 4.2.1 強制対流問題
– – 4.2.2 自然対流問題
– 4.3 乱流の取り扱い
– – 4.3.1 レイノルズ方程式と渦粘性
– – 4.3.2 混合距離モデル
– – 4.3.3 k-ε モデル
5. 座標変換と格子生成
– 5.1 曲がった境界の取り扱い方
– 5.2 1次元座標変換
– 5.3 2次元座標変換
– 5.4 3次元座標変換
– 5.5 代数的格子生成法
– – 5.5.1 ラグランジュ補間法
– – 5.5.2 エルミート補間法
– – 5.5.3 スプライン補間法
– – 5.5.4 超限保管法
– 5.6 偏微分方程式による格子生成法
– – 5.6.1 ラプラス方程式による格子生成
– – 5.6.2 ポアソン方程式による格子生成
– – 5.6.3 境界と直交する格子
– – 5.6.4 領域内で直交する格子
6. いろいろな 2次元流れの計算
– 6.1 ポテンシャル流の解析例
– 6.2 流れ関数-渦度法による解析例
– – 6.2.1 障害物まわりの流れ
– – 6.2.2 円柱まわりの流れ
– – 6.2.3 拡大管内の流れ
– 6.3 MAC法による解析例
– – 6.3.1 楕円柱まわりの 2次元流れ
7. MAC法による 3次元流れの解析
– 7.1 3次元立方体キャビティ内の流れ
– 7.2 3次元室内気流
– 7.3 多くの物体まわりの 3次元流れ
– 7.4 任意形状領域での 3次元流れ
付録
– A. 安定性
– B. 重み付き残差法 (常微分方程式)
– – B.1 選点法
– – B.2 ガレルキン法
– – B.3 有限要素法
– C. 有限体積法
– D. SIMPLE法
– E. 連立1次方程式の反復解法
– – E.1 反復法
– – E.2 ヤコビの反復法
– – E.3 ガウス-ザイデル法
– – E.4 SOR法
– F. 数値積分
プログラムの内容
引用文献
参考図書
索引
==========

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください