学习VASP一定要知道的七点!!K点、赝势、INCAR参数...

2024-11-18 11:39   广东  

【做计算 找华算】理论计算助攻顶刊,50000+成功案例,全职海归技术团队、正版商业软件版权!
经费预存选华算:双十一重磅加码,高至30%预存增值!
对于一些VASP初学者,会趟很多雷,本文中会为大家列出七个非常重要且基础的知识点,快速入门,岂能错过!
初学VASP(一) what’s it?
VASP = Vienna Ab-initio Simulation Package
VASP is a complex package for performing ab-initio quantum-mechanical molecular dynamics (MD) simulations using pseudopotentials (如超软赝势US-PP) or the projector-augmented wave (PAW) method and a plane wave basis set.
The approach implemented in VASP is based on the (finite-temperature) local-density approximation with the free energy as variational quantity and an exact evaluation of the instantaneous electronic ground state at each MD time step.
它的好处主要包括 基组小适于第一行元素和过渡金属, 大体系计算快(<4000价电子), 适于平行计算(Unix/Linux) 其他特性还包括自动对称性分析、加速收敛算法另文涉及。
一个简单的VASP作业主要涉及四个输入文件:INCAR(作业细节、) POSCAR(体系坐标)、 POTCAR(赝势)、 KPONITS(k空间描述)
初学VASP(二) 布里赫定理
本文简单介绍点能带理论的基础知识,以利于后文讨论
布里赫(F.Bloch) 参考书:《固体能带理论》谢希德 陆栋 主编
Bloch定理
周期性势场的单电子薛定谔方程的非简并解和适当选择组合系数的简并解同时是平移算符T(Rl)的属于本征值exp(ik•Rl)的本征函数
数学表示:T(Rl)ψn(k,r) = ψn(k,r+Rl) = exp(ik•Rl)•ψn(k,r)
ψn(k,r)称为Bloch函数,用它描写的电子也称为布里赫电子
推论一:晶格电子可用通过晶格周期性调幅的平面波表示。由此我们知道k的物理意义 波矢
推论二:若Km•Rl = 2nπ,即Km为倒格矢,那么ψn(k,r) = ψn(k+Km,r)
所以我们将k值限定在一个包括所有不等价k的区域求解薛定谔方程,这个区域称为布里渊区(Brillouin,没错,就是量化课上CI方法中最重要的基石Brillouin定理的那位)在布里渊区,对于每个n,En(k)是一个k的连续、可区分(非简并情况)的函数,称为能带,所有的能带称为能带结构。
那么实际上VASP的计算就是利用以上定理,通过T算符的变换,将实空间(r空间)和动量空间(k空间)联系起来,利用晶格的周期性简化计算,所以在后面的讨论中将常出现band,k-points,projectors in real space等概念。
初学VASP(三) 描述原子坐标
POSCAR = position + CAR
第1行:任意文字注释
第2行:晶格常数,单位A,后面所有的长度值得自原值除以此值a=b=c时取a即可,否则个人习惯取三者最大若取负值,则为晶胞体积,单位A3
第3-5行:定义晶矢 参见《固体量子化学——材料化学的理论基础》赵成大
如 对于正交晶体 a=20.022 b=19.899 c=13.383 α=β=γ=90,可以这样定义
20.022
1.00000 0.00000 0.00000
0.00000 0.99386 0.00000
0.00000 0.00000 0.66841
又如 对于面心立方晶体 a=b=c=3.57 α=β=γ=90,可以定义如下
3.57
0.0 0.5 0.5   (1/2(b+c))
0.5 0.0 0.5   (1/2(a+c))
0.5 0.5 0.0   (1/2(a+b))
第6行:每种元素的原子数,特别注意顺序,要与下面的坐标顺序以及POTCAR中的顺序一致
第7行:可省略,无需空行。做动力学时,是否需要固定部分离子的坐标。若是,此行以’S’或者’s’首字即可。
第8行:开始为离子的坐标,格式为
option line
coordinate1 of element1
coordinate2 of element1

coordinateN of element1
option line
coordinate1 of element2
coordinate2 of element2

coordinateM of element2

