はじめに
本プロジェクトでは、Fortranによる粒子シミュレーションと、その計算結果のParaViewを用いた3次元可視化について紹介します。FortranはHPCや科学技術計算に長けた言語として広く使われていますが、計算結果の可視化については「面倒」「難しい」というイメージが根強くあります。また、近年では可視化のためにPythonを併用する手法も増えていますが、これは新たな言語の習得が必要になるという課題があります。
しかし、ParaViewと組み合わせることで、Fortranのみで3次元の可視化やアニメーションを簡単に実現できます。今回は可視化手法を具体的に示すため、砂時計型容器内の粒子落下という単純な系を例に取り上げます。
シミュレーションの概要
本プロジェクトでは、上下が広く中央部が細くなった容器内を落下する粒子群の運動をシミュレーションします。1000個の粒子が重力の影響を受けて落下し、容器壁や粒子同士の衝突を考慮しながら運動します。このシミュレーションは物理的に厳密な挙動を再現することが目的ではなく、3次元可視化の手法を分かりやすく示すための例題として実装しています。
シミュレーションの主なパラメータは以下の通りです:
- 粒子数:1000個
- 時間刻み:0.00001秒
- 総計算時間:2.0秒
- 粒子径:0.02単位長さ
- 容器の寸法:高さ2.0、上部・下部の幅0.2、くびれ部の幅0.02単位長さ
VTKファイルフォーマットによる出力
ParaViewで可視化するため、計算結果をVTKファイルフォーマットで出力します。VTKファイルは単純なASCIIテキストファイルで、Fortranからの出力が容易です。本プロジェクトでは以下の2種類のVTKファイルを出力します:
1. 粒子位置データ(particles_*.vtk)
# vtk DataFile Version 2.0
Particle Data
ASCII
DATASET POLYDATA
POINTS 1000 float
-0.051484 0.150172 0.806378
-0.067470 0.088662 0.859823
...
各時刻での粒子の位置をPOLYDATAとして出力します。連番ファイル(particles_000000.vtk, particles_000001.vtk, …)として出力することで、ParaView上でアニメーション表示が可能になります。
2. 容器形状データ(container.vtk)
# vtk DataFile Version 2.0
Container Shape
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 1683 float
0.200000 0.000000 1.000000
0.196157 0.039018 1.000000
...
CELLS 1600 8000
4 0 1 34 33
4 1 2 35 34
...
CELL_TYPES 1600
9
9
...
容器形状をUNSTRUCTURED_GRIDとして出力します。容器の表面を四角形要素(セルタイプ9:quad)の集合として表現しています。POINTSで頂点座標を定義し、CELLSで四角形要素の接続関係を指定しています。
ParaViewによる可視化
シミュレーション結果は、以下の手順でParaViewを用いて可視化できます:
- ParaViewでcontainer.vtkを開く
- particles_*.vtkシリーズを開く
- 連番ファイルは自動的にグループ化される
- Animation Viewパネルで時間発展をコントロール
まとめ
本プロジェクトで示したように、FortranとParaViewを組み合わせることで、複雑な3次元可視化も容易に実現できます。VTKファイル形式は単純なASCIIフォーマットのため、Fortranからの出力もシンプルです。
特に今回のように時系列データを扱う場合、単純な連番ファイルとして出力するだけで、ParaView上でアニメーション表示が可能になります。これにより、Fortranユーザーは新たな言語やツールの習得なしに、計算と可視化を統合的に扱うことができます。
ダウンロードと可視化手順
プロジェクトファイル
- particle_simulation.zip
- ソースコード(particles.f90)
- 可視化用データ
- 粒子位置データ(particles_000000.vtk 〜 particles_000199.vtk)
- 容器形状データ(container.vtk)
- ParaViewステートファイル(particles.pvsm)
可視化手順
- particle_simulation.zip をダウンロードして展開します
- ParaViewで以下の手順で可視化を行います:
- File > Load State から particles.pvsm を開きます
- Load State Options が表示されたら、「Search files under specified
directory」を選択します
- これは展開したファイルが元のパスと異なるためです
- ファイルを探すフォルダとして、zipファイルを展開したフォルダを指定します:
- 容器データ: container.vtk
- 粒子データ: particles_*.vtk
- Apply をクリックすると可視化が表示されます
- 画面上部の再生ボタンでアニメーションを再生できます
関連リンク
- ParaView公式サイト:https://www.paraview.org/
