Fortran

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

前回は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例を出したにすぎません。

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

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

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

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

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

まとめ

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

20190429_thermal2D_paraview

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

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

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

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

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

Fortran ハンドブック

田口 俊弘
3,520円(12/07 06:13時点)
Amazonの情報を掲載しています

POSTED COMMENT

  1. […] 出力に関してもカマキリさんの記事を参考にコードを書きました。 下記にコードを載せておきますが、詳細はこちらの記事を参考にしてください! […]

  2. ゆいぽん より:

    大学院でfortranやってます。同じようなことをしているので参考にしました。

COMMENT

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