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次元移流方程式のアニメーション結果

 

 

カマキリ

やったー。

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

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

【プロフィール】

カマキリ
(^^)

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

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

 

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

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

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