動作環境
実際に構造最適化を行うワークステーションやスーパーコンピュータなどに下記環境をインストールする必要がある.
- CrySPY
- Python環境
- 構造最適化ソフト
実際に構造最適化を行うワークステーションやスーパーコンピュータなどに下記環境をインストールする必要がある.
pipでcsp-cryspyをインストールすると,必須ライブラリのPyXtal,pymatgen,ASEなどは自動的にインストールされる. インストールの詳細はこちら Installation > CrySPY.
pip3 install csp-cryspy dscribe physbo
If you install cryspy with pip, necessary libraries such as PyXtal will be installed automatically. Go to Installation > CrySPY. Manual installation of COMBO is required when using Bayesian optimization.
[2023 April 22] PyXtal (pyshtools)をarm64のMacOSにインストールする方法がわかった.Arm64 on MacOS (without Rosseta 2)を参照.
[2023 March 15]
MacOSのarm64環境でのpyxtalのインストールが難しいので,Rosetta 2を使用してx86_64環境での利用が推奨.
Tested with Homebrew Python 3.8.x and 3.9.x on Mac and Python 3.8.x on Linux.
Tested with Homebrew Python 3.8.x and 3.9.x on Mac and Python 3.8.x on Linux.
[2021 July 15] PyXtal 0.2.9以上を使う場合は,CrySPYを0.10.0以上にアップデートすること.
[2021 March 18] pymatgen 2022.x.x.でbreaking changeがあって,importの書き方等が変わった. CrySPY 0.9.2とPyXtal 0.2.2はpymatgen 2022をサポート.
[2021 Feb. 5]
PyXtalを使うにはnumbaが必要だが,numbaは現在のところPython 3.9に対応していないのでしばらくはPython 3.9ではなくPython 3.8を利用する.
[2021 March 18]
numbaがPython 3.9.xをサポート.CrySPYもPython 3.9で動作可能
[2021 Feb. 7]
PyXtalではSciPyが使われているが, 最新のSciPy(v1.6.0)ではdeepcopyを使うとバグが出る.
SciPyはv1.5.4を利用する.
[2021 March 18] 上記バグはSciPy 1.6.1で修正された.
CrySPY本体に同梱されている古いドキュメントを見ること.
少なくとも1つは必要.
CrySPYではこれまで,任意の空間群(対称性)持つ構造を生成するためにfind_wyを利用してきた.しかし,CrySPY 0.9.0からはデフォルトではPyXtalライブラリを採用している. CrySPY 0.9.0 以上で構造生成にPyXtalを使う場合は,find_wyのインストールはスキップできる. 従来通りfind_wyを利用することももちろん可能である. CrySPY 0.8.0 以前のものでは,空間群を考慮した構造生成にはfind_wyのインストールが必要となる.
CrySPY 0.9.0 以上ではfind_wyのインストールはスキップできる.
find_wyをコンパイルするためには,まずはm_tspaceをコンパイルして,ライブラリを生成する必要がある.詳細は以下のm_tspaceのサイトを参照すること.
m_tspace のソースをgitでダウンロードしてくる.ダウンロード先は例えば
$ mkdir -p ~/local
$ cd ~/local
$ git clone https://github.com/nim-hrkn/m_tspace.git
m_tspace のコンパイルにはさらに二つのファイルが必要となる.
TSPASE
から下記ファイルを~/local/m_tspace
にダウンロードする:
$ cd m_tspace
$ wget http://phoenix.mp.es.osaka-u.ac.jp/~tspace/tspace_main/tsp07/tsp98.f
$ wget http://phoenix.mp.es.osaka-u.ac.jp/~tspace/tspace_main/tsp07/prmtsp.f
makefileをコンパイラに合わせて編集して,makeする.
コンパイラにifort
を使う場合は,-check all
オプションを消さないとうまく動かない.また-O2
オプションを設定する.
$ emacs makefile
$ head -n 4 makefile
#FC=gfortran
#FFLAGS=-g -cpp -DUSE_GEN -ffixed-line-length-255
FC=ifort
FFLAGS=-O2 -g -traceback -cpp -DUSE_GEN -132
$ make
gfortran
を使う場合は,以下のようなエラーに遭遇するかもしれない.
tsp98.f:9839:32:
CALL SUBGRP(MG,JG,MGT,JGT,NTAB,IND)
1
Error: Actual argument contains too few elements for dummy argument 'ntab' (12/48) at (1)
make: *** [tsp98.o] Error 1
その時はtsp98.f
を以下のように書き換える(9925行目):
Before:
9913: C SUBROUTINE SUBGRP ====*====3====*====4====*====5====*====6====*====7
9914: C
9915: C IF (JG(I),I=1,MG) IS A SUBGROUP OF (JGT(J),J=1,MGT) THEN
9916: C TABLE (NTAB(I),I=1,MG) IS MADE HERE AND IND=0
9917: C ELSE
9918: C IND=-1
9919: C
9920: C 1993/12/25
9921: C BY S.TANAKA AND A. YANASE
9922: C---*----1----*----2----*----3----*----4----*----5----*----6----*----7
9923: C
9924: SUBROUTINE SUBGRP(MG,JG,MGT,JGT,NTAB,IND)
9925: DIMENSION NTAB(48),JG(48),JGT(48)
After:
9913: C SUBROUTINE SUBGRP ====*====3====*====4====*====5====*====6====*====7
9914: C
9915: C IF (JG(I),I=1,MG) IS A SUBGROUP OF (JGT(J),J=1,MGT) THEN
9916: C TABLE (NTAB(I),I=1,MG) IS MADE HERE AND IND=0
9917: C ELSE
9918: C IND=-1
9919: C
9920: C 1993/12/25
9921: C BY S.TANAKA AND A. YANASE
9922: C---*----1----*----2----*----3----*----4----*----5----*----6----*----7
9923: C
9924: SUBROUTINE SUBGRP(MG,JG,MGT,JGT,NTAB,IND)
9925: DIMENSION NTAB(12),JG(48),JGT(48)
コンパイルに成功すればm_tsp.a
というライブラリができる.
詳細はfind_wyのサイトをチェックすること:
find_wyのソースをgitでクローンしてくる.例えば:
$ mkdir -p ~/local
$ cd ~/local
$ git clone https://github.com/nim-hrkn/find_wy.git
make.inc
を編集して,先ほど用意したm_tsp.a
のパスを設定する.
$ cd find_wy
$ emacs make.inc
$ head -n 4 make.inc
TSPPATH=~/local/m_tspace
#INCPATH = -I $(TSPPATH)
TSP=$(TSPPATH)/m_tsp.a
ここでも-check all
を削除して-O2
オプションを付けた方が良い.
準備できたらmake
する.
$ make
コンパイルできてfind_wyの実行ファイルが得られたら,実行してテストする.
$ ./find_wy input_sample/input_si4o8.txt
問題なければPOS_WY_SKEL_ALL.json
などのファイルが生成される.
PATHが通ったところにfind_wyの実行ファイルを置く.もしくは下記のようにcryspy.in
で実行ファイルのpathを指定する.
[structure]
use_find_wy = True
fwpath = /xxx/xxx/xxx/find_wy
CrySPYでfind_wyを構造生成に用いる場合は所定の位置にfind_wyの実行ファイルを置いておく必要がるので,CrySPY本体をダウンロード後にfind_wyの実行ファイルをコピーしておく.CrySPYは任意のディレクトリに設置できるので,例えば~/CrySPY_root/CrySPY-x.x.x/CrySPY/find_wy/find_wy
.