Peridigmとは
Peridigmは,Peridynamicsのオープンソースコードです.もともとは,アメリカのSandia国立研究所で開発され2011年にオープンソース化されました.Trilinosの基本的なコンポーネント使用したC++のコードであり,Sandia国立研究所で開発されたこともありCubitやParaViewと互換性があります.
公式リポジトリは下記リンクになります.定期的にコミットはありますが,実質的にサポートは終了しているというのが現状です(2022現在).
>> Peridynamic Theory and Its Applications
インストール方法
Peridigmのインストールは多くの方が苦労しています.公式のインストール方法を参照したとしても,うまくインストールできない場合が多々あります.
基本的にOSやライブラリの依存関係やバージョンが問題である可能性が高く,それらの解決には,高度なLinux知識やライブラリそのものの知識が必要になります.
この記事では,依存ライブラリを可能な限りパッケージ管理システムを使用せずに,管理者権限なしでインストールします.パッケージ管理システムを使用しないことにより,任意のライブラリバージョンを指定できることや依存関係を複雑化を防ぐメリットがあります.
PythonとGFortranのインストールを除き,管理者権限なしでインストールができるため,Peridigmをスパコン上で使用したい場合でも,この記事の方法を使用すればインストール可能です.
Third-party(依存ライブラリ)のインストール方法
Peridigmのインストールに必要なライブラリは以下の通りです.まず,Peridigmをインストールする前に下記ライブラリをインストールする必要があります.
- Python
- OpenMPI
- zlib
- HDF5
- OpenSSL
- Curl
- NetCDF
- LAPACK
- yaml-cpp
- Boost
- Trilinos
Python
Pythonを管理者権限でインストールします.apt ...
はDebian系のパッケージ管理システムを使用したインストール方法です.CentOSなどを使用する場合,適宜yum
などに読みかえてください.
apt install python python-dev
GFortran
GFortranもPython同様に,管理者権限でインストールします.
apt install gfortran
Open MPI
OpenMPIは,ソースからビルドし,インストールするため,管理者権限を使用しません.
/path/to/install/
はインストール先を意味します.適宜,インストールしたいディレクトリに書き換えてコマンドを実行します.その際に,インストール先に書込み権限があることを確認してください.
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.1.tar.bz2
tar xvf openmpi-4.1.1.tar.bz2
mkdir openmpi-4.1.1/build
cd openmpi-4.1.1/build
../configure --prefix=/path/to/install/openmpi/4.1.1 CC=gcc CXX=g++ FC=gfortran --enable-mpi-cxx
make -j
make install
次に,OpenMPIのパスを通します.ログアウトすると下記設定がリセットされるため注意してください.
export PATH=/path/to/install/openmpi/4.1.1/bin:$PATH
export LD_LIBRARY_PATH=/path/to/install/openmpi/4.1.1/lib:$LD_LIBRARY_PATH
export MANPATH=/path/to/install/openmpi/4.1.1/share/man:$MANPAT
後ほど,ログイン時に環境が自動で読み込めるように.bashrc
を編集します.
zlib
OpenMPI同様に,zlibを一般ユーザでインストールします.
wget https://www.zlib.net/zlib-1.2.11.tar.gz
tar xvf zlib-1.2.11.tar.gz
mkdir zlib-1.2.11/build
cd zlib-1.2.11/build
../configure --prefix=/path/to/install/zlib/1.2.11
make
make install
HDF5
HDF5を一般ユーザでインストールします.
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.12/hdf5-1.12.1/src/hdf5-1.12.1.tar.gz
tar xvf hdf5-1.12.1.tar.gz
mkdir hdf5-1.12.1/build
cd hdf5-1.12.1/build/
../configure --prefix=/path/to/install/hdf5/1.12.1 --enable-parallel --enable-shared --with-default-api-version=v110 --with-zlib=/path/to/install/zlib/1.2.11/
make
make install
OpenSSL
OpenSSLを一般ユーザでインストールします.
wget https://www.openssl.org/source/openssl-1.1.1l.tar.gz
tar xvf openssl-1.1.1l.tar.gz
mkdir openssl-1.1.1l/build
cd openssl-1.1.1l/build/
../config --prefix=/path/to/install/openssl/1.1.1l --openssldir=/path/to/install/openssl/1.1.1l --with-zlib-include=/path/to/install/zlib/1.2.11/include --with-zlib-lib=/path/to/install/zlib/1.2.11/lib shared zlib
make
make install
Curl
Curlを一般ユーザでインストールします.
wget https://curl.se/download/curl-7.79.1.tar.bz2
tar xvf curl-7.79.1.tar.bz2
mkdir curl-7.79.1/build
cd curl-7.79.1/build/
../configure --prefix=/path/to/install/curl/7.79.1 --with-ssl=/path/to/install/openssl/1.1.1l
make
make install
NetCDF
NetCDFを一般ユーザでインストールします.
wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.8.1.tar.gz
tar xvf v4.8.1.tar.gz
cd netcdf-c-4.8.1/
sed -i \
-e 's@#define NC_MAX_DIMS 1024@#define NC_MAX_DIMS 65536@g' \
-e 's@#define NC_MAX_VARS 8192@#define NC_MAX_VARS 524288@g' \
-e 's@#define NC_MAX_VAR_DIMS 1024@#define NC_MAX_VAR_DIMS 8@g' \
./include/netcdf.h
mkdir build
cd build
../configure --prefix=/path/to/install/netcdf/4.8.1 CC=mpicc LDFLAGS="-L/path/to/install/hdf5/1.12.1/lib -L/path/to/install/zlib/1.2.11/lib -L/path/to/install/curl/7.79.1/lib" CFLAGS="-I/path/to/install/hdf5/1.12.1/include -I/path/to/install/zlib/1.2.11/include -I/path/to/install/curl/7.79.1/include/"
make
make install
スを通します.
export LD_LIBRARY_PATH=/path/to/install/netcdf/4.8.1/lib:$LD_LIBRARY_PATH
LAPACK
LAPACKを一般ユーザでインストールします.
wget https://github.com/Reference-LAPACK/lapack/archive/refs/tags/v3.10.0.tar.gz
tar xvf v3.10.0.tar.gz
mkdir lapack-3.10.0/build
cd lapack-3.10.0/build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/lapack/3.10.0 -DBUILD_SHARED_LIBS=ON -DBUILD_TESTING=ON ../
make -j
make test
make install
以下は,make test
の結果です.テストが100%通っていることを確認してください.
Start 1: BLAS-xblat1s
1/103 Test #1: BLAS-xblat1s ..................... Passed 0.03 sec
Start 2: BLAS-xblat2s
2/103 Test #2: BLAS-xblat2s ..................... Passed 0.05 sec
Start 3: BLAS-xblat3s
3/103 Test #3: BLAS-xblat3s ..................... Passed 0.05 sec
Start 4: BLAS-xblat1d
4/103 Test #4: BLAS-xblat1d ..................... Passed 0.03 sec
Start 5: BLAS-xblat2d
5/103 Test #5: BLAS-xblat2d ..................... Passed 0.05 sec
Start 6: BLAS-xblat3d
6/103 Test #6: BLAS-xblat3d ..................... Passed 0.05 sec
Start 7: BLAS-xblat1c
7/103 Test #7: BLAS-xblat1c ..................... Passed 0.03 sec
Start 8: BLAS-xblat2c
8/103 Test #8: BLAS-xblat2c ..................... Passed 0.06 sec
Start 9: BLAS-xblat3c
9/103 Test #9: BLAS-xblat3c ..................... Passed 0.07 sec
Start 10: BLAS-xblat1z
10/103 Test #10: BLAS-xblat1z ..................... Passed 0.03 sec
Start 11: BLAS-xblat2z
11/103 Test #11: BLAS-xblat2z ..................... Passed 0.06 sec
Start 12: BLAS-xblat3z
12/103 Test #12: BLAS-xblat3z ..................... Passed 0.07 sec
Start 13: LAPACK_Test_Summary
13/103 Test #13: LAPACK_Test_Summary .............. Passed 0.08 sec
Start 14: LAPACK-xlintsts_stest_in
14/103 Test #14: LAPACK-xlintsts_stest_in ......... Passed 3.48 sec
Start 15: LAPACK-xlintstrfs_stest_rfp_in
15/103 Test #15: LAPACK-xlintstrfs_stest_rfp_in ... Passed 0.27 sec
Start 16: LAPACK-xeigtsts_nep_in
16/103 Test #16: LAPACK-xeigtsts_nep_in ........... Passed 0.11 sec
Start 17: LAPACK-xeigtsts_sep_in
17/103 Test #17: LAPACK-xeigtsts_sep_in ........... Passed 0.40 sec
Start 18: LAPACK-xeigtsts_se2_in
18/103 Test #18: LAPACK-xeigtsts_se2_in ........... Passed 0.42 sec
Start 19: LAPACK-xeigtsts_svd_in
19/103 Test #19: LAPACK-xeigtsts_svd_in ........... Passed 4.22 sec
Start 20: LAPACK-xeigtsts_sec_in
20/103 Test #20: LAPACK-xeigtsts_sec_in ........... Passed 0.29 sec
Start 21: LAPACK-xeigtsts_sed_in
21/103 Test #21: LAPACK-xeigtsts_sed_in ........... Passed 0.16 sec
Start 22: LAPACK-xeigtsts_sgg_in
22/103 Test #22: LAPACK-xeigtsts_sgg_in ........... Passed 0.08 sec
Start 23: LAPACK-xeigtsts_sgd_in
23/103 Test #23: LAPACK-xeigtsts_sgd_in ........... Passed 0.24 sec
Start 24: LAPACK-xeigtsts_ssb_in
24/103 Test #24: LAPACK-xeigtsts_ssb_in ........... Passed 0.05 sec
Start 25: LAPACK-xeigtsts_ssg_in
25/103 Test #25: LAPACK-xeigtsts_ssg_in ........... Passed 0.43 sec
Start 26: LAPACK-xeigtsts_sbal_in
26/103 Test #26: LAPACK-xeigtsts_sbal_in .......... Passed 0.05 sec
Start 27: LAPACK-xeigtsts_sbak_in
27/103 Test #27: LAPACK-xeigtsts_sbak_in .......... Passed 0.04 sec
Start 28: LAPACK-xeigtsts_sgbal_in
28/103 Test #28: LAPACK-xeigtsts_sgbal_in ......... Passed 0.03 sec
Start 29: LAPACK-xeigtsts_sgbak_in
29/103 Test #29: LAPACK-xeigtsts_sgbak_in ......... Passed 0.04 sec
Start 30: LAPACK-xeigtsts_sbb_in
30/103 Test #30: LAPACK-xeigtsts_sbb_in ........... Passed 0.05 sec
Start 31: LAPACK-xeigtsts_glm_in
31/103 Test #31: LAPACK-xeigtsts_glm_in ........... Passed 0.04 sec
Start 32: LAPACK-xeigtsts_gqr_in
32/103 Test #32: LAPACK-xeigtsts_gqr_in ........... Passed 0.06 sec
Start 33: LAPACK-xeigtsts_gsv_in
33/103 Test #33: LAPACK-xeigtsts_gsv_in ........... Passed 0.05 sec
Start 34: LAPACK-xeigtsts_csd_in
34/103 Test #34: LAPACK-xeigtsts_csd_in ........... Passed 0.04 sec
Start 35: LAPACK-xeigtsts_lse_in
35/103 Test #35: LAPACK-xeigtsts_lse_in ........... Passed 0.04 sec
Start 36: LAPACK-xlintstd_dtest_in
36/103 Test #36: LAPACK-xlintstd_dtest_in ......... Passed 3.60 sec
Start 37: LAPACK-xlintstrfd_dtest_rfp_in
37/103 Test #37: LAPACK-xlintstrfd_dtest_rfp_in ... Passed 0.28 sec
Start 38: LAPACK-xeigtstd_nep_in
38/103 Test #38: LAPACK-xeigtstd_nep_in ........... Passed 0.13 sec
Start 39: LAPACK-xeigtstd_sep_in
39/103 Test #39: LAPACK-xeigtstd_sep_in ........... Passed 0.43 sec
Start 40: LAPACK-xeigtstd_se2_in
40/103 Test #40: LAPACK-xeigtstd_se2_in ........... Passed 0.59 sec
Start 41: LAPACK-xeigtstd_svd_in
41/103 Test #41: LAPACK-xeigtstd_svd_in ........... Passed 5.54 sec
Start 42: LAPACK-xeigtstd_dec_in
42/103 Test #42: LAPACK-xeigtstd_dec_in ........... Passed 0.30 sec
Start 43: LAPACK-xeigtstd_ded_in
43/103 Test #43: LAPACK-xeigtstd_ded_in ........... Passed 0.17 sec
Start 44: LAPACK-xeigtstd_dgg_in
44/103 Test #44: LAPACK-xeigtstd_dgg_in ........... Passed 0.09 sec
Start 45: LAPACK-xeigtstd_dgd_in
45/103 Test #45: LAPACK-xeigtstd_dgd_in ........... Passed 0.29 sec
Start 46: LAPACK-xeigtstd_dsb_in
46/103 Test #46: LAPACK-xeigtstd_dsb_in ........... Passed 0.05 sec
Start 47: LAPACK-xeigtstd_dsg_in
47/103 Test #47: LAPACK-xeigtstd_dsg_in ........... Passed 0.55 sec
Start 48: LAPACK-xeigtstd_dbal_in
48/103 Test #48: LAPACK-xeigtstd_dbal_in .......... Passed 0.04 sec
Start 49: LAPACK-xeigtstd_dbak_in
49/103 Test #49: LAPACK-xeigtstd_dbak_in .......... Passed 0.04 sec
Start 50: LAPACK-xeigtstd_dgbal_in
50/103 Test #50: LAPACK-xeigtstd_dgbal_in ......... Passed 0.04 sec
Start 51: LAPACK-xeigtstd_dgbak_in
51/103 Test #51: LAPACK-xeigtstd_dgbak_in ......... Passed 0.04 sec
Start 52: LAPACK-xeigtstd_dbb_in
52/103 Test #52: LAPACK-xeigtstd_dbb_in ........... Passed 0.05 sec
Start 53: LAPACK-xeigtstd_glm_in
53/103 Test #53: LAPACK-xeigtstd_glm_in ........... Passed 0.05 sec
Start 54: LAPACK-xeigtstd_gqr_in
54/103 Test #54: LAPACK-xeigtstd_gqr_in ........... Passed 0.06 sec
Start 55: LAPACK-xeigtstd_gsv_in
55/103 Test #55: LAPACK-xeigtstd_gsv_in ........... Passed 0.05 sec
Start 56: LAPACK-xeigtstd_csd_in
56/103 Test #56: LAPACK-xeigtstd_csd_in ........... Passed 0.04 sec
Start 57: LAPACK-xeigtstd_lse_in
57/103 Test #57: LAPACK-xeigtstd_lse_in ........... Passed 0.04 sec
Start 58: LAPACK-xlintstc_ctest_in
58/103 Test #58: LAPACK-xlintstc_ctest_in ......... Passed 6.99 sec
Start 59: LAPACK-xlintstrfc_ctest_rfp_in
59/103 Test #59: LAPACK-xlintstrfc_ctest_rfp_in ... Passed 0.85 sec
Start 60: LAPACK-xeigtstc_nep_in
60/103 Test #60: LAPACK-xeigtstc_nep_in ........... Passed 0.18 sec
Start 61: LAPACK-xeigtstc_sep_in
61/103 Test #61: LAPACK-xeigtstc_sep_in ........... Passed 0.55 sec
Start 62: LAPACK-xeigtstc_se2_in
62/103 Test #62: LAPACK-xeigtstc_se2_in ........... Passed 0.60 sec
Start 63: LAPACK-xeigtstc_svd_in
63/103 Test #63: LAPACK-xeigtstc_svd_in ........... Passed 6.57 sec
Start 64: LAPACK-xeigtstc_cec_in
64/103 Test #64: LAPACK-xeigtstc_cec_in ........... Passed 0.08 sec
Start 65: LAPACK-xeigtstc_ced_in
65/103 Test #65: LAPACK-xeigtstc_ced_in ........... Passed 0.23 sec
Start 66: LAPACK-xeigtstc_cgg_in
66/103 Test #66: LAPACK-xeigtstc_cgg_in ........... Passed 0.13 sec
Start 67: LAPACK-xeigtstc_cgd_in
67/103 Test #67: LAPACK-xeigtstc_cgd_in ........... Passed 0.33 sec
Start 68: LAPACK-xeigtstc_csb_in
68/103 Test #68: LAPACK-xeigtstc_csb_in ........... Passed 0.05 sec
Start 69: LAPACK-xeigtstc_csg_in
69/103 Test #69: LAPACK-xeigtstc_csg_in ........... Passed 0.63 sec
Start 70: LAPACK-xeigtstc_cbal_in
70/103 Test #70: LAPACK-xeigtstc_cbal_in .......... Passed 0.04 sec
Start 71: LAPACK-xeigtstc_cbak_in
71/103 Test #71: LAPACK-xeigtstc_cbak_in .......... Passed 0.04 sec
Start 72: LAPACK-xeigtstc_cgbal_in
72/103 Test #72: LAPACK-xeigtstc_cgbal_in ......... Passed 0.04 sec
Start 73: LAPACK-xeigtstc_cgbak_in
73/103 Test #73: LAPACK-xeigtstc_cgbak_in ......... Passed 0.04 sec
Start 74: LAPACK-xeigtstc_cbb_in
74/103 Test #74: LAPACK-xeigtstc_cbb_in ........... Passed 0.07 sec
Start 75: LAPACK-xeigtstc_glm_in
75/103 Test #75: LAPACK-xeigtstc_glm_in ........... Passed 0.05 sec
Start 76: LAPACK-xeigtstc_gqr_in
76/103 Test #76: LAPACK-xeigtstc_gqr_in ........... Passed 0.06 sec
Start 77: LAPACK-xeigtstc_gsv_in
77/103 Test #77: LAPACK-xeigtstc_gsv_in ........... Passed 0.06 sec
Start 78: LAPACK-xeigtstc_csd_in
78/103 Test #78: LAPACK-xeigtstc_csd_in ........... Passed 0.05 sec
Start 79: LAPACK-xeigtstc_lse_in
79/103 Test #79: LAPACK-xeigtstc_lse_in ........... Passed 0.04 sec
Start 80: LAPACK-xlintstz_ztest_in
80/103 Test #80: LAPACK-xlintstz_ztest_in ......... Passed 8.35 sec
Start 81: LAPACK-xlintstrfz_ztest_rfp_in
81/103 Test #81: LAPACK-xlintstrfz_ztest_rfp_in ... Passed 0.90 sec
Start 82: LAPACK-xeigtstz_nep_in
82/103 Test #82: LAPACK-xeigtstz_nep_in ........... Passed 0.22 sec
Start 83: LAPACK-xeigtstz_sep_in
83/103 Test #83: LAPACK-xeigtstz_sep_in ........... Passed 0.75 sec
Start 84: LAPACK-xeigtstz_se2_in
84/103 Test #84: LAPACK-xeigtstz_se2_in ........... Passed 0.79 sec
Start 85: LAPACK-xeigtstz_svd_in
85/103 Test #85: LAPACK-xeigtstz_svd_in ........... Passed 8.06 sec
Start 86: LAPACK-xeigtstz_zec_in
86/103 Test #86: LAPACK-xeigtstz_zec_in ........... Passed 0.08 sec
Start 87: LAPACK-xeigtstz_zed_in
87/103 Test #87: LAPACK-xeigtstz_zed_in ........... Passed 0.27 sec
Start 88: LAPACK-xeigtstz_zgg_in
88/103 Test #88: LAPACK-xeigtstz_zgg_in ........... Passed 0.14 sec
Start 89: LAPACK-xeigtstz_zgd_in
89/103 Test #89: LAPACK-xeigtstz_zgd_in ........... Passed 0.42 sec
Start 90: LAPACK-xeigtstz_zsb_in
90/103 Test #90: LAPACK-xeigtstz_zsb_in ........... Passed 0.06 sec
Start 91: LAPACK-xeigtstz_zsg_in
91/103 Test #91: LAPACK-xeigtstz_zsg_in ........... Passed 0.77 sec
Start 92: LAPACK-xeigtstz_zbal_in
92/103 Test #92: LAPACK-xeigtstz_zbal_in .......... Passed 0.04 sec
Start 93: LAPACK-xeigtstz_zbak_in
93/103 Test #93: LAPACK-xeigtstz_zbak_in .......... Passed 0.04 sec
Start 94: LAPACK-xeigtstz_zgbal_in
94/103 Test #94: LAPACK-xeigtstz_zgbal_in ......... Passed 0.04 sec
Start 95: LAPACK-xeigtstz_zgbak_in
95/103 Test #95: LAPACK-xeigtstz_zgbak_in ......... Passed 0.04 sec
Start 96: LAPACK-xeigtstz_zbb_in
96/103 Test #96: LAPACK-xeigtstz_zbb_in ........... Passed 0.09 sec
Start 97: LAPACK-xeigtstz_glm_in
97/103 Test #97: LAPACK-xeigtstz_glm_in ........... Passed 0.05 sec
Start 98: LAPACK-xeigtstz_gqr_in
98/103 Test #98: LAPACK-xeigtstz_gqr_in ........... Passed 0.07 sec
Start 99: LAPACK-xeigtstz_gsv_in
99/103 Test #99: LAPACK-xeigtstz_gsv_in ........... Passed 0.06 sec
Start 100: LAPACK-xeigtstz_csd_in
100/103 Test #100: LAPACK-xeigtstz_csd_in ........... Passed 0.05 sec
Start 101: LAPACK-xeigtstz_lse_in
101/103 Test #101: LAPACK-xeigtstz_lse_in ........... Passed 0.05 sec
Start 102: LAPACK-xlintstds_dstest_in
102/103 Test #102: LAPACK-xlintstds_dstest_in ....... Passed 0.76 sec
Start 103: LAPACK-xlintstzc_zctest_in
103/103 Test #103: LAPACK-xlintstzc_zctest_in ....... Passed 1.38 sec
100% tests passed, 0 tests failed out of 103
Total Test time (real) = 65.11 sec
yaml-cpp
yaml-cppを一般ユーザでインストールします.
wget https://github.com/jbeder/yaml-cpp/archive/refs/tags/yaml-cpp-0.7.0.tar.gz
tar xvf yaml-cpp-0.7.0.tar.gz
mkdir yaml-cpp-yaml-cpp-0.7.0/build
cd yaml-cpp-yaml-cpp-0.7.0/build
cmake -DCMAKE_INSTALL_PREFIX=/path/to/install/yaml/0.7.0 -DYAML_BUILD_SHARED_LIBS=ON ..
make
make install
Boost
Boostを一般ユーザでインストールします.
wget https://boostorg.jfrog.io/artifactory/main/release/1.77.0/source/boost_1_77_0.tar.bz2
tar xvf boost_1_77_0.tar.bz2
cd boost_1_77_0
./bootstrap.sh --prefix=/path/to/install/boost/1.77.0
./b2
./b2 install
Trilinos
Trilinosを一般ユーザでインストールします.
wget https://github.com/trilinos/Trilinos/archive/refs/tags/trilinos-release-13-0-1.tar.gz
tar xvf trilinos-release-13-0-1.tar.gz
mkdir Trilinos-trilinos-release-13-0-1/build
cd Trilinos-trilinos-release-13-0-1/build
cmake \
-DCMAKE_INSTALL_PREFIX:PATH=/path/to/install/trilinos/13.0.1 \
-DMPI_BASE_DIR:PATH=/path/to/install/openmpi/4.1.1 \
-DCMAKE_BUILD_TYPE:STRING=Release \
-DBUILD_SHARED_LIBS:BOOL=OFF \
-DTrilinos_WARNINGS_AS_ERRORS_FLAGS:STRING="" \
-DTrilinos_ENABLE_ALL_PACKAGES:BOOL=OFF \
-DTrilinos_ENABLE_ALL_OPTIONAL_PACKAGES:BOOL=OFF \
-DTrilinos_ENABLE_ALL_FORWARD_DEP_PACKAGES:BOOL=OFF \
-DTrilinos_ENABLE_Teuchos:BOOL=ON \
-DTrilinos_ENABLE_Shards:BOOL=ON \
-DTrilinos_ENABLE_Sacado:BOOL=ON \
-DTrilinos_ENABLE_Epetra:BOOL=ON \
-DTrilinos_ENABLE_EpetraExt:BOOL=ON \
-DTrilinos_ENABLE_Ifpack:BOOL=ON \
-DTrilinos_ENABLE_AztecOO:BOOL=ON \
-DTrilinos_ENABLE_Belos:BOOL=ON \
-DTrilinos_ENABLE_Phalanx:BOOL=ON \
-DPhalanx_EXPLICIT_TEMPLATE_INSTANTIATION:BOOL=ON \
-DTrilinos_ENABLE_Zoltan:BOOL=ON \
-DTrilinos_ENABLE_SEACAS:BOOL=ON \
-DTrilinos_ENABLE_NOX:BOOL=ON \
-DTrilinos_ENABLE_Pamgen:BOOL=ON \
-DTrilinos_ENABLE_Kokkos:BOOL=ON \
-DTrilinos_ENABLE_SEACASPLT=OFF \
-DTrilinos_ENABLE_SEACASBlot=OFF \
-DTrilinos_ENABLE_SEACASFastq=OFF \
-DTrilinos_ENABLE_EXAMPLES:BOOL=OFF \
-DTrilinos_ENABLE_TESTS:BOOL=OFF \
-DTPL_ENABLE_MATLAB:BOOL=OFF \
-DTPL_ENABLE_Matio:BOOL=OFF \
-DTPL_ENABLE_Netcdf:BOOL=ON \
-DNetcdf_INCLUDE_DIRS:PATH=/path/to/install/netcdf/4.8.1/include \
-DNetcdf_LIBRARY_DIRS:PATH=/path/to/install/netcdf/4.8.1/lib \
-DTPL_ENABLE_HDF5:BOOL=ON \
-DHDF5_INCLUDE_DIRS:PATH=/path/to/install/hdf5/1.12.1/include \
-DHDF5_LIBRARY_DIRS:PATH=/path/to/install/hdf5/1.12.1/lib \
-DTPL_ENABLE_MPI:BOOL=ON \
-DTPL_ENABLE_BLAS:BOOL=ON \
-DTPL_BLAS_LIBRARIES:FILEPATH=/path/to/install/lapack/3.10.0/lib/libblas.so \
-DTPL_ENABLE_LAPACK:BOOL=ON \
-DTPL_LAPACK_LIBRARIES:FILEPATH=/path/to/install/lapack/3.10.0/lib/liblapack.so \
-DTPL_ENABLE_Boost:BOOL=ON \
-DTPL_Boost_INCLUDE_DIRS:PATH=/path/to/install/boost/1.77.0/include \
-DTPL_ENABLE_QT:BOOL=OFF \
-DTPL_ENABLE_X11:BOOL=OFF \
-DTPL_ENABLE_yaml-cpp:BOOL=ON \
-DTPL_yaml-cpp_LIBRARIES:FILEPATH=/path/to/install/yaml/0.7.0/lib/libyaml-cpp.so \
-DTPL_yaml-cpp_INCLUDE_DIRS:PATH=/path/to/install/yaml/0.7.0/include/yaml-cpp \
-DCMAKE_VERBOSE_MAKEFILE:BOOL=OFF \
-DTrilinos_VERBOSE_CONFIGURE:BOOL=OFF \
..
make
make install
パスを通します
export PATH=/path/to/trilinos/13.0.1/bin:$PATH
export LD_LIBRARY_PATH=/path/to/trilinos/13.0.1/lib:$LD_LIBRARY_PATH
Peridigmのインストール方法
上記の方法で,依存ライブラリがインストールされたので,いよいよPeridigmのインストールをします.
一般ユーザで,下記コマンドでインストールします.
git clone https://github.com/peridigm/peridigm.git
cd peridigm
mkdir build
cmake \
-D CMAKE_BUILD_TYPE:STRING=Release \
-D CMAKE_INSTALL_PREFIX:PATH=/path/to/install/peridigm \
-D TRILINOS_DIR:PATH=/path/to/install/trilinos/13.0.1 \
-D CMAKE_CXX_COMPILER:STRING="mpicxx" \
..
make
make install
make install
では,便利なスクリプトファイルがインストールされません,よって,下記コマンドでPeridigmのインストール先にスクリプトもインストールします.
cp -r ../scripts /path/to/peridigm/scritps
環境変数を設定
Peridigmを実行するための環境変数を設定します.
$HOME/.bashrc
に下記を追加してください.
...
+ OMPI_ROOT=/path/to/install/openmpi/4.1.1
+ export PATH=$OMPI_ROOT/bin:$PATH
+ export LD_LIBRARY_PATH=$OMPI_ROOT/lib:$LD_LIBRARY_PATH
+ export MANPATH=$OMPI_ROOT/share/man:$MANPATH
+
+ NETCDF_ROOT=/path/to/install/netcdf/4.8.1
+ export LD_LIBRARY_PATH=$NETCDF_ROOT/lib:$LD_LIBRARY_PATH
+ TRILINOS_ROOT=/path/to/install/trilinos/13.0.1
+ export PATH=$TRILINOS_ROOT/bin:$PATH
+ export LD_LIBRARY_PATH=$TRILINOS_ROOT/lib:$LD_LIBRARY_PATH
+ PERIDIGM_ROOT=/path/to/install/peridigm
+ export PATH=$PERIDIGM_ROOT/bin:$PERIDIGM_ROOT/scripts:$PATH
上記のようにファイルを編集したら,「ログアウトし再度ログインする」か「下記コマンドを実行」してください.
source $HOME/.bashrc
Peridigmの実行
Peridigm実行に関しては,別記事にまとめています.ご参照ください.
Enviroment Module用設定
#%Module1.0
conflict peridigm
set module_root /path/to/peridigm
set ver none
module load openmpi/4.1.4
module load netcdf/4.8.1
module load trilinos/13.0.1
prepend-path PATH ${module_root}/bin
prepend-path PATH ${module_root}/scripts
set module_description "Peridigm ${ver}"
module-whatis $module_description
proc ModulesHelp { } {
global set module_description
puts stderr "
$module_description
"
}