Processing math: 100%

【科学技術計算講座3-9】熱伝導方程式の2次元への拡張

前回はクランク=ニコルソン法を紹介し、計算精度について説明しました。

熱伝導方程式をクランク=ニコルソン法で解くPythonプログラムを作ります。スキームの精度についても説明します。クランク=ニコルソン法は2次精度で無条件安定なスキームです。科学技術計算講座3「熱伝導方程式のシミュレーション」の第8回目です。

今回と次回で、2次元の熱伝導の問題を解いてみたいと思います。そして最後には温度が変化する様子をアニメーションにしてみましょう。本日は熱伝導方程式を2次元に拡張し、プログラムでの2次元データの扱いについて説明します。

問題

前回まで1次元の熱伝導の問題を解いてきました。これを2次元に拡張してみます。

問題: 次の図のような0℃に冷却された2次元の銅板がある。端の一部を100℃に固定したとき温度の変化するようすを求めたい。物性値などはこれまでの問題と同じとする。また、100℃に固定した以外の面は全て断熱である。
2次元熱伝導の問題

今度は2次元の板の熱伝導の問題です。

2次元熱伝導方程式

まずは数式を考えましょう。きちんと導出からやろうとすると、前と同じように微小体積の熱の出入りを考えてやればよいです。方程式としては、1次元の熱伝導方程式の空間項に y 方向の空間微分が追加された式となります。

Tt=α(2Tx2+2Ty2)

これが2次元熱伝導方程式です。

離散化

次に(1)式を数値的に解くために離散化を考えます。今度は空間に y 方向が加わったので、この方向にも離散化してみます。

y 方向を Δy の幅で分割して離散化すると図のようになります。

2次元空間の離散化

ここで、x 方向の点の添字を iy 方向の点の添字を j として、位置 (xi,yj) の温度を Ti,j と書くことにします。

時間方向にはこれまでと同じように上付きの添字 n をつけて、Tni,j とします。

完全陰解法

(1)式を解く数値計算法ですが、ここでは完全陰解法を使うことにしましょう。(1)式を完全陰解法で表記すると、

Tn+1i,jTni,jΔt=α(Tn+1i+1,j2Tn+1i,j+Tn+1i1,jΔx2+Tn+1i,j+12Tn+1i,j+Tn+1i,j1Δy2)

となります。空間の差分をとるときは、微分する方向の点に対して差分をとっていけばよいです。

(2)式を Tn+1i,j について整理すると最終的に次式のようになります。

Tn+1i,j=11+2cx+2cy(Tni,j+cxTn+1i+1,j+cxTn+1i1,j+cyTn+1i,j+1+cyTn+1i,j1)

ここで、cx=αΔt/Δx2cy=αΔt/Δy2

あとは(3)式をガウス=ザイデル法で解いていけば解が求まります。

どうでしょうか、2次元への拡張はそれほど難しくはないと思います。これまでの式に機械的に当てはめていけばよいのです。

プログラミング

ここまで出来たらあとはプログラミングしていくだけですが、今回のように2次元のデータはどのように扱えばよいでしょうか。

これまでは一次元のデータを配列 temp[i] を使って表してきました。2次元のデータも配列で表します。この配列は2次元配列と呼ばれます。

2次元配列の要素は temp[i][j] のように表します。Ti,j と全く同じように考えればよいです。2次元配列は次のように箱が並んでいるとイメージしてください。

Pythonの2次元配列

Pythonでは、要素数が nx個×ny個で、全ての値が 0.0 の2次元配列を作るためには、

temp = np.zeros((nx, ny))

値が100.0 の2次元配列を作るには、

temp = np.full((nx, ny), 100.0) 

と書きます。

また、全ての要素に対して処理をしようとすると、

    for i in range(nx):
        for j in range(ny):
            temp_old[i][j] = temp[i][j]

のように、ij でforループを回します。

さあこれだけの情報があれば、以前作った完全陰解法のプログラムを2次元に拡張できると思います。ぜひチャレンジしてみてください。

まとめ

本日は2次元熱伝導方程式へ拡張を行い、2次元データをプログラムでどう扱えばよいかを説明しました。

さて次回はいよいよ最終回です。2次元平面で熱が伝わっていく様子をアニメーションにする部分を加えてプログラムを完成させます。


←前回 クランク=ニコルソン法のプログラミング

→次回 2次元熱伝導方程式のシミュレーション

全体の目次

スポンサーリンク
科学技術計算のご相談は「キャットテックラボ」へ

科学技術計算やCAEに関するご相談、計算用プログラムの開発などお困りのことは「株式会社キャットテックラボ」へお問い合わせください。

お問い合わせはこちら

フォローする