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): ",I0," of ",I0," k-points")') ik,
nkpt 49 call eveqn(ik,evalfv,evecfv,evecsv)
53 deallocate(evalfv,evecfv,evecsv)
74 open(50,file=
'FERMISURF_UP.OUT',form=
'FORMATTED',action=
'WRITE')
77 open(50,file=
'FERMISURF_DN.OUT',form=
'FORMATTED',action=
'WRITE')
81 open(50,file=
'FERMISURF.OUT',form=
'FORMATTED',action=
'WRITE')
84 if ((
task == 100).or.(
task == 101))
then 91 ist0=min(ist0,ist); ist1=max(ist1,ist)
98 if ((
task == 100).or.(
task == 103))
then 99 write(50,
'(3I6," : grid size")')
np3d(:)
106 if (
task == 100)
then 117 write(50,
'(4G18.10)') vpc(:,i),fn
122 write(50,
'(4I6," : grid size, number of states")')
np3d(:),ist1-ist0+1
129 write(50,
'(3G18.10)',advance=
'NO') vpc(:,i)
131 if (
task == 101)
then 137 write(50,
'(F14.8)',advance=
'NO') sdelta(
stype,x)/
swidth 148 write(*,
'("Info(fermisurf):")')
150 write(*,
'(" 3D Fermi surface data written to FERMISURF_UP.OUT and & 151 &FERMISURF_DN.OUT")')
153 write(*,
'(" 3D Fermi surface data written to FERMISURF.OUT")')
155 if (
task == 100)
then 156 write(*,
'(" in terms of the product of eigenvalues minus the Fermi energy")')
157 else if (
task == 101)
then 158 write(*,
'(" in terms of separate eigenvalues minus the Fermi energy")')
159 else if (
task == 103)
then 160 write(*,
'(" in terms of a smooth delta function at the Fermi energy")')
162 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)