Open DEM Japan

ダウンロード

私が作成したプログラムをコンパイルしてインストーラとしたEXEファイルを下記で配布しています.

無料ダウンロード: dump2vtk_installer.zip (156 MB)

ソースコードも下記で配布しています.

https://github.com/opendemjapan/D2V-dump2vtk-Japanese.git

概要

dump2vtk.exe は LIGGGHTS/LAMMPS の dump を VTK に変換するツールです。 GUI は 3 つのタブ(Particles/Header Replace/Force chain)で構成され,CLI は同等機能をサブコマンドとして提供します。 インストール手順は セクション「インストール」 を参照してください。

依存関係(GUI 版では通常同梱):

  • 必須: numpy
  • GUI: PySide6
  • 任意: vtk, networkx, python-louvain

インストール

Inno Setup で作成したインストーラから導入します。

セットアップの開始

  1. 配布物の dump2vtk-Setup.exe を実行する。
  2. 言語選択とライセンス確認を行う。既定のインストール先は C:\Program Files\dump2vtk
  3. Next を押し,インストールを実行する。インストーラ画面の例を図 1 に示す。
(画像 install.png 不在)
インストーラの画面例(Inno Setup, modern wizard)
図 1. インストーラの画面例(Inno Setup, modern wizard)

ショートカットと起動

インストール完了後,スタートメニューに dump2vtk,デスクトップにショートカットが作成されます(既定タスク)。 ショートカットから dump2vtk.exe を起動すると,タスクバーにアプリのアイコンが表示されます。 デスクトップ例を図 2 に示します。

(画像 desktop.png 不在)
インストール後のデスクトップ例(ショートカットあり)
図 2. インストール後にショートカットを配置したデスクトップの例

GUI の使い方

GUI は 3 タブ構成です(図 3〜図 5)。

Particles: Dump → VTK

(画像 1.png 不在)
Particles タブ(連番自動収集と並列変換)
図 3. Particles タブ(連番自動収集と並列変換)
  1. 左のリストへ dump を 1 つドラッグ&ドロップする。 同名プレフィクスの連番ファイルを自動収集する(数字の位置は末尾でも中間でもよい)。
  2. 右上の 出力先フォルダを必要に応じて指定(空欄時は入力と同じ場所)。
  3. Advanced settings では ASCII/BINARY,並列数,チャンクサイズ, --no-overwrite(既存スキップ)を設定(バックエンドは VTK 固定)。
  4. Export VTK を押す。進捗バーとログに Start: particle VTK (parallel)... Done. と表示されれば成功。

Header Replace: ヘッダー置換

(画像 2.png 不在)
Header Replace タブ(ITEM: ENTRIES ... の一括置換)
図 4. Header Replace タブ(ITEM: ENTRIES ... の一括置換)
  1. pair/local 形式の dump(例: fc0.dump, fc2000.dump, ...)を投入する。 WSL パス(\\wsl.localhost\...)も扱える。
  2. Replacement header に以下の 1 行を入力する:
    ITEM: ENTRIES x1 y1 z1 x2 y2 z2 id1 id2 periodic fx fy fz Fnx Fny Fnz Ftx Fty Ftz
  3. Apply header replacement を押す。各ファイルが -renamed.dump として複製される。

Force chain: フォースネットワーク(出力は VTK)

(画像 3.png 不在)
Force chain タブ(バッチ処理と Louvain 集約)
図 5. Force chain タブ(バッチ処理と Louvain 集約)
  1. *-renamed.dump を 1 つ選ぶと同プレフィクスの連番を自動収集する。
  2. Export network を押す。各ステップの VTK を出力する。 ログに Start: force chain batch (parallel)... All done. と表示されれば完了。

VTK の出力例(ParaView)

以下に VTK ファイルの表示例を示します。粒子(図 6),フォースチェーン(図 7), Louvain 法による力のネットワーク(図 8)。

