pwscf算能带怎样产生inp.kpt

PWSCF计算实例分析(2)--摘
二、能带结构计算
计算fcc Cu的能带结构
calculation='bands'
pseudo_dir = './',
outdir='./',
prefix='cu'
ibrav = 2, celldm(1) =6.73, nat= 1, ntyp= 1,
ecutwfc = 25.0, ecutrho = 300.0, nbnd = 8
&electrons
diagonalization='david'
ATOMIC_SPECIES
Cu 63.55 Cu.pz-d-rrkjus.UPF
ATOMIC_POSITIONS
Cu 0.0 0.0 0.0
0.0 0.0 0.0 1.0
0.0 0.0 0.1 1.0
0.0 0.0 0.2 1.0
0.0 0.0 0.3 1.0
0.0 0.0 0.4 1.0
0.0 0.0 0.5 1.0
0.0 0.0 0.6 1.0
0.0 0.0 0.7 1.0
0.0 0.0 0.8 1.0
0.0 0.0 0.9 1.0
0.0 0.0 1.0 1.0
0.0 0.0 0.0 1.0
0.0 0.1 0.1 1.0
0.0 0.2 0.2 1.0
0.0 0.3 0.3 1.0
0.0 0.4 0.4 1.0
0.0 0.5 0.5 1.0
0.0 0.6 0.6 1.0
0.0 0.7 0.7 1.0
0.0 0.8 0.8 1.0
0.0 0.9 0.9 1.0
0.0 1.0 1.0 1.0
0.0 0.0 0.0 1.0
0.1 0.1 0.1 1.0
0.2 0.2 0.2 1.0
0.3 0.3 0.3 1.0
0.4 0.4 0.4 1.0
0.5 0.5 0.5 1.0
进行能带计算时,calculation须设置为'bands',而且在此之前须进行一次相应的自洽计算,而且要有上一步计算得到输出文件供能带计算时读
入。另外最好在&system中设置nbnd,以指定计算多少条能带。在计算能带时要自己先选定一些高对称点,并产生这些高对称点之间其他点。在
这个例子中,计算沿G-X-L点之间的高对称线上的能带。
在产生所要计算的特殊k点时,可以采用下面简单的f77程序来实现:
c +---------------------------------------------------------
c For generating k-points along the high-symmetry lines in
c Brillouin zone and for calculate band-structures !
c +----------------------------------------------------------
C ---------'syml'---------
c 6 : nhighk
c 20 20 20 10 20 : ndiv(i)
c X 0.5 0.0 0.5 : labhk(1),phighk(1,1),........
c G 0.0 0.0 0.0
c L 0.5 0.5 0.5
c W 0.5 0.25 0.75
c K 0.375 0.375 0.75
c G 0.0 0.0 0.0
c direct & reciprocal lattice vectors over 'emin,
emax' line
C -----------------------
c max k-points = 200
program gk
implicit real*8 (a-h,o-z)
character*2 labhk
dimension tkpt(200,3),pk(200,3),phighk(10,3)
dimension disk(200),dish(10),labhk(10)
dimension ndiv(10)
open(5,file='syml',status='old')
open(7,file='inp.kpt')
read(5,*) nhighk
read(5,*) (ndiv(i),i=1,nhighk-1)
do i=1,nhighk-1
ntkp=ntkp+ndiv(i)
ntotkpt=ntkp+1
if(nhighk&10)then
write(*,*)'Number of high-symmetry k points must &
if(ntotkpt&200)then
write(*,*)'Total number of k points must &=
do i=1, nhighk
read(5,*) labhk(i),(phighk(i,j),j=1,3)
write(*,*) (labhk(i),i=1,nhighk)
c----- generating k-points along high symmetric lines
pk(1,1)=phighk(1,1)
pk(1,2)=phighk(1,2)
pk(1,3)=phighk(1,3)
do i = 2, nhighk
delx = (phighk(i,1) - phighk(i-1,1))/float(ndiv(i-1))
dely = (phighk(i,2) - phighk(i-1,2))/float(ndiv(i-1))
delz = (phighk(i,3) - phighk(i-1,3))/float(ndiv(i-1))
do j=1, ndiv(i-1)
ii = ii + 1
pk(ii,1) = pk(ii-1,1) + delx
pk(ii,2) = pk(ii-1,2) + dely
pk(ii,3) = pk(ii-1,3) + delz
10 format(A34)
weight=1.d0
do i=1,ntotkpt
write(7,200) pk(i,1),pk(i,2),pk(i,3),weight
200 format(3F10.6,F6.2)
c----------------------- end ---------------------------
它的输入文件为syml,输出文件为inp.kpt。其中syml输入文件的格式如下:
15 15 15 15 15 15 15
G 0.0 0.0 0.0
K -0. 0.7 0.
H -0. 0.7 0.
A 0.0 0.0 0.5
G 0.0 0.0 0.0
M 0.0 0.5 0.0
L 0.0 0.5 0.5
A 0.0 0.0 0.5
第一行用来标记有多少个特殊k点,下面是这些特殊k点之间每个要分多少个k点,接着就是这些特殊k点的坐标。
产生的inp.kpt可以之间拷贝到pw.x在计算能带时的输入文件中。
已投稿到:
以上网友发言只代表其个人观点,不代表新浪网的观点或立场。小木虫 --- 600万学术达人喜爱的学术科研平台
热门搜索:
&&查看话题
【求助】PWSCF能带和声子色散曲线计算的时候,K_POINTS如何获取呢?
一些位移型相变,比如BaTiO3的顺电-铁电相变,在相变点附近有软模,这在第一性原理计算中怎么体现呢?是声子谱中存在虚频么?虚频和软模是一回事么?
您好,谢谢您帮忙,那您能提供一下编译好的exe文件么?fortran编译我不懂,而且没下到fortran的编译器。谢谢您
我可以给你一个在win下的程序的,把邮箱给我吧,但是还是要结合特殊K点来的。
那第一原理计算怎么能体现出体系中存在软模呢?
是计算声子态密度图,然后看是不是有靠近0Hz的特征频率?
就是说计算不同条件下的声子谱,然后比较某些震动频率的软化?
那不同温度的声子谱怎么计算呢?
零温零压下的软化是指有0Hz的频率下震动强度不为零的现象么?
学术必备与600万学术达人在线互动!
扫描下载送金币小木虫 --- 600万学术达人喜爱的学术科研平台
热门搜索:
&&查看话题
【原创】pwscf 电子和声子能带计算中的K点的生成
这是我的方法来设定pwscf中计算能带所需要的K点
1. 对结构进行优化,然后用xcrysden看结构,看特殊k点
2. 结合Materials studio 中特殊K点的设置
3. 写syml 文件(下面详述syml文件的写法)
4. 运行附件中的bk.exe,得到所需要的K点。注意将最后一个K点去掉,(这是一个小bug,这是一个多余的K点,然后把K点数减1就行了)
5. 用pw.x计算能带的时候,注意,kpoint的单位为 “crystal”,不能用默认的tpiba单位
6. 在进行声子谱的计算的时候,matdyn.x 只认识tpiba单位,怎么办呢?这里我提出一个办法,非常简单,就是用pw.x 进行能带结构的计算,没必要让能带计算进行完,大概5秒钟就能强制停止,然后看out文件,会发现pw.x会将crystal 单位的K点转换为 tpiba单位的k点。手动删掉些东西,就能得到matdyn.x所需要的以tpiba为单位的K点。
syml文件的写法:
它的输入文件为syml,输出文件为inp.kpt。其中syml输入文件的格式如下:
15 15 15 15 15 15 15
G 0.0 0.0 0.0
K -0. 0.7 0.
H -0. 0.7 0.
A 0.0 0.0 0.5
G 0.0 0.0 0.0
M 0.0 0.5 0.0
L 0.0 0.5 0.5
A 0.0 0.0 0.5
第一行用来标记有多少个特殊k点,下面是这些特殊k点之间每个要分多少个k点,接着就是这些特殊k点的坐标。
产生的inp.kpt可以之间拷贝到pw.x在计算能带时的输入文件中。
2,建议你用用xcrysden和MS试试看。一般xcrysden是不给出特殊K点的名称的,所以要通过MS来确定名称
您说的"用两个特殊k点的坐标相减,然后将其等分的方法得到k点"是什么意思呀?有点不懂了
我是新来的,请多指教
就是平面几何中:已知两个特殊点,求他们连线的方法
学术必备与600万学术达人在线互动!
扫描下载送金币博客访问: 685211
博文数量: 281
博客积分: 7225
博客等级: 少将
技术积分: 5083
注册时间:
IT168企业级官微
微信号:IT168qiye
系统架构师大会
微信号:SACC2013
·PWSCF计算实例分析(2)
二、能带结构计算计算fcc Cu的能带结构&controlcalculation='bands'pseudo_dir = './',outdir='./',prefix='cu'/&systemibrav = 2, celldm(1) =6.73, nat= 1, ntyp= 1,ecutwfc = 25.0, ecutrho = 300.0, nbnd = 8/&electronsdiagonalization='david'/ATOMIC_SPECIESCu 63.55 Cu.pz-d-rrkjus.UPFATOMIC_POSITIONSCu 0.0 0.0 0.0K_POINTS280.0 0.0 0.0 1.00.0 0.0 0.1 1.00.0 0.0 0.2 1.00.0 0.0 0.3 1.00.0 0.0 0.4 1.00.0 0.0 0.5 1.00.0 0.0 0.6 1.00.0 0.0 0.7 1.00.0 0.0 0.8 1.00.0 0.0 0.9 1.00.0 0.0 1.0 1.00.0 0.0 0.0 1.00.0 0.1 0.1 1.00.0 0.2 0.2 1.00.0 0.3 0.3 1.00.0 0.4 0.4 1.00.0 0.5 0.5 1.00.0 0.6 0.6 1.00.0 0.7 0.7 1.00.0 0.8 0.8 1.00.0 0.9 0.9 1.00.0 1.0 1.0 1.00.0 0.0 0.0 1.00.1 0.1 0.1 1.00.2 0.2 0.2 1.00.3 0.3 0.3 1.00.4 0.4 0.4 1.00.5 0.5 0.5 1.0解释:在进行能带计算时,calculation须设置为'bands',而且在此之前须进行一次相应的自洽计算,而且要有上一步计算得到输出文件供能带计算时读入。另外最好在&system中设置nbnd,以指定计算多少条能带。在计算能带时要自己先选定一些高对称点,并产生这些高对称点之间其他点。在这个例子中,计算沿G-X-L点之间的高对称线上的能带。
在产生所要计算的特殊k点时,可以采用下面简单的f77程序来实现:c +---------------------------------------------------------c For generating k-points along the high-symmetry lines inc Brillouin zone and for calculate band-structures !c +----------------------------------------------------------C ---------'syml'---------c 6 : nhighkc 20 20 20 10 20 : ndiv(i)c X 0.5 0.0 0.5 : labhk(1),phighk(1,1),........c G 0.0 0.0 0.0c L 0.5 0.5 0.5c W 0.5 0.25 0.75c K 0.375 0.375 0.75c G 0.0 0.0 0.0c direct & reciprocal lattice vectors over 'emin, emax' lineC -----------------------c max k-points = 200program gkimplicit real*8 (a-h,o-z)character*2 labhkdimension tkpt(200,3),pk(200,3),phighk(10,3)dimension disk(200),dish(10),labhk(10)dimension ndiv(10)copen(5,file='syml',status='old')open(7,file='inp.kpt')cread(5,*) nhighkread(5,*) (ndiv(i),i=1,nhighk-1)do i=1,nhighk-1ntkp=ntkp+ndiv(i)enddontotkpt=ntkp+1 if(nhighk&10)thenwrite(*,*)'Number of high-symmetry k points must & 10!'STOPendifif(ntotkpt&200)thenwrite(*,*)'Total number of k points must &= 200!'STOPendifdo i=1, nhighkread(5,*) labhk(i),(phighk(i,j),j=1,3)enddowrite(*,*) (labhk(i),i=1,nhighk)cc----- generating k-points along high symmetric lines --------ccpk(1,1)=phighk(1,1)pk(1,2)=phighk(1,2)pk(1,3)=phighk(1,3)ii=1do i = 2, nhighkdelx = (phighk(i,1) - phighk(i-1,1))/float(ndiv(i-1))dely = (phighk(i,2) - phighk(i-1,2))/float(ndiv(i-1))delz = (phighk(i,3) - phighk(i-1,3))/float(ndiv(i-1))do j=1, ndiv(i-1)ii = ii + 1pk(ii,1) = pk(ii-1,1) + delxpk(ii,2) = pk(ii-1,2) + delypk(ii,3) = pk(ii-1,3) + delzenddoenddoc10 format(A34)weight=1.d0do i=1,ntotkptwrite(7,200) pk(i,1),pk(i,2),pk(i,3),weightenddo200 format(3F10.6,F6.2)stopendc----------------------- end ---------------------------它的输入文件为syml,输出文件为inp.kpt。其中syml输入文件的格式如下:8 15 15 15 15 15 15 15G 0.0 0.0 0.0K -0. 0.7 0.H -0. 0.7 0.A 0.0 0.0 0.5G 0.0 0.0 0.0M 0.0 0.5 0.0L 0.0 0.5 0.5A 0.0 0.0 0.5
第一行用来标记有多少个特殊k点,下面是这些特殊k点之间每个要分多少个k点,接着就是这些特殊k点的坐标。
产生的inp.kpt可以之间拷贝到pw.x在计算能带时的输入文件中。
阅读(539) | 评论(0) | 转发(0) |
相关热门文章
给主人留下些什么吧!~~
请登录后评论。

我要回帖

更多关于 pwscf 吸附能 的文章

 

随机推荐