CASTEP的Linux 安装
CASTEP (http://www.castep.org/)是一款电子结构软件,可以计算Kohn-Sham框架下的平面波DFT,能够完成VASP能够完成的大部分计算。相比于VASP有几个优势:
能够完成基本所有VASP能实现的功能和一些VASP不能实现的功能,比如path-integral MD
较高的并行效率,支持G-vector parallelism、k-points parallelism和band parallelism
On-the-fly自动生成和泛函配套的赝势,所以大部分时候只要给元素和泛函就可以,省事
学术免费,这对于新成立的课题组极度友好,代码可以通过填表获取
http://www.castep.org/CASTEP/GettingCASTEP
劣势主要是国内的文档,特别是中文文档严重不足。本文记录一下CASTEP并行版的安装过程(CASTEP 19.1 linux学术版本安装教程)。
本文的linux版本、编译环境版本如下:
Linux发行版本:Ubuntu20.04
CASTEP版本: 19.11
编译器:gfortran9.3.0
并行库:openmpi
安装前建议阅读安装指南,见代码主目录下的README.INSTALL
1. 安装gfortran,g++等编译器
打开terminal,输入
sudo apt install gfortran
sudo apt install g++
sudo apt install gcc
sudo apt install build-essential
sudo apt install python
看一下gfortran的版本
gfortran --version
gfortran是9.3.0的,别的版本应该也可以。
2. 安装intel-mkl数学库
Intel-mkl的官方网址:
https://software.intel.com/content/www/us/en/develop/articles/installing-intel-free-libs-and-python-apt-repo.html
打开terminal,输入:
sudo bash
cd /tmp
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUB
exit
sudo wget https://apt.repos.intel.com/setup/intelproducts.list -O /etc/apt/sources.list.d/intelproducts.list
sudo apt install intel-mkl
如果出现以下内容,按esc键就会继续装了…
3. 安装openmpi并行库
Openmpi的官方网址:
https://www.open-mpi.org/software/ompi/v4.0/
tar -xzvf openmpi-4.0.4.tar.gz
cd openmpi-4.0.4
./configure --prefix=$HOME/openmpi
make all
make install
打开.bashrc添加环境变量
gedit ~/.bashrc
在最后面加上,并保存
export PATH=$PATH:$HOME/openmpi/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openmpi/lib
source一下~/.bashrc
source ~/.bashrc
看一下mpirun有没有装上
mpirun --version
4. 安装CASTEP
tar -xzvf CASTEP-19.11.tar.gz
cd CASTEP-19.11
CASTEP会自动探测默认的编译环境,输入
bin/arch
得到
和之前安装的gfortran9 对得上
设置一下mkl的环境变量
export INCLUDE=/usr/include/mkl/
开始安装castep
make MATHLIBS=mkl10 FFT=mkl COMMS_ARCH=mpi SUBARCH=mpi
分别输入mkl的blas和mkl的fftw库位置
/usr/lib/x86_64-linux-gnu/mkl
/usr/include/mkl/fftwmake
MATHLIBS=mkl10 FFT=mkl COMMS_ARCH=mpi SUBARCH=mpi install
make MATHLIBS=mkl10 FFT=mkl COMMS_ARCH=mpi SUBARCH=mpi install install-tools
这里最终得到了一个在bin下面的文件加,叫做
bin/linux_x86_64_gfortran9.0--mpi,里面有castep的可执行文件castep.mpi
把CASTEP和常用工具二进制可执行文件添加到环境变量
gedit ~/.bashrc
添加以下到最后并保存
export PATH=/home/ziheng/Desktop/CASTEP-19.11/bin/linux_x86_64_gfortran9.0--mpi:$PATH
source一下
source ~/.bashrc
安装完成。
5. 安装验证
CASTEP准备了一套自带的安装检测,输入以下执行:
make MATHLIBS=mkl10 FFT=mkl COMMS_ARCH=mpi SUBARCH=mpi check
执行后会显示如下:
没有问题。
另外这里也准备了一个很简单的例子,大致展示一下castep的使用方法。
不同于VASP,CASTEP运行需要两个文件:
.cell文件:记录结构、symmetry、k点等,对于VASP用户来说类似于POSCAR和KPOINT的综合
.param文件:设置DFT参数,比如泛函的选择、截断能、收敛精度等等,对于VASP的用户来说类似于INCAR。这里没有和POTCAR对等的文件因为CASTEP的赝势是on-the-fly自动生成的。
这里我们拿Li3PO4晶体做一个简单的结构优化,首先我们来生成.cell文件,首先下载一个.cif文件保存成LPO.cif,具体文件内容见附录1。
用自带的cif2cell工具将cif文件转换为castep的.cell结构文件,输入
cif2cell LPO.cif -p CASTEP
得到Li3PO4.cell文件,这里稍微修改一下,让它自动识别空间群,并让它使用on-the-fly生成的norm-conserving赝势,具体见附件2。
继续建立Li3PO4 .param文件进行计算参数设置设置,这里用LBFGS方法进行一个结构优化,具体见附件3。
准备好运行Li3PO4 .param和Li3PO4.cell后开始执行castep计算,用4线程计算,输入:
mpirun -np 4 castep.mpi Li3PO4
这里注意castep不会屏幕输出,而是输出在.castep文件里,可以随时打开查看。
计算结束后得到以下几个文件:
其中.castep文件给出了scf收敛过程的等信息,类似于VASP的屏幕输出和vasprun.xml文件,而-out.cell文件给出的是最终的结构,用VESTA打开可以进行可视化。
关于CASTEP的使用,大部分时候可以用程序内置的文档,输入castep.mpi –help即可,以后有缘再说。希望这样的优秀的学术免费软件在国内能够有更大用户群!
6. 附录:
附件一、LPO.cif的内容
# generated using pymatgen
data_Li3PO4
_symmetry_space_group_name_H-M 'P 1'
_cell_length_a 4.92244800
_cell_length_b 5.29640200
_cell_length_c 6.17613600
_cell_angle_alpha 90.00000000
_cell_angle_beta 90.00000000
_cell_angle_gamma 90.00000000
_symmetry_Int_Tables_number 1
_chemical_formula_structural Li3PO4
_chemical_formula_sum 'Li6 P2 O8'
_cell_volume 161.01966865
_cell_formula_units_Z 2
loop_
_symmetry_equiv_pos_site_id
_symmetry_equiv_pos_as_xyz
1 'x, y, z'
loop_
_atom_site_type_symbol
_atom_site_label
_atom_site_symmetry_multiplicity
_atom_site_fract_x
_atom_site_fract_y
_atom_site_fract_z
_atom_site_occupancy
Li Li0 1 0.50941700 0.84452000 0.00000000 1
Li Li1 1 0.00941700 0.15548000 0.50000000 1
Li Li2 1 0.50836300 0.32643400 0.25287300 1
Li Li3 1 0.00836300 0.67356600 0.24712700 1
Li Li4 1 0.00836300 0.67356600 0.75287300 1
Li Li5 1 0.50836300 0.32643400 0.74712700 1
P P6 1 0.50142000 0.82426100 0.50000000 1
P P7 1 0.00142000 0.17573900 0.00000000 1
O O8 1 0.10701000 0.31350900 0.79286200 1
O O9 1 0.60212600 0.10350800 0.50000000 1
O O10 1 0.18519100 0.81839600 0.50000000 1
O O11 1 0.68519100 0.18160400 0.00000000 1
O O12 1 0.60701000 0.68649100 0.29286200 1
O O13 1 0.10701000 0.31350900 0.20713800 1
O O14 1 0.10212600 0.89649200 0.00000000 1
O O15 1 0.60701000 0.68649100 0.70713800 1
附件2、Li3PO4.cell
%BLOCK LATTICE_CART
ang # angstrom units
4.922448000000000 0.000000000000000 0.000000000000000
0.000000000000000 5.296402000000000 0.000000000000000
0.000000000000000 0.000000000000000 6.176136000000000
%ENDBLOCK LATTICE_CART
%BLOCK POSITIONS_FRAC
P 0.501420000000000 0.824261000000000 0.500000000000000
P 0.001420000000000 0.175739000000000 0.000000000000000
O 0.107010000000000 0.313509000000000 0.792862000000000
O 0.602126000000000 0.103508000000000 0.500000000000000
O 0.185191000000000 0.818396000000000 0.500000000000000
O 0.685191000000000 0.181604000000000 0.000000000000000
O 0.607010000000000 0.686491000000000 0.292862000000000
O 0.107010000000000 0.313509000000000 0.207138000000000
O 0.102126000000000 0.896492000000000 0.000000000000000
O 0.607010000000000 0.686491000000000 0.707138000000000
Li 0.509417000000000 0.844520000000000 0.000000000000000
Li 0.009417000000000 0.155480000000000 0.500000000000000
Li 0.508363000000000 0.326434000000000 0.252873000000000
Li 0.008363000000000 0.673566000000000 0.247127000000000
Li 0.008363000000000 0.673566000000000 0.752873000000000
Li 0.508363000000000 0.326434000000000 0.747127000000000
%ENDBLOCK POSITIONS_FRAC
%BLOCK SPECIES_POT
NCP
%ENDBLOCK SPECIES_POT
SNAP_TO_SYMMETRY
SYMMETRY_GENERATE
%BLOCK EXTERNAL_PRESSURE
0 0 0
0 0
0
%ENDBLOCK EXTERNAL_PRESSURE
附件三、Li3PO4.param文件
task : geometryoptimization
xc_functional : PBE
spin_polarized : false
fix_occupancy : false
metals_method : dm
mixing_scheme : pulay
max_scf_cycles : 1000
cut_off_energy : 700 eV
opt_strategy : speed
page_wvfns : 0
num_dump_cycles : 0
backup_interval : 0
geom_method : LBFGS
geom_max_iter : 500
mix_history_length : 20
finite_basis_corr : 0
fixed_npw : true
write_cell_structure : true
write_checkpoint : none
write_bib : false
write_otfg : false
write_cst_esp : false
write_bands : false
write_geom : false
bs_write_eigenvalues : false
calculate_stress : true