ここでは、FrontISTRをUbuntu 16.04 LTSで手軽に構築する方法を紹介します。
FrontISTRを構築するには、様々なライブラリが必要になりますが、バイナリパッケージを利用することで手間を省きます。
ここに書かれている方法は、Ubuntu 16.04 LTSに対応します。
ライブラリをソースから構築する場合は、【参考】ライブラリを自力で構築する方法を参考にしてください。
FrontISTRは東京大学 奥田研究室で開発されている、本格的な構造解析プログラムです。FrontISTR研究会から、研究会の案内や資料、ソフトウェアが入手できます。 スパコンからWindowsパソコンまで動かすことが出来る点が特徴の一つです。
予めubuntu 16.04 LTSをインストールし、OSが動作可能な状態にしてください。
以下のソフトを入手してください。
ソフトウェア | 入手先 |
---|---|
FrontISTR_V45.tar.gz | http://www.multi.k.u-tokyo.ac.jp/FrontISTR |
REVOCAP_Refiner-1.1.04 | http://www.multi.k.u-tokyo.ac.jp/FrontISTR |
上記以外のソフトはバイナリパッケージから導入します。
% sudo apt install build-essensial% sudo apt install libtrilinos-ml-dev% sudo apt install libtrilinos-aztecoo-dev libtrilinos-zoltan-dev% sudo apt install libopenblas-dev libmumps-dev libmetis-dev
REVOCAP_Refinerをコンパイルします。
% tar xvf REVOCAP_Refiner-1.1.04.tar.gz% cd REVOCAP_Refiner-1.1.04% make
必要なライブラリの導入が済んだらFrontISTRを構築します。
FrontISTRで有効にする機能は
です。これらの機能を有効にしたバイナリを作成します。
% tar xvf FrontISTR_V45.tar.gz% cd FrontISTR_V45
さらにMakefile.am
を編集し構築する必要のない部分を除外します。
% vi Makefile.amPREFIX = @prefix@BINDIR = @bindir@LIBDIR = @libdir@INCLUDEDIR = @includedir@MAKE = @make@AR = @ar@CP = @cp@RM = @rm@MV = @mv@RANLIB = @ranlib@MKDIR = @mkdir@all:@cd hecmw1 && $(MAKE)@cd fistr1 && $(MAKE)# @cd hecmw2 && $(MAKE)# @cd fistr2 && $(MAKE)@cd fistr && $(MAKE)clean:@cd hecmw1 && $(MAKE) clean@cd fistr1 && $(MAKE) clean# @cd hecmw2 && $(MAKE) clean# @cd fistr2 && $(MAKE) clean@cd fistr && $(MAKE) cleandistclean:@cd hecmw1 && $(MAKE) distclean@cd fistr1 && $(MAKE) distclean# @cd hecmw2 && $(MAKE) distclean# @cd fistr2 && $(MAKE) distclean@cd fistr && $(MAKE) distclean- $(RM) ./bin/*install:if [ ! -d $(PREFIX) ]; then \$(MKDIR) $(PREFIX); \fiif [ ! -d $(BINDIR) ]; then \$(MKDIR) $(BINDIR); \fi@cd hecmw1 && $(MAKE) install@cd fistr1 && $(MAKE) install# @cd hecmw2 && $(MAKE) install# @cd fistr2 && $(MAKE) install@cd fistr && $(MAKE) install
hecmw2
およびfistr2
は構築しませんので、コメントアウトしてください。
% cp Makefile.conf.org Makefile.conf% vi Makefile.conf
以下の内容でMakefile.conf
を編集してください。
################################################### ## Setup Configulation File for FrontISTR ## #################################################### MPIMPIDIR = /usr/lib/openmpiMPIBINDIR = /usr/binMPILIBDIR = $(MPIDIR)/libMPIINCDIR = $(MPIDIR)/includeMPILIBS = -lmpi -lmpi_mpifh# for install option onlyPREFIX = $(HOME)/FrontISTRBINDIR = $(PREFIX)/binLIBDIR = $(PREFIX)/libINCLUDEDIR = $(PREFIX)/include# MetisMETISDIR = /usr/lib/x86_64-linux-gnuMETISLIBDIR = $(METISDIR)METISINCDIR = /usr/includeHECMW_METIS_VER= 5# ParMetisPARMETISDIR = $(HOME)/ParMetis-3.1PARMETISLIBDIR = $(PARMETISDIR)PARMETISINCDIR = $(PARMETISDIR)/ParMETISLib# RefinerREFINERDIR = $(HOME)/Software/REVOCAP_Refiner-1.1.04REFINERINCDIR = $(REFINERDIR)/RefinerREFINERLIBDIR = $(REFINERDIR)/lib/x86_64-linux# CouplerREVOCAPDIR = $(HOME)/REVOCAP_CouplerREVOCAPINCDIR = $(REVOCAPDIR)/librcapREVOCAPLIBDIR = $(REVOCAPDIR)/librcap# MUMPSMUMPSDIR = /usrMUMPSINCDIR = $(MUMPSDIR)/includeMUMPSLIBDIR = $(MUMPSDIR)/lib# MKL PARDISOMKLDIR = $(HOME)/MKLINCDIR = $(MKLDIR)/includeMKLLIBDIR = $(MKLDIR)/lib# MLMLDIR = /usrMLINCDIR = $(MLDIR)/include/trilinosMLLIBDIR = $(MLDIR)/lib/x86_64-linux-gnuMLLIBS = -ltrilinos_ml -ltrilinos_zoltan# C compiler settingsCC = mpicc -fopenmpCFLAGS =LDFLAGS = -lstdc++ -lmOPTFLAGS = -O3# C++ compiler settingsCPP = mpic++ -fopenmpCPPFLAGS =CPPLDFLAGS =CPPOPTFLAGS = -O3# Fortran compiler settingsF90 = mpif90 -fopenmpF90FLAGS =F90LDFLAGS = -lstdc++ -lopenblasF90OPTFLAGS = -O2F90FPP = -cppF90LINKER = mpif90 -fopenmpMAKE = makeAR = ar ruvMV = mv -fCP = cp -fRM = rm -fMKDIR = mkdir -p
この手順で用いるMETISはVersion5.1.0です。
HECMW_METIS_VER = 5
を指定してください。gfortranのプリプロセッサ指定は
-cpp
です。F90FPP = -cpp
を指定してください。
編集が出来たらsetup.sh
を実行してください。
% ./setup.sh -p --with-tools --with-refiner --with-metis --with-mumps --with-lapack --with-ml
setup.sh
の実行が済んだらコンパイルしてバイナリを作成します。
% make% make install
構築したバイナリをインストールをすると、$(HOME)/FrontISTR/bin
以下に
% ls $HOME/FrontISTR/binfistr1 hec2rcap hecmw_part1 hecmw_vis1 neu2fstr rconv rmerge
などのバイナリがコピーされ実行できる状態になります。
通常はここまでの手順で十分です。
FrontISTRを構築するのに必要なライブラリは
です。 Ubuntu-16.04上で構築する例を示します。
ただし、MPIの構築方法については省きます。OS付属のMPIを利用することをおすすめします。
ライブラリ名 | ダウンロード先 | 備考 |
---|---|---|
OpenBLAS-0.2.19 | http://www.openblas.net | リファレンスのLAPACKよりも速い |
metis-5.1.0 | http://glaros.dtc.umn.edu/gkhome/metis/metis/download | scotch-metisも利用可 |
scalapack-2.0.2 | http://www.netlib.org/scalapack/ | MUMPSで利用 |
MUMPS_5.0.2 | http://mumps.enseeiht.fr/ | 要ユーザ登録 |
trilinos-12.8.1 | https://trilinos.org/download/ | 要ユーザ登録 |
OpenBLASは、高速なLAPACK/BLASのフリーの実装です。
OpenMPを有効にしたライブラリを構築します。
% tar xvf OpenBLAS-0.2.19.tar.gz% cd OpenBLAS-0.2.19% make BINARY=64 NO_SHARED=1 USE_OPENMP=1% make PREFIX=$HOME/local install
OpenBLASをLAPACKとして利用する場合、-llapack
の代わりに-lopenblas
と指定してください。
グラフパーティショナのライブラリです。この他、Scotchに同梱されるmetis互換層も利用できます。
OpenMPを有効にしたライブラリを構築します。
METISの構築にはcmake
が必要ですので、予めインストールしておいてください。
% tar xvf metis-5.1.0.tar.gz% cd metis-5.1.0
metisのトップディレクトリにあるCMakeLists.txt
にはバグがありますので、修正をしてください。
% vi CMakeLists.txtset(GKLIB_PATH "GKlib" CACHE PATH "path to GKlib")と書かれている部分をset(GKLIB_PATH "${CMAKE_SOURCE_DIR}/GKlib" CACHE PATH "path to GKlib")に修正
CMakeLists.txt
を修正したらcmake
を実行してライブラリを構築します。
% cd build% cmake -DCMAKE_INSTALL_PREFIX=$HOME/local -DCMAKE_BUILD_TYPE="Release" -DOPENMP=ON ..% make% make install
scalapackは、この後説明をするMUMPSの構築に必要となります。
また、scalapackの構築には、予めMPIがインストールされている必要があります。
% tar xvf scalapack-2.0.2.tgz% cd scalapack-2.0.2% mkdir build% cd build% cmake -DCMAKE_INSTALL_PREFIX=$HOME/local \-DBLAS_blas_LIBRARY=$HOME/local/lib/libopenblas.a \-DLAPACK_lapack_LIBRARY=$HOME/local/lib/libopenblas.a \-DCMAKE_C_FLAGS="-fopenmp" \-DCMAKE_Fortran_FLAGS="-fopenmp" \-DCMAKE_EXE_LINKER_FLAGS="-fopenmp" \..% make% make install
MUMPSは直接法のソルバです。
% tar xvf MUMPS_5.0.2.tar.gz% cd MUMPS_5.0.2
Make.inc
ディレクトリにある、Makefile.inc.generic
を元にMakefile.inc
を環境に合わせた内容へ書き換えます。
% cp Make.inc/Makefile.inc.generic Makefile.inc% vi Makefile.incLMETISDIR = $(HOME)/localIMETIS = -I$(LMETISDIR)/includeLMETIS = -L$(LMETISDIR)/lib -lmetisORDERINGSF = -Dmetis -DpordCC = gcc -fopenmpFC = gfortran -fopenmpFL = gfortran -fopenmpSCALAP = -L$(HOME)/local/lib -lscalapackINCPAR = -I/usr/lib/openmpi/includeLIBPAR = $(SCALAP) -L/usr/lib/openmpi -lmpi -lmpi_mpifhLIBBLAS = -L$(HOME)/local/lib -lopenblasOPTF = -O -DMUMPS_OPENMPOPTC = -O -I. -DMUMPS_OPENMPOPTL = -O
ファイルの修正が済んだらライブラリを構築します。
% make
Trilinosには多くのライブラリ含まれていますが、FrontISTRに必要なのはML
とzoltan
だけです。
% tar xvf trilinos-12.8.1-Source.tar.gz% cd trilinos-12.8.1-Source% mkdir build% cd build% cmake \-DCMAKE_INSTALL_PREFIX=$HOME/local \-DTrilinos_ENABLE_ML=ON \-DTrilinos_ENABLE_Zoltan=ON \-DTrilinos_ENABLE_OpenMP=ON \-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES=OFF \-DTPL_BLAS_LIBRARIES=$HOME/local/lib/libopenblas.a \-DTPL_LAPACK_LIBRARIES=$HOME/local/lib/libopenblas.a \-DTPL_ENABLE_MPI=ON \..% make% make install
ここで示した手順では、ライブラリを$HOME/local
以下にインストールをしました。Ubuntu以外のOSでも基本的には同様に構築することができます。