草庐IT

VASP计算--INCAR参数详解以及INCAR模板和例子,铜的INCAR

欣欣丫呀 2023-07-01 原文

  1. INCAR

初始参数

1.SYSTEM:注释体系以说明;一旦写了不可写错,比如说写成了 RYSTEM,那么可能计算出的能量全是正值

2.ISTART:如果计算目录中由WAVECAR文件,则默认值为1,否则为0。决定是否读入WAVECAR

  0:开始新的计算,按INIWAV初始化波函数

  1:接着计算,读取已有的WAVECAR,用于电子结构计算

  2:接着计算,用于希望保持基矢不变的计算

  3:接着计算,读入上一次计算得到的电荷密度和波函数,不推荐用

3.ICHARG:若ISTART=0,则默认值为2,否则为0,决定如何构造初始电荷密度

  0:从初始波函数构造

  1:从CHGCAR读入,并同原子密度进行线性插值

  2:构造原子电子密度线性组合,初始的电子密度由赝势来决定

  11:读入自洽的CHGCAR,并进行能带计算或态密度的非自洽计算

  12:非自洽的原子密度计算

       ISTART和ICHARG:分别定义了初始的波函数和电荷密度、读入上一次的波函数和电荷密度

推荐做法:

  进行能带结构性质的计算时:ISTART=1 ,ICHARG=11

  其他情况(比如结构优化和静态计算):ISTART=0 ,ICHARG=2。

静态计算和计算态密度时可以设置成ISTART=1 ,ICHARG=1,节省核时。

4.PREC

确定计算精度,可设为Low, Med, High, Normal, Single, Accurate

默认值Med, 一般Normal就够了,Accurate精度最高,我一般使用。

自洽迭代(电子优化,电子自洽,SCF,单点能)

5.NELM:允许电子迭代得到最大步数,默认值60

6.EDIFF:电子自洽收敛标准参数,默认值1E-5。笔者一般使用1E-6.

7.ENCUT:确定平面波截断能,默认值从POTCAR中读入单位eV,一般为 POTCAR 中 ENMAX 参数值的 1.0 到 1.3 倍。一般设置为500.

8.ALGO:确定电子优化的算法:

  Normal: ALGO=38,blocked Davidson方法

  VeryFast: ALGO=48,RMM-DIIS算法

  Fast:上面两种算法混合使用

9.ADDGRID:增加网格,帮助GAA收敛,一般结构优化(.FALSE)   电子结构高精度(.TURE)

10.LDIPOL:偶极校正,打开(.TURE)

11IDIPOL:1,2,3分别代表在X,Y,Z方向上进行校正,4代表在所有方向上进行校正

12.ISYM:是否打开对称性,0=不打开,2=使用一种高效节省内存的电荷密度对称性,3=仅考虑应力张力对称性,电荷密度非对称

原子弛豫 原子移动、步长和步数

13.ISIF:决定是否计算应力以及如何对结构进行优化。当IBRION=0时,默认值为0,否则为2。

14.NSW:原子弛豫的最大步数(IBRION=1、2)和分子动力学的步数(IBRION=0),默认值为0。在每一部步内,电子进行自洽计算,并精确计算原子所受的H-F力和应力。

15.EDIFFG:原子弛豫收敛的标准,默认值为EDIFF*10。若值为正则前后两次总自由能只差小于EDIFFG,原子停止弛豫;若为负,则源自所受的最大的力小于EDIFFG的绝对值,原子停止弛豫。

16.SMASS:确定分子动力学中原子的速度,默认值为-3。

  -3:微正则系综(总的自由能守恒)

  -2:保持初始速度不变,计算体系总能随原子位置的变化情况

  -1:在每NBLOCK步之后对初始速度进行放缩

  0或者>0,正则系统,对温度进行Nose调控

TEBEG:分子动力学模拟时的初始温度,默认为0。