其中,option line指定输入坐标的格式,除了第一个以外,如果后面的输入格式同前,则都可以无空行省略。
option line可指定的输入坐标格式有两种
‘D’or’d’ for direct mode
‘C’or’c’or’K’or’k’ for cartesian mode
顾名思义,前者是定义在三个晶矢方向上的坐标。R=R1×x+R2×y+R3×z R1,R2,R3为前面的晶矢,x,y,z为输入的三个坐标,R为坐标位矢
而后者只是简单的将直角坐标除以前面第二行定义的晶胞常数。
两者可以混用,但不推荐。
如果第7行设定了S(Selective Dynamic),则可以用以下形式定义各坐标是否可以移动
Selective dynamics
Cartesian
0.00 0.00 0.00 T T F
0.25 0.25 0.25 F F F
初学VASP(四) k点的选择
如前所述
The Bloch theorem changes the problem of calculating an infinite number of electronic wavefucntions to one of calculating a finite number of
wavefunctions at an infinite number of k-points. (参见CASTEP的帮助文档,他和VASP是亲兄弟)。
所以呢,一般来说,k点越密越多,计算精度也越高,当然计算成本也越高。对于k点的需求,金属>>半导体,绝缘体,不过呢,很多时候主要还是受硬件限制简约化可以使k点的数目大大下降。对于原子数较多的体系的计算,就需要谨慎的尝试  k点数目,在避免或者预先评估wrap-around error的前提下尽量减少k点数目。
另一个问题是k空间网格(k-points grid)的位置和形状,是否包括Г点(Gamma点,也可理解为原点)?(一般不包括的话很可能会带来误差,尤其
是使用了tetrahedron方法的时候。暂时还不知道不包括的好处,为了减少k点?方形?线形?还是长方形?或者奇形怪状?后文另述。
那么现在来看看KPOINTS file的结构:
Line1: comment line 注释行 no problem
Line2: k点总数 或者 ‘0’自动生成网格(Automatic k-mesh generation)
如果是前者,给出k点总数,又分两种情况
M.全手动 Entering all k-points explicitly
Line3: 输入格式标识。直角坐标 (Cartesian)或者 倒格坐标(Reciprocal)
同样的 ‘cCkK’ for Cartesian,其他首字母则自动切换到 Reciprocal
Line4-n: 逐个k点的描述。格式为 x y z W。xyz是三个坐标,W是权重。所有k点的权重相互之间的比例对了就行,VASP会自动归一的。
注意C坐标和R坐标的定义
C: k=(2π/a)(x y z) R: k=x*b1+y*b2+z*b3 b1-3为倒格基矢(这里我们看到xyz只是代表了坐标的顺序,与坐标轴无关),比如一些常用的高对称性点的C和R坐标:
Point   Cartesian coordinates   Reciprocal coordinates
(units of 2pi/a)        (units of b1,b2,b3)
——————————————————
G          (  0   0   0  )          (  0   0   0   )
X          (  0   0   1  )          ( 1/2 1/2  0   )
W          ( 1/2  0   1  )          ( 1/2 3/4 1/4  )
K          ( 3/4 3/4  0  )          ( 3/8 3/8 3/4  )
L          ( 1/2 1/2 1/2 )          ( 1/2 1/2 1/2  )
输入示例:
Example file
4
Cartesian
0.0  0.0  0.0   1.
0.0  0.0  0.5   1.
0.0  0.5  0.5   2.
0.5  0.5  0.5   4.
一般如非必要,可以先用自动模式生成k点,VASP会自动生成一个简约化后的k点矩阵,存于IBZKPT file,可以直接复制里面的数据到KPOINTS file来用,其实这也是这个输入法的主要用途,为了减少重复自动生成格点的时间。
另一个用途是为了做精确的DOS(Density of status)的计算,由于这类计算所需k点数极大,通过全手动尽可能的优化k点也就必需了。
L.半手动/线形模式 Strings of k-points for bandstructure calculations看到啦,对于能带结构的计算,同前面的理由,需要精确的选取k点,在指定的高对称性方向上生成指定数目的k点。
Line2: 指定两点间生成的k点数 不同于全自动的总k点数
Line2.5: ‘L’ for Line-mode 表示是线形模式
Line3: 输入格式标识。同前。C or R
Line4-n: 每行描述一个点 格式为 x y z。每两行的点连成一线,在两点间生成指定数目的k点。每两行两行之间以空行区分(不空的话,VASP可能也认得出,没试过)
比如:
10  ! 10 intersections
Line-mode
rec
0   0   0   ! gamma
0.5 0.5 0   ! X
0.5 0.5 0   ! X
0.5 0.75 0.25  ! W
更常用的方法是让VASP自动生成网格
Line2: 0 !number of k-points = 0 ->automatic generation scheme (!后面字符为注释)
Line3: A for fully automatic or G for Г/Gamma or M for Monkhorst-Pack
若都不是这些首字母,则自动切换为高级模式。
A mode 全自动模式,可以看作以Г点为圆心以l为半径做圆,当然各晶格矢不同时,相应的圆就拉成了椭圆,来确保三个倒格矢方向上覆盖的k点数为l
Line4:length (l)
Useful values for the length vary between 10 (large gap insulators) and 100 (d-metals).  
进一步的做法是分别指定三个倒格矢方向上的格点数N1,N2,N3。G mode
Line4: N1 N2 N3
Line5: s1 s2 s3 偏移原点的位矢 一般设成 0 0 0 啦。
以及Monkhorst-Pack法,生成的格点不包括Г点,从Г点周围1/2长度处开始取点。
M mode
Line4: N1 N2 N3
Line5: s1 s2 s3 同上
所谓的高级模式,就是用C坐标或者R坐标直接输入新的基矢,如
c                      c
0.25 0 0               0.25 0 0
0 0.25 0               0 0.25 0
0 0 0.25               0 0 0.25
0.0 0.0 0.0            0.5 0.5 0.5
分别等价于
g                      m
4 4 4                  4 4 4
0 0 0                  0 0 0
因为存在这种等价关系,所以一般也没有必要使用高级模式
最后提醒一点,VASP的帮助文档特别提醒,对于六方晶系,不要用M来自动生成格点,而要用G。
关于tetrahedra方法,帮助文档说用于全手动模式,可选。具体设定原文如下:
In this case, the next line must start with ‘T’ or ‘t’ signaling that this connection list is supplied. On the next line after this ‘control line’ one must enter the number of tetrahedra and the volume weight for a single tetrahedron (all tetrahedra must have the same volume). The volume weight is simply the ratio between the tetrahedron volume and the volume of the (total) Brillouin zone. Then a list with the (symmetry degeneration) weight and the four corner points of each tetrahedron follows (four integers which represent the indices to the points in the k-point list given above, 1 corresponds to the first entry in the list). Warning: In contrast to the weighting factors for each k-point you must provide the correct ‘volume weight’ and (symmetry degeneration) weight for each tetrahedron – no internal renormalization will be done by VASP!
示例:
Example file
4
Cartesian
0.0  0.0  0.0   1.
0.0  0.0  0.5   1.
0.0  0.5  0.5   2.
0.5  0.5  0.5   4.
Tetrahedra
1  0.183333333333333
6    1 2 3 4
初学VASP(五) 赝势•选择
POTCAR 赝势文件
可以理解为分子力学模拟中的力场文件 但包括的信息更多VASP4.6将各元素优化的INCAR里的参数也包括在这里了,作为支持PREC的缺省选择
通常各元素的POTCAR已经包括在软件包里了,我们只需要按照POSCAR里的顺序,将各元素的POTCAR按顺序连接起来就可以了。
如以下命令:cat file1 file2 file3 > POTCAR
软件包自带的绝大多数赝势是超软赝势(US-PP)了,但不少元素有两个版本,如何选取呢?一个简单的办法是看后缀标准的没有后缀 _h 硬一点 _s 软一点 _pv,_sv,_d 就是说semi-core的p,s或者d也当做价态处理了。如果是数字的话,表示的可能是不同的半径截距,也可以参考各版本同目录下的V_RHFIN file ,PSCTR file ,这两个文件告知该版本的赝势是如何生成的。
比如:
V_RHFIN file
Sc: 6p d2 s1
8  21.   .002000  44.95590 125.   .25E-05 .300  200FCA 12.00000
.7  1.0   0
1.0   .0   .5 -320.8847 2.0000
2.0   .0   .5  -34.4217 2.0000
2.0  1.0  1.5  -28.2366 6.0000
3.0   .0   .5   -3.7944 2.0000
3.0  1.0  1.5   -2.2591 6.0000
3.0  2.0  2.5    -.1113 2.0000
4.0   .0   .5    -.2699 1.0000
4.0  3.0  2.5    -.1000  .0000
第一行是注释行 给出基本的信息
第二行是最重要的控制行
    8  21.   .00 2000  44.95590 125.   .25E-05 .300  200 F CA 12.00000
J   Z   XION    N  AM         H    DELRVR   PHI  NC1 | CH QCOR
|
GREEN
J – 轨道数  Z – 原子序数    XION – 离子化程度 一般设为0 N – 格点数
AM – 原子质量   H – 决定格点间距    DELRVR – 自洽收敛标准
PHI – 线性拟合参数 NC1 – 最大自洽循环次数 GREEN – 是否存在初始的势
CH – 交换相关能(XC)类型
Slater-XC
HL Hedin Lundquist (1971)
CA Ceperly and Alder parameterized by J.Perdew and Zunger
WI Wigner interpolation
PB Perdew -Becke
PW Perdew -Wang 86
LM Langreth-Mehl-Hu
91 Perdew -Wang 91
QCOR – 非价键电子数(core electrons)
第三行开始是每个轨道的具体参数,依次为
n l j(=l±1/2) 原子轨道能 占有率
PSCTR file of LDA/H1.25
TITEL  = US H
LULTRA =    T    use ultrasoft PP ?
RWIGS  =    0.57  nn distance ! Wigner-Seitz radius
RCLOC  =   .65
NE     =   100
LCOR   =   .TRUE.
QCUT   =   -1
RMAX   = 3.0 ! core radius for proj-oper
Description
l     E      TYP RCUT    TYP  RCUT(cutoff radius)
0   0         15   0.80  23   1.25
0   0.5       15   0.80  23   1.25
1  -0.2       15   0.80  23   1.25
最重要的地方上面已经用颜色标出来啦:)
说明一下,TYP是指赝势的类型,RCUT是半径截距,TYP可取的值如下:
正则
1 BHS
2 TM
3 VAN
6 XNC
7 RRKJ wave function possibly with node
15 RRKJ wave function strictly no node
非正则 +8
最后一个问题是LDA or GGA。貌似没有定论目前。
这个最好是两个一起做做看啦。或者看文献别人验证过哪个数据好。其实据说目前最好的是PAW(P.E.Blochl,Phys.Rev.B 50,17953(1994).,Phys.Rev.B 59, 1758(1999).),PP已经落伍了,不过好像我们用的VASP不带这个,就不展开讨论了。
初学VASP(六) 最重要的INCAR参数
INCAR是决定how to do 的文件,限于能力,只对部分最基本的一些参数(>,没有这个标志的参数都是可以不出现的),详细说明,在这里只是简单介绍这些参数的设置,详细的问题在后文具体示例中展开。部分可能会干扰VASP运行的参数在这里被刻意隐去了,需要的同学还是请查看VASP自带的帮助文档原文。
当然,为了测试一下提交的任务,也不妨先设个较小的值
附加说明:当且仅当POTCAR里头没有设置ENCUT时(其实貌似没有才是常态),才受PREC设置影响从POTCAR里找出相应的ENMAX/ENMIN值来设置。
    PREC=   Low     Medium  Accurate High
    ENCUT=  ENMIN   ENMAX   ENMAX    130%ENMAX 
    对于多个元素的POTCAR不同的ENMAX/ENMIN,都取最大值
