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

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

OpenFOAM-2.0.0でDEM解析を試す:基本例題を三次元化する(1)

2011年07月30日 10時29分52秒 | OpenCAE活用
基本例題の検討(1)で行った例題を三次元化したいと思います。用いる環境は、DEXCS2010-OpenFOAM (64) に、最新の OpenFOAM-2.0.0 をバイナリインストールした環境でおこないます。準備方法は、このブログの記事を参考にしてください。

ここでも、下記の PENGUINITIS さんのウエブに公開されているデータを用いて、勉強します。
http://www.geocities.jp/penguinitis2002/study/OpenFOAM/dem/dem.html
(PENGUINITISさん:情報公開ありがとうございます)

入力データの入手方法と構成に関しては基本例題の検討(1)を参考にしてください。

■計算手順1:blockMesh
まずblockMeshを行うのですが、その前にblockMeshDictを編集します。
OpenFOAM/square/constant/polyMesh
vertices
(
(0 0 0)
(1 0 0)
(1 1 0)
(0 1 0)
(0 0 0.1)→(0 0 1)に変更
(1 0 0.1)→(1 0 1)に変更
(1 1 0.1)→(1 1 1)に変更
(0 1 0.1)→(0 1 1)に変更
);

blocks
(
hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
);              ↓
             (20 20 20)に変更
 ・
 ・
