sub_det_shift.f90

Go to the documentation of this file.
00001 subroutine det_shift(NTK,NWF,nsgm,FermiEnergy,sgmw,EKS,EMK,shift_value) 
00002   implicit none
00003   integer::NTK,NWF,nsgm
00004   real(8)::FermiEnergy 
00005   real(8)::sgmw(nsgm)  
00006   complex(8)::EMK(NWF,NTK,nsgm)           
00007   real(8)::EKS(NWF,NTK)           
00008   integer::min_ib,min_ik,min_ie 
00009   real(8)::min_diff,min_eak,diff_ie,diff_ef 
00010   integer::ik,ib,ie
00011   real(8)::shift_value 
00012   real(8),parameter::au=27.21151d0
00013   !
00014   min_diff=1.0d0
00015   do ik=1,NTK 
00016    do ib=1,NWF 
00017     diff_ef=dabs(EKS(ib,ik)-FermiEnergy)
00018     if(diff_ef<min_diff)then 
00019      min_diff=diff_ef  
00020      min_eak=EKS(ib,ik) 
00021      min_ib=ib
00022      min_ik=ik
00023     endif 
00024    enddo!ib
00025   enddo!ik 
00026   !
00027   min_diff=0.1d0
00028   do ie=1,nsgm 
00029    diff_ie=abs(sgmw(ie)-min_eak)
00030    if(diff_ie<min_diff)then 
00031     min_diff=diff_ie 
00032     min_ie=ie
00033    endif 
00034    !write(6,'(a10,f15.10,a10,f15.10)')'sgmw(ie)',sgmw(ie),'min_diff',min_diff 
00035   enddo!ie 
00036   shift_value=dble(EMK(min_ib,min_ik,min_ie))-EKS(min_ib,min_ik) 
00037   !
00038   write(6,*)'min_ib= ',min_ib
00039   write(6,*)'min_ik= ',min_ik
00040   write(6,*)'min_ie= ',min_ie 
00041   write(6,*)'closest EKS(eV)=',EKS(min_ib,min_ik)*au 
00042   write(6,*)'closest sgmw(eV)=',sgmw(min_ie)*au 
00043   write(6,*)'FermiEnergy(eV)=',FermiEnergy*au 
00044   write(6,*)'shift(eV)=',shift_value*au 
00045   ! 
00046 return
00047 end

Generated on 17 Nov 2020 for respack by  doxygen 1.6.1