離散要素法の前処理および後処理ソフトウェア

**離散要素法の前処理および後処理ソフトウェア**（りさんようそほうのぜんしょりおよびこうしょりソフトウェア）では、離散要素法（Discrete Element Method, DEM）による数値シミュレーションにおいて用いられる前処理（プリプロセッサ）および後処理（ポストプロセッサ）用ソフトウェアについて解説する。

離散要素法のワークフローは通常、入力モデルを構築する前処理、粒子系の時間発展を解くソルバー、結果を可視化・解析する後処理から構成される。前処理と後処理は、汎用可視化ソフトウェアやCADソフトウェア、スクリプト群を組み合わせて構築される場合と、専用の統合開発環境（GUI）として提供される場合がある。

## 概要
離散要素法における前処理の役割は、解析対象の幾何形状（ドメイン）、粒子配置、境界条件、材料パラメータ、接触モデルなどを定義し、DEMソルバーが読み込める入力形式に変換することである。後処理では、ソルバーが出力した粒子位置や速度、力、応力・ひずみ、接触ネットワークなどの情報を可視化し、統計解析や動画作成を行う。

オープンソースのDEMソルバーでは、前処理・後処理を外部ツールに大きく依存しているものが多く、ParaViewやOVITO、Pythonスクリプトなどと組み合わせて用いられる。一方、商用DEMソフトウェアでは、前処理・ソルバー・後処理が単一のGUIに統合されていることが多い。

## 前処理ソフトウェア
### 汎用CAD・メッシュツール
多くのDEMソルバーは、計算領域や障害物などの境界形状をSTLなどのポリゴンメッシュとして読み込む機能を持つ。このため、汎用CAD・メッシュツールが前処理の一部として広く用いられる。
* **FreeCAD** - オープンソースのパラメトリック3D CAD。DEM解析では、ドラム、ホッパー、スクリューコンベヤなどのジオメトリを作成し、STL形式でエクスポートしてソルバーに読み込ませる用途で利用される。
* **Salome** - メッシュ生成機能を備えたオープンソースのCAEプラットフォーム。CFD-DEM連成（OpenFOAM + LIGGGHTS など）では、CFD側のメッシュ前処理ツールとして使われることが多い。
* **Blender** - オープンソースの3Dモデラ・アニメーションソフトウェア。複雑な境界ジオメトリをモデリングし、STLとしてエクスポートしてDEMソルバーに取り込む用途で用いられる。

### スクリプトベースの前処理ツール
多くのオープンソースDEMソルバーはテキストベースの入力ファイルを用いるため、粒子配置や条件設定を自動生成するスクリプトが前処理として利用される。
* **PyGran** - PythonによるDEM解析用ツールキット。LIGGGHTSとの連携を想定しており、粒子パッキングの生成や入力ファイルの作成といった前処理に利用できるほか、後処理機能も備える。
* **pizza.py** - LAMMPS向けのPythonスクリプト群で、入力生成や後処理を行う。LIGGGHTSはLAMMPS派生コードであるため、一部の機能はDEM粒子系の前処理・後処理にも利用される。
* 独自スクリプト - 多くの研究グループや企業では、PythonやGNU Octaveを用いて粒子群の初期配置、粒径分布の設定、材料パラメータの組み合わせ生成などを行う独自スクリプトを開発しており、これらが実質的な前処理環境となっている。

### 統合型DEMフレームワークの前処理機能
#### Yade
**Yade**（Yet Another Dynamic Engine）はC++とPythonで実装されたオープンソースのDEMフレームワークであり、前処理・ソルバー・後処理を一体的に提供する。シミュレーションシーンはPythonスクリプトで定義され、粒子生成、材料物性、接触モデル、境界条件の設定などが前処理として行われる。

YadeのソースコードはGitバージョン管理下で公開されており、GitHubなどから取得可能である。

#### GranOO
**GranOO** は3次元動的シミュレーションのためのDEMワークベンチであり、C++ライブラリとプラグイン群、Pythonバインディングから構成される。XML形式の設定ファイルやプラグインを用いて粒子生成や境界条件設定を行い、これが前処理に相当する。

## 後処理ソフトウェア
### 汎用可視化・解析ツール
#### ParaView
**ParaView** はKitware社が開発するオープンソースの可視化ソフトウェアであり、VTK形式をはじめとする多様なデータ形式を扱う。DEM解析では、粒子の位置・速度・接触力・応力場などを3次元で表示し、断面可視化や時系列アニメーションの作成に利用される。

