侯柱峰-vasp计算晶体弹性常数

合集下载

vasp侯柱峰

vasp侯柱峰

. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
POTCAR
POSCAR
KPOINTS
k
k
5
§3.1 INCAR vasp

SYSTEM

ISTART, ICHARG, INIWAV


ENCUT, ENAUG

ALGO, IALGO, LDIAG

IMIX, AMIX, AMIN, BMIX, AMIX MAG, BMIX MAG, WC,
INIMIX, MIXPRE, MAXMIX
slab
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 32
. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Linux
makefile linux ”
PGI fortan
pgf90 ATLAS
VASP4.6
/home/xxxx/VASP SRC

VASP表面计算步骤小结

VASP表面计算步骤小结

VASP表面计算步骤小结(侯博士)一、概述vasp用“slab”模型来模拟表面体系结构。

vasp计算表面的大概步骤是:材料体性质的计算;表面模型的构造;表面结构的优化;表面性质的计算。

二、分步介绍1、材料体性质计算:本步是为了确定表面计算时所需的一些重要参数:ENCUT、SIGMA(smearing 方法为ISMEAR=1 或0时;而通常表面体系结构优化时选择这种smearing方法)、晶格参数。

<一>在计算前,要明确:何种PP;ENCUT;KPOINTS ;SIGMA;PREC;EX-CO,这其实是准备proper input files。

a. 何种PP选择的PP能使计算得到的单个原子能量值在1meV~10meV之间。

[参见P 21]所求得的单原子能量(对称性破缺时)可用来提高结合能的精度。

b. ENCUT [ 参见P 14 ]选择的ENCUT应使得总能变化在0.001eV左右为宜。

注意:试探值最小为POTCAR中的ENMAX(多个时,取最大的),递增间隔50;另外,在进行变体积的结构优化时,最好保证ENCUT=1.3ENMAX,以得到合理精度。

c. PREC [参见P 16]控制计算精度的最重要参数,决定了(未指定时)ENCUT、FFT网格、ROPT取值。

一般计算取NORMAL;当要提高Stress tensor计算精度时,HIGH 或ACCURATE,并手动设置ENCUT。

d. EDIFF & EDIFFG [参见P16]EDIFF 判断电子结构部分自恰迭代时自恰与否,一般取默认值=1E-4;EDIFFG 控制离子部分驰豫e. ISTART & ICHARGE [参见P 16]ISTART = 1, ICHARG = 11:能带结构、电子态密度计算时;ISTART =0, ICHARG = 2:其余计算ISTART = 1,ICHARG = 1(其他所有不改变):断点后续算设置f. GGA & VOSKOWN [参见P 16]GGA=91: Perdew -Wang 91;GGA=PE: Perdew-Burke-ErnzerhofVOSKOWN=1( GGA=91时);VOSKOWN=默认(其余情况)g. ISIF [参见P 16]控制结构参数之优化。

VASP表面

VASP表面

Next: 采用VASP如何计算晶体的弹性常数 Up: VASP计算实例 Previous: 用VASP 计算Pd金属的晶格常数 Contents用VASP 计算表面能做表面计算时,第一步我们需要测试K 点的收敛性。

通常,在垂直表面方向用1个K 点就可以了,在平行表面方向,可以用和体材料类似的K 点密度。

其次,我们要测试真空厚度(vacuum thickness)的收敛性。

我们构造完一个slab 后,将真空厚度逐渐从增加到,体系的总能量改变不超过10meV 的时候,可以初步认为真空厚度达到标准。

以下是一个3层的(fcc) Pd slab 的能量随着真空厚度的变化。

其INCAR 文件如下:SYSTEM = undeformed fcc Pd (111) surface calculation Startparameter for this run: PREC = AccurateISTART = 0 job : 0-new 1-cont 2-samecut ICHARG = 2 charge: 1-file 2-atom 10-const ISPIN = 1 spin polarized calculation?Electronic Relaxation 1NELM = 90; NELMIN= 8; # of ELM steps EDIFF = 0.1E-03 stopping-criterion for ELM LREAL = .FALSE. real-space projection NBANDS = 40Ionic relaxationEDIFFG = 0.1E-2 stopping-criterion for IOM NSW = 0 number of steps for IOMIBRION = 2 ionic relax: 0-MD 1-quasi-New 2-CG ISIF = 2 stress and relaxationPOTIM = 0.10 time-step for ionic-motion TEIN = 0.0 initial temperatureTEBEG = 0.0; TEEND = 0.0 temperature during runDOS related values:ISMEAR = 1 ; SIGMA = 0.20 broadening in eV -4-tet -1-fermi 0-gausElectronic relaxation 2 (details)Write flagsLWAVE = F write WAVECARLCHARG = F write CHGCARLVTOT = .TRUE.其中因为Pd是金属,ISMEAR设置为method of Methfessel-Paxton。

