CyRhmU.jpeg
²é¿´: 8942  |  »Ø¸´: 94
¡¾½±Àø¡¿ ±¾Ìû±»ÆÀ¼Û64´Î£¬×÷ÕßjpchouÔö¼Ó½ð±Ò 50.8 ¸ö
µ±Ç°Ö»ÏÔʾÂú×ãÖ¸¶¨Ìõ¼þµÄ»ØÌû£¬µã»÷ÕâÀï²é¿´±¾»°ÌâµÄËùÓлØÌû

[×ÊÔ´] dos-procar.f90

ÏÈÕfÒ»ÏÂ~СµŲ̈ž³ÈË£¬›]·¨´òº†ówÖÐÎÄ
ÓÃ×ÖDzÔ~ÉÏÒ²ÔS•þÓÐЩ²»Í¬~ÈôÓп´²»¶®Ö®ÌŽ~Õˆ²»ÓÃ¿ÍšâµØÌá³ö~ÖxÖx

֮ǰÓÐÓ‘Õ“ß^ PROCAR ƒÈÈÝ (http://muchong.com/bbs/viewthread.php?tid=6657343)
Á˽â PROCAR Ö®ááÒªŒ‘³ÌʽŒ¢ PROCAR ÞD»¯žé¿ÉÒÔ®‹ˆDµÄ™n°¸~¾Í׃µÃ²»ÊÇÄÇüNµÄÀ§ëy

ÎÒ‚€ÈËÊÇÓXµÃ~Èç¹ûÊÇ´TÊ¿°àŒWÉú~›]ÓдòËãßMÐÞ²©Ê¿°à
ÈçºÎŒ‘³Ìʽ¾Í׃µÃ²»ÊÇÄÇüNµÄÖØÒª
¿ÉÊÇÈç¹û´òËãÒª×x²©°à~»ò¬FÔÚ¾ÍÊDz©°àµÄŒWÉú
ÔÚÓ‹ËãÎïÀí»¯ŒWîIÓò~²»•þÈκγÌʽ•þ׌×Ô¼ºµÄδ?í׃µÄºÜÐÁ¿à
fortran, C, perl, python, shell script, ..... Ä܉òÊìϤÆäÖÐÈκÎÒ»‚€¶¼ÊǺÃ
µ«Ò»‚€¶¼²»•þµÄÔ’.... ºÙºÙ... ÒÔááµÄÈÕ×Ó•þºÜ²»ºÃß^à¸

ÎÒ߀ÊÇÏëÒªÔÙÕfÒ»ÏÂ
¾ÍÎÒËùÖª~ dos-procar.f ß@³Ìʽ×îÔ´î^ÊÇ̨ž³µÄÖÐÕý´óŒWÁºÙ?È«ÀÏŽŸ
µ«ÎÒ²»Äܿ϶¨ß@¼þÊÂ~ÈôÓРŽ×hÕˆÌá³ö ^_^"

ÒÔÏÂ
ÎÒ•þŒ¢ÎÒ×Ô¼ºµÄ dos-procar.f90 ³Ìʽ´aÙN³ö?í (ÐÞ¸Ä×Ô dos-procar.f)
±M¿ÉÄÜÕfÃ÷ÑeÃæƒÈÈÝ
(ps. ÿһÐеÄé_î^”µ×ÖÊÇÐÐÌ–~¸ú³Ìʽ±¾ÉíŸoêP)
³ÌʽÓÃ;ÊÇ:
  1) ×xÈ¡ PROCAR (LORBIT=10) and OUTCAR
  2) ®aÉú total density of state (TDOS) and partial density of state (PDOS) of s-, p-, d-orbital
  3) ·ÖÎöÌØ¶¨Ô­× DOS (LDOS)

  1 !===========================================================================
  2 !  Program dos-procar.f90 :    > é_î^ǰÁùÐеĵÚÒ»‚€×ÖÔª¶¼ÊÇ "!"£¬´ú±íǰÁùÐÐÊÇ"ÕfÃ÷"
  3 !     INPUT FILES : OUTCAR, PROCAR
  4 !   
  5 !   Modified by JPCHOU, Nov. 2013
  6 !===========================================================================
  7       implicit real*8(a-h,o-z)  > FORTRANÔÚʹÓÃ׃”µ•r±ØíšÒªÐû¸æ£¬´ËÐÐÊÇÕfËùÓÐé_î^ÊÇ a, b, c, ...h, o, p, q, ....z µÄ†Î×Ö֮׃”µ~¶¼ÊÇ real*8
  8       character*64 tmp         
  9       dimension ddosP(4),ddosT(4)  > ddosP and ddosT ·Ö„eÊÇ "ÌØ¶¨Ô­×ÓµÄDOS" Åc "Õû‚€Ïµ½yµÄ DOS "
                                                       > ¸÷ÓÐËÄ‚€~·Ö„e´ú±í s-, p-, d-orbital, and total
