程序自动,VASP中INCAR中设置 ISIF = 3
,原子的位置和晶胞的常数都被优化好,一般这个方法比较简单粗暴,但是用的比较多,优化好的CONTAR拿出来进行下一步的计算。
这里ISIF=3, NSW一定不能设为0,不是单点计算
eg. 以Si的原胞为例:POSCAR
未优化前的晶格常数为3.84埃
Si
1.0 #下面的方法二就是改变这个缩放系数
3.8401000500 0.0000000000 0.0000000000
1.9200500250 3.3256241964 0.0000000000
1.9200500250 1.1085413988 3.1354285612
Si
2
Direct
0.000000000 0.000000000 0.000000000
0.250000000 0.250000000 0.250000000
优化好的结构CONTACR
保持晶格参数比例,对晶胞进行缩放,得到能量与缩放系数之间的关系图,取能量的最低点
就是改POSCAR的第二行,改变缩放系数,一般这里需要做多个单点计算,不同缩放系数对应一个单点计算,(所以这里建议搞个脚本提交作业)获取能量,作图,找到能量最低点进行计算
因为是单点计算,所以结构优化的一系列控制参数比如ISIF,IBRION都无所谓了,只要把NSW设为0进行计算 。
注意:
ISIF=3
让原子坐标和晶格形状都动,但官方似乎不建议这么做。官方建议先固定原子坐标做晶格形状优化,然后再用优化好的结构做固定晶格下原子坐标的优化,注意连续计算时用前一步的CONTCAR做后一步的POSCAR.一定要输出WAVECAR和CHGCAR,这样在你以后不论是计算电子态密度和能带结构,还是做杂化泛函和GW计算,就直接读取该步的结果继续算就行了,免得重复计算。
IBRION = 优化算法 #一般用2就好.
ISIF = 2或3 #只优化原子坐标用2;既优化原子坐标又优化晶格形状用3.
NSW = 默认0 #最大离子步数.切记一定要自己设一个数如100,默认设置是不跑离子步不做结构优化的.
EDIFFG = 通常设-0.05,-0.02或-0.01 #收敛条件.越严格就把值的绝对值设越小.负值表示用力做标准,最常用.也可以设为正值用能量做标准,不过该设多少就得自己琢磨了.
BRION = 0 #表示我要做动力学.
SMASS = -3或-2或-1或大于等于0的实数 #速度控制.正则系综NVT系统请设为一个大于等于0的实数.
ISIF = 2 #只让原子动.
POTIM = 每一步的时长 #动力学一般跑到5ps也就是5000fs,如果你设此值为1那么你就要设NSW为5000.
NSW = 步数 #不解释了.
MDALGO = 2 #动力学方案.有0,1,2,3,11,21,13七种选择.比如研究正则系综NVT系统可设为2,采用Nose-Hoover恒温器方案.同时不要忘了设起始和结束温度.
TEBEG = 起始温度 #热力学温度,单位K.
TEEND = 结束温度 #热力学温度,单位K.
ISPIN = 2 #设成2开启自旋极化.
MAGMOM = 原子磁矩设置,格式:原子数*磁矩 #没有关于原子磁矩的先验知识就默认.
AMIX = 0.2 #下列此项都是控制电荷密度线性混合的参数,在做自旋极化计算时要合理设置,找见对的值才能助你找到你想要的磁性状态.如果不知道设什么好,这里的设置就是官网的推荐值,先试试看.
BMIX = 0.0001
AMIX_MAG = 0.8
BMIX_MAG = 0.0001
LDAU = .TRUE. #考虑DFT+U.
LDAUTYPE = 2 #加U方法.2好像最常用.
LDAUL = 加U轨道设置,按POSCAR中的元素顺序设 #对应关系[-1 1 2 3]-[无 p d f].根据你的体系设置.
LDAUU = U值 #根据你的体系设置.按POSCAR中的元素顺序设.
LDAUJ = J值 #同理如上.
LMAXMIX = 4或6 #考虑d电子时设4;考虑f电子时设6.
LHFCALC = .TRUE. #开启杂化泛函计算.
AEXX = 默认0.25 #交换部分参数.默认就好.
HFSCREEN = 0.2 #用HSE06.
ALGO = 注意此项与SCF电子自洽重复 #算法.带隙大用All,带隙小用Damped.把SCF电子自洽部分的此项删掉.
PRECFOCK = Normal或Accurate #Normal就行.你会知道杂化泛函计算速度非常慢.
最后贴个用Pymatgen画电子态密度和能带结构的python脚本,以防忘记。
### 分波投影电子态密度 ###
import matplotlib.pyplot as plt
from pymatgen.electronic_structure.core import Spin
from pymatgen.electronic_structure.plotter import DosPlotter
from pymatgen.io.vasp.outputs import Vasprun
dosrun = Vasprun("vasprun.xml", parse_dos=True)
dos = dosrun.complete_dos
dosplot = DosPlotter(sigma=0.1)
dosplot.add_dos("Total DOS", dos)
dosplot.add_dos_dict(dos.get_element_dos()) # 默认画元素投影,将括号内容改为dos.get_spd_dos()就是轨道投影。
plt.rcParams['xtick.direction']='in'
plt.rcParams['ytick.direction']='in'
plt = dosplot.get_plot(xlim=(-3,3),ylim=(0,80))
plt.yticks([])
plt.savefig('epdos.png')
### 能带结构+分波投影电子态密度 ###
import matplotlib.pyplot as plt
from pymatgen.electronic_structure.core import Spin
from pymatgen.electronic_structure.plotter import BSDOSPlotter, BSPlotter, DosPlotter
from pymatgen.io.vasp.outputs import BSVasprun, Vasprun
run = BSVasprun("vasprun.xml", parse_projected_eigen=True)
dosrun = Vasprun("../dos/vasprun.xml", parse_dos=True)
dos = dosrun.complete_dos
bs = run.get_band_structure("KPOINTS", efermi=dos.efermi)
bsdosplot = BSDOSPlotter(bs_projection="elements", dos_projection="orbitals", vb_energy_range=3, cb_energy_range=3, fixed_cb_energy=3, fig_size=(9,6))
plt.rcParams['xtick.direction']='in'
plt.rcParams['ytick.direction']='in'
bsdosplot.get_plot(bs=bs, dos=dos)
plt.savefig('bdos.png')