采用VASP如何计算晶体的弹性常数

采用VASP如何计算晶体的弹性常数
SYSTEM = AlN ENCUT = 400 ISTART = 0 ICHARG = 2
5
3

ISMEAR = 0; SIGMA = 0.2 NSW = 60; IBRION = 2 EDIFF = 1E-5 EDIFFG = -1E-2 ISIF = 2 POTIM = 0.2 PREC = Accurate LWAVE = .FALSE.
4
3

strten(1,2)=0.5*strain(6) strten(1,3)=0.5*strain(5) strten(2,1)=0.5*strain(6) strten(2,2)=strain(2)+1.0 strten(2,3)=0.5*strain(4) strten(3,1)=0.5*strain(5) strten(3,2)=0.5*strain(4) strten(3,3)=strain(3)+1.0 C%%%%%%%%% Transform the primitive vector to the new vector under strain%%%%% C strvect(i,j)=privect(i,j)*(I+strten(i,j)) do k=1,3 do i=1,3 strvect(i,k)=0.0 do j=1,3 strvect(i,k)=strvect(i,k)+privect(i,j)*strten(j,k) enddo enddo enddo C%%%%%%%% Write the new vector under strain%%%%%%%%%%%% do i=1,3 write(*,100)(strvect(i,j),j=1,3) enddo 100 format(3f20.15) C%%%%%%%%% Create the POSCAR for total energy calculation %%%%%%%%%%%%%%5 write(3,’(A10)’) title write(3,’(f15.10)’) alat do i=1,3 write(3,100)(strvect(i,j),j=1,3) enddo write(3,’(10I4)’) (natomi(i), i=1,ntype) write(3,’(A6)’) Direct do i=1, nn write(3,100) (pos(i,j),j=1,3) enddo C%%%%%%% end

VASP计算弹性常数

VASP计算弹性常数

VASP计算弹性常数VASP (Vienna Ab-initio Simulation Package) 是一种常用的第一性原理计算软件包,用于计算物质电子结构和能带结构。

除了电子结构计算,VASP还可以用于计算材料的弹性常数。

在本文中,我们将讨论如何使用VASP计算材料的弹性常数,并了解计算结果的解释。

弹性常数是描述材料变形行为的物理量。

材料在受力作用下产生变形,而弹性常数则定量描述了材料对应力的响应。

弹性常数包括弹性模量、剪切模量、泊松比等。

通过计算这些弹性常数,我们可以了解材料的机械性能和应力应变行为。

首先,我们需要确定计算材料的晶体结构。

这包括晶胞参数、原子位置和晶胞对称性。

在VASP中,我们使用POSCAR文件来描述晶体结构的具体细节。

POSCAR文件包括晶体的晶胞参数、原子种类和位置等信息。

其次,我们需要生成一系列的应变状态。

常见的应变状态包括体积应变、晶格常数应变和剪切应变。

在VASP中,我们可以使用ISIF标志来控制应变类型。

例如,ISIF=3可以用于计算体积应变,ISIF=2可以用于计算剪切应变。

然后,我们需要进行一系列的弛豫计算。

在每个应变状态下,我们需要优化结构以达到最低的总能量。

这可以通过设置IBRION=2和ISIF=3来实现。

这些计算将给出最优的应变状态下的应力张量。

最后,我们可以使用应力和应变的关系来计算材料的弹性常数。

对于单晶材料,弹性常数可以通过应力张量的分量和应变张量的分量之间的线性关系来得到。

C_ij = (stress_i - stress_0_i) / strain_j其中,C_ij是第i个应力分量(i = 1,2,...,6)和第j个应变分量(j = 1,2,...,6)之间的弹性常数,stress_i是在第i个应变分量下计算得到的应力,stress_0_i是在未应变状态下计算得到的应力,strain_j是第j个应变分量。

使用以上计算方法,我们可以得到材料的弹性常数。

侯柱峰-vasp计算晶体弹性常数

侯柱峰-vasp计算晶体弹性常数