>NGX,NGY,NGZ: FFT mesh for wavefunctions
>NGFX, NGFY, NGFZ: FFT mesh for charges
    也是两类重要的最好不要去动的参数,PREC设置将从POTCAR中自动读取。
    PREC=High,Accurate 2倍值,用来避免wrap around errors得到精确解
    PREC=Low,Medium,Normal 3/4 也已经足够精确到 1 meV/atom
>LREAL: Default= .FALSE. 
赝势的非局域部分用到的一个积分在倒格空间或者实空间都可以求值。这个选项就是决定是在哪个空间里求。在倒格空间里,采用平面波基组求解,在实空间里,采用积分球求解。
缺省是.FALSE,即不在实空间求。但效率会低一些。其他选项是 O or On,A or Auto 和.True.。On和.TRUE.的差别在于是否使用King-Smith算法优化,Auto则自动选择,推荐。
    
>ROPT: 优化控制每个核周围的积分球内的格点数,LREAL=Auto or On
    For LREAL=On   
        PREC= Low 700 points in the real space sphere ( ROPT=0.67) 
        PREC= Med 1000 points in the real space sphere ( ROPT=1.0) 
        PREC= High 1500 points in the real space sphere ( ROPT=1.5) 
    For LREAL=Auto 
        PREC= Low accuracy 1e-2 ( ROPT=0.01) 
        PREC= Med accuracy 2e-3  ( ROPT=0.002) 
        PREC= High accuracy 2e-4  ( ROPT=2E-4)

