| 查看: 401 | 回复: 2 | |||
| 当前主题已经存档。 | |||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | |||
[交流]
【求助】在VASP中能否输出d-t2g的态密度?
|
|||
|
请问各位虫友,能否用VASP计算出d-t2g的DOS? 期待大家的指点 |
» 猜你喜欢
有时候真觉得大城市人没有县城人甚至个体户幸福
已经有5人回复
酰胺脱乙酰基
已经有9人回复
CSC & MSCA 博洛尼亚大学能源材料课题组博士/博士后招生|MSCA经费充足、排名优
已经有5人回复
有70后还继续奋斗在职场上的吗?
已经有6人回复
博士延得我,科研能力直往上蹿
已经有7人回复
退学或坚持读
已经有27人回复
面上基金申报没有其他的参与者成吗
已经有5人回复
遇见不省心的家人很难过
已经有22人回复
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫(金币+0.5):给个红包,谢谢回帖交流
guifan(金币+2,VIP+0): 9-30 21:09
wuchenwf(金币+10,VIP+0):谢谢 10-1 22:36
小木虫(金币+0.5):给个红包,谢谢回帖交流
guifan(金币+2,VIP+0): 9-30 21:09
wuchenwf(金币+10,VIP+0):谢谢 10-1 22:36
|
给你一个提取t2, eg的源代码,自己编写的,有些粗糙,仅满足一般的要求,可以提取pdos,t2-eg dos以及积分。只针对考虑自选以及不考虑f电子的情况下,欢迎指正。 !initializing all parameters !E s-up s-down py-up py-down pz-up pz-down px-up ! px-down dxy-up dxy-down dyz-up dyz-down ! dz2-up dz2-down dxz-up dxz-down dx2-up dx2-down real*8,allocatable :: dos_matrix(:, ,integral_spdos(:, ,t2g_eg(:, ,pdos(:, ,integral_t2g_eg(:,![]() real*8 :: fermi,normalization,enmax,enmin,step integer(kind=8) :: i,j,rows,columns=19,nth,iserror character(len=8) filename write(*,*)"please input the number of atoms " read(*,*),nth open(unit=11,file='DOSCAR',form='formatted',status='old',iostat=iserror) if (iserror>0) then write(*,*)"The DOSCAR file does not exist" goto 200 end if !filename= "sitedos.dat" open(unit=12,file="SPDOS.dat",form='formatted',status='replace') open(unit=13,file='t2g_eg.dat',form='formatted',status='replace') open(unit=14,file='PDOS.dat',form='formatted',status='replace') open(unit=15,file='INSPDOS.dat',form='formatted',status='replace') open(unit=16,file='INt2g_eg.dat',form='formatted',status='replace') write(13,*)'# E,t2g_up,t2g_dn,eg_up,eg_dn' write(14,*)'# E,s_up,s_dn,p_up,p_dn,d_up,d_dn' !skip iformation of start do i=1,5 read (11,*) end do !read fermi energy and rows read (11,*)enmax,enmin,rows,fermi,normalizatio step=(enmax-enmin)/(rows-1) allocate(dos_matrix(rows,columns)) allocate(integral_spdos(rows,columns)) allocate(t2g_eg(rows,5)) allocate(pdos(rows,7)) allocate(integral_t2g_eg(rows,5)) integral_spdos(:, =0!skip to the nth atoms do i= 1,(rows+1) read(11,*) end do do i=1,rows read(11,'(19E12.5)')(dos_matrix(i,j),j=1,19) dos_matrix(i,1)=dos_matrix(i,1)-fermi do j=3,columns if((mod(j,2).EQ.1))then dos_matrix(i,j)=-1*dos_matrix(i,j) else endif end do !calcualte SPDOS, write SPDOS.dat file write(12,'(19E12.3)')(dos_matrix(i,j),j=1,19) !calcualte DOS of t2g and eg, write t2g_eg.dat file t2g_eg(i,1)=dos_matrix(i,1) !initializing all parameters !E s-up s-down py-up py-down pz-up pz-down px-up ! px-down dxy-up dxy-down dyz-up dyz-down ! dz2-up dz2-down dxz-up dxz-down dx2-up dx2-down real*8,allocatable :: dos_matrix(:, ,integral_spdos(:, ,t2g_eg(:, ,pdos(:, ,integral_t2g_eg(:,![]() real*8 :: fermi,normalization,enmax,enmin,step integer(kind=8) :: i,j,rows,columns=19,nth,iserror character(len=8) filename write(*,*)"please input the number of atoms " read(*,*),nth open(unit=11,file='DOSCAR',form='formatted',status='old',iostat=iserror) if (iserror>0) then write(*,*)"The DOSCAR file does not exist" goto 200 end if !filename= "sitedos.dat" open(unit=12,file="SPDOS.dat",form='formatted',status='replace') open(unit=13,file='t2g_eg.dat',form='formatted',status='replace') open(unit=14,file='PDOS.dat',form='formatted',status='replace') open(unit=15,file='INSPDOS.dat',form='formatted',status='replace') open(unit=16,file='INt2g_eg.dat',form='formatted',status='replace') write(13,*)'# E,t2g_up,t2g_dn,eg_up,eg_dn' write(14,*)'# E,s_up,s_dn,p_up,p_dn,d_up,d_dn' !skip iformation of start do i=1,5 read (11,*) end do !read fermi energy and rows read (11,*)enmax,enmin,rows,fermi,normalizatio step=(enmax-enmin)/(rows-1) allocate(dos_matrix(rows,columns)) allocate(integral_spdos(rows,columns)) allocate(t2g_eg(rows,5)) allocate(pdos(rows,7)) allocate(integral_t2g_eg(rows,5)) integral_spdos(:, =0!skip to the nth atoms do i= 1,(rows+1) read(11,*) end do do i=1,rows read(11,'(19E12.5)')(dos_matrix(i,j),j=1,19) dos_matrix(i,1)=dos_matrix(i,1)-fermi do j=3,columns if((mod(j,2).EQ.1))then dos_matrix(i,j)=-1*dos_matrix(i,j) else endif end do !calcualte SPDOS, write SPDOS.dat file write(12,'(19E12.3)')(dos_matrix(i,j),j=1,19) !calcualte DOS of t2g and eg, write t2g_eg.dat file t2g_eg(i,1)=dos_matrix(i,1) t2g_eg(i,2)=dos_matrix(i,10)+dos_matrix(i,12)+dos_matrix(i,16) t2g_eg(i,3)=dos_matrix(i,11)+dos_matrix(i,13)+dos_matrix(i,17) t2g_eg(i,4)=dos_matrix(i,14)+dos_matrix(i,18) t2g_eg(i,5)=dos_matrix(i,15)+dos_matrix(i,19) write(13,'(5E12.3)')(t2g_eg(i,j),j=1,5) !calculate PDOS and write PDOS.dat pdos(i,1)=dos_matrix(i,1) pdos(i,2)=dos_matrix(i,2) pdos(i,3)=dos_matrix(i,3) pdos(i,4)=dos_matrix(i,4)+dos_matrix(i,6)+dos_matrix(i,8) pdos(i,5)=dos_matrix(i,5)+dos_matrix(i,6)+dos_matrix(i,9) pdos(i,6)=t2g_eg(i,2)+t2g_eg(i,4) pdos(i,7)=t2g_eg(i,3)+t2g_eg(i,5) write(14,'(7E12.3)')(pdos(i,j),j=1,7) end do write(*,*)step !integrate SPDOS and write integral_spdos.dat integral_spdos(:,1)=dos_matrix(:,1) do i=2,rows do j=2, columns integral_spdos(i,j)=(dos_matrix(i-1,j)+dos_matrix(i,j))*step*0.5+integral_spdos(i-1,j) end do integral_t2g_eg(i,1)=integral_spdos(i,1) integral_t2g_eg(i,2)=integral_spdos(i,10)+integral_spdos(i,12)+integral_spdos(i,16) integral_t2g_eg(i,3)=integral_spdos(i,11)+integral_spdos(i,13)+integral_spdos(i,17) integral_t2g_eg(i,4)=integral_spdos(i,14)+integral_spdos(i,18) integral_t2g_eg(i,5)=integral_spdos(i,15)+integral_spdos(i,19) end do write(15,'(19F7.3)')((integral_spdos(i,j),j=1,19),i=1,rows) write(16,'(5F7.3)')((integral_t2g_eg(i,j),j=1,5),i=1,rows) deallocate (dos_matrix) deallocate (integral_spdos) deallocate (pdos) deallocate (t2g_eg) deallocate (integral_t2g_eg) close (11) close (12) close (13) close (14) close (15) close (16) 200 end |
3楼2009-09-30 10:33:10
liluyan
银虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 804.4
- 帖子: 382
- 在线: 20.6小时
- 虫号: 538600
- 注册: 2008-04-03
- 性别: MM
- 专业: 凝聚态物性 II :电子结构
2楼2009-09-23 13:45:27













回复此楼
,integral_spdos(:,