高校物理、大学受験、大学物理、プログラミングの記事を書きます。

Fortranで解いた問題をParaviewを使ってvtkでアニメーション作成

2019/05/02
 
この記事を書いている人 - WRITER -

 

前回はFortranで2次元の熱伝導方程式を解いて、gnuplotを使って温度場の分布のアニメーションを作成したのです。

前回の記事はこちら

 

前回の記事で示したアニメーションはこんな感じ

 

カマキリ
前回はgnuplotはスクリプトを作ってアニメーションした

 

今回は、2次元の熱伝導方程式をFortranで解いて、温度場の分布のアニメーションはparaviewで可視化したいと思います。

本記事の内容はこちら
2次元の熱伝導方程式をFortranで解いて温度場の分布のアニメーションをparaviewで可視化する。

 

カマキリ
今回はparaviewを使う

paraviewで可視化した温度場分布のアニメーションはこちら。

 

 
※Fortranのコードとスクリプトは本記事にアップされています。
※FortranのコードはFortran90/95の書き方にしているつもりですが正確に書けているかは不明です。
※FortranはWSLを使ってインストールしています。
※paraviewはこちらのサイトよりダウンロードしてお使いください。
 
僕の使用環境はWindows10でWindows Subsystem for Linux(WSL)を使って、UbuntuからFortranをインストールして使用しています。
 
 
カマキリ
早く試してみたいよーった人は「まとめ」へGo!
 
スポンサーリンク

解くべき方程式

 

まずは解くべき方程式を明らかにしておきましょう。

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\)の端は初期状態から変化させないような境界条件にしているので、時間発展させると中央の高い温度の部分から低い温度へ熱移動が生じて、下記のような変化を示します。
 
 
 
今回は、これをparaviewを使ってアニメーションを作ろうということになります。
 

 

Fortranで2次元熱伝導方程式をFortranで解く

 

偏微分方程式の離散化の方法は様々あるかと思いますが、ここでは離散化の方法にはこだわっていません。

主目的は「vtkファイル」をFortranで出力してparaviewで読み込むことです。

 

2次元熱伝導方程式の離散化

 

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*}
 
この偏微分方程式を離散化するにあたって、
  • 時間微分の項(左辺)は陽解法
  • 空間微分の項(右辺)は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}\end{align*}
 
では、これをFortranで解きましょう(^^)/
 
 

Fortranで解く

 

離散化された方程式をFortranで解くためのプログラムを書いていきましょう。

このプログラムの中にvtkファイル形式で温度分布データを出力させる記述があります。

以下がプログラム全体です。

2次元の熱伝導方程式をFortranで解く部分の解説は、下記の記事に詳しく乗っているので順にお読みください。

前回の記事はこちら
 
以上がプログラムの中身です。
 
プログラムファイルと同じ階層に「data」という名前のディレクトリを作っておく必要があります。
(この「data」の中にvtkファイルを作っていきます)
 
以下を実行すればOKです。
 

そうすると「data」というディレクトリの中に以下のような大量のvtkファイルが出力されているのが確認できます(^^)/

 

これをparaviewで読み込めば温度分布のアニメーションを見ることができます(^^)

 

paraviewで温度分布のアニメーションを確認

 

ではparaviewを起動して温度分布を確認してみます。

 

vtkファイル形式として出力する部分の記述

 

vtkファイル形式で出力する部分はモジュールとして以下のように書いています。

Fortran:vtkファイル形式の出力部分

出力されたvtkの中身の基本構造は以下です。

その他、vtkファイル形式でのparaviewの読み込み方法については多数あるのですが、本記事では1例を出したにすぎません。

ご興味ある方は下記の記事を参考に色々と遊んでみてださい(^^)/

【vtkファイルの詳しい解説記事】
paraview,vtkのフォーマットと使い方を学んで、好きな形を作ってみよう!

VTK ファイルフォーマット

【vtkファイルのマニュアル】
vtk_file-formats

 

paraviewでvtkファイルを読み込んでみよう

 

ここからはparaviewを起動してFortranで解いた2次元熱伝導方程式による温度分布のアニメーションを見てみましょう。

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

 

こんな感じでFortranで解いた問題をvtkファイル形式に出力してアニメーションを見ることができます(^^)/

 

まとめ

 

色々と説明を書きましたが、以下のzipを解凍して自身の環境でお試しください(^^)/

20190429_thermal2D_paraview.zip

以下のコマンドでFortranを実行

paraviewの操作は「paraviewでvtkファイルを読み込んでみよう」の章を参考にしてください(^^)/

 

 

この記事を書いている人 - WRITER -

コメントを残す

Copyright© 宇宙に入ったカマキリ , 2019 All Rights Reserved.