DALAB情報発信用ブログ:OpenCAE+GPGPU+Peridynamics編

DALABで行っている研究活動の中で、OpenCAEやGPGPUや破壊解析の取り組みについてまとめてゆきます。

DEXCS-OpenFOAMの有効活用:LIGGGHTSによるDEM解析(1)

2011年11月17日 12時13分44秒 | DEXCS情報
ここでは、DEM解析のソフトウエアの1つであるLIGGGHTSを利用する手順を説明します。OpenFOAM-2.0でもDEM解析が可能ですが、これは粒子を1種類しか指定できない(今の知識では)ので、物体の衝突などを扱うことが難しいと思うのです。

そこで、分子動力学のソフトウエアLAMMPSをベースにして、DEM解析を可能にしたLIGGGHTSを利用してみようと思います。このソフトウエアは、OpenFOAMと連携することで、CFD+DEMつまり流体中の粒子の運動を解析できるそうで、CFDEMとして公開されています。

最終的にはCFDEMを目指すので、OpenFOAMがインストールされている状態を基本とするために、DEXCS2011forOpenFOAMを用いて動作環境を構築します。これは近々公開されるDEXCSで、Ubuntu10.04+OpenFOAM2.0.xの環境となっており、同等の環境ならば同じ手順でできると思います。ここでは64bit環境で構築しています。

なおこの内容は、PENGUINITIS さんのウエブに公開されている情報を手本にして作成しています。
http://www.geocities.jp/penguinitis2002/study/LIGGGHTS/LIGGGHTS/LIGGGHTS.html

■ベースOSの準備
DEXCS2011forOpenFOAMをVMware上に構築します。たぶんDEXCS2010forOpenFOAMにOpenFOAM2.0.xを導入した状態でも同じだと思います。要は、Ubuntu10.04+OpenFOAM2.0.xを用意します。まず最初のLIGGGHTSではOpenFOAMは利用しません。最初にシステム⇒システム管理⇒アップデートマネージャでシステムを更新しておきます。

■コンパイルの準備
LIGGGHTSをコンパイルするには、FFTWとMPIが必要になります。FFTWは、C言語で作られた高速フーリエ変換のツール集で、MPIは並列処理を実現する基盤システムです。ここで用いているDEXCS2011での状況で確認してみます。

システム⇒システム管理⇒Synapticパッケージマネージャを起動して、再読込でパッケージ情報を最新にしておきます。検索からfftwを探してみます。色々と見つかりますが、バージョン2のfftw-dev, fftw-docs, fftw2の3つを選択してインストール指定します。適用を押してダウンロードとインストールを進めます。

次にOpenMPIを準備します。パッケージマネージャでopenmpiを検索して、すでにインストールされているlibopenmpi-dev,libopenmpi1.3,openmpi-commonに加えて、バージョン1.4.1-2に関する4つlibopenmpi-dbg,openmpi-bin,openmpi-checkpoint,openmpi-docをインストール指定します。適用を押してダウンロードとインストールを進めます。環境によっては既にインストールされているパッケージもあります。

LIGGGHTSのコンパイルでMPIのインストール位置を設定するので調べておきます。findでopenmpiを検索すると、/usr/lib/openmpiの中にincludeとlibがありました。

コンパイルは/optにLIGGGHTSを作って行うことにするので、以下の準備をします。
$ sudo mkdir /opt/LIGGGHTS
$ sudo chmod 777 /opt/LIGGGHTS

■LIGGGHTSの入手
gitで最新版のソフトウエアを入手します。/opt/LIGGGHTSの中で、以下のコマンドでダウンロードします。
$ git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/liggghts
しばらく待つと、/opt/LIGGGHTSの中にliggghtsディレクトリができる。

MakeFileが多数用意されているディレクトリに移る。
$ cd liggghts/src/MAKE

■Makefileの修正
最も状況に近いMakefile.linuxを修正して使うのでバックアップを取る。
$ cp Makefile.linux Makefile.linux.org

エディタviなどでMakefile.linuxを状況に合わせて修正する。
$ vi Makefile.linux

変更点は以下の4つ
・コンパイラはgccとする
 #CC = icc
 CC = gcc
・リンカーはgccとする
 #LINK = icc
 LINK = gcc
・MPIのincludeの設定
 #MPI_INC = -DMPICH_IGNORE_CXX_SEEK
 MPI_INC = -DMPICH_IGNORE_CXX_SEEK -I/usr/lib/openmpi/include
・MPIのlibの設定
 #MPI_LIB = -lmpich -lpthread
 MPI_LIB = -L/usr/lib -lmpi -L/usr/lib/openmpi/lib -lmpi_cxx -lpthread

■LIGGGHTSのコンパイルとインストール
先のMakefileを修正した場所の上(/opt/LIGGGHTS/liggghts/src)に移動し、linuxをターゲットにMakeを実行する。
$ cd ..
$ make linux

コンパイルに成功すると/opt/LIGGGHTS/liggghts/srcに実行形式lmp_linuxが作られ、sizeで状態が表示される。
次にインストール用のディレクトリを作り、上記の実行形式をliggghtsとしてコピーしてこれを利用する。
$ mkdir -p /opt/LIGGGHTS/bin
$ cp lmp_linux /opt/LIGGGHTS/bin/liggghts

■コマンドパスを通しておく
まずliggghtsのパスを設定する。~/.bashrcの最後に以下を追加する。
export PATH=/opt/LIGGGHTS/bin:$PATH
次に結果の可視化で用いるparaviewのパスを同様な方法で設定する。
export PATH=/opt/OpenFOAM/ThirdParty-2.0.x/build/linux64Gcc/paraview-3.10.1/bin:$PATH

設定を有効にするために、ログアウトして再ログインしておきます。

最新の画像もっと見る

コメントを投稿

ブログ作成者から承認されるまでコメントは反映されません。