10       allocatable wt(,oc(:,:,:,,eigen(:,,ee(,na(  > wt: weight, oc: occupations, eigen: eigenvalue, ee: energy, na: number of atom
11       allocatable gdosP(:,,gdosT(:,
12       pi=4.0d0*atan(1.0d0)  ;  netot = 1001 > îAÆÚŒ¢ÄÜÁ¿·Ö³É 1000 üc
13       allocate(ee(netot),gdosP(4,netot),gdosT(4,netot))
14       open(1,file='OUTCAR')  
15 !=================================================================
16       nline = 0 ;  open(99,status='scratch')  > ß@Ò»¶ÎÊÇÈ¥×xÈ¡ OUTCAR£¬?KÕÒµ½ E-fermi ß@Ò»ÐÐ
17  111  read(1,'(a64)',end=222) tmp            > Ä¿µØÊÇÒªµÃµ½ E-fermi µÄÖµ£¬ËùÓÐ energy ±ØíšÆ½ÒÆ E-fermi
18       if(tmp(2:8) .eq. 'E-fermi') nline=nline+1  > open 99 ß@‚€™nÊÇ‚€•º´æ™n~²»•þÕæµÄ´æÔÚ~Ö»•º´æÔÚÓ›‘›ów(memory, ƒÈ´æ?)ƒÈ
19       if(tmp(2:8) .eq. 'E-fermi') write(99,'(a64)') tmp
20       go to 111
21  222  rewind(99)
22       do i=1,nline ; read(99,*) tmp,tmp,fermi ; end do
23       close(99)
24 !=================================================================
25       write(6,'("fermi energy = ",f10.5)') fermi     > 25~30 ÊdzÌʽÅcÈËÖ®égµÄŒ¦Ô’
26       write(6,'("enter the gaussian "')             ;  read(5,*) gaussian  > ½o³Ìʽ Gaussian function µÄ width
27       write(6,'("ISPIN(1/2) = ?  "')                ;  read(5,*) ispin   > ¸æÔV³Ìʽ´Ëϵ½yÊÇ·ñÓÐÓ‹Ëã spin, ÆäŒ?ß@ÙYÓ?Ò²¿ÉÒÔ?Ä OUTCAR È¥×x¾ÍºÃ
28       write(6,'("How many atoms are integrated? "') ;  read(5,*) Nna >¸æÖª³Ìʽ "ÌØ¶¨Ô­×Ó" ¿‚¹²ÓÐŽ×îw
29       allocate(na(Nna))
30       write(6,*) '  atom number :'                   ;  read(5,*) na  >¸æÖª³Ìʽ "ÌØ¶¨Ô­×Ó" ÊÇÄÇŽ×îw (½o¾ŽÌ–~Œ¦‘ªì¶POSCARí˜ÐòµÄ¾ŽÌ–)
31
32       open( 7,file='PROCAR')
33       if(ispin .eq. 1) then
34         open(11,file='gdosP-s.dat')    ; open(51,file='gdosT-s.dat')  > Èç¹ûϵ½y›]ÓÐÓ‹ËãSPIN
35         open(12,file='gdosP-p.dat')    ; open(52,file='gdosT-p.dat')  > „tÝ”³ö™nžé gdosP-s, p, d, A.dat  (ß@ÊÇÌØ¶¨Ô­× DOS)
36         open(13,file='gdosP-d.dat')    ; open(53,file='gdosT-d.dat')  >                  gdosT-s, p, d, A.dat (ß@ÊÇÕû‚€Ïµ½yµÄ DOS)
37         open(14,file='gdosP-A.dat')    ; open(54,file='gdosT-A.dat') >     A: all
38       else if(ispin .eq. 2) then
39         open(11,file='gdosP-up-s.dat') ; open(51,file='gdosT-up-s.dat')  > ÈôÊÇϵ½yÓп¼‘] spin-polarization£¬„tÝ”³ö™n¾Í·Ö up and down
40         open(12,file='gdosP-up-p.dat') ; open(52,file='gdosT-up-p.dat')
41         open(13,file='gdosP-up-d.dat') ; open(53,file='gdosT-up-d.dat')
42         open(14,file='gdosP-up-A.dat') ; open(54,file='gdosT-up-A.dat')
43         
44         open(21,file='gdosP-dn-s.dat') ; open(61,file='gdosT-dn-s.dat')
45         open(22,file='gdosP-dn-p.dat') ; open(62,file='gdosT-dn-p.dat')
46         open(23,file='gdosP-dn-d.dat') ; open(63,file='gdosT-dn-d.dat')
47         open(24,file='gdosP-dn-A.dat') ; open(64,file='gdosT-dn-A.dat')
48       else
49         write(6,*) 'Input ERROR, you must input 1 or 2 ' ; stop
50       end if
51 !===========================================================================
52       do is=1,ispin                                                   >  é_ʼ×xÈ¡ PROCAR£¬ ·ÖƒÉ´Î×x£¬ spin-up and spin-down
53         if(is .eq. 1) read(7,'(a64)') tmp                      > °Ñ›]ÓÐÓõ½µÄƒÈÈݶ¼Óà tmp È¥×xÈ¡µô
54         read(7,'(16x,i3,20x,i4,19x,i4)') nk,nband,nion  > µÃÖªKüc¿‚”µ(nk)~BAND¿‚”µ(nband)~ÅcÔ­×Ó¿‚”µ(nion)
55         if(is .eq. 1) then
56           write(6,'("number of kpoints: ",i4)') nk
57           write(6,'("number of   bands: ",i4)') nband
58           write(6,'("number of    ions: ",i4)') nion
59         end if
60         emin = 9999.0  ;  emax= -9999.0
61         allocate(wt(nk),eigen(nk,nband),oc(nk,nband,nion+1,4))
62         do k=1,nk
63           read(7,'(a64)') tmp
64           read(7,'(10x,i3,5x,3f11.8,13x,f11.8)') kp,pt1,pt2,pt3,wt(k)  > ×xȡÿһ‚€KücÔÚµ¹¿Õég×ù˜ËÅc™àÖØ
65           read(7,'(a64)') tmp
66           do nb=1,nband
67             read(7,'(8x,9x,f14.8,7x,f12.8)') eigen(k,nb),occ  > ×xȡÿ‚€ eigenvalue Åc occupation
68             eigen(k,nb) = eigen(k,nb) - fermi                      > ÄÜÁ¿Æ½ÒÆ E-fermi£¬Ê¹ fermi level ÂäÔÚ 0 üc
69             if(eigen(k,nb) .gt. emax) emax=eigen(k,nb)       > ÕˆÖ±½ÓÌøµ½×îáá
70             if(eigen(k,nb) .lt. emin) emin=eigen(k,nb)
71             read(7,'(a64)') tmp ; read(7,'(a64)') tmp
72             niont = nion +1
73             if(nion .eq. 1) niont = 1
74             do ion = 1,niont
75               read(7,'(3x,4f7.3)') (oc(k,nb,ion,j),j=1,4)
76             end do
77             read(7,'(a64)') tmp
78           end do
79         end do
80 !    ##############################################################
81         weight = 0.0 ; gdosP=0.0d0 ; gdosT=0.0d0
82         do k=1,nk ; weight = weight + wt(k) ; end do
83         do k=1,nk ; wt(k) = wt(k) / weight  ; end do
84         estart_ev = int(emin -5.0)
85         eend_ev   = int(emax +5.0)
86         de_ev     = (eend_ev - estart_ev)/(netot-1)
87         do ne = 1,netot ; ee(ne) = estart_ev + (ne-1) * de_ev ; end do
88         ascal = 1.0/(gaussian*sqrt(pi))
89 !    ###############################################################
90         do k=1,nk ; do nb=1,nband
91           do i=1,4 ; ddosT(i) =     oc(k,nb,niont,i)*wt(k)  ; end do
92           do i=1,4 ; ddosP(i) = sum(oc(k,nb,na(,i)*wt(k)) ; end do
93           do ne=1,netot
94             dij = ( eigen(k,nb)-ee(ne) )**2 / (gaussian**2)
95             do i=1,4
96               gdosT(i,ne) = gdosT(i,ne) + ascal*ddosT(i)*exp(-dij)
97               gdosP(i,ne) = gdosP(i,ne) + ascal*ddosP(i)*exp(-dij)
98             end do
99           end do
100         end do ; end do
101 !    ###############################################################
102         if(is .eq. 1) ns=+1 ; if(is .eq. 2) ns=-1
103         do i=1,4 ; write(is*10+i   ,1) (ee(j),ns*gdosP(i,j),j=1,netot) ; end do
104         do i=1,4 ; write(is*10+i+40,1) (ee(j),ns*gdosT(i,j),j=1,netot) ; end do
105         deallocate(wt,eigen,oc)
106       end do
107 !===========================================================================
108   1   format(f10.5,f12.4)
109       end



Œ¦²»Æð
ÎÒÀÛÁË..............................................................
ÎÒ°lÓXÎÒ‚€ÈË?UÑÔÌ«¶à~³ÌʽÿһÐж¼ÏëÒªÕfЩʲüN
µ«ß@ÊÇ‚€ºÜ›]ЧÂʵÄ×ö·¨
ÇÒ°æÃæ•þ׃ºÜ?y
ËùÒÔÎÒÓXµÃ.......

Œ¦³ÌʽƒÈÈÝÓÐÅdȤµÄÈËÕˆ×ÔÐÐÌá³ö
²»È».... ¾ÍÖ±½ÓÓþͺÃÁË
ÿһÐж¼ÓÐÐÐÌ–
Œ¦ÈÎÒ»ÐÐÓІ–î}µÄÈ˾ͰÑÖ¸¶¨ÐÐÌ–Õf³ö?í
ÎÒÔÙÒ»Ò»»Ø‘ª
ß@˜ÓËÆºõÊDZÈÝ^ÓÐЧÂʵÄ×ö·¨

»òÊÇŒ¦ì¶Ô­³Ìʽ dos-procar.f ÓÐÒɆ–Õß
Ò²¿ÉÒÔÌá³ö?í~´ó¼ÒÓ‘Õ“Ó‘Õ“
»Ø¸´´ËÂ¥

» ±¾Ìû¸½¼þ×ÊÔ´Áбí

  • »¶Ó­¼à¶½ºÍ·´À¡£ºÐ¡Ä¾³æ½öÌṩ½»Á÷ƽ̨£¬²»¶Ô¸ÃÄÚÈݸºÔð¡£
    ±¾ÄÚÈÝÓÉÓû§×ÔÖ÷·¢²¼£¬Èç¹ûÆäÄÚÈÝÉæ¼°µ½ÖªÊ¶²úȨÎÊÌ⣬ÆäÔðÈÎÔÚÓÚÓû§±¾ÈË£¬Èç¶Ô°æÈ¨ÓÐÒìÒ飬ÇëÁªÏµÓÊÏ䣺xiaomuchong@tal.com
  • ¸½¼þ 1 : dos-procar.f90
  • 2013-11-25 18:52:54, 4.89 K

» ÊÕ¼±¾ÌûµÄÌÔÌûר¼­ÍƼö

VASP µÚÒ»ÐÔÔ­ÀíÏà¹ØÎĵµ VASP vasp
VASP Ä£Ä⣬ÀíÂÛ Èí¼þ ѧÊõ

» ±¾ÌûÒÑ»ñµÃµÄºì»¨£¨×îÐÂ10¶ä£©

» ²ÂÄãϲ»¶

» ±¾Ö÷ÌâÏà¹Ø¼ÛÖµÌùÍÆ¼ö£¬¶ÔÄúͬÑùÓаïÖú:

ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
ÒýÓûØÌû:
6Â¥: Originally posted by ±¼ÅܵÄÒ¯ÃÇ at 2013-11-26 00:15:28
ǰ±²£¬Õâ¸ö¶«Î÷ÊǸÉʲôµÄ

ó@!!!
ß@†–î}ÕæÊÇÌáµÄÌ«ÓЄ“Òâ



ß@³ÌʽÊǽo VASP ʹÓÃÕßÔÚ·ÖÎö density of state ÓõÄ
(²»Òª†–ÎÒ density of state ÊÇʲüN~°ÝÓš)
7Â¥2013-11-26 01:15:52
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
²é¿´È«²¿ 95 ¸ö»Ø´ð
ÕæÇ¬ÞÎ
ÑeÃæºÃ¶à±íÇéˆD°¸......
Ô”ÇéÕˆ¿´¸½¼þ
( = : )   = ; )  )
2Â¥2013-11-25 19:36:18
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

