483

display partial DOS in output file

Posted on : October 07, 2019 (Mon) 16:10:44

by Taewon Jin

Dear administrator

I`d like to get information of partial DOS such as Px, Py, Pz and dxy, dx2-y2, dz2

So, I try to fix spmain.f code and compile by following the below link

https://www5.hp-ez.com/hp/calculations/page94


and here is the code to display partial DOS in spmain.f

c --- print partial and the total DOS if required.
if(ids .eq. 1 .or. ids .eq. 2 .or. ids .eq. 3) then
estep=dble(e(2,is))-dble(e(1,is))
write(*,'(///a)')
& '(PDOS DATA: Ry, s, px, pz, py, dxy, dyz, dz^2, dxz, dx^2-y^2)'
do 69 i=1,ncmpx
write(*,'(//1x,a,i2,a,i2)')'DOS of component',i
do 69 k=1,kk
xmd(i,k,1,is)=-dimag(wkc(2,i,k))/pi
cc & (-dimag(wkc(4,i,k))/pi)+(-dimag(wkc(2,i,k))/pi)
xmd(i,k,2,is)=-dimag(wkc(4,i,k))/pi
cc & (-dimag(wkc(4,i,k))/pi)-(-dimag(wkc(2,i,k))/pi)
69 write(*,'(1x,f7.4,3x,9f8.4)') dble(e(k,is))-ef(is)
& ,( -dimag(wkc(l,i,k))/pi,l=1,mxl**2)
c do 160 l=1,mxlcmp(i)
c do 160 l=1,2
c do 160 m=1,2*(l-1)
c 160 wkc(l**2,i,k)=wkc(l**2,i,k)+wkc(l**2-m,i,k)
c wkc(5,i,k)=wkc(5,i,k)+wkc(6,i,k)+wkc(8,i,k)
c wkc(7,i,k)=wkc(7,i,k)+wkc(9,i,k)
c 69 write(*,'(1x,f7.4,3x,4f10.4)') dble(e(k,is))-ef(is)
c & ,(-dimag(wkc(l**2,i,k))/pi,l=1,mxlcmp(i))
if(is .eq. 1) then
write(*,'(//1x,a/(1x,f12.7,f13.5))')
& 'total_up TDOS_up',(dble(e(k,is))-estep/2d0-ef(is)
& ,dimag((detl(k,is)-detl(k-1,is))/(e(k,is)-e(k-1,is)))
& ,k=2,kk)
write(*,'(//1x,a/(1x,f12.7,f13.5))')
& 'integrated_up IDOS_up',(dble(e(k,is))-ef(is)
& ,dimag(detl(k,is)),k=1,kk)
end if
if(is .eq. 2) then
write(*,'(//1x,a/(1x,f12.7,f13.5))')
& 'total_dn TDOS_dn',(dble(e(k,is))-estep/2d0-ef(is)
& ,dimag((detl(k,is)-detl(k-1,is))/(e(k,is)-e(k-1,is)))
& ,k=2,kk)
write(*,'(//1x,a/(1x,f12.7,f13.5))')
& 'integrated_dn IDOS_dn',(dble(e(k,is))-ef(is)
& ,dimag(detl(k,is)),k=1,kk)
end if
--------------

However, it has some errors

Is there any way to treat and display PDOS of Px, Py, Pz and dxy, dx2-y2, dz2?

Sincerely
Taewon Jin