侯柱峰-vasp计算晶体弹性常数引言晶体弹性常数是描述晶体材料力学性质的重要参数之一,对于理解材料的力学行为和设计新材料具有重要意义。

在材料科学领域中,计算晶体弹性常数的方法多种多样,其中基于第一性原理的计算方法得到了广泛的应用和认可。

本文将介绍侯柱峰等人在VASP软件包中计算晶体弹性常数的方法和步骤。

VASP简介VASP(Vienna Ab-initio Simulation Package)是一款基于密度泛函理论(DFT)的第一性原理计算软件包,由维也纳大学的J. Hafner教授及其团队开发。

VASP以固体物理和材料科学为核心,广泛应用于研究材料的电子结构、力学性质、热力学性质等方面。

VASP计算晶体弹性常数的方法1. 结构优化在计算晶体弹性常数之前,首先需要通过VASP进行结构优化。

结构优化的目的是找到晶体的平衡结构,使得能量最低。

在结构优化过程中,需要设定材料的晶格参数、原子种类和初始位置等参数,并设置计算的精度和收敛标准。

2. 弹性常数计算前的准备在进行弹性常数计算之前,需要对结构进行静力学计算,即计算晶体的内部应力状态。

为此,需要在INCAR文件中设置一些相关的参数,例如选用的泛函类型、截断能等。

3. 弹性常数计算在进行弹性常数计算之前,需要在INCAR文件中添加以下参数:ISTART = 1ICHARG = 2ENCUT = 520ISYM = 0ISMEAR = 0然后运行VASP进行弹性常数的计算。

计算完成后,可以得到弹性常数矩阵,其中包括36个元素,分别对应不同的弹性常数。

4. 弹性常数的后处理在得到弹性常数矩阵之后,需要进行一些后处理来得到弹性常数的具体数值。

这一步可以使用第三方软件进行,例如使用MATLAB来计算并提取需要的弹性常数。

结论侯柱峰等人在VASP软件包中提供了一种计算晶体弹性常数的方法,可以方便而准确地得到晶体的力学性质。

这种方法基于第一性原理,充分考虑了材料的电子结构和原子之间的相互作用,具有很高的可靠性和适用性。

如何用VASP计算晶格常数

如何用VASP计算晶格常数

如何用VASP计算晶格常数VASP是一款常用的第一性原理计算软件,可用于计算各种物理和化学性质,包括晶格常数。

本文将通过详细的步骤指导如何使用VASP计算晶格常数。

1.准备工作:在使用VASP计算晶格常数之前,需要准备以下文件:-INCAR文件:包含所有计算参数的输入文件。

- POSCAR文件:包含体系的原子坐标和晶格常数的输入文件。

可以使用外部软件生成,例如Materials Studio、VESTA等。

-POTCAR文件:包含原子势能信息的文件。

-KPOINTS文件:用于定义k点网格,用于计算能带结构。

可以使用自动生成工具进行生成。

2.设置INCAR文件:打开INCAR文件,设置以下参数:-ENCUT:截断能。

一种势能截断参数,对计算结果影响较大。

可通过多次计算逐渐增大其值,直到结果收敛为止。

- ISMEAR:用于定义电子占据数的方法。

常用的选项有Gaussian和Methfessel-Paxton。

- SIGMA:在使用ISMEAR选项为Gaussian时,用于定义宽度的参数。

一般选择小于0.2 eV。

- PREC:定义计算的精度级别。

常用的设置有Low、Normal和High。

-NSW:定义离子进行多少步的迭代。

-ISTART和ICHARG:对于初始的计算,将其设置为0。

-EDIFF:收敛判据。

设置一个合适的值,使得计算结果收敛。

3.设置POSCAR文件:打开POSCAR文件,设置晶体的结构参数。

可以手动输入原子的坐标,或者复制其他软件生成的文件内容。

4.设置POTCAR文件:在VASP的安装目录中,找到POTCAR文件夹,并将需要使用的原子势能文件复制到当前工作目录中。

注意保持POTCAR文件的顺序和POSCAR文件中原子的顺序一致。

5.设置KPOINTS文件:打开KPOINTS文件,在其中设置k点的信息。

k点的密度对计算结果的精度有一定影响,可以根据具体需求进行调整。

在这里,我们将只计算晶格常数,因此可以选择较低的k点密度。

vasp计算弹性常数

vasp计算弹性常数

vasp计算弹性常数
VASP计算弹性常数
1、什么是VASP计算弹性常数
VASP是Vienna Ab initio Simulation Package(维也纳基础仿真软件包)的缩写,它是一种针对第一性原理计算的电子结构和性质的软件套件。

