ParaViewとvtkフォーマット

微分方程式数値計算した結果を表示する場合には,ParaViewというフリーの描画ソフトが役に立ちます.
このソフトは決まったフォーマットで書かれたvtkファイルを読み込んで自動で描画をしてくれるという優れものです.

vtkファイルの書き方は以下の通り

# vtk DataFile Version 2.0
ASCII

DATASET UNSTRUCTURED_GRID
POINTS 節点数 float
x座標 y座標 データ

・節点数だけデータを書く

CELLS 要素数素数×(要素あたりの節点数+1)
要素を構成する節点数(三角形要素なら3) 節点番号 節点番号 節点番号

・要素数だけデータを書く

CELL_TYPES 要素数
要素0のデータタイプ(三角形要素なら5)

・要素数だけ5を書く

POINT_DATA 節点数
SCALARS データのラベル float 1
LOOKUP_TABLE default
節点0の値

・節点数だけデータを書く

詳しくはここで↓
http://www.tukizakura.org/~fujim2/cgi-bin/pukiwiki/pukiwiki.php?UnstructuredGrid%B7%C1%BC%B0%20Legacy

C言語のプログラムでは,これらの情報をfprintf関数を用いてコツコツ書いていきます.
節点数や要素数分のデータを書く場合には配列とfor文を駆使します.

今回は定常熱伝導方程式を四角い領域で一番上の辺の部分だけ1,あとは0というような境界条件で解くプログラムを作成しました.
このプログラムは,まずtxtファイルから節点,要素,境界条件などの領域に関する情報を読み込み,プログラム中で微分方程式を離散化・定式化して有限要素法により数値計算して最後にvtkファイルとして結果を吐き出すという流れです.

吐き出したvtkファイルをParaViewに読み込ませて描画した結果が以下の図です.

このように定常状態での熱伝導の様子がシミュレーションされています.


輪郭のみ表示するとこのように三角形要素に分割して計算されていることが分かります.