>NELM, NELMIN and NELMDL nr. of electronic steps
    Default 
最大电子自洽循环次数  NELM = 60 
最小次数              NELMIN = 2 
弛豫次数              NELMDL = -5  if ISTART=0, INIWAV=1, and IALGO=8 
                               -12 if ISTART=0, INIWAV=1, and IALGO=48 
                               0   else 
如果初始的波函数采取随机赋值,即ISTART=0, INIWAV=1,那么很可能开始的值比较离谱,那么在第一步核运动循环之前采用NELMDL(负值)步的非自洽(保留初始的H)步计算将减少计算所需的时间。如果NELMDL取正值,将在每次核运动之后附加指定次数的弛豫步,目前不知道可以干嘛。
>EDIFF 电子SC循环的收敛精度 缺省:1e-4
    注意,即使EDIFF=0,NELM步也会执行

>EDIFFG 核运动的收敛精度 缺省:EDIFF*10 (总能量)
    EDIFFG<0 则在所有的力都小于EDIFFG时停止
    EDIFFG=0 则在NSW步后停止
    此参数不支持MD,仅用于Relax
>NSW 指定核运动步数 缺省: 0
NBLOCK and KBLOCK inner block; outer block
    Default  NBLOCK = 1 KBLOCK = NSW
>IBRION ionic relaxation: -1-Fixed 0-MD 1-quasi-New 2-CG 3-Damp 5-freq
    Default if NSW=0 or 1 IBRION=-1 else IBRION=0 
    这个参数是和ISIF;IALGO/ALGO一起决定怎么算的最重要的参数
    1-3 是三种Relax的方法,受ISIF决定是否固定核位置、晶胞大小和形状
    0 是标准的ab-initio MD,不受ISIF影响,即不改变晶胞大小和形状
    5 大概是和0差不多吧?支持Hessian和Freq(仅Г点)的计算以及部分固定的MD
    详细的要在示例中具体情况具体分析了。