它在计算与物理、化学能量和结构有关的量时具有非常强大的能力,可以计算出材料的结构构型、热力学性质以及电学和光学性质等。

VASP也可以用来计算某个材料的力学性质,从而推断其弹性常数。

2、VASP计算弹性常数的原理
了解VASP计算弹性常数的原理,我们先需要了解Hooke定律。

Hooke定律定义了弹性体(指正交于拉伸方向的任意方向上发生同样变形的材料)应力和应变之间的关系,即:拉伸轴上拉伸应力可以由材料弹性常数通过应变除法表示。

为了计算材料的弹性常数,利用VASP软件可以通过模拟调节其立体结构的应力和应变,从而推断出材料的弹性常数。

它首先会对所模拟的晶体进行平衡计算,根据平衡晶体的初始位置和能量,将其一点点推向应变,然后根据新推向位置和能量,重新计算势函数,最后弹性常数就可以根据VASP软件计算出来。

3、VASP计算弹性常数的常用方法
4、VASP计算弹性常数的应用
VASP计算弹性常数有很多强大而精准的应用,相当多的材料比如金属、合金、多晶体以及纤维、木材和塑料等都可以通过VASP软件来计算它们的弹性常数,从而快速准确地预测出它们在拉伸、压缩、弯曲等应力下的反应情况。

此外,有了VASP的计算结果,我们也可以进一步提取出动态弹性常数,从而更好地了解材料的形变行为及表面粗糙度、能金学性质以及其他有关的研究。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
SYSTEM = AlN ENCUT = 400 ISTART = 0 ICHARG = 2
5
3

ISMEAR = 0; SIGMA = 0.2 NSW = 60; IBRION = 2 EDIFF = 1E-5 EDIFFG = -1E-2 ISIF = 2 POTIM = 0.2 PREC = Accurate LWAVE = .FALSE.
OLDPOS
C%%%%%%%%% Read the undeformed primitive vector and atomic postion %%%%%%% open(7,file=’OLDPOS’) C%% In first line of OLDPOS, please add the number C%% of the type of atoms after the title read(7,*) title, ntype read(7,*) alat do i=1,3 read(7,*) (privect(i,j),j=1,3) write(*,*) (privect(i,j),j=1,3) enddo read(7,*) (natomi(i),i=1,ntype) nn=0 do i =1, ntype nn=nn+natomi(i) enddo read(7,*) direct do i=1, nn read(7,*) (pos(i,j),j=1,3) enddo C%%%%%%%%% Read the amti of strain %%%%%%%%%%%%%%% read(*,*) delta C%%%%%%%%% Define the strain %%%%%%%%%%%%%% strain(1)=delta strain(2)=0.0 strain(3)=0.0 strain(4)=0.0 strain(5)=0.0 strain(6)=0.0 C%%%%%%%%% Define the strain tensor %%%%%%%%%%%%%%%%%%%%%%%% strten(1,1)=strain(1)+1.0
ÆÇ
ù

ª
 ”Define the strain”Í
ù
³
¿
defvector.f
”Define the strain”
e = (δ, δ, 0, 0, 0, 0)
» ñ
Ç
Ö ù
C11 + C12
Ó
Ä
strain(i)
defvect.f
C%%%%%%%%% Define the strain %%%%%%%%%%%%%% strain(1)=delta strain(2)=delta strain(3)=0.0 strain(4)=0.0 strain(5)=0.0 strain(6)=0.0
3