TEEND: 分子动力学模拟时的末态温度,默认为TEBEG。

PSTRESS:设置加到体系的应力张量上的应力大小。

态密度积分和参数

smearing方法和参数

确定smearing方法ISMEAR和展宽SIGMA的参数,默认为1和0.2,决定了如何确定每个波函数的占有数。

17.ISMEAR赋值:

  -1:fermi smearing 方法

  0:Gaussian smearing方法(氧化物,半导体)

  1. N:Methfessel-Paxton N阶smearing方法

-2:在INCAR中通过FERWE和FERD0关键词手动设置

-3:采用一个循环的计算来确定smearing的参数,在每一步中的smearing设置通过SMEARINGS=smearing1 smearing2 smearing3…来设置。此时IBRION=-1,NSW设置为SMEARINGS的值的个数

-4:没有Bloch修正的四面体方法

-5:有Bloch修正的四面体方法

*结构呈现金属性时,取ISMEAR=1和2,以及设一个合适的SIGMA值,一般结果相同。

无论何种体系计算何种性质取ISMEAR=0以及设一个合适的SIGMA值都能得到合理结果。

在除金属以外的体系进行任何静态或者态密度计算,取ISMEAR=-4或-5,要求k点数目必须大于3。

18.SIGMA:展宽。如果用了ISMEAR = -5 , 可以忽略,需要注释掉。

对于金属:ISMEAR = 1 ;非金属:ISMEAR = 0 的时候,一般取0.15或者采用默认值 0.20 即可.

对于气体分子,原子体系,ISMEAR = 0; SIGMA = 0.01(标配)

计算态密度相关参数

18.EMIN和EMAX:计算态密度时的能量范围

19.NEDOS:DOS点的个数

20.LORBIT:控制非自洽计算的形式

21.NBANDS:给出计算中实际的总能带数,通常在非自洽计算过程中需要用到,可以在非自洽计算之前的自洽计算OUTCAR或EIGENVAL文件中读取。

其他参数

磁性计算

22.ISPIN:确定是否进行自旋极化的计算,默认值为1,表示不进行自旋计算,为2表示进行自旋计算。

23.MAGMOM:每类原子的初始磁矩,默认值为Nion*磁矩

24.VOSKOWM:确定交换关联函数的关联部分是否采用Vosko-Wilk-Nusair内插方法。默认值为0。一般用在自旋极化GGA的计算中,设置为1。

逻辑参数和体系参数

25LREAL:确定投影算法是否在实空间或倒空间计算。默认值为.FALSE.,可设置为.FALSE./.TURE./On/Auto

26.LWAVE:确定是否在WAVECAR文件中输出波函数,默认为.TURE.

27.LCHARG:确定是否在CHGCAR和CHG中输出电荷密度,默认值为.TURE.

强关联体系L(S)DA+U

28.LDAU:控制计算中是否考虑在位库伦校正相,即+U,打开设置为TURE

29.LDAUTYPE:具体加U方法1/2/4,取2默认

30.LDAUL:控制具体在哪个角量子数l轨道上加U;-1—不加,1—对p轨道加U,2—对d轨道加U, 3—对f轨道加U

LDAUU:U1,U2,…制定有效在位库伦相互作用的参数

LDAUJ:j1,j2,…指定有效在位交换相互作用的参数

注意:LDAU,DAUU,LDAUJ这三个参数必须对体系中所有源自都要定义,包括加U和不加U的原子。

四个输入文件中元素的顺序都要一一对应

杂化计算(HSE06)

31LHFCALC:确定是否进行杂化计算。取值:.TURE./.FALSE.

32HFSCREEN:选择HSE06泛函。

33LMAXFOCK:杂化计算中角动量最大数目,取值为整数,默认值为4.

34PRECFOCK:Fast/Normal/Accurate需要计算速度快一点时选择Fast,如果要求能量和力非常精确,可选择Normal和Accurate