>ISIF calculate stress and what to relax
    Default  if IBRION=0 (MD) 0 else 2 
    ISIF│calculate │  calculate   │relax │   change   │  change 
        │  force   │stress tensor │ions  │ cell shape │cell volume 
    ──┼─────┼───────┼───┼──────┼──────
    0   │  yes     │ no           │yes   │ no         │no 
    1   │  yes     │ trace only   │yes   │ no         │no 
    2   │  yes     │ yes          │yes   │ no         │no 
    3   │  yes     │ yes          │yes   │ yes        │yes 
    4   │  yes     │ yes          │yes   │ yes        │no 
    5   │  yes     │ yes          │no    │ yes        │no 
    6   │  yes     │ yes          │no    │ yes        │yes 
    7   │  yes     │ yes          │no    │ no         │yes 
Trace only means that only the total pressure
IWAVPR prediction of wf.: 0-non 1-charg 2-wave 3-comb
    Default  if IBRION=0 (MD) 2 
             if IBRION=1,2 (relaxation) 1 
             else (static calculation) 0 
    以上选项保存TMPCAR +10 则全部使用内存,不保存此文件
    IWAVPR determines how wave functions and/or charge density are 
    extrapolated from one ionic configuration to the next configuration.
>ISYM symmetry: 0-nonsym 1-usesym 是否使用对称性 Default 1 
    
SYMPREC determines precision of the positions in POSCAR file. Default 1e-5
LCORR Harris-correction to forces. Default .TRUE.
>POTIM time-step for ion-motion (fs)
    Default   
     IBRION=0 (MD) no default,必须指定,MD每步步长
     IBRION=1,2,3 (relaxation) 0.5 最小化的’scaling constant’,尤其是IBRION=1
>TEBEG, TEEND temperature during run (MD有效)
    Default: TEBEG = 0 TEEND = TEBEG 
    注意VASP的温度定义与实际温度有细微的差别,所以
    TEBEG=T×(N-1)/N  T为实际温度,N为原子数
SMASS 控制MD中的速度模拟方法
default -3 微正则系综(总自由能不变)
-2 保持初速度不变
-1 每NBLOCK步调整速度,来保证动能连续
>=0 Nosé算法模拟正则系综,(不懂-,-)
NPACO and APACO 
NPACO : number of slots for pair correlation (PC) function. Default 256
APACO : maximum distance for the evaluation of PC function in A. Default 16
简单说就是在不超过APACO的NPACO个距离上求成对相关函PCF
RWIGS Wigner-Seitz半径 DOS计算用
>NELECT 总电子数 
    如果系统不是电中性的就必须设置,所带电荷作为均一的背景电子气考虑
