LIGGGHTS
LIGGGHTSとは
LIGGGHTSの概要については私が書きましたWikipediaをご笑覧ください. https://ja.wikipedia.org/wiki/LIGGGHTS各種フォーク
LIGGGHTS-PUBLICが大元のフォークで, そこから多数の派生版が続々誕生してきました. お目当てのモデルが利用できるフォークを選択ください.マニュアル
- LIGGGHTS-PUBLIC マニュアル (日本語/English)
- LIGGGHTS-INL マニュアル (English)
- LIGGGHTS-PFM マニュアル (English)
- LIGGGHTS Flexible Fibers Wiki (English)
LIGGGHTS チュートリアル 実行例
LIGGGHTS-PUBLIC/examples/LIGGGHTS/Tutorials_public
https://github.com/CFDEMproject/LIGGGHTS-PUBLIC/tree/master/examples/LIGGGHTS/Tutorials_public| メディア | 内容 |
|---|---|
| chute_wear シュート内摩耗をDEMで可視化. |
|
| cohesion 凝集粒子の挙動を解析. |
|
| contactModels 接触モデルの違いを比較. |
|
| conveyor ベルトコンベヤ搬送を粒子レベルで再現. |
|
| heatTransfer_1 粒子間熱伝達のシミュレーション1. |
|
| heatTransfer_2 粒子間熱伝達のシミュレーション2. |
|
| hydrogel_multicontact ハイドロゲル多点接触を解析. |
|
| hysteresis ヒステリシスモデルでオーバーラップを蓄積. |
|
| insert_stream 粉体投入流の形成過程を観察. |
|
| multisphere_stone_restitution 多球で複雑形状の石を表現. |
|
| packing 球を成長させ高密度充填. |
|
|
mesh_tet メッシュ内部に粉体を充填. (スナップショット) |
| meshGran 固定CAD壁に粉体を連続投入し充填・堆積をシミュレート. |
|
| movingMeshGran 回転するCAD壁と粉体の相互作用を可視化. |
LIGGGHTS-PUBLIC/examples/LIGGGHTS/SPH
https://github.com/CFDEMproject/LIGGGHTS-PUBLIC/tree/master/examples/LIGGGHTS/SPH| メディア | 内容 |
|---|---|
| sph_1 3D SPHで流体粒子の自由落下と壁当たりを再現. |
|
| sph_2 2D SPHで流体粒子と可動壁の相互作用を可視化. |
LIGGGHTS-INL/examples/LIGGGHTS/INL_tutorials
https://github.com/idaholab/LIGGGHTS-INL/tree/inl/examples/LIGGGHTS/INL_tutorials| メディア | 内容 |
|---|---|
| 6dof_cube 6自由度で動く立方体剛体と粉体の衝突を再現. |
|
| dump_custom_vtk 円柱容器に粉体を詰め, custom/vtkでVTK・VTP・VTU同時出力を検証. |
|
| mix_sphere_multisphere 球と多球クランプを混在させ自由落下を可視化. |
abhishekdbihani/compaction_LIGGGHTS/src
https://github.com/abhishekdbihani/compaction_LIGGGHTS| メディア | 内容 |
|---|---|
| uniaxial_compaction 二分散粉体の一軸圧縮をLIGGGHTSで再現. |
|
| uniaxial_compaction_forcechain 二分散粉体の一軸圧縮をLIGGGHTSで再現. 力鎖. |
LIGGGHTS-INL/examples/LIGGGHTS/INL
https://github.com/idaholab/LIGGGHTS-INL/tree/inl/examples/LIGGGHTS/INL| メディア | 内容 |
|---|---|
| chain_bending_test 鎖状粒子列を曲げて挙動を観察(破断なし). |
|
| chain_test 鎖状粒子列をボンドモデルで曲げ試験, 中央プレートで押し込み. |
LIGGGHTS-INL/examples/LIGGGHTS/INL_tutorials
https://github.com/idaholab/LIGGGHTS-INL/tree/inl/examples/LIGGGHTS/INL_tutorials| メディア | 内容 |
|---|---|
| t01a_static_angle_of_repose_monosphere 円筒容器に単一径球を落下充填→円筒を引き上げて安息角を評価. |
engineerdo.com
https://www.engineerdo.com/| メディア | 内容 |
|---|---|
| Silo サイロ中の力鎖を計算. |
|
| Silo_discharge_using_a_belt_conveyor DEMソフトLIGGGHTSでベルトコンベヤ式サイロの充填・排出過程をシミュレーション. |
|
| Screw_conveyor スクリューコンベヤ中の粒子の運動を可視化. |
|
| RotatingDrum 転動ミル中の粒子の運動を可視化. |
本文書の読み方
円滑な進行を図るとともに, その内容に遺漏のないようにWindows 上での操作手順を以下に逐一記述しておく.
以後, 本文書では次の表記
- 「…」:プルダウンメニュー(> は階層同士の区切り)
- “…”:ダイアログやメニュー中の設定・チェック項目, 質問, 一般の文字列
- […]:ボタン
- ‘…’:ファイル中の文字列
- …:キートップ
を採用するものと約束する.
慣例に従い, 入出力ファイルの文字列をメタ構文変数 “hoge” で代表させることにする.
実行の概要
LIGGGHTS には一般に普及したグラフィカルな FEM ソフトのようなボタン操作だけで解析を行える統合 GUI は用意されていない. 代わりに, 利用者は簡潔なテキストベースの入力スクリプト(拡張子 in.*)を記述し, ターミナル上でコマンドを実行するというインタプリタ型のワークフローを採用する. 計算結果は ParaView などの汎用可視化ツールで後処理・可視化する仕組みであり, 以下の手順が典型例である.
- 3D CADで壁用のSTLファイルを作成
- メモ帳でLIGGGHTS 入力ファイル in.hoge を編集
liggghts -in in.hogeのように実行し, 粒子情報をhoge.vtkやhoge.dumpファイルとして出力.
(LPPなどのツールでhoge.dumpをhoge.vtk形式へ変換)- ParaView で
hoge.vtkを読み込み, 可視化
実行に必要なソフト
本節では, 必要となるソフトウェアの概観を説明します. インストールの詳細は次節以降で扱います. 「専門用語まみれでついていけるかな?」と思っても, まずは読み進めてください. 次節以降で実際に手を動かしながら作業すれば, 自然と腑に落ちてくるはずです. LIGGGHTS と ParaView はクロスプラットフォーム対応で, Windows・macOS・Linux のどれでも動作します. 本サイトではユーザー数の多い Windows 版を例に解説します. 私自身は Mac ユーザーですが, OS ごとに書き分けると冗長になるため, あえて Windows に絞ります. 実行に必要なものは, 次の7点です.
- 3DCADソフト. STL出力できるものなら何でもいい.
- テキストエディタ. Visual Studio Code (VS Code)推奨.
- ターミナル. WSL
- LIGGGHTS
- mpi
- ParaView
- Python
Windows には標準で「コマンド プロンプト」が備わっていますが, LIGGGHTS を実行する際は, 追加で WSL(Windows Subsystem for Linux)というターミナルをインストールして使います. プログラミングに慣れていて「自分でビルドできる」という方なら, C++ 版の LIGGGHTS をコンパイルして Windows 用の exe をつくることも不可能ではありません. とはいえ, 初心者の方には, まず Linux 向けにビルド済みの実行ファイルを導入する方法をおすすめします. 通常, Linux 用にビルドされたバイナリは Windows では動きませんが, WSL を導入すれば問題なく実行できます. Windows用にビルドされたもの(https://github.com/wuhao1938/LIGGGHTS_IN_WINDOWS_10, https://github.com/wuhao1938/LIGGGHTS_IN_WINDOWS_11)がGithubで配布されていますが, これは並列化計算ができないビルドになっており, 実用的ではありません.
WSL に Ubuntu を導入すると, ターミナルで sudo apt-get install コマンドが使えるようになります.
このコマンドで, LIGGGHTS 本体と並列計算に必須の MPICH をまとめてインストールできます.
「並列計算は敷居が高いから, 初心者は後回しでいい」――そんな記事を見かけることもあります.
しかし DEM 解析では並列化は must-have-tool です. 使わなければ, 計算時間を際限なく浪費することになります.
ParaView は LIGGGHTS 専用ソフトではなく, 3 次元の科学技術計算全般で広く利用されている可視化ツールです. 無償のオープンソースながら, 商用アプリに引けを取らない性能を備えています. クロスプラットフォーム対応のため, 数年前までは Windows 版で「ボタンが小さい」「GUI が扱いづらい」と感じる場面もありましたが, 近年は改良が進み, Windows 上でも違和感なく操作できるようになりました.
LIGGGHTS では VTK 形式を直接書き出すこともできますが, いったん dump ファイルに出力し, Python スクリプトで VTK へ変換したほうが都合のよい場面も多々あります. VTK にしておけば, ほぼどのバージョンの ParaView でも可視化できます. 「dump をそのまま読めればラクなのに……」という声もありますが, ParaView 用のプラグイン(https://github.com/ooyedeji/LIGGGHTS-Paraview-plugin)は開発がストップしており, 最新の ParaView では動作しません. どうしても使いたい場合は自分でビルドし直すか, 古めの ParaView 5.8.1 をインストールする必要があります.
インストール方法
VS Code
まずはエディターのVS Codeをインストールします.- VS Code公式サイト(https://azure.microsoft.com/ja-jp/products/visual-studio-code)からインストーラをダウンロードし, 基本的へ[次へ]や[OK]などをクリックしてインストールします.
-
左列の四角いボタンを押し, 拡張機能の検索欄に"LAMMPS"と記入して, "Lammps Syntax Highlighting"を検索します. [インストール]をクリックしてインストールします.
構文カラーリングができ, 拡張子がin.*の
テキストに色がついて識別しやすいようになります.
ターミナル. WSL
- エクスプローラーでパスはどこでもいいのでツールバーに"cmd"と入力して Enter を押下します.
- 下記を実行します.
wsl --install - しばらくするとwslのUbuntuがインストールできます.
- 下記のように表示されるのでパスワードを設定します.
ダウンロードしています: Ubuntu インストールしています: Ubuntu ディストリビューションが正常にインストールされました. 'wsl.exe -d Ubuntu' を使用して起動できます Ubuntu を起動しています... Provisioning the new WSL instance Ubuntu This might take a while... Create a default Unix user account: ユーザー名 New password:"ここにパスワードを入力してください." Retype new password:"ここにパスワードを入力してください." passwd: password updated successfully To run a command as administrator (user "root"), use "sudo". See "man sudo_root" for details.
LIGGGHTS
- エクスプローラーでパスはどこでもいいのでツールバーに"bash"と入力して Enter を押下します.
- wsl(bash)上で下記を実行します. パスワードが要求されるので先ほど設定したパスワードを入力してください.
sudo apt upgrade -
wsl(bash)上で下記を実行します.
sudo apt update -
wsl(bash)上で下記を実行します. Do you want to continue? [Y/n] と聞かれるので "y" と入力します.
sudo apt-get install liggghts - wsl(bash)上で下記を実行します.
liggghts - 下記のように出力されれば成功です.
-------------------------------------------------------------------------- LIGGGHTS (Version LIGGGHTS-PUBLIC 3.8.0, compiled 2024-03-31-20:10:17 by buildd, git commit unknown) --------------------------------------------------------------------------
MPI
- エクスプローラーでパスはどこでもいいのでツールバーに"bash"と入力して Enter を押下します.
- wsl(bash)上で下記を実行します. パスワードが要求されるので先ほど設定したパスワードを入力してください.
sudo apt-get install mpich - wsl(bash)上で下記を実行します.
mpirun - 下記のように出力されれば成功です.
-------------------------------------------------------------------------- mpirun could not find anything to do. It is possible that you forgot to specify how many processes to run via the "-np" argument. -------------------------------------------------------------------------- -
ターミナル上でCtrl + C で強制終了されます.
ParaView
- Microsoft MPI公式サイト(https://learn.microsoft.com/en-us/message-passing-interface/microsoft-mpi) から Microsoft MPI のインストーラ msmpisetup.exe (Microsoft MPI v10.1.2) をダウンロードします. 新しいとまだ ParaView が対応していないことがあるので, ParaView が正常に動作しなければ古いバージョンをダウンロードします. インストーラの指示に従いインストールします.
- インストールできたかcmdで下記を実行します.
mpiexec - 下記のように表示されればインストール成功です.
INL\microstructure_compression$ mpiexec Microsoft MPI Startup Program [Version 10.1.12498.18] Launches an application on multiple hosts. Usage: mpiexec [options] executable [args] [ : [options] exe [args] : ... ] mpiexec -configfileCommon options: - ParaView公式サイト (https://www.paraview.org/download/) からインストーラ ParaView-5.13.1-MPI-Windows-Python3.10-msvc2017-AMD64.msi をダウンロードします.
- ParaViewインストーラの指示に従って基本的に[次へ]や[OK]をクリックしてインストールします.
Python
- Python公式サイト(https://www.python.org/downloads/)からpython-3.8.10-amd64.exeをダウンロードします.
- インストーラを起動し, インストーラの指示に従ってインストールします.
- cmd上で下記を実行します.
py - 下記のように表示されればインストール成功です.
Python 3.8.10 (tags/v3.8.10:3d8993a, May 3 2021, 11:48:03) [MSC v.1928 64 bit (AMD64)] on win32 Type "help", "copyright", "credits" or "license" for more information. >>>
はじめてのLIGGGTHの実行
- エクスプローラーで "Linux"と入力します.
- "Ubuntu" > "home" > "ユーザー名" のフォルダを開いていきます.
- 絶対パスとしては"\\wsl.localhost\Ubuntu\home\ユーザー名"です.
- 下記のGithubのページからzipファイルをダウンロードします.
https://github.com/CFDEMproject/LIGGGHTS-PUBLIC
- zipファイルを解凍すると "examples" があります. このフォルダをコピーして"\\wsl.localhost\Ubuntu\home\ユーザー名"にペーストします.
- このexampleフォルダはLIGGGHTSの様々な実行例が納められたフォルダです.
- このexampleフォルダの中の"\LIGGGHTS\Tutorials_public\packing"を開きます.
- このフォルダでツールバーに"bash"と入力してターミナルを開きます.
- ターミナルで下記のように入力します.
liggghts -in in.packing - postフォルダが出力されます.
- ParaViewを立ち上げます.
- ParaViewの「File > Open」でエクスプローラーを開き, ツールバーに"\\wsl.localhost\Ubuntu\home\ユーザー名\examples\LIGGGHTS\Tutorials_public\packing\post"と入力して [OK] で開きます.
- 次のように設定します.
- 再生ボタン [▷] をクリックすると再生されます.
- ターミナルで下記のように記入します.
mpirun --display-allocation --report-bindings -np 4 hostname - 下記のような出力が得られます.
====================== ALLOCATED NODES ====================== DESKTOP-MS24P8I: flags=0x11 slots=10 max_slots=0 slots_inuse=0 state=UP ================================================================= - slots数が10なので10並列化実行できます.
- 下記のように実行します.
mpirun -np 10 liggghts-inl -in in.packing - postフォルダが出力されます. この後は前節と同様の手順でParaViewで可視化します.
並列化実行
現在のパソコンは複数スレッド主流のため, ほとんどのPCでは並列化計算ができます.派生版比較
| 派生版 | 主な特徴 | GitHub | 初リリース |
|---|---|---|---|
| LAMMPS (Granular) | 汎用 MD コードに粒子接触モデルを追加. 基本的な弾性接触, 摩擦, 簡易的粒子生成をサポート. | lammps/lammps | 2004 年公開(粒子機能は 2008–10 年頃実装) |
| LIGGGHTS‑PUBLIC | 公式本流. 幅広い接触・熱・CFD 連成モデルを搭載し CFDEM coupling と完全互換. | CFDEMproject/LIGGGHTS-PUBLIC | 2010‑04‑19 |
| LIGGGHTS‑PFM | JKU Linz 学術版. 化学反応・粗視化モデルなど最先端研究向け機能を追加. | ParticulateFlow/LIGGGHTS-PFM | 2019‑02 (ver.19.02) |
| PICI-LIGGGHTS | Python インターフェース強化版. JKR 粘着モデルを標準装備. | uob-positron-imaging-centre/PICI-LIGGGHTS | 2019 年頃 (v3.8.1 ベース) |
| LIGGGHTS_Flexible_Fibers | 柔軟繊維・ボンドモデル拡張. 細長い繊維束の曲げ・破断を解析可能. | schrummy14/LIGGGHTS_Flexible_Fibers | 2018 年頃 |
| LIGGGHTS‑INL | Idaho National Laboratory 版. 結合球・弾塑性接触など高度モデルを追加. | idaholab/LIGGGHTS-INL | 2021 年 |
よくある質問(FAQ)
- 粒子が壁をすり抜ける
- 時間刻みが大きすぎる可能性があります.
fix check/timestep/granで推奨dtを確認し, 十分小さな値を設定してください. - ParaView で粒子が点にしか見えない
- Glyph → Sphere か Point Gaussian 表示へ変更し,
Scale Array に
radiusを設定すると実寸表示できます. - 非球形粒子を扱いたい
- クラスタ(マルチスフィア)や超二次形状(ver.3.8.0 以降)で近似可能です. STL 壁メッシュとして実装する方法も一般的です.
- GPU で高速化したい
- LIGGGHTS‑PUBLIC には GPU サポートがありません. LAMMPS + KOKKOS 版 DEM またはソース改変による独自 GPU 対応を検討してください.
- 計算時間が長い
- MPI 並列数を増やす /
dump出力頻度を下げる /neighbor更新間隔を調整するなどの最適化が有効です.
よく使われるコマンドと設定例
以下は LIGGGHTS® で頻繁に用いられる代表コマンドをカテゴリ別に整理した早見表です. 粒子生成・物性付与・境界条件・解析出力まで一通り設定できます.
| カテゴリ | キーワード | 概要 |
|---|---|---|
| 材料プロパティ | fix property/global |
ヤング率・摩擦係数など粒子種ごとの物性値を登録 |
| 粒子挿入 | fix insert/packfix insert/stream |
領域内へ一括パック/連続流入させる最新推奨コマンド(旧 fix pour 代替) |
| 接触モデル | pair_style gran model hertz tangential history |
ヘルツ–ミンドリン弾性+履歴摩擦 |
| 境界・壁 | fix wall/granfix mesh/surface |
平面/円筒/多角柱壁, または STL メッシュ壁の定義 |
| 外力・積分 | fix gravityfix nve/sphere |
重力付与と球粒子の運動積分 |
| 解析 | compute pair/gran/local |
接触ごとの力・重なり量をローカル出力 |
| 出力 | dump ... custom/vtk |
VTK 直接出力(ParaView で即時可視化可能) |
Tips
#以降はコメント. 改行継続&を使う行ではコメント不可.variableでパラメータを一元管理し,${var}で展開するとスクリプト再利用が楽.
関連チュートリアル
- C++ リファレンス でコアソースの読み方を確認。
- Python スクリプト集 で自動化と後処理を整理。
- ParaView 可視化ガイド で出力を魅力的に表現。
- ホームに戻る ことで最新のお知らせをキャッチアップ。