INCAR——模板

SYSTEM= xxx  计算体系命名

NPAR=4

## Start parameter for this run

ISTART=0     0-从新计算(优化和静态自洽);1-继续计算(复制CHG*文件,非静态自洽)

ICHARG=2    从原子中读取的charge

PREC=Normal  计算精度

LREAL=.F.    投影操作方式:.FALSE.-倒空间,.TRUE.-实空间,Auto-实空间自动

## Write flags

 LWAVE  = .TRUE.

 LCHARG = .TRUE.

 LORBIT = 11

## Ionic relaxation  离子弛豫部分:

IBRION=2    默认-1-静态自洽;2-CG算法的离子弛豫;

ISIF=2        只进行原子弛豫

NSW=10     离子运动的步数

EDIFFG=-1E-2  离子弛豫中力的收敛条件

## Electronic Relaxation 电子自洽部分:

ENCUT=500   平面波基的截断能

#ISPIN=2      考虑自旋极化与否 1-非自旋极化;2-自旋极化

NELM=60     默认值,电子迭代最多为60步

EDIFF=1E-06  相邻两电子迭代的能量差收敛标准

## DOS related values

ISMEAR=1    Methfessel-Paxton积分方法

SIGMA=0.15   积分展宽

## vdW correction

 IVDW   = 0

结构优化只要这三部分

磁性体系的计算需要打开自旋ISPIN=2,初始磁矩MAGMOM=原子数*初始磁矩

以铜为例,铜的静态计算INCAR:

SYSTEM  = Cu

 NPAR   = 4

## Start parameter for this run

 PREC   = Accurate

 ISTART = 0

 ICHARG = 2

## Write flags

 LWAVE  = .TRUE.

 LCHARG = .TRUE.

 LORBIT = 11

## Electronic Relaxation

 ENCUT  = 500

 NELM   = 60

 EDIFF  = 1E-6

 LREAL  = .FALSE.

## Ionic relaxation

 EDIFFG = -0.01

 NSW    = 10

 IBRION = 2

 ISIF   = 3

## DOS related values

 ISMEAR = 1

 SIGMA  = 0.15

## vdW correction

 IVDW   = 0