§3
¿Ç î Ç û ña) ¦ì˦ ¿ ð ò òb) k ¢ð Úª Ǒ¿ ¦ì Ùµ Þ k ¿ß Ô¡ µ k ð k ¢ Úª ¢Ý¦ Ç ´ òc) δ ó  ¢ ß Í Æ Þ ¢ ¿Ç ¦ î Ç « Ç ÆAlN Ò ò´¨ Ǒ ¿Ç Ä ª ¦ èÁ ò Æ ù ñ • ÆAlNÆ Æ ¦ è Þ é î POSCAR ûÖ defvector.fÁ è OLDPOS û OLDPOS è Ò ǑOLDPOS¿ ñ a ¿OLDPOS ½è½ ¿title æ¨èè ¾ OLDPOS ¦ ¦ title ǑAlN Ó OLDPOS ½è½ ð”AlN ³ AlN 2” b OLDPOS POSCAR Õ ¢ð ð Á ¦ è ÆAlNǑ OLDPOS ËÆ ñ
¸©¿Ç
SYSTEM = AlN ENCUT = 400 ISTART = 0 ICHARG = 2 ISMEAR = -5 EDIFF = 1E-5 PREC = Accurate LWAVE = .FALSE.
Þ
´¨ ½ÓÍ ½
INCAR.static
AlN 2 3.11553 1.000000 0.000000 0.000000 -0.500000 0.866025 0.000000 0.000000 0.000000 1.605000 2 2 Direct 0.00000000 0.00000000 0.00000000 0.333333333 0.666666667 0.50000000 0.00000000 0.00000000 0.381483673 0.333333333 0.666666667 0.881483673
ij
¦
Î
[1, 2]
σ
ùþǑñ Ǒñ
ǫ=
e1 1 2 e6 1 2 e5
1 2 e6
e2
1 2 e5 1 2 e4
1 2 e4
e3
.
(1)
σi =
¦
1 V
∂E (V, ǫj ) ∂ǫi
,
ǫ=0
(2)
Cij =
1 V
∂ 2 E (V, ǫk ) ∂ǫi ∂ǫj 1
,
ǫ=0
(3)
2
Ǒ
− →′ − → R = R • (I + ǫ)
î è Æ
Æ ½ Æ
§2
Æ ð Æ æ
Æ ¦ì
Æ Æ ¦
a1
Ǒñ
Í
1 2a 1 2a
³
0 0 . c (6)
− → R = a2 = a3
√ 3 a 2 √ 3 − 2 a
0
0
a
c
e = (δ, δ, 0, 0, 0, 0)
defvector.f
ð
¸
3
POSCAR
ºÍ”Define the
3

strain”
ËÆ ñ
ùþ ­
Байду номын сангаас
Á¿ Ë °½
î
defvect.f
C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% C >this simple program to get the primitive vectors after C $\delta$ strain, in order to calculate the independent C elastic constants of solids. C usage: C!!!!! Please first prepare the undeformed POSCAR in C >defvector.x C >type defvector.x > create new POSCAR in file fort.3 C%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% program defvector real*8 privect,strvect,delta,strten,strain,pos, alat dimension privect(3,3),strvect(3,3),strten(3,3),strain(6) dimension pos(50,3) character*10 bravlat, title, direct integer i,j,k,ntype, natomi, nn dimension natomi(10)
VASP
Ç
2006
Òñ õ 8 Ò
21
Æ ¦
Cij
(zfhou@)
Æ é Æ î
ý Ǒ ¼« ÄVASPÇ Æ ¦ C ËÆ æ » ììì
ij
§1 §2 §3
¦ Î Æ Æ ¦ ÆÇ ù
õ
[1, 2] 1
Í
§1
³
2 3
¦ ª Æ © ǫ Ǒ ¿ ¢ ìõ Æ ËÍ ¢ ¿ ³ § ù ¦ C ð ³ VoigtÁÈñ xx → 1, yy → 2, zz → 3, yz → 4, xz → 5 xy → 6 ǫù á þǑñ
4
3

strten(1,2)=0.5*strain(6) strten(1,3)=0.5*strain(5) strten(2,1)=0.5*strain(6) strten(2,2)=strain(2)+1.0 strten(2,3)=0.5*strain(4) strten(3,1)=0.5*strain(5) strten(3,2)=0.5*strain(4) strten(3,3)=strain(3)+1.0 C%%%%%%%%% Transform the primitive vector to the new vector under strain%%%%% C strvect(i,j)=privect(i,j)*(I+strten(i,j)) do k=1,3 do i=1,3 strvect(i,k)=0.0 do j=1,3 strvect(i,k)=strvect(i,k)+privect(i,j)*strten(j,k) enddo enddo enddo C%%%%%%%% Write the new vector under strain%%%%%%%%%%%% do i=1,3 write(*,100)(strvect(i,j),j=1,3) enddo 100 format(3f20.15) C%%%%%%%%% Create the POSCAR for total energy calculation %%%%%%%%%%%%%%5 write(3,’(A10)’) title write(3,’(f15.10)’) alat do i=1,3 write(3,100)(strvect(i,j),j=1,3) enddo write(3,’(10I4)’) (natomi(i), i=1,ntype) write(3,’(A6)’) Direct do i=1, nn write(3,100) (pos(i,j),j=1,3) enddo C%%%%%%% end
相关文档
最新文档