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

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

MacOSXにおけるOpenCAE環境構築:Peridynamic破壊解析の実行(1)

2012年11月16日 08時38分18秒 | OpenCAE活用
最近になりMacBookPro15-Retinaを購入し、隠れりんご党の自分は20年前のMacIIciの原点回帰を目指しています。MacOSXは全うなUNIXですから各種のOpenCAEが動作するはずです。
そこで、現在最も注目しているPeridynamic破壊解析を実行するための個別要素法解析システムLiggghtsの、MacOSX Lion(10.7)への導入を試みます。なおLiggghtsは、分子動力学解析システムLAMMPSにDEMを組み込んだものです。ですのでLAMMPSの構築でもあります。

■MacOSXの準備

まずはMacOSX Lionの準備です。基本となる開発環境Xcodeを導入します。AppStoreから無料で入手できます。
AppStoreの右欄の「トップ無料」にあるので、これを入手して展開しアプリケーションに置きます。
最初にXcodeを起動するとインストーラーなので、指示に従ってインストールしておきます。

この状態では、UNIX系の開発ツールが無いので、Xcode>Preference>Downloadsと進み、Command Line Toolsを導入しておきます。これでgccなどが利用できます。ターミナルなどで確認できます。

■MacPortsの準備

最初から全うなUNIXマシンですが、さらに完成度をあげるために、ソフトウエアのパッケージ管理システムのMacPortsを導入します。AppStoreほどでは無いですが各種のUNIXツールが簡単に導入できます。

以下より、Lion版を入手して展開してインストーラーに従い導入します。http://www.macports.org/install.php
状態を最新に保つために、ターミナルからsudo port selfupdateを実行して、baseを最新版2.1.2(H241116)にします。

■システム構築の準備

Liggghtsを構築するための必要なツールなどを、portで導入します。これがあるからとても簡単にできます。
sudo port install openmpi
sudo port install fftw-3
インストール先/opt/LIGGGHTSの準備
sudo mkdir /opt/LIGGGHTS
sudo chmod 777 /opt/LIGGGHTS

■Liggghtsなどの入手

liggghtsをgitで入手します。さすがMacです最初から入っています。こうでなくっちゃ!
cd
git clone https://github.com/CFDEMproject/LIGGGHTS-PUBLIC.git
ダウンロードしたら、パージョンを確認しておきます。現時点では2.2.2でした。
cat LIGGGHTS-PUBLIC/src/version_liggghts.txt
続いて可視化ツールlppを入手します。
git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp lpp-2012-03-29
インストール先へのファイルの移動
mv ~/LIGGGHTS-PUBLIC /opt/LIGGGHTS/liggghts-2.2.2
mv ~/lpp-2012-03-29 /opt/LIGGGHTS/

■Makefileの修正

MacのMPI並列処理用Makefileを修正します。まずディレクトリを移動します。
cd /opt/LIGGGHTS/liggghts-2.2.2/src/MAKE/
対象となるファイルはMakefile.mac_mpiで、修正点は以下の3つです。適当なエディタで修正します。
(1) FFT_LIB = -lfftw => -dfftw3
(2) JPG_INC, JPG_PATH, JPG_LIBの3つをコメントアウト
(3) CC, LINK は、/opt/local/bin/openmpic++とする

■ソースコードの修正

以前のXcode4.2では修正は不要ですが、最新のXcode4.5では、c++のコンパイラの変更で、以下の修正が必要です。
cd /opt/LIGGGHTS/liggghts-2.2.2/src/
修正するファイルはmulti_node_mesh_I.hで、以下の2箇所を修正します。
306: create => template create
320: destroy => template destroy

■Liggghtsの構築

コンパイルディレクトリに移動する。
cd /opt/LIGGGHTS/liggghts-2.2.2/src/
Peridynamicsのオプションを追加する
make yes-peri
liggghtsのコンパイルの実行
make mac_mpi
最後に、size ../lmp_mac_mpiの結果が表示されていたら、構築の成功です。

■実行用の環境変数の追加

準備したツールを実行するための以下に示す環境変数を、~/.profileに追加します。
export PATH=/opt/LIGGGHTS/liggghts-2.2.2/src:$PATH
export CFDEM_LPP_DIR=/opt/LIGGGHTS/lpp-2012-03-29/src
export CFDEM_PIZZA_DIR=$CFDEM_LPP_DIR
alias lpp="python $CFDEM_LPP_DIR/lpp.py"
alias pizza="python $CFDEM_PIZZA_DIR/pizza.py"
以上を有効にするために、次の命令を実行する。
source .profile

■作業用ディレクトリの作成

上記でPATHは通したので、ターミナルより自由に実行できます。以下は参考です。
cd
mkdir DEMwork
cd DEMwork
ここで、以下よりテスト用の入力スクリプトin.periをダウンロードして置きます。
http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?LAMMPS%A4%CE%BE%F0%CA%F3

■Liggghtsの実行

ここでは、MPI並列処理のプログラムを構築したので、以下の通り並列実行してみます。CPUのコア数に応じて並列処理は設定します。
openmpirun -np 4 lmp_mac_mpi < in.peri
並列実行の様子を確認するには、アクティビティモニタ=>ウインドウ=>CPU使用率で表示されます。

■可視化用のデータ変換

計算が正常に終了すると、dump.periの結果ファイルが作られるので、これを可視化データに変換します。
lpp dump.peri
結果は多数のvtkファイルになります。

■可視化ツールの導入

可視化では、ParaViewを利用するので、以下のより入手して導入しておきます。
http://www.paraview.org/paraview/resources/software.php
ParaViewを実行したら、解析した結果peri..vtkを開いて表示させます。
データの読み込みにエラーが表示されますが、一応は動作します。
なおParaViewの機能Same Animationを利用すると、avi動画が生成できます。