11 integer ik,ist,np,nfp,i
12 integer ist0,ist1,jst0,jst1
13 integer l,i1,i2,i3,nthd
14 real(8) e0,e1,v(3),x,fn
16 real(8),
allocatable :: evalfv(:,:),vpc(:,:)
17 complex(8),
allocatable :: evecfv(:,:,:),evecsv(:,:)
19 real(8),
external :: sdelta
46 write(*,
'("Info(fermisurf): ",I6," of ",I6," k-points")') ik,
nkpt 49 call eveqn(ik,evalfv,evecfv,evecsv)
53 deallocate(evalfv,evecfv,evecsv)
80 open(50,file=
'FERMISURF_UP.OUT',form=
'FORMATTED',action=
'WRITE')
83 open(50,file=
'FERMISURF_DN.OUT',form=
'FORMATTED',action=
'WRITE')
87 open(50,file=
'FERMISURF.OUT',form=
'FORMATTED',action=
'WRITE')
90 if ((
task == 100).or.(
task == 101))
then 97 ist0=min(ist0,ist); ist1=max(ist1,ist)
104 if ((
task == 100).or.(
task == 103))
then 105 write(50,
'(3I6," : grid size")')
np3d(:)
112 if (
task == 100)
then 123 write(50,
'(4G18.10)') vpc(:,i),fn
128 write(50,
'(4I6," : grid size, number of states")')
np3d(:),ist1-ist0+1
135 write(50,
'(3G18.10)',advance=
'NO') vpc(:,i)
137 if (
task == 101)
then 143 write(50,
'(F14.8)',advance=
'NO') sdelta(
stype,x)/
swidth 154 write(*,
'("Info(fermisurf):")')
156 write(*,
'(" 3D Fermi surface data written to FERMISURF_UP.OUT and & 157 &FERMISURF_DN.OUT")')
159 write(*,
'(" 3D Fermi surface data written to FERMISURF.OUT")')
161 if (
task == 100)
then 162 write(*,
'(" in terms of the product of eigenvalues minus the Fermi energy")')
163 else if (
task == 101)
then 164 write(*,
'(" in terms of separate eigenvalues minus the Fermi energy")')
165 else if (
task == 103)
then 166 write(*,
'(" in terms of a smooth delta function at the Fermi energy")')
168 write(*,
'(" in terms of separate delta functions at the Fermi energy")')
real(8), dimension(:,:), allocatable evalsv
integer, dimension(:,:,:), allocatable ivkik
pure subroutine plotpt3d(vpl)
subroutine eveqn(ik, evalfv, evecfv, evecsv)
integer, dimension(3) ngridk
real(8), dimension(3, 3) bvec
subroutine holdthd(nloop, nthd)
integer, dimension(3) np3d
pure subroutine r3mv(a, x, y)