NUPDOWN default不考虑电子自旋态改变的可能
EMIN, EMAX energy-range for DOSCAR file
>ISMEAR part. occupancies: -5 tet with Blochl -4-tet -1-fermi 0-gaus >0 MP
采用所谓部分占有波函数,用一个函数来平滑积分,尤其是对于金属体系可减少k点
Default ISMEAR = 1 如果在KPOINTS里使用了tetrahedra方法 推荐ISMEAR=5
SIGMA determines the width of the smearing in eV
Default SIGMA = 0.2
>ALGO algorithm: Normal (Davidson) | Fast (mixed)| Very_Fast (RMM-DIIS)
>IALGO algorithm: use only 48 (RMM-DIIS) or 38(Davidson) or 8(CG)
Default IALGO = 38 for VASP4.5
算法是最重要的参数之一。一般VASP推荐使用的是以上三种算法,一般来说8/38是初期比较快收敛,在接近平衡时采用48较快,在初期或MD时使用48可能会遇到不收敛的情况。也可以使用ALGO参数来替代IALGO,设置Fast,VASP会先用38,再自动切换到48。各种算法只要收敛,结果应该一致。另一个可能有用的选项是-1。不进行实际的计算,只对重要的步骤做计算测试,并将测试得到的各部分耗时输出在OUTPUT里。
VOSKOWN use VWN interpolation 算法,default 0 不用,如果使用了PW91或者需要计算磁性质,不妨设为1 用
mixing tag & MAXMIX
    IMIX = type of mixing 
    AMIX = linear mixing parameter 
    AMIN = minimal mixing parameter 
    BMIX = cutoff wave vector for Kerker mixing scheme 
    AMIX_MAG = linear mixing parameter for magnetization 
    BMIX_MAG = cutoff wave vector for Kerker mixing scheme for mag. 
    WC = weight factor for each step in Broyden mixing scheme 
    INIMIX = type of initial mixing in Broyden mixing scheme 
    MIXPRE = type of preconditioning in Broyden mixing scheme 
    MAXMIX = maximum number steps stored in Broyden mixer 
Default
for US-PP non-magnetic 
IMIX  =     4                    
AMIX  =     0.8        
BMIX  =     1.0        
WC    =     1000.  
INIMIX =    1  
MIXPRE =    1 
MAXMIX =    -45 
值得注意的是,在MD或者Relax的时候,设置MAXMIX(>0,一般约3倍的电子SC步数),可能会大大减少核运动步数。但是同时会增加对内存的要求。
LWAVE,LCHARG and LVTOT create WAVECAR/CHGCAR/LOCPOT
LELF create ELFCAR
LORBIT create PROOUT
输出文件的选项
NPAR 并行计算band的节点数,每一个节点计算一个band当然可以提高并行效率,减少通讯量,不过貌似现在硬件的主要限制还是内存,而这个选项的使用可能会大幅增加内存的需求
>NBANDS 总能带数。
    之所以把它放在最后,是因为它对于解决内存需求的重要性。计算需要大量的能带(空带),至少要1个空带(否则VASP会给出警告)。一般NBANDS=NELECT/2+NIONS/2以上可得到较精确的结果,如果内存不够就只好减少NBANDS,在牺牲精度和体系大小之间平衡了。
