11integer ik,ist,np,nfp,i
12integer ist0,ist1,jst0,jst1
13integer l,i1,i2,i3,nthd
14real(8) e0,e1,v(3),x,fn
16real(8),
allocatable :: evalfv(:,:),vpc(:,:)
17complex(8),
allocatable :: evecfv(:,:,:),evecsv(:,:)
19real(8),
external :: sdelta
46 write(*,
'("Info(fermisurf): ",I6," of ",I6," k-points")') ik,
nkpt
49 call eveqn(ik,evalfv,evecfv,evecsv)
53deallocate(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
154write(*,
'("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")')
162 write(*,
'(" in terms of the product of eigenvalues minus the Fermi energy")')
163else if (
task == 101)
then
164 write(*,
'(" in terms of separate eigenvalues minus the Fermi energy")')
165else 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(3, 3) bvec
integer, dimension(3) ngridk
integer, dimension(3) np3d
integer, dimension(:,:,:), allocatable ivkik
real(8), dimension(:,:), allocatable evalsv