LIGGGHTSやCFDEMといったDEMソルバーは、VTK形式の出力に対応しており、ParaViewが標準的なポストプロセッサとして推奨されている。また、LIGGGHTS向けにはdumpファイルを直接読み込むためのParaViewプラグイン（「ParaView_Reader_for_LIGGGHTS」）も公開されている。

#### OVITO
**OVITO**（Open Visualization Tool）は、粒子系データの可視化と解析に特化したソフトウェアである。当初は原子スケールの分子動力学計算を主対象としていたが、DEMなどの粒状体解析にも広く利用されている。
* 粒子選別、クラスタリング、径分布の算出、トラジェクトリ解析など、多数の解析フィルタを備える。
* LIGGGHTSやLAMMPSのdumpファイルを直接読み込むことができる。
* Pythonスクリプトを用いたカスタム解析も可能であり、GitHub上にはOVITO用スクリプト集も公開されている。

### DEM専用ポストプロセッサ
#### LPP（LIGGGHTS Post-Processing）
**LPP** は、LIGGGHTSの出力dumpファイルをVTK形式に変換するポストプロセッサであり、pizza.pyをベースに並列処理に対応させたものであると説明されている。LPPによって生成されたVTKファイルはParaViewなどで可視化できる。

CFDEMプロジェクトのドキュメントにはGitリポジトリからの取得方法が記載されているが、2020年代半ば以降、公開リポジトリが一時的に参照できなくなっているとの報告もあり、現在の入手方法には注意が必要である。個人による派生版として、GitHub上にはLPPの機能を再実装したリポジトリも存在する。

#### PyGran
PyGranは前処理で述べたとおり、LIGGGHTSとの連携を前提としたPythonツールキットであり、後処理として粒子配置や接触ネットワーク、局所充填率などの統計量を計算する機能を提供する。

#### その他
GNU OctaveやMATLABを用いた独自のポスト処理スクリプト集も公開されており、DEMの出力データから応力・ひずみ曲線やエネルギーバランスを計算する用途で利用される。

### 統合型DEMフレームワークの後処理機能
#### Yade
Yadeは内部に3Dビューアとプロット機能を持ち、計算中に応力–ひずみ曲線などをリアルタイムで表示できる。Pythonスクリプトを用いて、粒子配列や接触ネットワーク、マクロな応力テンソルなどを計算し、外部ファイルへ出力することで独自の後処理が行える。

#### GranOO
GranOOではプラグインを通じてエネルギーや応力などの物理量を算出し、結果をVTK形式などで出力してParaViewに渡すワークフローが想定されている。

## 商用DEMソフトウェアと内蔵前処理・後処理
商用のDEMソフトウェアパッケージでは、前処理・ソルバー・後処理が一体化したGUI環境が提供される。ユーザーはCADデータのインポート、材料物性や粒径分布の設定、運動条件の指定をGUI上で行い、シミュレーション結果の可視化や統計解析も同一環境内で実施できる。

代表的な商用DEMソフトウェアには以下がある。
* **Altair EDEM** - 粉体・顆粒材料の挙動解析を対象としたDEMソフトウェア。
* **Ansys Rocky** - 非球形粒子の多面体表現を特徴とするDEMソフトウェアで、Ansys Fluentなどとの連成機能を備える。
* **Aspherix** - 産業用途に焦点を当てたDEMソフトウェアで、VTK出力によってParaViewとの連携も可能とされる。

これらの商用パッケージではGitHub上でソースコードが公開されていないことが多いが、シミュレーション結果をVTKなどの形式でエクスポートすることで、ParaViewやOVITOなどの外部ポストプロセッサを併用することもできる。

## 主なオープンソースDEMソルバーと前処理・後処理
* **LIGGGHTS** - LAMMPS派生のDEMソルバー。テキストベースの入力ファイルとdump出力を用い、前処理・後処理は外部ツールに依存する。
* **CFDEM coupling** - LIGGGHTSとOpenFOAMを連成するCFD-DEMフレームワークであり、メッシュ前処理にはSalomeやsnappyHexMesh、ポスト処理にはParaViewが用いられる。
* **MercuryDPM** - 粒子流の解析を対象としたオープンソースDEMコードで、coarse grainingツール「MercuryCG」により連続体場への変換や後処理が行われる。

## 関連項目
* 離散要素法
* 数値流体力学
* 計算力学
* 可視化ソフトウェア

## 脚注

## 外部リンク
* ParaView 公式サイト
* ParaView – GitHubリポジトリ
* OVITO 公式サイト
* PyGran – GitHubリポジトリ
* LIGGGHTS-PUBLIC – GitHubリポジトリ
* Yade 公式サイト
* GranOO 公式サイト