vasp做大体系结构优化(精品文档)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Vasp对大体系的结构优化
ENCUT
vasp运行时间主要消耗在对角化上。
运行时间正比于NBANDS*NPLNW2,前者是能带数目,后者是平面波数目;由于NPLNW∝ENCUT3/2,故运行时间正比于ENCUT3。
运行时间也正比于NELECT3,电子数目三次方。
IALGO
选择对角化算法:
对于小体系,用IALGO=38(Davidson algorithm);
对于大体系,用IALGO=48(RMM-DIIS)。
可以设置ALGO=very fast or fast。
RMM-DIIS并行效率比Davidson algorithm高一些。
NPAR
如果IALGO=38,则NPAR取1。
对IALGO=48,影响不是特别大,可选2或4,可选节点数,取值越大,内存占用越多。
并行效率总是低于线性叠加效率的,核越多并行效率越低。
所以对于一定核(如20),一定作业(如2个),同时算(每个作业10个核)比先后算(每个作业20个核)要更节约时间。
LREAL 控制赝势能量的非局域部分如何计算(k空间或实空间)。
大体系,如果用集群算,可以考虑让NPAR=节点的CPU数。
LREAL
对k-空间,计算量正比于平面波数目(∝ENCUT3/2*a1*a2*a3)。
小于25个原子,可用K空间。
实空间计算依赖体系大小。
对大体系用LREAL = Auto or LREAL = .Ture. 。
KPAR
设置KPAR为计算节点数或K点数。
KPAR用来设置K点的计算并行度。
每个K点用N/KPAR个核来计算,N为总核数。
核数很多时(>100),这个参数的影响比较大。
NELECT
NELECT= [real]
Default
NELECT = - (number of valence electrons) 价电子数
NELECT = number of electrons 电子数
Usually you should not set this line -- the number of electrons is determined automatically from POTCAR (ZVAL of the element) and POSCAR (number of the atoms of the respective atom type).
通常这个参数是不需要手动设置的—电子数将自动的从POTCAR(元素的类型)和POSCAR中确定(每种类型原子数)
If the number of electrons is not compatible不匹配with the number derived from来源于the valence化合价and the number of atoms a homogeneous均匀的、同类的background-charge is assumed.
如果电子数与来源于化合价的电子数不一样,就假定这些数目的原子具有均匀的背景电荷。
If the number of ions specified指定in the POSCAR file is 0 and NELECT=n, then the energy of a homogeneous LDA-electron gas is calculated.
如果在POSCAR中指定的离子数是0,NELECT=n,然后计算一个同质LDA电子气。
在计算中遇到算不动的情况,需要适当减小精度。
可以减小收敛精度的一些参数设置:
k点密度减少K点
改变迭代算法(ALGO)大体系,一般ALGO=Very_Fast,IALGO=48
提高高斯展宽(SIGMA增加)SIGMA默认0.2
设置自洽延迟(NELMDL)在一开始计算时初始化的过程中电子非自洽迭代的步数
截断能ENCUT 确定平面波的切断动能。
PREC 确定计算的精度,它决定了ENCUT和ROPT的默认值。
默认设为Medium中等的,V ASP4.5以后的版本可设置的值为Normal普通和Accurate精确
有两个提高并行效率的参数NPAR和KPAR
大体系一般不进行收敛测试了,主要根据小体系的测试值和别人文章的使值来选择比较合适的参数
分步优化:先采用低精度进行优化,比如增大离子步长,降低收敛精度,等收敛之后再提高精度进行精优化,这样相对比较可能会快一些
对于大的体系,还是分步来优化好:
1)先把EDIFF EDIFFG弄大一点,设置POTIM=0.1,NSW的步数也设小一点,IALGO=48,ISIF=2,采
用2*2*1的k点先做一个优化。
2)然后把EDIFF EDIFFG弄小一点,设置POTIM=0.2,NSW=1000,把IALGO去掉,采用大一点的k
点,ISIF=4(二维),进行第二次优化。
截断能对计算速度的影响有多大?
截断能取得大,电子波函数的平面波展开中就要取更多的项。
平面波越多,计算量就越大。
截断能是表示平面波展开后取到多大能量的平面波,对于高能部分,展开后所占的比例非常小,而且影响计算速度,所以并不是截断能越大越好。
这是一个两相竞争的问题。
一般用POTCAR中的ENMAX即可,若做静态等计算,可适当调大些。
控制参与计算的平面波的个数,截断能越大,所参与的平面波就越多,计算的精度当然会随之提高,然而,在超过一定的数值后,计算的结果没有实质的变化,反而计算的时间却增加了。
这个一定要测试的。
还是要把计算理论好好看看的。
后面需要用到的次数可能还会很多,科研不是做一天两天的事情。
完全有必要找一个合理的截断能。
否则写文章的时候,你直接写个很大的截断能(准确性没问题),但是会让人怀疑你对计算的理解,其他的结果都可能被怀疑了。
一般,认为截断能越大,k点设置越多,收敛精度越高,收敛会越慢,但是准确度不一定越高。
因此有必要做一些此类参数的测试。
一般会这些参数大概会有个能量收敛的趋势。
就是设置到某个临界参数,能量几乎变化很小。
而参数再增加,只是增加计算量,而准确度没有变化。
优化时可以用ISMEAR=0,最后静态的时候再用-5,这样有些错误就不会发生。