boundary
(
.
.
frontAndBack
{
type empty→wallに変更
faces
(
(0 3 2 1)
(4 5 6 7)
);
このように編集した後blockMeshコマンドを実行します。二次元の時と同様すぐに終わります。
$blockMesh

■計算手順2:icoUncoupledKinematicParcelFoam
DEM解析を実行する前にkinematicCloudPositionsを編集します。
(0.025 0.075 0.005)→(0.025 0.075 0.045)
(0.05 0.075 0.005)→(0.05 0.075 0.045)
(0.075 0.075 0.005)→(0.075 0.075 0.045)
(0.025 0.05 0.005)→(0.025 0.05 0.055)
(0.05 0.05 0.005)→(0.05 0.05 0.065)
Z方向の初期配置を編集するのですが、この値は適当の当てはめたものです。初期配置の段階で玉を重ねると跳ねすぎるので気をつけてください。また、離しすぎるといい結果が出ないので様々な数値を試してみてください。

編集をし終えたらDEM解析を実行します。square ディレクトリの中で、icoUncoupledKinematicParcelFoam コマンドを実行します。二次元の場合より2倍ほど計算に時間がかかります。
$ icoUncoupledKinematicParcelFoam

この後の可視化の方法は二次元の場合と全く同じです。




DEXCS-Salomeの有効活用:並列版Code_Asterのコンパイル(3)

2011年07月24日 10時04分29秒 | DEXCS情報
あと少しで並列版Code_Asterの構築が完了します。

■petscの作成
並列ソルバーの petsc を構築します。以下のコマンドを実行してください。
$ cp ~/Install_Files/petsc-2.3.3.tar.gz /opt → petsc のパッケージをコピー
$ cd /opt → /opt に移動
$ tar xfvz petsc-2.3.3.tar.gz → ソフトウエアパッケージを展開
$ cd petsc-2.3.3-p16 → インストール作業用ディレクトリに移動
構築環境の設定を進めます。メッセージが続きますが、エラーが出なければ完了です。
$ ./config/configure.py --with-mpi-dir=/usr/lib/openmpi/lib --with-blas-lapack-dir=/usr/lib/atlas-base/atlas --with-debugging=0 COPTFLAGS=-O3 FOPTFLAGS=-O3 --with-shared=0 --configModules=PETSc.Configure --optionsModule=PETSc.compilerOptions --with-x=0
構築のための環境変数2つを設定ます。
$ PETSC_ARCH=linux-gnu-c-opt; export PETSC_ARCH
$ PETSC_DIR=/opt/petsc-2.3.3-p16; export PETSC_DIR
以下で実際に構築を進めます。
$ make
最後まで進みエラーが出ずに、以下のメッセージが出たら完成です。
Completed building libraries

■ PAR10.3の作成
並列処理システムを構築します。以下のコマンドを実行してください。なお cp は少し時間がかかります。
$ cd /opt/aster → /opt/aster に移動
$ cp -ax STA10.6 PAR10.6 → STA10.6 の内容を属性を維持して PAR10.6 にコピー
$ cd /opt/aster/PAR10.6 → コピーした /opt/aster/PAR10.6 に移動
ここでディレクトリにある profile.sh config.txt を修正するのですが、沢山の修正があります。
まず profile.sh は、以下の4個所を修正します。
PATH に /opt/ParMetis-3.2.0:\ を追加
LD_LIBRARY_PATH の /opt/aster/public/mumps-4.9.2/lib: を /opt/mumps-4.9.2_mpi/lib:\ に変更
LD_LIBRARY_PATH に /opt/petsc-2.3.3-p16/lib/linux-gnu-c-opt: を追加
LD_LIBRARY_PATH に /usr/lib/openmpi/lib: を追加
次に config.txt は、以下の16個所を修正します。
BIBL の mumps を -L/opt/mumps-4.9.2_mpi/lib -ldmumps -lzmumps -lsmumps -lcmumps -lmumps_common -lpord -L/opt/ParMetis-3.2.0 -lparmetis -lmetis に変更
BIBL の scalap に /opt/scalapack/lib/libscalapack.a /opt/scalapack/lib/blacs.a /opt/scalapack/lib/blacsF77.a /opt/scalapack/lib/blacs.a /usr/lib/atlas-base/atlas/libblas.a /usr/lib/atlas-base/atlas/liblapack.a
を追加
BIBL の metis に -L/opt/ParMetis-3.2.0 -lparmetis -lmetis を追加
BIBL の petsc に -L/opt/petsc-2.3.3-p16/lib/linux-gnu-c-opt -lpetscsnes -lpetscksp -lpetscdm -lpetscmat -lpetscvec -lpetsc を追加
BIBL の mpi に -L/usr/lib/openmpi/lib -lmpi -lmpi_f77 を追加
DEFS の defined を LINUX64 H5_USE_16_API _HAVE_MUMPS _HAVE_PETSC _USE_MPI _USE_MPI_MUMPS _USE_MPI_FETI _USE_OPENMP
に変更
NOBUILD はコメントアウト
LINK の link を mpif90 に変更
CC の cc を mpicc に変更
F77 の f77 を mpif90 に変更
F90 の f90 を mpif90 に変更
INCLF90 の include に -I/opt/aster/PAR10.6/bibf90/include_mumps-4.9.2_mpi を追加
INCLF90 の petsc に -I/opt/petsc-2.3.3-p16/ -I/opt/petsc-2.3.3-p16/include -I/opt/petsc-2.3.3-p16/bmake/linux-gnu-c-opt/ を追加
REPOUT の exec を /opt/aster/outils に変更
REPMAT の exec を /opt/aster/PAR10.6/materiau に変更
REPDEX の exec を /opt/aster/PAR10.6/datg に変更

さらに /opt/aster/etc/codeaster/ ディレクトリにある asrun ファイルを修正します。
$ cd /opt/aster/etc/codeaster/
$ vi asrun
mpi_get_procid_cmd は echo $OMPI_COMM_WORLD_RANK を選択

ファイルを準備したら、以下の手順でコンパイルします。暫く待ちます。
$ cd /opt/aster/PAR10.6
$ ../bin/as_run --vers=PAR10.6 --make clean → 不要ファイルの削除
$ ../bin/as_run --vers=PAR10.6 --make clean bibf90/mumps → 不要ファイルの削除
$ ../bin/as_run --vers=PAR10.6 --make → PAR10.6 のコンパイルの実行

最後までコンパイルが進むと、並列Code_Asterの検証用ジョブが実行されます。最後に以下のメッセージが出ていれば成功です。
as_run 1.10.4 --- DIAGNOSTIC JOB : OK

次に、コンパイルした PAR10.6 を利用できるように設定します。/opt/aster/etc/codeaster/ ディレクトリにある aster ファイルをエディタで開きます。最後の vers : stable の下に vers : PAR10.6 を追加します。
$ cd /opt/aster/etc/codeaster/
$ vi aster

DEXCS-Salomeの有効活用:並列版Code_Asterのコンパイル(2)

2011年07月23日 21時10分39秒 | DEXCS情報
準備ができたら、並列版のCode_Asterのコンパイルに進みます。

■ Code_Asterのインストール
以下のコマンドを順に実行してゆきます。途中で setup.cfg を変更するための sed スクリプトがありますが、複雑な記述なので間違えないようにしてください。どうしても上手くいかないときは、(1)に示した構築手順のまとめに見本の setup.cfg があるので、比較してください。
$ cd ~/Install_Files → インストール作業用ディレクトリに移動
$ tar xfvz aster-full-src-10.6.0-3.noarch.tar.gz → ソフトウエアパッケージを展開
$ cd aster-full-src-10.6.0/ → aster インストール作業用ディレクトリに移動
$ sed -i "s:PREFER_COMPILER\ =\ 'GNU':PREFER_COMPILER\ =\'GNU_without_MATH'\nMATHLIB=\ '-L/usr/lib/atlas-base/atlas -lblas -llapack':g" setup.cfg → セットアップ用設定ファイル setup.cfg のコンパイラの設定を変更
$ python setup.py install --prefix=/opt/aster → コンパイルしてインストールを実行しますが、途中で setup.cfg に関して確認を求められますが、進めてよいので y を入力します。コンパイルには、相当に時間がかかります。何らかの誤りがあると、エラー ERROR が表示され中断します。その時は setup.log を良く調べて対応してください。
メッセージが色々と出て、致命的なエラーの中断が出なければ、最後に以下のメッセージが出ます。これで並列版Code_Asterのコンパイルとインストールの完了です。でも、まだまだ作業があります。
Installation of : Code_Aster + 13 of its prerequisites
Destination : /opt/aster
Elapsed time : 1060.69 s → コンパイル環境に違う

■ hostfile の設定
MPI の動作環境の設定のため、/opt/aster/etc/codeaster ディレクトリの中に、適当なエディタで mpi_hostfile ファイルを作成し、「コンピュータ名 CPU=コア数」を記入します。
例えばここでの作業では、検証用に仮想マシン上で dexcs-salome-par というクアッド(4)コアマシンを1台使っているので、「dexcs-salome-par cpu=4」となります。多数の計算ノードを使うようになったら、ここに追記します。
$ cd /opt/aster/etc/codeaster
$ vi mpi_hostfile

■ scalapackのインストール
並列処理ライブラリの scalapack をインストールします。ここではソースからのコンパイルを行います。以下のコマンドを実行してください。コンパイルでは少しだけ時間がかかります。なおインストール先は /opt/scalpack になります。
$ mkdir /opt/scalapack → インストール用ディレクトリを作成
$ mkdir /opt/scalapack/build
$ mkdir /opt/scalapack/lib
$ cp ~/Install_Files/mpiblacs.tgz /opt/scalapack/build → インストール作業用ディレクトリにソフトウエアパッケージをコピー
$ cp ~/Install_Files/scalapack-1.8.0.tgz /opt/scalapack/build
$ cd /opt/scalapack/build → インストール作業用ディレクトリに移動
$ tar xfvz mpiblacs.tgz → ソフトウエアパッケージを展開
$ tar xfvz scalapack-1.8.0.tgz
$ cd /opt/scalapack/build/BLACS → BLACSインストール作業用ディレクトリに移動

コンパイル用の Bmake.inc を BMAKES/Bmake.MPI-LINUX をもとに以下の様に作成します。
$ cp ./BMAKES/Bmake.MPI-LINUX ./Bmake.inc → ./Bmake.inc の原型をコピー
修正箇所は Bmake.inc ファイルの、以下15行です。
BTOPdir = /opt/scalapack/build/BLACS
BLACSFINIT = $(BLACSdir)/blacsF77.a
BLACSCINIT = $(BLACSdir)/blacsC.a
BLACSLIB = $(BLACSdir)/blacs.a
MPIdir =
MPILIBdir = /usr/lib/openmpi/lib
MPIINCdir = /usr/lib/openmpi/include
MPILIB = $(MPILIBdir)/libmpi.a
INTFACE = -DAdd
F77 = mpif90
F77FLAGS = $(F77NO_OPTFLAGS) -O3
CC = mpicc
CCFLAGS = -O3
CCLOADER = $(F77)
RANLIB = /usr/bin/ranlib

コンパイルを進めます。
$ make mpi → BLACSのライブラリをコンパイル
エラーがなく最後に以下が表示されて、blacs.a が出来たら成功です。
/usr/bin/ranlib /opt/scalapack/build/BLACS/LIB/blacs.a
$ cp LIB/*.a /opt/scalapack/lib → BLACS のライブラリを移動

コンパイル用の SLmake.inc を SLmake.inc.example をもとに以下の様に作成します。
$ cd /opt/scalapack/build/scalapack-1.8.0 → scalapack インストール作業用ディレクトリに移動
$ cp SLmake.inc.example SLmake.inc → SLmake.inc の原型をコピー
修正個所は SLmake.inc ファイルの、以下の12行です。
home = /opt/scalapack/build/scalapack-1.8.0
BLACSdir = /opt/scalapack/lib
SMPLIB = /usr/lib/openmpi/libmpi.a
BLACSFINIT = $(BLACSdir)/blacsF77.a
BLACSCINIT = $(BLACSdir)/blacsC.a
BLACSLIB = $(BLACSdir)/blacs.a
F77 = mpif90
CCFLAGS = -O3
CDEFS = -DNO_IEEE $(USEMPI) -DAdd_
RANLIB = /usr/bin/ranlib
BLASLIB = /usr/lib/atlas-base/atlas/libblas.a
LAPACKLIB = /usr/lib/atlas-base/atlas/liblapack.a

コンパイルを進めます。
$ make → scalapack のライブラリをコンパイル
エラーがなく最後に以下が表示されて、libscalapack.a が出来たら成功です。
/usr/bin/ranlib /opt/scalapack/build/scalapack-1.8.0/libscalapack.a
$ cp libscalapack.a /opt/scalapack/lib → scalapack のライブラリを移動

■ ParMetisのインストール
並列処理用データ分割ツール ParMetis をインストールします。以下のコマンドを実行してください。
$ cp ~/Install_Files/ParMetis-3.2.0.tar.gz /opt → インストール用ソフトウエアパッケージを /opt にコピー
$ cd /opt → /opt に移動
$ tar xfvz ParMetis-3.2.0.tar.gz → ソフトウエアパッケージを展開
$ cd ParMetis-3.2.0 → ParaMetis インストール作業用ディレクトリに移動
ここで修正作業が必要です。ディレクトリの中に構築用設定ファイル Makefile.in があります。これに XTRALIBS = -lmpi を追加設定の場所に記入します。適当なエディタで行ってください。出来たらコンパイルします。
$ make
暫く待ちます。エラーが出ずに下記のメッセージが出たら完成です。
chmod 744 ../Graphs/pometis3.2.0

■ mumpsのインストール
並列連立方程式ソルバー mumps をインストールします。以下のコマンドを実行してください。
$ cp ~/Install_Files/aster-full-src-10.6.0/SRC/mumps-4.9.2-2.tar.gz /opt/ → インストール用ソフトウエアパッケージを /opt にコピー
$ cd /opt → /opt に移動
$ tar xfvz mumps-4.9.2-2.tar.gz → ソフトウエアパッケージを展開
$ mv mumps-4.9.2 mumps-4.9.2_mpi → 作業ディレクトリの名前を変更
$ cd mumps-4.9.2_mpi/ → mumps インストール作業用ディレクトリに移動

修正個所は Makefile.in ファイルの、以下の17行です。SCALAP に blacs.a が2回指定されていますが、この通りにします。
SCOTCHDIR = /opt/aster/public/scotch_5.1.11_esmumps
LMETISDIR = /opt/ParMetis-3.2.0
LMETIS = -L$(LMETISDIR) -lparmetis -lmetis
ORDERINGSF = -Dpord -Dparmetis -Dmetis
CC = mpicc
FC = mpif90
FL = mpif90
SCALAP = /opt/scalapack/lib/libscalapack.a \
/opt/scalapack/lib/blacs.a \
/opt/scalapack/lib/blacsF77.a \
/opt/scalapack/lib/blacs.a \
/usr/lib/atlas-base/atlas/libblas.a \
/usr/lib/atlas-base/atlas/liblapack.a
INCPAR = -I/usr/lib/openmpi/include/ $(IPORD)
LIBPAR = $(SCALAP) -L/usr/lib/openmpi/lib -lmpi
LIBBLAS = -L/usr/lib/atlas-base/atlas/libblas.a
OPTF = -O -Dintel_ -DALLOW_NON_INIT -O2 -ffixed-line-length-0 -x f77-cpp-input -fPIC -fopenmp
OPTL = -O -fopenmp
OPTC = -O -O2 -fno-stack-protector -fPIC -fopenmp
INC = $(INCPAR)
LIB = $(LIBPAR)
LIBSEQNEEDED =

ファイルを準備したらコンパイルします。暫く待ちます。
$ make all
エラーが出ずに、以下のメッセージが出れば完成です。
mpif90 -o zsimpletest -O -fopenmp zsimpletest.o …… 

DEXCS-Salomeの有効活用:並列版Code_Asterのコンパイル(1)

2011年07月23日 18時10分30秒 | DEXCS情報
ここでは、並列版Code_Asterの活用を目指してコンパイルに挑戦します。なお以下の手順は、Code_Asterの活用について情報提供を頂いているMKさんの資料を参考にしています。

H240221:MKさんの資料の改定に対応して内容を修正

構築手順まとめ:http://opencae.gifu-nct.ac.jp/pukiwiki/index.php?Code_Aster%20%A4%CE%CA%C2%CE%F3%B2%BD
上記の英文情報:http://www.code-aster.org/forum2/viewtopic.php?id=14892

検証に用いたベースのシステムは DEXCS2011-Salome-A3(64) なのですが、OSとしてはUbuntu 11.04(64) になります。
ただしこれに限定しているわけではなくて、Ubuntu の 10.04 などでも同様に構築できます。
なお以下の手順は 64bit を前提としているので、注意してください。

■ 準備
まずはОSをインストールしたら、ネットワークを接続して、システムアップデートを行っておきます。「システム」→「システム管理」→「アップデート・マネージャ」で、再チェックしてアップデートをインストールします。

■ インストール先など
この作業は dexcs ユーザーとして行っています。これはそれぞれの設定で読み替えてください。
ダウンロードしたファイルの保存:~/Install_Files (/home/dexcs/Install_Files)
システムをインストールする場所:/opt (この中に、acml や aster が作られます。)

■ 必要なファイル5個のダウンロード
aster-full-src-10.6.0-3.noarch.tar.gz → http://www.code-aster.org/V2/spip.php?article272 (最新版は11.1ですが、ここでは実績のある10.6を用います。)
ParMetis-3.2.0.tar.gz → http://glaros.dtc.umn.edu/gkhome/metis/parmetis/download (最新版がありますが、実績のある3.2.2を旧版の中から探してダウンロードします。)
mpiblacs.tgz → http://www.netlib.org/blacs/BLACS/Papers.html(MPIBLACSのリンクからダウンロードします。)
scalapack-1.8.0.tgz → http://www.netlib.org/scalapack/ (色々書いてありますが、下の方からRelease Historyにある1.8.0をダウンロードします。)
petsc-2.3.3.tar.gz → http://ftp.mcs.anl.gov/pub/petsc/release-snapshots/(沢山あるファイル一覧から指定のバージョンをダウンロードします。)

■ 色々な準備作業
まず、dexcsユーザーのホームディレクトリにある上記の5つのファイルを保存ディレクトリ~/Install_Filesにまとめて置きます。
次に、インストール先の/optの所有者を変更します。本来/optはrootが所有ですが、導入や利用を考えて一般ユーザーdexcs(ここでの設定)にしておきます。要は作業者dexcsが読み書きできるようにします。
$ sudo chown dexcs /opt/

■ 追加パッケージのインストール
構築に必要なパッケージを sudo apt-get install でインストールします。途中で「続行しますか?」と何か聞かれたら、指示に従って進めます。例えば、sudo apt-get install gfortran のようにします。
gfortran g++ → コンパイラの追加
python-dev python-numpy → Pythonの機能追加
zlib1g-dev → 圧縮ファイル対応ライブラリの追加
libatlas-base-dev → blas,lapackに対応するatlasの追加
grace → グラフ描画ツールの追加
bison flex → コンパイルツールの追加
python-qt4 → Pythonの機能追加
checkinstall → コンパイル支援ツールの追加
openmpi-bin openmpi-dev openmpi-dbg openmpi-doc → 並列処理用MPIの実装
libcr-dev → ParMetis用のライブラリ
エラー無く最後までインストールが進んだら、追加パッケージの準備は完了です。

OpenFOAM-2.0.0でDEM解析を試す:基本例題の検討(1)

2011年07月16日 07時16分48秒 | DEXCS情報
それでは、DEM解析の検討を進めます。用いる環境は、DEXCS2010-OpenFOAM (64) に、最新の OpenFOAM-2.0.0 をバイナリインストールした環境でおこないます。準備方法は、このブログの記事を参考にしてください。

ここでは、下記の PENGUINITIS さんのウエブに公開されているデータを用いて、DEM解析の詳細を勉強します。
http://www.geocities.jp/penguinitis2002/study/OpenFOAM/dem/dem.html
(PENGUINITISさん:情報公開ありがとうございます)

■ 入力データの入手
上記のサイトから、ファイル square.tar.gz をダウンロードして、~/OpenFOAM の中に Work ディレクトリを作って、この中で展開しておきます。
$ tar zxvf square.tar.gz

■ 入力データの構成
展開すると square ディレクトリが出来て、それは以下の構成です。ディレクトリには末尾に / がついています。

square/
  0/:初期条件
    U:初期条件、速度
  constant/
    RASProperties:レイノルズ数の変化の設定
    kinematicCloudProperties:衝突の設定
    turbulenceProperties:流体特性(モデル{層流、乱流など})
    g:重力加速度[m/s²]
    polyMesh/
     blockMeshDict:blockMeshを行うための記述がされている
    kinematicCloudPositions:玉の初期配置の設定
    transportProperties:流体特性(動粘性係数、密度など)
  dem.pvsm
  system/
    controlDict:計算時間の制御、解のデータの読み書きに関する入力
    fvSchemes:スキームの設定
      didSchemes:一次の時間微分項の離散化スキームの設定
      gradSchemes:勾配の離散化スキーム
      divShemes:発散離散化スキーム
      laplacianSchemes:ラプラシアン離散化スキーム
      interpolationSchemes:補間スキーム
    fvSolution:偏微分方程式を離散化してできる代数方程式を解くための設定

■ 計算手順1:blockMesh
まずメッシュを作成するため、square ディレクトリの中で、blockMesh コマンドを実行します。すぐに終わります。
$ blockMesh
こうすると、新しく以下のファイルが生成されます。

square/
  constant/
    polyMesh/
      boundary:パッチのリスト
      faces:面のリスト
      neighbour:隣接セルのリスト
      owner:保有セルのリスト
         (ヘッダーにポイント数、セル数、総面積、内部面積が記載)
      points:セルの頂点(ポイント)のリスト

■ 計算手順2:icoUncoupledKinematicParcelFoam
次に DEM解析を実行します。square ディレクトリの中で、icoUncoupledKinematicParcelFoam コマンドを実行します。しばらく計算が進みます。
$ icoUncoupledKinematicParcelFoam

■ 計算結果
この計算結果として、square ディレクトリの中に、各解析ステップ毎の結果が出力されます。生成されたディレクトリは以下の通りです。

square/
  0/
  0.002/
  0.004/
  ……
  0.498/
  0.5/

■可視化
可視化のためのVTKデータを作るために、以下のコマンドを実行します。
$foamToVTK
これで、VTKデータが作られるので、結果を見るためにParaViewを起動します。DEXCS2010では、「アプリケーション」→「DEXCS」→「paraview」で起動できます。

メニューの「File」→「Open」で、OpenFOAM-square-VTK-lagrangian-kinematicCloudにある kinematicCloud_..vtk を選択してOKで開きます。
同様にして、OpenFOAM-square-VTKにあるsquare_.vtkを開きます。

ここまできたらParaViewの設定を行います。表示形式:Glyph Glyph Type:Sphere Scale Mode:scalar SetScaleFactor:0.02 Scalers:d Vectors:U Radius:0.52 Theta Resolution:20 Phi Resolution:20にしたら、きれいな表示にすることができました。もし、可視化した玉が大きすぎたり、小さすぎたりする場合は、SetScaleFactorによって調整することができます。


DEXCS-Salomeの有効活用:Code_Asterのコンパイル(1)

2011年07月03日 14時38分14秒 | DEXCS情報
ここでは、DEXCS-Salomeを有効活用するための情報を発信してゆきます。まずは並列処理を目指して、Code_Asterをソースコンパイルする方法をまとめます。以下の記述は、コンパイルの練習と位置付けています。

オープンCAEに関して、非常に有用な情報をまとめてくださるPENGUINITISさんの記事に、Code_Aster のコンパイル方法が公開されましたのでご紹介します。テスト方法や並列版まで記載があります。
http://www.geocities.jp/penguinitis2002/study/Code_Aster/Code_Aster_setup.html

ベースのシステムは DEXCS2010-Salome-A2(64) と言うもので、OSとしては、Ubuntu 10.04(64) になります。ちなみに、このOSが 64bit かどうか確かめるには、端末のプロンプトで、以下のコマンドを実行します。
$ uname -a
それで出力の中に、"x86_64 amd64" があれば 64bit で、"i386 i686" のときは 32bit になります。

■ ソースパッケージの入手
Code_Aster の公式サイト http://www.code-aster.org/ より、表示を英語に変えて、DownLoad のページから Code_Aster のソースコードのセットを入手します。最新版は 11.0 ですが、ここでは並列処理を目指して 10.3 を用います。
用意するファイル:aster-full-src-10.3.0-3.noarch.tar.gz
これを、ホームディレクトリに置いて、tar xvfz で展開しておきます。

■ コンパイルの準備
用いるOSの状態では、色々と足りないものがあるので、追加パッケージを導入します。ここでは、手軽に行うために「システム」→「システム管理」→「Synapticパッケージマネージャ」を用いることにします。

起動すると、利用者のパスワードを求められるので、入力します。マネージャのウインドウが表示されたら、「再読込」を行っておきます。「検索」を押してキーワードから検索し、必要なパッケージを指定して、インストール指定にします。「適用」で実際にインストールします。

・コンパイラ関連の追加
キーワード:g++ より → パッケージ:g++
キーワード:gfortran より → パッケージ:gfortran

・ライブラリ関連の追加
キーワード:liblapack より → パッケージ:liblapack3gf liblapack-dev

・python関連の追加
キーワード:python-numpy より → パッケージ:python-numpy
キーワード:python-dev より → パッケージ:python-dev

■ ネットワーク環境の設定
ここでは練習のため、ネットワーク環境のみ設定しておく。展開したディレクトリ aster-full-src-10.3.0 に cd して、エディタで setup.cfg を開く。以下は DALAB での設定例です。
SERVER_NAME='shuubun'
DOMAIN_NAME='archi.gifu-nct.ac.jp'
FULL_SERVER_NAME='shuubun.archi.gifu-nct.ac.jp'

■ コンパイルスクリプトの実行
ここまで準備が出来たら、以下のコマンドでコンパイルを実行します。なお、ここでの手順ではコンパイルした Code_Aster を /opt/aster にインストールすることにします。しばらく待ちます。途中で進めて良いか確認されますが、練習のため y で進めます。
$ sudo python setup.py install --prefix=/opt/aster

以上で、エラーが出ずにコンパイルが完了しました。/opt/aster の中にも色々な結果のファイルが保存されています。