跳转至

atomsk 安装与使用

约 490 个字 168 行代码 预计阅读时间 4 分钟

介绍


安装

# 编译 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 版本
# 导入 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 文件内容)
# 需安装 LAPACK 和 OpenMP(非必需)
# 修改 Makefile.macos 中的 LAPACK lib 路径
# 并将 -lrefblas 改为 -lblas,最后编译
make -f Makefile.macos atomsk

使用

# 配置文件路径
~/.config/atomsk.conf

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

  • atomsk 支持的构型文件格式

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
               <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
-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
--create                # 构建晶体结构
--merge                 # 合并两个构型
--rdf                   # RDF 计算

# 报错内容:一次只能使用一个 mode
X!X ERROR: only one mode can be used at a time.
  • Program behaviour
-ov            # overwrite;覆写文件
-v N           # verbosity;
# N 可选值
0              # 不会输出内容到屏幕/log 文件,Errors、warnings、questions 仍会输出到屏幕 
1              # 只输出内容到屏幕
0              # 只输出内容到 log 文件
0              # 输出内容到屏幕、log 文件
  • 常用命令实例
# 构建晶体结构
--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