(画像 particle.png 不在)
VTK(粒子)の表示例
図 6. VTKファイル(粒子)の表示例
(画像 force_chain.png 不在)
VTK(force chain)の表示例
図 7. VTKファイル(force chain)の表示例
(画像 louvain.png 不在)
VTK(Louvain 法による力のネットワーク)の表示例
図 8. VTKファイル(Louvain 法による力のネットワーク)の表示例

CUI(CLI)

以下にコマンドラインでの実行例を示します。画像は配置しません(LaTeX 版の \FloatBarrier 相当の節またぎ制御は不要です)。

lpp(粒子 Dump → VTK)

dump2vtk.exe lpp DUMP_FILES... ^
  -o OUTROOT --format {ascii|binary} ^
  --cpunum N --chunksize K --no-overwrite

rename(ヘッダー置換)

dump2vtk.exe rename ^
  -H "ITEM: ENTRIES x1 y1 z1 x2 y2 z2 id1 id2 periodic fx fy fz Fnx Fny Fnz Ftx Fty Ftz" ^
  inputs*.dump --inplace

force(フォースネットワーク + Louvain, 出力は VTK)

dump2vtk.exe force forcechain-*.dump ^
  --encoding {ascii|binary} --keep-periodic --resolution 1.0 --seed 42 ^
  --write-pointdata --outdir outdir/ --nan-fill 0.0 ^
  --cpunum N --chunksize K --no-overwrite

エラーについて

次のエラーが表示されることがあります。
[WinError 1455] The paging file is too small for this operation to complete.
[WinError 1455] ページング ファイルが小さすぎるため、この操作を完了できません。

これは Windows のコミット上限(ページング ファイルを含む利用可能メモリ)に達したときに発生します。

対処: 並列数(CPUs)とチャンクサイズの両方を 1 に設定すると、メモリ使用量が大幅に下がり、エラーを回避できる場合が多いです。

配布(Windows): Nuitka ビルド

Nuitka: 単一 EXE ビルド(PowerShell 例)

$J = [Environment]::ProcessorCount
python -m nuitka --assume-yes-for-downloads --jobs=$J --msvc=latest `
  --mode=onefile --enable-plugin=pyside6 `
  --windows-icon-from-ico=D2V.ico `
  --include-data-files="*.png=assets/" `
  --include-data-files="D2V.ico=assets/" `
  --output-dir="." --output-filename="dump2vtk.exe" --remove-output dump2vtk.py `
  --windows-console-mode=attach

ライセンス

Pizza.py 由来部分は GPL(通常は GPL-2.0 互換)です。GPL 由来コードと結合して配布する場合,配布物全体は GPL に従います。 自作部分は MIT で供与可能ですが,結合配布時は GPL が優先します。主要ライセンスは NumPy(BSD-3),PySide6(LGPL-3), VTK(BSD-3),NetworkX(BSD-3),python-louvain(BSD 系)です。

開発メモ(実装要点)

  • DumpReader/Snap: 粒子 dump の読み込み,スケール自動判定。
  • find_scalars_vectors: 3 成分ベクトル/スカラー自動検出。
  • BDump/FSnap: pair/local dump のストリーミング読込。
  • VTK writer: レガシー形式(ASCII/BINARY)。
  • Louvain: NetworkX + python-louvain によるコミュニティ集約出力。
  • 並列は multiprocessing.Pool(imap_unordered) を使用。

付録:LAMMPS dump(コマンド → 意味 → 出力:対応色で解説)

以下は LAMMPS/LIGGGHTS の dump 出力について、コマンド → 意味 → 出力の順に、列の対応色で整理したガイドです。 本ドキュメント内に埋め込み表示しています。別タブで開く場合は こちら をクリックしてください。

過去のプログラム

dump2vtk.exeは下記の3つのプログラムを1つのGUIにしたものです.

  1. liggghts-lammps-dump2vtk.py
  2. liggghts-entries-header-replacer.py
  3. dump2force.py

これらのファイルはpythonで書かれたLPP(/Pizza)をpython3に書き直して機能を追加して拡張したものです.

当サイトでは Google AdSense などの広告配信サービスを利用しています。広告収益はスクリプト検証や記事改善に活用しており、Cookie が利用される場合があります。詳細は Google の広告ポリシーをご確認ください。