材料计算常用步骤

本文最后更新于 2 分钟前,文中所描述的信息可能已发生改变。

System environment

系统环境

  • Windows 11
  • wsl2
  • Ubuntu 24.04

Software Edition

软件版本

  • Vasp 6.1.0
  • Vaspkit 1.3.5
  • Wannier90 3.1.0
  • WannierTools 2.7.0
  • Xcrysden 1.6.2 (Installed by apt)
  • Gnuplot 6.0 (Installed by apt)

Structure relaxation

结构弛豫

File dictionary Tree

文件目录树

md
directory
├─structure_relaxation
│ ├─INCAR
│ ├─KPOINTS
│ ├─POSCAR
│ ├─POTCAR
│ └─stdjob.sh
└─unknown

Generate INCAR

生成 INCAR

shell
(echo 1; echo 101; echo SR)|vaspkit

Set tags in INCAR

设置 INCAR 中的标签

More details see set INCAR.

更多细节请查看 设置 INCAR

Generate KPOINTS and POTCAR

生成 KPOINTS 和 POTCAR

shell
(echo 1; echo 102; echo 2;  echo 0.02)|vaspkit

Set KPOINTS

设置 KPOINTS

Selecting too many kpoints will result in a long computation time, and there may be a problem of running out of memory. To save some time use a "quick-and-dirty" setup.

选择太多的 k 点会导致计算时间过长,可能会出现内存不足的问题。 为了节省一些时间,可以使用“狡猾”的设置。

Vasp job script

Vasp 任务脚本

shell
#!/bin/bash
ulimit -s unlimited
# Set the path of Vasp executable file
EXEC=/opt/vasp.6.1.0/bin/vasp_std
source ~/.bashrc
mpirun -np 20 $EXEC
shell
#!/bin/bash
ulimit -s unlimited
# Set the path of Vasp executable file
EXEC=/opt/vasp.6.1.0/bin/vasp_ncl
source ~/.bashrc
mpirun -np 20 $EXEC

Submit Vasp job

提交 Vasp 任务

shell
stdjob.sh

Static calculation

静态计算

File dictionary Tree

文件目录树

md
directory
├─static_calculation
│ ├─INCAR
│ ├─KPOINTS
│ ├─POSCAR // [!code focus]
│ ├─POTCAR
│ └─stdjob.sh
└─unknown

tip提示

Copy CONTCAR from the structure_relaxation directory to POSCAR.

Generate INCAR

生成 INCAR

shell
(echo 1; echo 101; echo ST)|vaspkit

Set tags in INCAR

设置 INCAR 中的标签

md
ISMEAR = 0 | 1 | 2
SIGMA = 0.2

# LORBIT = 11

Submit Vasp job

提交 Vasp 任务

Density of states

态密度

File dictionary Tree

文件目录树

md
directory
├─density_of_states
│ ├─CHGCAR
│ ├─INCAR
│ ├─POSCAR
│ ├─POTCAR
│ ├─KPOINTS
│ ├─WAVECAR
│ └─stdjob.sh
└─unknown

tip提示

The file is copied from the static calculation.

tip提示

文件从静态计算中复制。

Set tags in INCAR

设置 INCAR 中的标签

md
ICHARG = 11 // No self-consistent charge density
ISMERA = -5 // Gaussian smearing
LORBIT = 11

Submit Vasp job

提交 Vasp 任务

Generate TDOS.dat

生成 TDOS.dat

shell
(echo 11; echo 111; echo 1)|vaspkit

DFT Band structures

密度泛函能带结构

File dictionary Tree

文件目录树

md
directory
├─band_structures
│ ├─CHGCAR
│ ├─INCAR
│ ├─POSCAR
│ ├─POTCAR
│ ├─WAVECAR
│ └─stdjob.sh
└─unknown

tip提示

The file is copied from the static calculation.

tip提示

文件从静态计算中复制。

Set tags in INCAR

设置 INCAR 中的标签

md
ICHARG = 11 // No self-consistent charge density
ISMEAR = 0
SIGMA = 0.02
LORBIT = 11

Generate KPOINTS and POTCAR

生成 KPOINTS 和 POTCAR

shell
(echo 3; echo 303)|vaspkit

Replace KPOINTS and POSCAR

替换 KPOINTS 和 POSCAR

shell
cp KPATH.in KPOINTS
cp PRIMCELL.vasp POSCAR

Submit Vasp job

提交 Vasp 任务

Generate BAND.dat

生成 BAND.dat

shell
(echo 21; echo 211; echo 1)|vaspkit

Wannier function Band structures (Non-Spin, Non-SOC)

