VASPdospsocarf.docx
《VASPdospsocarf.docx》由会员分享,可在线阅读,更多相关《VASPdospsocarf.docx(31页珍藏版)》请在冰豆网上搜索。
VASPdospsocarf
实例1
如何用gcc编译dos-procar.f来处理VASP计算得到的procar
如题,VASP计算pdos,含d电子分裂,想在生成的PROCAR中提取数据,然后画图,据说dos-procar.f(
PROCARlmdecomposed+phasefactor
#ofk-points:
63#ofbands:
184#ofions:
48
k-point1:
0.000000000.000000000.00000000weight=0.00165289
band1#energy-0.44451898#occ.2.00000000
ionspypzpxdxydyzdz2dxzdx2tot
10.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
20.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
30.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
40.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
50.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
60.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
70.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
80.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
90.0170.0000.0000.0000.0000.0000.0000.0000.0020.018
...............................................................................................................
editedbyzhjh888888z>whichf77
which:
nof77in(/shared_scratch/pgi.714/linux86-64/7.1-4/bin/:
/home_n22/xqdai2/bin:
/usr/local/bin:
/usr/bin:
/usr/X11R6/bin:
/bin:
/usr/games:
/opt/gnome/bin:
/opt/kde3/bin:
/usr/lib/mit/bin:
/usr/lib/mit/sbin:
/usr/local/maui/sbin:
/usr/local/maui/bin)
on>gcc-odos-procar.xdos-procar.f
Infiledos-procar.f:
1
implicitreal*8(a-h,o-z)
1
Error:
Non-numericcharacterinstatementlabelat
(1)
Infiledos-procar.f:
1
implicitreal*8(a-h,o-z)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
110
1000continue
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
110
1000continue
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
113
dok=1,nk
1
Infiledos-procar.f:
90
2
Error:
Variable'k'at
(1)cannotberedefinedinsideloopbeginningat
(2)
Infiledos-procar.f:
117
dok=1,nk
1
Infiledos-procar.f:
90
2
Error:
Variable'k'at
(1)cannotberedefinedinsideloopbeginningat
(2)
Infiledos-procar.f:
121
101format(10x,f9.5)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
121
101format(10x,f9.5)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
122
102format(f10.5)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
122
102format(f10.5)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
123
103format(20a4)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
123
103format(20a4)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
124
104format(16x,i3,20x,i5,19x,i4)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
124
104format(16x,i3,20x,i5,19x,i4)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
125
105format(10x,i3,5x,3f11.8,13x,f11.8)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
125
105format(10x,i3,5x,3f11.8,13x,f11.8)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
126
106format(4x,i4,9x,f14.8,7x,f12.8)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
126
106format(4x,i4,9x,f14.8,7x,f12.8)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
127
107format(3x,4f7.3)
1
Error:
Badcontinuationlineat
(1)
Infiledos-procar.f:
127
107format(3x,4f7.3)
1
Error:
Unclassifiablestatementat
(1)
Infiledos-procar.f:
134
dok=1,nk-1
1
Infiledos-procar.f:
90
2
Error:
Variable'k'at
(1)cannotberedefinedinsideloopbeginningat
(2)
Infiledos-procar.f:
148
dok=1,nk
1
Infiledos-procar.f:
90
2
Error:
Variable'k'at
(1)cannotberedefinedinsideloopbeginningat
(2)
Infiledos-procar.f:
189
9000continue
1
Error:
EndofnonblockDOstatementat
(1)isinterwovenwithanotherDOloop
Infiledos-procar.f:
192
end
1
Error:
ENDDOstatementexpectedat
(1)
Error:
Unexpectedendoffilein'dos-procar.f'
请问运行gcc-odos-procar.xdos-procar.f后,出现了以上错误是什么原因?
谢谢
实例2
关于VASP计算PDOS的疑问
在计算完TDOS和PDOS之后,不知道怎么将DOS图画出来。
后来找了个dos-procar.f的小脚本,不知道对不对。
在处理之后得到的结果看不懂,以O原子为例:
本来O有sp两个轨道,但是得到的ldos中一共有5列,其中第一列是能量,请问我怎么区分其余四列各是什么啊?
?
还有就是各位有什么更好的处理方式么?
用p4vasp作图,挺方便的。
你可以到网上下载p4vasp。
第2-5列分别是S、py、pz、px
实例3
有关DOSCAR,ldos和Pdos的疑问
Ldos和Pdos的定义在网上见到过,但是关于DOSCAR还有些问题。
1、貌似还有一个Sdos,不知道这个是什么东西,是不是sitedos?
DOSCAR和用split_dos/vp分割出来的DOS0、DOS1……中就应该是这个东西吧。
2、用网上流传的一个Fortran程序dos-procar.f处理结果得到的Ldos的格式是怎么回事的?
在ldos-dn.dat和ldos-up.dat中分别得到五行数据,第一行是能量,后四行是什么?
3、Pdos可以从什么工具中得到?
它的格式是怎么样的?
Ldos应该是localdos,局域到特定的原子上面,split_dos得到的DOS1,DOS2就是每个原子上面的dos;
Pdos应该是partialdos,就是吧dos分为sdos,pdos,ddos这些原子轨道,是在整个晶体的
Ldos为局域态密度,这个我有所了解。
Pdos有人说是partialDOS,不过好像也见过有人解释为projectedDOS。
从split_dos.ksh和vp脚本得到的态密度跟DOSCAR一样的,只不过是把DOSCAR的各个原子的态密度分隔开了。
从dos-procar.f中得到的是Ldos(ldos-up.dat、ldos-dn.dat),这个ldos文件中除了能量之外还有四列数据,不知道这四列数据的含义是什么。
从命名上看,可能是自旋分开而已,4列可能是spdf
如果仅仅是将DOSCAR的自旋分开的话,应该是除了能量之外有9列:
spypzpxdxydyzdz2dzxdx2-dy2。
DOSCAR中没有f电子,ldos中怎么有了f电子?
有几列要取决你有没有算LORBIT=11的计算了。
DOSCAR可以没有,但是我不知道那个程序会不会产生0的一列。
你知道,如果它去判断有几个原子轨道很麻烦的话,可能就直接假定有f电子,只是最后给出的f电子全为0就可以了
dos=sdos+pdos+ddos
实例4
关于PROCAR和DOSCAR
最近在ubuntu下用dos-procar.f文件画分态密度图,编译完运行的时候在输完gaussiansmearingfactor之后就出错退出。
于是换了个split_dos来画,就画出来了。
突然觉得split_dos画的时候完全不需要PROCAR的数据,那么他给出来的数据跟PROCAR给出的数据应该是不同的吧?
两者对应的态密度是一个东西吗?
有人用两者画出来比较过吗?
两者的态密度是一样的。
。
。
楼上画出来比较过?
但PROCAR文件比DOSCAR文件大好几倍喔,包含的信息应该不一样吧?
PROCAR比DOSCAR多的地方是在各个方向上的投影,一般画DOS用DOSCAR即可
split_dos是处理DOSCAR的。
。
。
实例5
VASP计算态密度出现问题
我是用vasp小程序dos-procar.x做态密度地,按正常应该出现
dos-tot-dn.datdos-tot-up.datldos-dn.datldos-up.dat四个文件(自旋极化地计算)
但是当我执行地时候却出现这样地问题:
四个文件中都没有输出,不知为什么,
具体执行是这样:
Spinpolarizedcalculation?
(no=1,yes=2):
2
Enterfermienergy:
7.998856
whichatom(na)youwanttoplotLDOS:
1
enterthegaussiansmearingfactor:
0.2
Segmentationfault
不知哪里除了问题,初学VASP,请大侠指点
还有就是ldos-dn.datldos-up.dat正常输出地时候有5列,各列代表什么意思?
有两点可以考虑一下:
1.查一下你的PROCAR是否正确
2.网上流传的一下VASP后期处理程序都是针对当时VASP输出文件格式写的,有些输出文件格式在新版VASP中略有改变,如果1.没有问题,可以读一下dso-procar的源程序,看看是否和你的PROCAR文件格式匹配,不匹配的话,读入数据格式改一下就行了。
VASP在5.0之后的POSCAR和以前不一样,所以很多程序都会出错,可能是这个原因
你的体系包含几类原子?
如果超过两类,读原子种类数目时会有问题,默认体系原子种类不超过两类,印象中前不久有虫子遇到过这个问题。
解决办法是修改读入原子种类数目的格式,再编译......
我这个体系五种原子,是不是这个原因才没有输出啊?
还有一个问题是是不是在输出地时候按原子种类,也就是在
whichatom(na)youwanttoplotLDOS:
时候选择几种原子就会有几个输出文件,还是在ldos-dn.datldos-up.dat两个文件中全部输出,比方说我在两个选项中选择第二个,第四个原子输出,我是不是应该这么写:
whichatom(na)youwanttoplotLDOS:
24
segmentfault段错误,可能是程序的数组越界了,查看一下程序的数组定义,是否有长度比较小的
我计算态密度地时候也遇到这个问题,但是不知道dos-procar.f怎么修改
实例6
怎么根据PROCAR作DOS和PDOS图
大家好,计算DOS时得到PROCAR,准备学习画DOS和PDOS,共126个K点,每个K点100bands,用lev00处理时提示缺少PROCAR或PROCAR错误,用p4vasp也打不开,请帮我看看
PROCARnewformat
#ofk-points:
126#ofbands:
100#ofions:
24
k-point1:
0.041666670.041666670.04166667weight=0.00462963
band1#energy-29.57997136#occ.2.00000000
ionspdftot
10.2330.0000.0000.0000.233
20.2330.0000.0000.0000.233
30.2330.0000.0000.0000.233
40.2330.0000.0000.0000.233
50.0000.0000.0000.0000.000
60.0000.0000.0000.0000.000
70.0000.0000.0000.0000.000
80.0000.0000.0000.0000.000
90.0000.0000.0000.0000.000
100.0000.0000.0000.0000.000
110.0000.0000.0000.0000.000
120.0000.0000.0000.0000.000
130.0000.0000.0000.0000.000
140.0000.0000.0000.0000.000
150.0000.0000.0000.0000.000
160.0000.0000.0000.0000.000
170.0000.0000.0000.0000.000
180.0000.0000.0000.0000.000
190.0000.0000.0000.0000.000
200.0000.0000.0000.0000.000
210.0000.0000.0000.0000.000
220.0000.0000.0000.0000.000
230.0000.0000.0000.0000.000
240.0000.0000.0000.0000.000
tot0.9370.0010.0000.0000.938
这是其中一部分,下面还有band2-100,接着就是k-points2-126,很长的文件
不知道大家都怎么处理DOS?
学习VASP时间不长,还希望虫友们指点
我使用DOSCAR处理的,应该和PROCAR是一起出来的结果,里面很多列数据,第一列是能量,后面对应s,p_y,p_z,p_x,d_xy,d_yz,d_z2,d_xz,d_x2-y2轨道(VASP出来的结果应该顺序都是一样的)。
数据上下顺序对应POSCAR里面的原子顺序
lev00是处理电荷密度的,p4vasp我只用来打开过POSCAR,没试过PROCAR,可能不支持这种类型吧~
网上不是用vasp的一些tools吗,里面就有一个分析PROCAR的文件,文件名是dos-procar.f,你现将这个文件编译一下,然后就运行这个文件,他会提示你要干什么,运行完后,就可以得到totdos。
dat和ldos。
dat,接着用origin等画图就可以了。
implicitreal*8(a-h,o-z)
parameter(nkd=900)
parameter(nbd=50)
parameter(natmd=20)
parameter(ned=1001)
dimensiondump(20),oc(nkd,nbd,natmd,4),eig_ev(nkd,nbd),wt(nkd)
dimensionee(ned),gpdos(ned),gpdost(ned)
dimensiongpdos_s(ned),gpdos_p(ned),gpdos_d(ned)
open(7,file='PROCAR')
pi=3.141592654
write(*,*)'Spinpolarizedcalculation?
(no=1,yes=2):
'
read(*,*)ispin
if((ispin.ne.1).and.(ispin.ne.2))then
write(*,*)'INPUTERROR,ispinmustequalto1or2'
stop
endif
if(ispin.eq.1)then
open(31,file='ldos.dat')
open(32,file='dos-tot.dat')
elseif(ispin.eq.2)then
open(31,file='ldos-up.dat')
open(32,file='dos-tot-up.dat')
open(41,file='ldos-dn.dat')
open(42,file='dos-tot-dn.dat')
endif
write(6,*)'Enterfermienergy:
'
read(5,*)fermi
cwrite(6,102)fermi
read(7,103)dump
cwrite(6,103)dump
write(6,*)'whichatom(na)youwanttoplotLDOS:
'
read(5,*)na
write(6,*)'enterthegaussiansmearingfactor:
'
read(5,*)gaussian
do9000isp=1,ispin
read(7,104)nk,nband,nion
cwrite(6,104)nk,nband,nion
if(nk.gt.nkd)stop'nktoolarge'
emin=1000.0
emax=-1000.0
do1000k=1,nk
read(7,103)dump
read(7,105)kp,pt1,pt2,pt3,wt(k)
cwrite(6,105)kp,pt1,pt2,pt3,wt(k)
read(7,103)dump
donb=1,nband
read(7,106)nb1,eig_ev(k,nb),occ
cwrite(6,106)nb1,eig_ev(k,nb),occ
eig_ev(k,nb)=eig_ev(k,nb)-fermi
if(eig_ev(k,nb).gt.emax)emax=eig_ev(k,nb)
if(eig_ev(k,nb).lt.emin)emin=eig_ev(k,nb)
read(7,103)dump
read(7,103)dump
cwrite(6,*)'nion=',nion
niont=nion+1
if(nion.eq.1)niont=1
doion=1,niont
read(7,107)(oc(k,nb,ion,j),j=1,4)
cwrite(6,107)(oc(k,nb,ion,j),j=1,4)
en