最后提示一下大多数参数的首字母代表了参数的性质I 初始化 L 逻辑开关 E 能量 N 数目 T 温度便于记忆。
初学VASP(七) VASP程序的编译
下面以编译VASP4.4.5版本为例,编译更新的版本VASP4.5.5、VASP4.6和VASP5.0(即将发布)的步骤与此相同。
1、  所需文件和程序
VASP源代码:vasp.4.4.5.tar.gz和vasp.4.lib.tar.gz
数学库:LAPACK和BLAS (http://www.netlib.org/ ,
或mkl(配合intel的fotran编译器用),
或ATLAS (http://math-atlas.sourceforge.net/
或Lib GOTO (http://www.cs.utexas.edu/users/flame/goto/
Fortran编译器:PGI fortran 至少4.0以上版本(http://www.pgroup.com/ ,或Intel的 ifc (8.0以上版本是ifort,
http://www.intel.com/software/products/compilers/flin/ ,前者可以从网站上下载到15天的试用版本,后者可以从网站下载到免费的版本。
2、下面采用PGI fortan编译器pgf90、ATLAS数学库对VASP4.4.5进行编译
这里假定已经安装好了fortran编译器,所有文件都放在/home/xxxx/VASP_SRC目录下,机器的操作系统是Linux: Redhat9.0。
a) 从http://math-atlas.sourceforge.net/下载atlas3.6.0_Linux_P4SSE2.tar.gz,并 用如下命令解压:tar xzvf atlas3.6.0_Linux_P4SSE2.tar.gz
解压后得到一个目录Linux_P4SSE2,在此目录下有个lib子目录,该lib子目录中的文件为libatlas.a, libcblas.a, libf77blas.a, liblapack.a, 这些就是编译vasp时所需要的数学库文件之一。
b) 用如下命令解压vasp.4.4.5.tar.gz和vasp.4.lib.tar.gz:
tar  xzvf  vasp.4.4.5.tar.gz
tar  xzvf  vasp.4.lib.tar.gz
解压后分别得到目录vasp.4.4和vasp.4.lib,目录vasp.4.4中文件是vasp的主要源代码,vasp.4.lib是编译vasp时需要的一些特定的数学库程序,在这两个目录中都有编译时所用的makefile文件,针对机器和fortran编译器,选择相应的makefile。
c) 进入vasp.4.lib目录,选择makefile.linux_pg,并把它拷贝成makefile,然后键入m
ake命令开始编译。整个命令如下:
cd   vasp.4.lib
cp   makefile.linux_pg   makefile
make
编译成功后,得到libdmy.a文件。
d) 退出vasp.4.lib目录,进入vasp.4.4目录,选择makefile.linux_pg,并把它拷贝成makefile,编辑makefile文件,通过修改LIB变量的赋值而采用基于ATLAS的数学库文件,修改的地方和方法是:
在第87和88行前加上#,把这两行注释掉,然后去掉第91,92和93行前的#。
修改前和后的内容为分别为:
LIB     = -L../vasp.4.lib -ldmy ../vasp.4.lib/linpack_double.o
../vasp.4.lib/lapack_double.o -L/usr/local/lib /usr/local/lib/libblas.a
#
# the following lines should allow you to link to atlas based blas
#LIB     = -L../vasp.4.lib -ldmy ../vasp.4.lib/linpack_double.o
#     ../vasp.4.lib/lapack_double.o -L/usr/local/lib
#     -L$(HOME)/archives/BLAS_OPT/ATLAS/lib/Linux_ATHLONTB/ -lf77blas –latla
s
#LIB     = -L../vasp.4.lib -ldmy ../vasp.4.lib/linpack_double.o
#     ../vasp.4.lib/lapack_double.o -L/usr/local/lib
/usr/local/lib/libblas.a
#
# the following lines should allow you to link to atlas based blas
LIB     = -L../vasp.4.lib -ldmy ../vasp.4.lib/linpack_double.o
../vasp.4.lib/lapack_double.o -L/usr/local/lib
-L../Linux_P4SSE2/lib/ -lf77blas -latlas
修改后保存makefile文件,键入make命令开始编译vasp。整个命令为:
cd  ..
cd  vasp.4.4
cp  makefile.linux_pg  makefile
编辑修改makefile文件
make
编译成功后,就可以得到VASP的可执行文件vasp。
e) 以root帐号登录机器,把成功编译VASP后得到的vasp放到/bin目录下,则任何一个普通用户都可以使用vasp。此时vasp可以当成于一个linux的命令来使用了,不再需要把vasp拷贝到当前的计算目录下。
本文转载自网络,转载目的在于知识分享。
做计算,找华算

🏅 我们提供专业的第一性原理、分子动力学、生物模拟、量子化学、机器学习、有限元仿真等代算服务。
🎯我们的理论计算服务,累计助力5️⃣0️⃣0️⃣0️⃣0️⃣➕篇科研成果,计算数据已发表在Nature & Science正刊及大子刊、JACS、Angew、PNAS、AM系列等国际顶刊。 👏👏👏

👉 点击阅读原文加我,探索更多优惠💖

DFT计算参谋长
华算科技朱参谋长公众号,十余年VASP重度使用经验,每天给大家带来期刊速览,学术新闻,欢迎关注!
 最新文章