Python

【簡単にできた!】データをPythonで読み込んでアニメーション作成

こんにちは(@t_kun_kamakiri)(‘◇’)ゞ

偏微分方程式を数値計算で解いて、結果をアニメーションしたいと思ったときにPythonを使うと楽でしたので記事に残しておこうと思います(^^)/

本記事の内容

Fortranで出した出力データをPythonでアニメーション作成する

前回の記事で、アニメーション作成にはgnuplotやparaviewを使ったりしました。

 

色々試してみて・・・・

Fortranで数値計算してデータを出力しておいて、Pythonでサクッっとアニメーション作成作れるようにもしておこうかなって思いました。

【本記事の内容】数値計算からアニメーション作成までのフローはこちら↓。

 

※Fortranのコードとスクリプトは本記事にアップされています。
※FortranのコードはFortran90/95の書き方にしているつもりですが正確に書けているかは不明です。
※FortranはWSLを使ってインストールしています。
※PythonはJupyter Notebookを使っています。

スポンサーリンク

解く方程式は1次元移流方程式

簡単な偏微分方程式を題材にしておきます(^^)

1次元の移流方程式
\begin{align*}\frac{\partial T(x,t)}{\partial t}+u\frac{\partial T(x,t)}{\partial x}=0\tag{1}\end{align*}
※\(u\):一定速度
1次元の移流方程式は、下記の絵のように何かの物理量を形を変えずに一定速度\(u\)で運ぶ方程式を意味しています。

1次元移流方程式を離散化する

(1)式を離散化する場合は注意する必要があったんですよね。

1次元移流方程式を陽解法で解くときには、数値的に安定な条件で離散化&条件設定をする必要がありました。

前回の記事はこちら
カマキリ

この記事は、なかなか教育的な記事が書けた気がする。

結論を書いておくと、

  • 陽解法で解くのあれば後退差分(風上差分)でないと数値的に安定には解いてくれないということがわかりました。

↑Fortranで解くのは赤枠の離散化した式です。
※\(\alpha=\frac{u\Delta t}{\Delta x}\)

さらに、

  • 空間と時間の刻みにも制限がありました。
    (記事の内容は1次元移流方程式ではありませんが・・・)

1次元熱伝導方程式の陽解法で解いた時の数値的安定性

 

話をまとめると・・・

  1. 離散化する際の差分に注意する
  2. 数値的に安定な「空間と時間」の刻みを考える

※陰解法で解く場合はまた状況が異なりますが・・・(‘_’)

Fortranで1次元移流方程式を解く

Fortranのコードを載せておきましょう(^^)/

ファイルの書き出し部分の解説↓

Fortranを実行すると・・・(僕はgfortranを使っています)

データがいっぱいできるので、これをPythonでアニメーション作成しようということになります。

Pythonでアニメーション作成

Pythonでのアニメーション作成用のコードはこちら↓

ファイル構成はこうなっています↓

20190519_1Danimetion_Fortran2Python_iryu2.zip

 

これをJypter Nootebookで実行すると・・・アニメーション作成ができます(^^)/

1次元移流方程式のアニメーション結果

カマキリ

やったー。

でも、「形を変えずに動く」という結果にはなっていませんね(笑)

これは数値計算の離散化に問題がありそうなので、改善しないといけないです・・・・

参考書

数値計算のためのFortran90/95プログラミング入門(第2版)

数値計算のためのFortran90/95プログラミング入門(第2版)

牛島 省
3,465円(11/21 14:11時点)
Amazonの情報を掲載しています
Fortran ハンドブック

Fortran ハンドブック

田口俊弘
3,450円(11/21 02:43時点)
発売日: 2015/07/22
Amazonの情報を掲載しています
Pythonで学ぶ流体力学の数値計算法

Pythonで学ぶ流体力学の数値計算法

藤井孝藏, 立川智章
4,180円(11/21 00:02時点)
Amazonの情報を掲載しています
スッキリわかるPython入門 (スッキリわかる入門シリーズ)

スッキリわかるPython入門 (スッキリわかる入門シリーズ)

国本大悟, 須藤秋良
2,480円(11/20 19:30時点)
Amazonの情報を掲載しています
関連記事もどうぞ

COMMENT

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