dx0620

ľ³æ (ÕýʽдÊÖ)


лл£¬ÎÒ¾õµÃÄãÕâÖÖ·ÖÏí¾«Éñֵ̫µÃ´ó¼ÒѧϰÁË£¬¶ÔÓÚÎÒÃÇÕâÖÖ¶Ô±à³ÌÒ»Öª°ë½âµÄ£¬¾ÍÏëÖªµÀÿһÐÐÿһ¸ö¹Ø¼ü·ûºÅµÄÒâ˼°¡
4Â¥2013-11-25 19:55:36
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû

zuocuiping

ľ³æ (Ö°Òµ×÷¼Ò)


¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶,ÓÅÐãÍÆ¼ö

лл·ÖÏí
Îå¿ÅÐÇ
5Â¥2013-11-25 21:46:51
ÒÑÔÄ   »Ø¸´´ËÂ¥   ¹Ø×¢TA ¸øTA·¢ÏûÏ¢ ËÍTAºì»¨ TAµÄ»ØÌû
¼òµ¥»Ø¸´
dx06203Â¥
2013-11-25 19:43   »Ø¸´  
ÎåÐÇºÃÆÀ  ¶¥Ò»Ï£¬¸Ðл·ÖÏí£¡
¡î ÎÞÐǼ¶ ¡ï Ò»ÐǼ¶ ¡ï¡ï¡ï ÈýÐǼ¶ ¡ï¡ï¡ï¡ï¡ï ÎåÐǼ¶
ÐÅÏ¢Ìáʾ
ÇëÌî´¦ÀíÒâ¼û