Python

Pythonで2次元の熱伝導方程式をアニメーションが簡単にできた

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

↓前回の記事で2次元熱伝導方程式をFortranで解いて、アニメーションをgnuplotで作成するというのをしました。

前回の記事はこちら

アニメーションはこんな感じ

 

 

さらに、↓vtk形式としてparaviewでアニメーション作成するというのもしました。

前回の記事はこちら

paraviewによる基本的な操作は動画にしています。

カマキリ

「gnuplotのスクリプトを書く」のも「vtk形式でparaviewで読む」のも結構調べるの大変だった

 

上記のように色々試しましたが、結局アニメーション作成はPythonでさくっとやってしまおうと思いましたね・・・・(‘ω’)

本記事の内容はこちら
Pythonで2次元の熱伝導方程式を解いて、Pythonでアニメーションまで作成。

 

※Pythonの動作にはJupyter Notebookを使用しています。

スポンサーリンク

Pythonの使用環境

 

Pythonの使用環境は色々あると思います。

以下に代表的なものを紹介しておきます。

①Pythonの本家をインストール

②AnacondaをインストールしてJupyter notebookを使用

③PycharmをインストールしてPythonを使用

④visual studioをインストールしてPythonを使用

 

カマキリ

僕はAnacondaをインストールしてJupyter notebookを使用したいと思います。

 

2次元熱伝導方程式を離散化して解く

 

解きたい方程式は、下記の記事でも詳しく解説しています。

前回の記事はこちら

 

Pythonで解きたい方程式は↓こちらです。

2次元熱伝導方程式
 
\begin{align*}\frac{\partial T}{\partial t}=\kappa\bigg(\frac{\partial^2T}{\partial x^2}+\frac{\partial^2T}{\partial y^2}\bigg)\tag{1}\end{align*}
 
熱伝導方程式は、初期状態を与えれば(1)式に従って時間発展をする方程式です。
今回は初期状態を以下のようにしておきます。
 
中央だけ中央だけ温度が高く、\(x\)方向の両端は温度0(K)の条件となっています。
 
また、\(x\),\(y\)の端は初期状態から変化させないような境界条件にしているので、時間発展させると中央の高い温度の部分から低い温度へ熱移動が生じて、下記のような変化を示します。
立体的に見るとこんな感じですね(^^)/
 
 
 
(1)式の偏微分方程式を離散化するにあたって、
  • 時間微分の項(左辺)は陽解法
  • 空間微分の項(右辺)は2次精度

で離散化で進めていきましょう。

離散かされた式が↓こちらです。
\begin{align*}T^{n+1}(x_{i},y_{j})=T^{n}(x_{i},y_{j})+\kappa dt\frac{T^{n}(x_{i}+\Delta x,y_{j})-2T^{n}(x_{i},y_{j})-T^{n}(x_{i}-\Delta x,y_{j})}{\Delta x^2}\\
\kappa dt\frac{T^{n}(x_{i},y_{j}+\Delta y)-2T^{n}(x_{i},y_{j})-T^{n}(x_{i},y_{j}-\Delta y)}{\Delta y^2}\tag{2}\end{align*}
 
 
今回は、これをPythonで解いてアニメーション作成までしようということになります。
 
 

Pythonで解いて2次元のアニメーション

 
Pythonのコードを載せておきましょう。

 

アニメーション作成の結果

 

作成されたアニメーション作成はこんな感じです。

 

2次元配列だとPythonは結構時間かかるんですね・・・(‘_’)

 

【プロフィール】

カマキリ
(^^)

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

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

 

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

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

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