Wannier 函数能带结构(无自旋,无 SOC)

File dictionary Tree

文件目录树

md
directory
├─wannier90
│ ├─CHGCAR
│ ├─INCAR
│ ├─KPOINTS
│ ├─POSCAR
│ ├─POTCAR
│ ├─WAVECAR
│ └─stdjob.sh
└─unknown

tip提示

The file is copied from the static calculation.

tip提示

文件从静态计算中复制。

Set tags in INCAR

设置 INCAR 中的标签

md
ICHARG = 11
IORBIT = 11
LWANNIER90 = .TRUE.
NBANDS = # grep NBANDS OUTCAR

Set data in wannier90.win

设置 wannier90.win 文件中的数据

md
num_wann =
num_bands =
exclude_bands =

begin projections
...
end projections
md
dis_win_min =
dis_win_max =
dis_froz_min =
dis_froz_max =
dis_num_iter = 60
dis_mix_ratio = 1.0d0

num_iter = 200
num_print_cycles = 20
md
restart = plot
bands_plot = true

begin kpoint_path
...
end kpoint_path

bands_num_points 40

# bands_plot_format gnuplot xmgrace

begin unit_cell_cart
...
end unit_cell_cart

begin atoms_frac
...
end atoms_frac

tip提示

More details see Wannier90.win 文件设置.

tip提示

更多细节请查看 Wannier90.win 文件设置

Submit Vasp job

提交 Vasp 任务

shell
stdjob.sh
wannier90.x wannier90

tip提示

Must set projections in wannier90.win file, it will use to generate wannier90.amn. After submit vasp job, which will generate wannier90.amn, wannier90.eig, and wannier90.mmn files.

tip提示

必须在 wannier90.win 文件中设置 projections,它将用于生成 wannier90.amn。 提交 Vasp 任务后,将生成 wannier90.amn、wannier90.eig 和 wannier90.mmn 文件。

Run wannier90 again

再次运行 wannier90

tip提示

After run wannier90.x, it will generate wannier90.chk which is used to generate wannier90_band.* file.

tip提示

运行 wannier90.x 后,将生成 wannier90.chk 文件,用于生成 wannier90_band.* 文件。

Generate KPATH.wannier90

生成 KPATH.wannier90

shell
(echo 3; echo 304; echo 3)|vaspkit

Run wannier90 again

再次运行 wannier90

tip提示

After add KPATH.wannier90 in wannier90.win file, run wannier90.x again. Generate wannier90_band.kpt, wannier90_band.dat and wannier90_band.gnu files.

tip提示

在 wannier90.win 文件中添加 KPATH.wannier90 后,再次运行 wannier90.x。 生成 wannier90_band.kpt、wannier90_band.dat 和 wannier90_band.gnu 文件。

Plot band structure

绘制能带结构

shell
gnuplot -persist wannier90_band.gnu

Fermi arc

费米弧

File dictionary Tree

文件目录树

md
directory
├─fermi_arc
│ ├─wannier90_hr.dot
│ └─wt.in
└─unknown

tip提示

The file is copied from the wannier90.

tip提示

文件从 wannier90 中复制。

Grep Fermi energy

获取费米能

shell
grep "E-fermi" OUTCAR

Set data in wannier90.win

设置 wannier90.win 文件中的数据

md
restart = plot
fermi_energy =
fermi_surface_plot = true
write_hr = true

Run wannier90.x

运行 wannier90.x

shell
wannier90.x wannier90

tip提示

Generate wannier90_hr.dat file.

tip提示

生成 wannier90_hr.dat 文件。

Set data in wt.in

设置 wt.in 文件中的数据

md
TODO

Run wanniertools

运行 wanniertools

shell
wt.x

Fermi surface

费米面

File dictionary Tree

文件目录树

md
directory
├─fermi_surface
│ ├─POSCAR
│ └─stdjob.sh
└─unknown

tip提示

The file is copied from the static calculation.

tip提示

文件从静态计算中复制。

Generate KPOINTS and POTCAR

生成 KPOINTS 和 POTCAR

shell
(echo 261; echo 0.02)|vaspkit

Submit Vasp job

提交 Vasp 任务

Generate FERMISURFACE.bxsf

生成 FERMISURFACE.bxsf

shell
echo 262|vaspkit

Run Xcrysden

运行 Xcrysden

shell
xcrysden --bxsf FERMISURFACE.bxsf

Surface state

表面态

File dictionary Tree

文件目录树

tip提示

TODO

tip提示

待定

Common Resources for Materials Calculation
LeetCode Weekly Contest 443