atomsk 安装与使用

介绍


安装

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
# 编译 LAPACK
cp make.inc.example make.inc
make # 耗时较长

# 拷贝编译得到的静态库文件
make -p ${HOME}/local/lib/lapack
cp *.a ${HOME}/lib


# atomsk 编译、安装
# 下载 atomsk 源代码,进入 src 目录,修改 Makefile 文件
LAPACK=-L${HOME}/local/lib/lapack -llapack -lrefblas
INSTPATH=$HOME/local/atomsk
CONFPATH=${INSTPATH}/etc

# 编译
make atomsk # 或 make -j4 atomsk

# 安装
make -p ${HOME}/local/atomsk/bin
# 方式 1
make install
# 方式 2
make INSTPATH=${HOME}/local/atomsk install

# 编译成功
\o/ Compilation was successful!

<i> To install Atomsk system-wide, you may now run:
sudo make install
  • 编译 ifort 版本
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# 导入 Intel OneAPI 套件
module purge

module load intel-oneapi-compilers/2021.4.0
module load intel-oneapi-mpi/2021.4.0
module load intel-oneapi-mkl/2021.4.0

git clone https://github.com/pierrehirel/atomsk.git

cd atomsk/src

make -f Makefile.ifort atomsk

# 超算(思源)使用 atomsk 时
# 需设置 libiomp5.so 文件的软链接
# 或使用前 module load intel-oneapi-compilers/2021.4.0
ln -s /dssg/opt/icelake/linux-centos8-icelake/gcc-8.5.0/intel-oneapi-compilers-2021.4.0-rszhbg2vjwqqeddqqdryjwxromenbfmr/compiler/2021.4.0/linux/compiler/lib/intel64_lin/libiomp5.so ~/lib/libiomp5.so
  • macOS 编译 atomsk(详细编译说明查看 Makefile.macos 文件内容)
1
2
3
4
# 需安装 LAPACK 和 OpenMP(非必需)
# 修改 Makefile.macos 中的 LAPACK lib 路径
# 并将 -lrefblas 改为 -lblas,最后编译
make -f Makefile.macos atomsk

使用

1
2
3
4
5
6
# 配置文件路径
~/.config/atomsk.conf

# 内容
colour yes
colour_error red bold blink
  • atomsk 中的变量可全小写/大写,如 box、z

  • atomsk 支持的构型文件格式

1
2
3
4
atsk abin bop bx cfg cel cif coo csv d12
dat dd dlp fdf gin imd jems lmp mol
pdb pos pw str vesta xmd xsf xv
xyz exyz sxyz
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
               <structure> | N.lattice cst. | N.at.sp.
-------------+----------------+----------
CUBIC sc | 1 | 1
LATTICES bcc | 1 | 1 or 2
fcc | 1 | 1 or 2
diamond | 1 | 1 or 2
L1_2 | 1 | 2
fluorite | 1 | 2
rock-salt | 1 | 2
perovskite | 1 | 3
A15 | 1 | 2
C15 | 1 | 2
-------------+----------------+----------
TETRAGONAL st | 2 (a and c) | 1 or 2
LATTICES bct | 2 (a and c) | 1 or 2
fct | 2 (a and c) | 1 or 2
-------------+----------------+----------
HEXAGONAL hcp | 2 (a and c) | 1 or 2
LATTICES wurtzite | 2 (a and c) | 2
graphite | 2 (a and c) | 1 or 2
BN | 2 (a and c) | 2
C14 | 2 (a and c) | 2
C36 | 2 (a and c) | 2
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
-orient                     # 晶体取向
-duplicate # 扩胞
-rotate # 旋转轴
-orthogonal-cell # 转变为正交胞
-fractional # 分数坐标;VASP 格式下
-sort # 根据 properties 对原子进行排序
-fix # 固定原子坐标轴
-shift # 移动原子
-substitute # 元素替换
-wrap # 将胞外原子施加 PBC 移至胞内
-cell # 修改 box 的 cell vector;可 add、set、rm
-center # 使体系移至 box 的中心
-add-atom # 添加原子;可添加笛卡尔、分数坐标
-wrap # 将胞外原子通过 PBC 到胞内
-properties # 设置 properties
-remove-doubles # 删除重复的原子
-remove-atom # 或 -rmatom;删除原子
-mirror # 施加镜像操作(mirror transformation)
-deform # 或 -def,通过施加正应变或切应变使体系变形(box 和 原子一起)
-disturb # 随机移动原子位置
-select # 根据准则选择原子
  • 常用 modes
1
2
3
4
5
6
--create                # 构建晶体结构
--merge # 合并两个构型
--rdf # RDF 计算

# 报错内容:一次只能使用一个 mode
X!X ERROR: only one mode can be used at a time.
  • Program behaviour
1
2
3
4
5
6
7
-ov            # overwrite;覆写文件
-v N # verbosity;
# N 可选值
0 # 不会输出内容到屏幕/log 文件,Errors、warnings、questions 仍会输出到屏幕
1 # 只输出内容到屏幕
0 # 只输出内容到 log 文件
0 # 输出内容到屏幕、log 文件
  • 常用命令实例
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
# 构建晶体结构
--create fcc 4.02 Al # FCC
--create hcp 2.92 4.61 Ti # HCP,基矢: H1=[2-1-10], H2=[-12-10], H3=[0001]
--create perovskite 3.905 Sr Ti O # 钙钛矿结构

# 支持的晶体结构类型
bcc
fcc
hcp
diamond
perovskite
rocksalt


# 构建晶体特定取向的构型
--create fcc 3.53 Ni -orient "[1-10]" "[11-2]" "[111]"

-duplicate 1 1 4 # 构建超胞

# 添加原子(分数坐标)
-add-atom Si at 0.25*box 0.33*box 0.5*box

-sort species pack # 将相同的元素排在一起(写入 VASP POSCAR 有用)

# 笛卡尔、分数坐标互相转换(用于 VASP)
atomsk POSCAR vasp # 笛卡尔坐标
atomsk POSCAR -fractional vasp # 分数坐标

# 添加真空层
-cell add 15 z # 在 z 轴上半部分添加真空层;x、y、z 可写成 H1-3
-shift 0 0 15 -cell add 30 z # 在 z 轴两侧添加真空层
-shift 0 0 15 -cell add 15 z # 在 z 轴下半部分添加真空层

# 固定原子坐标轴
-fix x -fix y # 固定所有原子的 x、y 轴
-fix x below 4.05 z # 原子 z 轴坐标低于一定值,其 x 轴被固定

-def zx 5% # 使 z 轴沿 x 方向进行切应变

-center 0/com # 移动所有原子,使其质心在 box 中心;会使位于 box 边缘的原子位点稍微往胞里靠,和 ase Atoms 的 center 方法效果不同


# 线性插值;用于 NEB
--interpolate initial.vasp final.vasp 7 vasp


# 格式转换
# 输出文件可为具体文件名,也可为文件格式;输出文件可以是多个
# 写入 cif 文件时,总是假设空间群为 P1,写入所有原子位置
atomsk POSCAR xyz # 常用: xyz lammps/lmp vasp/pos cif