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 gfortransudo apt install g++sudo apt install gccsudo apt install build-essentialsudo apt install python
看一下gfortran的版本
gfortran --versiongfortran是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 bashcd /tmpwget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUBapt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUBrm GPG-PUB-KEY-INTEL-SW-PRODUCTS-2019.PUBexitsudo wget https://apt.repos.intel.com/setup/intelproducts.list -O /etc/apt/sources.list.d/intelproducts.listsudo apt install intel-mkl
如果出现以下内容,按esc键就会继续装了…
3. 安装openmpi并行库
Openmpi的官方网址:
https://www.open-mpi.org/software/ompi/v4.0/
tar -xzvf openmpi-4.0.4.tar.gzcd openmpi-4.0.4./configure --prefix=$HOME/openmpimake allmake install
打开.bashrc添加环境变量
gedit ~/.bashrc在最后面加上,并保存
export PATH=$PATH:$HOME/openmpi/binexport LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$HOME/openmpi/lib
source一下~/.bashrc
source ~/.bashrc看一下mpirun有没有装上
mpirun --version4. 安装CASTEP
tar -xzvf CASTEP-19.11.tar.gzcd 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/fftwmakeMATHLIBS=mkl10 FFT=mkl COMMS_ARCH=mpi SUBARCH=mpi installmake 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:$PATHsource一下
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 pymatgendata_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 2loop__symmetry_equiv_pos_site_id_symmetry_equiv_pos_as_xyz1 '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_occupancyLi Li0 1 0.50941700 0.84452000 0.00000000 1Li Li1 1 0.00941700 0.15548000 0.50000000 1Li Li2 1 0.50836300 0.32643400 0.25287300 1Li Li3 1 0.00836300 0.67356600 0.24712700 1Li Li4 1 0.00836300 0.67356600 0.75287300 1Li Li5 1 0.50836300 0.32643400 0.74712700 1P P6 1 0.50142000 0.82426100 0.50000000 1P P7 1 0.00142000 0.17573900 0.00000000 1O O8 1 0.10701000 0.31350900 0.79286200 1O O9 1 0.60212600 0.10350800 0.50000000 1O O10 1 0.18519100 0.81839600 0.50000000 1O O11 1 0.68519100 0.18160400 0.00000000 1O O12 1 0.60701000 0.68649100 0.29286200 1O O13 1 0.10701000 0.31350900 0.20713800 1O O14 1 0.10212600 0.89649200 0.00000000 1O O15 1 0.60701000 0.68649100 0.70713800 1
附件2、Li3PO4.cell
%BLOCK LATTICE_CARTang # angstrom units4.922448000000000 0.000000000000000 0.0000000000000000.000000000000000 5.296402000000000 0.0000000000000000.000000000000000 0.000000000000000 6.176136000000000%ENDBLOCK LATTICE_CART%BLOCK POSITIONS_FRACP 0.501420000000000 0.824261000000000 0.500000000000000P 0.001420000000000 0.175739000000000 0.000000000000000O 0.107010000000000 0.313509000000000 0.792862000000000O 0.602126000000000 0.103508000000000 0.500000000000000O 0.185191000000000 0.818396000000000 0.500000000000000O 0.685191000000000 0.181604000000000 0.000000000000000O 0.607010000000000 0.686491000000000 0.292862000000000O 0.107010000000000 0.313509000000000 0.207138000000000O 0.102126000000000 0.896492000000000 0.000000000000000O 0.607010000000000 0.686491000000000 0.707138000000000Li 0.509417000000000 0.844520000000000 0.000000000000000Li 0.009417000000000 0.155480000000000 0.500000000000000Li 0.508363000000000 0.326434000000000 0.252873000000000Li 0.008363000000000 0.673566000000000 0.247127000000000Li 0.008363000000000 0.673566000000000 0.752873000000000Li 0.508363000000000 0.326434000000000 0.747127000000000%ENDBLOCK POSITIONS_FRAC%BLOCK SPECIES_POTNCP%ENDBLOCK SPECIES_POTSNAP_TO_SYMMETRYSYMMETRY_GENERATE%BLOCK EXTERNAL_PRESSURE0 0 00 00%ENDBLOCK EXTERNAL_PRESSURE
附件三、Li3PO4.param文件
task : geometryoptimizationxc_functional : PBEspin_polarized : falsefix_occupancy : falsemetals_method : dmmixing_scheme : pulaymax_scf_cycles : 1000cut_off_energy : 700 eVopt_strategy : speedpage_wvfns : 0num_dump_cycles : 0backup_interval : 0geom_method : LBFGSgeom_max_iter : 500mix_history_length : 20finite_basis_corr : 0fixed_npw : truewrite_cell_structure : truewrite_checkpoint : nonewrite_bib : falsewrite_otfg : falsewrite_cst_esp : falsewrite_bands : falsewrite_geom : falsebs_write_eigenvalues : falsecalculate_stress : true