有关VASP计算--INCAR参数详解以及INCAR模板和例子,铜的INCAR的更多相关文章

  1. ruby - 什么是填充的 Base64 编码字符串以及如何在 ruby​​ 中生成它们? - 2

    我正在使用的第三方API的文档状态:"[O]urAPIonlyacceptspaddedBase64encodedstrings."什么是“填充的Base64编码字符串”以及如何在Ruby中生成它们。下面的代码是我第一次尝试创建转换为Base64的JSON格式数据。xa=Base64.encode64(a.to_json) 最佳答案 他们说的padding其实就是Base64本身的一部分。它是末尾的“=”和“==”。Base64将3个字节的数据包编码为4个编码字符。所以如果你的输入数据有长度n和n%3=1=>"=="末尾用于填充n%

  2. ruby-on-rails - 如何在 ruby​​ 中使用两个参数异步运行 exe? - 2

    exe应该在我打开页面时运行。异步进程需要运行。有什么方法可以在ruby​​中使用两个参数异步运行exe吗?我已经尝试过ruby​​命令-system()、exec()但它正在等待过程完成。我需要用参数启动exe,无需等待进程完成是否有任何ruby​​gems会支持我的问题? 最佳答案 您可以使用Process.spawn和Process.wait2:pid=Process.spawn'your.exe','--option'#Later...pid,status=Process.wait2pid您的程序将作为解释器的子进程执行。除

  3. ruby - 通过 erb 模板输出 ruby​​ 数组 - 2

    我正在使用puppet为ruby​​程序提供一组常量。我需要提供一组主机名,我的程序将对其进行迭代。在我之前使用的bash脚本中,我只是将它作为一个puppet变量hosts=>"host1,host2"我将其提供给bash脚本作为HOSTS=显然这对ruby​​不太适用——我需要它的格式hosts=["host1","host2"]自从phosts和putsmy_array.inspect提供输出["host1","host2"]我希望使用其中之一。不幸的是,我终其一生都无法弄清楚如何让它发挥作用。我尝试了以下各项:我发现某处他们指出我需要在函数调用前放置“function_”……这

  4. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  5. ruby-on-rails - 使用一系列等级计算字母等级 - 2

    这里是Ruby新手。完成一些练习后碰壁了。练习:计算一系列成绩的字母等级创建一个方法get_grade来接受测试分数数组。数组中的每个分数应介于0和100之间,其中100是最大分数。计算平均分并将字母等级作为字符串返回,即“A”、“B”、“C”、“D”、“E”或“F”。我一直返回错误:avg.rb:1:syntaxerror,unexpectedtLBRACK,expecting')'defget_grade([100,90,80])^avg.rb:1:syntaxerror,unexpected')',expecting$end这是我目前所拥有的。我想坚持使用下面的方法或.join,

  6. ruby - 如何在 Ruby 中拆分参数字符串 Bash 样式? - 2

    我正在为一个项目制作一个简单的shell,我希望像在Bash中一样解析参数字符串。foobar"helloworld"fooz应该变成:["foo","bar","helloworld","fooz"]等等。到目前为止,我一直在使用CSV::parse_line,将列分隔符设置为""和.compact输出。问题是我现在必须选择是要支持单引号还是双引号。CSV不支持超过一个分隔符。Python有一个名为shlex的模块:>>>shlex.split("Test'helloworld'foo")['Test','helloworld','foo']>>>shlex.split('Test"

  7. ruby - 检查方法参数的类型 - 2

    我不确定传递给方法的对象的类型是否正确。我可能会将一个字符串传递给一个只能处理整数的函数。某种运行时保证怎么样?我看不到比以下更好的选择:defsomeFixNumMangler(input)raise"wrongtype:integerrequired"unlessinput.class==FixNumother_stuffend有更好的选择吗? 最佳答案 使用Kernel#Integer在使用之前转换输入的方法。当无法以任何合理的方式将输入转换为整数时,它将引发ArgumentError。defmy_method(number)

  8. ruby-on-rails - 在默认方法参数中使用 .reverse_merge 或 .merge - 2

    两者都可以defsetup(options={})options.reverse_merge:size=>25,:velocity=>10end和defsetup(options={}){:size=>25,:velocity=>10}.merge(options)end在方法的参数中分配默认值。问题是:哪个更好?您更愿意使用哪一个?在性能、代码可读性或其他方面有什么不同吗?编辑:我无意中添加了bang(!)...并不是要询问nobang方法与bang方法之间的区别 最佳答案 我倾向于使用reverse_merge方法:option

  9. ruby - 定义方法参数的条件 - 2

    我有一个只接受一个参数的方法:defmy_method(number)end如果使用number调用方法,我该如何引发错误??通常,我如何定义方法参数的条件?比如我想在调用的时候报错:my_method(1) 最佳答案 您可以添加guard在函数的开头,如果参数无效则引发异常。例如:defmy_method(number)failArgumentError,"Inputshouldbegreaterthanorequalto2"ifnumbereputse.messageend#=>Inputshouldbegreaterthano

  10. ruby - rails 3 redirect_to 将参数传递给命名路由 - 2

    我没有找到太多关于如何执行此操作的信息,尽管有很多关于如何使用像这样的redirect_to将参数传递给重定向的建议:action=>'something',:controller=>'something'在我的应用程序中,我在路由文件中有以下内容match'profile'=>'User#show'我的表演Action是这样的defshow@user=User.find(params[:user])@title=@user.first_nameend重定向发生在同一个用户Controller中,就像这样defregister@title="Registration"@user=Use

随机推荐