Python

【初心者歓迎!Python流体の数値計算】「2次元キャビティ流れ」と「ポアズイユ流れ」までをまとめました!

こんにちは(@t_kun_kamakiri)。
こちらにある英語で書かれたPython流体の数値計算シリーズを日本語でまとめあげました!

カマキリ

2ヶ月くらいかかりましたが、ようやく最後までいけましたm(__)m

この記事ではこんな人を対象にしています。

  • Pythonを使い始めたけどどう使うかわからない
  • 流体の数値計算をはじめて勉強する人
 
本記事シリーズの最終目標は、ナビエストークス方程式をPythonで実装することですが、いきなりナビエストークス方程式を実装するのは難しいので、
「17回に分けてPythonを使って流体の数値計算」を解説しています。
 

最終的には、以下のような数値計算を実装しています!

【最終課題1】
「キャビティ流れ」と呼ばれる流れ。

【最終課題2】

「ポアズイユ流れ」と呼ばれる流れ。

 

最後まで読めば、きっとこうなっていることでしょう(‘ω’)ノ

博士

流体力学というのは、・・・ペラペラペラペラ・・・

女性

Pythonなら、・・・あーだ、こーだ・・・

正直言って、流体力学、さらには流体解析や流体の数値シミュレーションはそんなに易しいものではありません!
これを書いている僕は「流体解析なんもわからん(´Д`)」という人です。
そんな初心者だからこそ、いちから自分の言葉で書いてみることに意味はあると考えて書いてみました。
英語で書かれたこちらの翻訳ではなく、自分の言葉で解釈をし直して書いています。
「Python・流体・流体の数値計算」のいずれかの初学者にはおすすめできる内容かと思います(^^)/

スポンサーリンク

Python流体の数値計算シリーズ

 

Pythonを使って流体の数値計算の基礎を学ぶことができます。

  1. 【第1回Python流体の数値計算】目標と環境構築。まずはここからはじめよう!

  2. 【第2回Python流体の数値計算】Numpyの使い方を確認する。

  3. 【第3回Python流体の数値計算】「参照渡し」と「値渡し」の違いを理解する。

  4. 【第4回Python流体の数値計算】1次元移流方程式を差分法で実装する。

  5. 【第5回Python流体の数値計算】移流方程式をGoogle Colaboratoryでアニメーション作成。

  6. 【第6回Python流体の数値計算】移流方程式のクーラン条件!数値的安定性(差分法)

  7. 【第7回Python流体の数値計算】1次元拡散方程式を差分法で実装する。

  8. 【第8.1回Python流体の数値計算】バーガース方程式を差分法で実装する。
    【第8.2回Python流体の数値計算】バーガース方程式の非線形項は異なる波数間での相互作用が生じるという意味。
    【第8.3回Python流体の数値計算】バーガース方程式の一般解(コール・ホップ変換によって拡散方程式になる)

  9. 【第9回Python流体の数値計算】Numpyでスライスを使って計算を速くする!

  10. 【第10回Python流体の数値計算】2次元の線形移流方程式をGoogle Colaboでアニメーション作成する。

  11. 【第11回Python流体の数値計算】2次元移流方程式をGoogle Colabでアニメーション作成する。

  12. 【第12回Python流体の数値計算】2次元拡散方程式をGoogle Colabでアニメーション作成する。

  13. 【第13回Python流体の数値計算】2次元バーガース方程式をGoogle Colabでアニメーション作成する。

  14. 【第14回Python流体の数値計算】2次元ラプラス方程式をPythonで実装する。

  15. 【第15回Python流体の数値計算】2次元ポアソン方程式をPythonで実装する。

  16. 【第16回Python流体の数値計算】2次元ナビエストークス方程式!キャビティ流れをPythonで実装する。

  17. 【第17回Python流体の数値計算】2次元ナビエストークス方程式!ポアズイユ流れをPythonで実装する。

本シリーズで学んだことを活かして、境界条件や空間領域などの設定を変更しながら流体の数値計算を楽しんでもらえればと思います♪

わかりにくい部分や誤字、数式の記述間違いなどありましたら記事一番下の「コメント欄」もしくは「お問い合わせフォーム」までご連絡いただければ幸いですm(__)m
また、もう少し詳しく解説してほしいなどのリクエストがありましたが、記事として追加したいと思いますので遠慮なくお申し付けください。

また、ブログ記事に関係ない内容など個別に教えてほしいという方は「物理の質問サービス(有料)」もやっていますので、是非よろしお願いします。

 

※ブログ内の記事に関する質問は無料ですので、記事一番下の「コメント欄」もしくは「お問い合わせフォーム」までご連絡いただければ幸いですm(__)m

 

おすすめの書籍紹介

 

本シリーズで紹介したのは流体の数値計算のほんの一部の解き方だけです。
取り扱う流体現象や方程式によっては十分な精度がでなかったり、安定的に解いてくれなかったりします。
流体の数値計算を行う際は、以下の内容をきちんと学んでおく必要があります。

  • プログラミング言語(Pythonなど)
  • 流体力学
  • 数値流体
  • 数値計算

以下に、書籍の紹介をしておきます。

ネット上には無料で多くのことが学べるのですが、ネット情報だけだと情報が偏ったりします。

やっぱり書籍を手に取って体系だって学んだ方が良い場合も多いです。

初心者でもので体系だって学ぶことができる、且つあまり難しすぎない書籍をここで紹介しておきます。

Pythonの完全初心者は書籍で学ぶとよい

 

Python自体が不安だという方は、こちらの書籍から勉強しても良いかも知れません。

☟こちらの本がPython初心者が挫折することなく勉強できる本です。
(本記事のようのPython使用環境と異なりますが、とてもわかりやすいので全く問題ありません)

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)

確かな力が身につくPython「超」入門 (確かな力が身につく「超」入門シリーズ)

鎌田 正浩
2,728円(11/29 01:39時点)
発売日: 2016/03/16
Amazonの情報を掲載しています
僕自身もこの書籍ではじめは勉強しました。
小難しい余計なことが書いていないし、年末の一週間くらいで読むことができたので、初心者の方にはとてもお勧めです。
 

流体の勉強をしたい方

 

流体の数値計算以前に、流体力学を勉強しないと!!って思っている方は以下の参考書からはじめてみるのが良いと思います。

流体力学 (JSMEテキストシリーズ)

流体力学 (JSMEテキストシリーズ)

日本機械学会
2,075円(11/28 15:30時点)
発売日: 2005/04/01
Amazonの情報を掲載しています

工学よりに書かれていて実用的な内容も触れながら、流体の理論的な内容も易しく書かれていますので大学1年生で偏微分を学んだ方にとってはちょうどよい参考書です。

数値流体の書籍

 

本記事で紹介している数値計算手法は、多くの数値解法のごく一部です。

特に、非線形方程式で記述できる流体現象のようなものは注意深く数値解法を選択しなくてはいけません。

以下の書籍は、値段が高いですが有限体積法をメインに数値解法がとても詳しく解説されています。

数値流体力学 第2版

数値流体力学 第2版

H.K.Versteeg, W.Malalasekera
10,450円(11/28 12:07時点)
発売日: 2011/05/31
Amazonの情報を掲載しています

 

数値計算の書籍

 

今回紹介したポアソン方程式は「ヤコビ法」と呼ばれる反復計算を行っていますが、その他の有名な数値的解法のをいくつか挙げておきます。

  • ガウス消去法(直接法)
  • ガウス・ジョルダン法(直接法)
  • ヤコビ法(反復法)
  • ガウス・ザイデル法(反復法)
  • SOR法(反復法)

などがあります。

詳しく勉強したい方は、以下の参考書がとてもわかりやすいです。

数値計算 (理工系の基礎数学 8)

数値計算 (理工系の基礎数学 8)

高橋 大輔
3,190円(11/28 17:43時点)
発売日: 1996/02/16
Amazonの情報を掲載しています

数値計算の闇について詳しく知りたい方は、☟こちらの参考書も合わせてお読みください。

数値計算の常識

数値計算の常識

伊理 正夫, 藤野 和建
2,750円(11/28 17:43時点)
発売日: 1985/06/03
Amazonの情報を掲載しています

 

 

【プロフィール】

カマキリ
(^^)

大学の専攻は物性理論で、Fortranを使って数値計算をしていました。
CAEを用いた流体解析は興味がありOpenFOAMを使って勉強しています。

プロフィール記事はこちら

 

大学学部レベルの物理の解説をします 大学初学者で物理にお困りの方にわかりやすく解説します。

このブログでは主に大学以上の物理を勉強して記事にわかりやすくまとめていきます。

  • ・解析力学
  • ・流体力学
  • ・熱力学
  • ・量子統計
  • ・CAE解析(流体解析)
  • note
    noteで内容は主に「プログラミング言語」の勉強の進捗を日々書いています。また、「現在勉強中の内容」「日々思ったこと」も日記代わりに書き記しています。
  • youtube
    youtubeではオープンソースの流体解析、構造解析、1DCAEの操作方法などを動画にしています。
    (音声はありません_(._.)_)
  • Qiita
    Qiitaではプログラミング言語の基本的な内容をまとめています。