比較
| 項目 | YADE | LIGGGHTS-PUBLIC | 判定 | 意味 |
|---|---|---|---|---|
| 入力方式 | Pythonで粒子、壁、計算手順を直接書く。計算場(Scene)、計算処理(Engine)、粒子本体(Body)、接触情報(Interaction)を組み立てる。 | テキスト入力ファイルに、条件設定コマンド(command/style/fix)を並べて実行する。 | 両方 | YADEはプログラムを書く感覚、LIGGGHTSは入力ファイルで計算条件を宣言する感覚。 |
| 実行単位 | 計算処理のリスト(O.engines)に、重力、接触計算、時間積分などを並べる。 | 実行命令(run)の中で、接触計算、条件設定(fix)、測定(compute)、保存(dump)が動く。 | 両方 | YADEは処理リスト、LIGGGHTSは入力ファイルのコマンド群として表す。 |
| 接触の分解 | 接触幾何(Ig2)、接触物性(Ip2)、力の式(Law2)に分かれる。 | 法線力、接線力、凝着、転がり抵抗、粒子表面モデルを部品として組み合わせる。 | 部分 | どちらも部品化されるが、分解の仕方が違う。 |
| 対話性 | Python操作画面と画面表示(GUI)で、実行中に状態を見たり属性を変えたりできる。 | 基本は入力ファイルを作って実行する。可視化は結果保存後にParaViewやOVITOで見る。 | YADEのみ | 本体に対話的な画面操作画面があるか、という観点。 |
| 再現性 | Pythonスクリプト、設定ファイル、乱数種でケースを管理する。 | 入力ファイル、読み込みデータ、乱数種でケースを管理する。 | 両方 | 再現性は両方で確保できる。管理対象のファイル形式が違う。 |
| 外部連携 | Pythonの最適化、機械学習、後処理ライブラリへ直接つなげる。 | 外部Pythonから入力ファイルを作り、結果ファイルを読み込んで連携できる。 | 両方 | YADEは本体内Python、LIGGGHTSは外部スクリプト連携として使う。 |
内部構造
| 層 | YADEの単位 | LIGGGHTSの単位 |
|---|---|---|
| 粒子データ | 粒子本体(Body)、形状(Shape)、位置や速度(State)、材料(Material)。 | 粒子の種類設定(atom_style)で保持する属性を決める。球、複数球粒子、角ばった楕円体状粒子、粒子法流体など。 |
| 近傍探索 | 衝突候補を探す処理(Collider)と、形状ごとの外接箱(Aabb)を使う。 | 近傍リスト(neighbor list)と領域分割(domain decomposition)を使う。 |
| 接触生成 | 接触幾何(Ig2)で、重なり量、接触点、法線方向を作る。 | 粒子-粒子接触(pair/gran)と粒子-壁接触(wall/gran)が接触を扱う。 |
| 接触物性 | 接触物性(Ip2)で、材料から接触剛性、摩擦、凝着などを作る。 | 材料物性設定(material/property)や接触モデルのパラメータで与える。 |
| 時間積分 | 時間積分器(NewtonIntegratorなど)で、力から速度と位置を更新する。 | 時間積分の条件設定(fix nve/sphereなど)で粒子の運動を更新する。 |
図
YADE実行ループ

YADE相互作用クラス

YADEの接触則部品(Law Functor)

できる/できない
| 作業 | YADE | LIGGGHTS |
|---|---|---|
| 条件分岐しながら境界を変える | 可能。Pythonで直接書く。 | 可能。変数、ジャンプ、条件設定(fix)を組み合わせる。 |
| 同じ入力形式で大量ケースを回す | 可能。Python側でケースを管理する。 | 可能。LAMMPS型入力と複数CPU並列計算(MPI)で管理する。 |
| 実行中に状態を見て手で調整する | 可能。画面操作画面(GUI)がある。 | 限定的。本体は入力ファイル実行と保存後可視化が中心。 |
実行方式・設計