LIGGGHTSの接触モデル
By K.Yoshimi
はじめに
前回の記事LIGGGHTSのパッキングに続き、 今回は、円柱内で、多数の球を接触を考慮して落下させる例題を見てみます。
特に、LIGGGHTSは、 計算結果として、球の中心座標と半径、速度などは出力しますが、境界となる円柱形状を出力しないので、 ParaViewでその円柱形状を作成する方法を説明します。
接触モデルの例題の実行
まず、インストールしたLIGGGHTSの中の接触モデルの例題があるcontactModelsのフォルダに移動します。
cd LIGGGHTS-PUBLIC/examples/LIGGGHTS/Tutorials_public/contactModels
例題の実行は、下記のコマンドのように、入力ファイルin.newModelsを渡して実行します。
liggghts < in.newModels
計算が終了すると、postフォルダの中にvtk形式の結果が保存されます。
ParaViewによる粒子の可視化
前回と同様、Windows上にインストールしたParaViewを使用して、LIGGGHTSの計算結果を可視化します。
Windowsのエクスプローラーのアドレスに
\\wsl$\Ubuntu-20.04\home\ユーザ名\LIGGGHTS-PUBLIC\examples\LIGGGHTS\Tutorials_public\contactModels\post
と入力することで、Ubuntuのフォルダにアクセスできます。
ParaViewを起動し、粒子の時系列データ(newModels_**.vtk)を読み込みますと、 下図のように点として粒子が表示されます。
今回は、粒子を球面として表示するために、Glyphフィルターを使用します。
下記を設定し、Applyしますと、点が球面として描画されます。
-
Glyph Source
- Glyph Type: Sphere
- Radius: 1.0
- Theta Resolution: 20
- Phi Resolution: 20
-
Orientation
- Scale Array: radius
- Scale Factor: 1
-
Masking
- Glyph Mode: All Points
ParaViewによる円柱の可視化
最後に、LIGGGHTSから出力されていない円柱をParaViewで作成します。
まず、作成したい円柱の諸元を、例題contactModelsの入力ファイルin.newModelsをエディタで開いて確認します。
円柱を壁境界として定義しているのは、以下の箇所です。
fix zwalls1 all wall/gran model hertz tangential history primitive type 1 zplane 0.0
fix zwalls2 all wall/gran model hertz tangential history primitive type 1 zplane 0.15
fix cylwalls all wall/gran model hertz tangential history primitive type 1 zcylinder 0.05 0. 0.
これは
- z方向高さ:0.0~0.15
- 半径:0.05
- 軸の始点(x, y):(0., 0.)
となる円柱を意味しています。
それでは、ParaViewで、この円柱を作成します。
❗ ParaViewで作成される円柱は、y軸方向の円柱となりますので、後で、Transformフィルターで回転して向きを変える必要があります。
まず、Cylinderソースで、y軸方向の円柱として作成します。
Sources > Geometric Shapes > Cylinder
からCylinderソースを起動し、下記を設定後、Applyします。
- Resolution:40
- Height:0.15
- Radius:0.05
- Center:0, 0.075, 0
次に、Transformフィルターで、円柱をx軸周りに90度回転します。
Filters > Alphabetical > Transform
から起動し、下記を設定し、Applyします。
- Roate:90, 0, 0
を設定し、Applyしますと、下図のように、正しい位置の円柱が作成されました。
このままですと、粒子が見えませんので、Opacityを変更して、透過させましょう。
以上により、球面と円柱の相互作用も確認することができます。
動画にすると下のようになりました。