System requirements
You need (CrySPY + Python environment + structure optimizer) in your workstation, super computer, etc.
You need (CrySPY + Python environment + structure optimizer) in your workstation, super computer, etc.
If you install csp-cryspy with pip, necessary libraries such as PyXtal, pymatgen, and ASE will be installed automatically. Go to Installation > CrySPY for detail.
pip3 install csp-cryspy dscribe physbo
If you install csp-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] How to instlal PyXtal (pyshtools) on arm64 MacOS is figured out. See Arm64 on MacOS (without Rosseta 2)
[2023 March 15]
On MacOS, it is difficult to install PyXtal in the arm64 environment, so it is recommended to use the x86_64 environment with Rosetta 2.
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] If you use PyXtal >= 0.2.9, update CrySPY to the version 0.10.0 or later.
[2021 March 18] There is a breaking change in pymatgen 2022.x.x. CrySPY 0.9.2 and PyXtal 0.2.2 support this change in pymatgen.
[2021 Feb. 5]
PyXtal depends on numba, but numba does not support Python 3.9.
So you should use Python 3.8.x for a while.
[2021 March 18]
Currently numba supports Python 3.9.x.
[2021 Feb. 7]
PyXtal requires SciPy, but the latest version of SciPy (v1.6.0) might include a bug for deepcopy.
You should use SciPy v1.5.4 for a while.
[2021 March 18]
This bug has been fixed in SciPy v1.6.1.
See the old document which is included CrySPY itself.
At least one optimizer is required.
CrySPY have utilized find_wy to generate a random structure for a given space group (symmetry). However, CrySPY employs PyXtal library for structure generation as default since version 0.9.0. You can skip to install find_wy in CrySPY 0.9.0 or later, but you may use find_wy. For CrySPY 0.8.x or earlier, find_wy is required to generate a random structure for a given space group.
You can skip to install find_wy in CrySPY 0.9.0 or later.
First you need compile m_tspace for find_wy. Check these sites to compile it.
Download the source code of m_tspace in an arbitrary directory. For example:
$ mkdir -p ~/local
$ cd ~/local
$ git clone https://github.com/nim-hrkn/m_tspace.git
Additional two files are required to compile m_tspace.
Download the following files in ~/local/m_tspace
from TSPASE:
$ 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
Edit the makefile and run the make command.
If you use ifort
, you had better delete -check all
option and use -O2
option.
$ 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
If you used gfortran
, you might face the following problem:
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
Then change the source file of tsp98.f
like this (line 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)
If you succeed in compiling, you get m_tsp.a
.
Check these sites to compile find_wy:
Download the source code of find_wy in an arbitrary directory. For example:
$ mkdir -p ~/local
$ cd ~/local
$ git clone https://github.com/nim-hrkn/find_wy.git
Edit make.inc
and set the path to the m_tsp.a
that you just prepared.
$ cd find_wy
$ emacs make.inc
$ head -n 4 make.inc
TSPPATH=~/local/m_tspace
#INCPATH = -I $(TSPPATH)
TSP=$(TSPPATH)/m_tsp.a
You can delete -check all
option and use -O2
option.
Then run the make command.
$ make
When you get the executable file of find_wy, run the following command for test:
$ ./find_wy input_sample/input_si4o8.txt
If there is no problem, POS_WY_SKEL_ALL.json
file is generated.
Put the executable file of find_wy
in your PATH. Or, specify the path of the executable file in cryspy.in
as follows:
[structure]
use_find_wy = True
fwpath = /xxx/xxx/xxx/find_wy
When you use find_wy, put the executable file of find_wy in ~/CrySPY_root/CrySPY-x.x.x/CrySPY/find_wy/
, so that the executable file path is ~/CrySPY_root/CrySPY-x.x.x/CrySPY/find_wy/find_wy
.