57 lines
937 B
Fortran
57 lines
937 B
Fortran
|
program square
|
||
|
|
||
|
implicit none
|
||
|
|
||
|
integer :: nside,nsite,nelec
|
||
|
integer :: ix,iy,iz,i
|
||
|
real*16 :: factor,bbfac
|
||
|
real*16 :: uee,ubb,eta0,aux
|
||
|
real*16 :: start,finish
|
||
|
real*16,allocatable :: sin2(:)
|
||
|
|
||
|
open(unit=10,file='input')
|
||
|
read(10,*) nside
|
||
|
close(10)
|
||
|
|
||
|
call cpu_time(start)
|
||
|
|
||
|
nsite = nside
|
||
|
nelec = nside**2
|
||
|
|
||
|
bbfac = 1.139479116668307748953273191122493968q0
|
||
|
|
||
|
write(6,*) "total number of electrons",nelec
|
||
|
|
||
|
allocate(sin2(nsite))
|
||
|
|
||
|
factor=acos(-1q0)/nsite
|
||
|
do i = 0, nsite-1
|
||
|
sin2(i+1) = (sin(factor*i))**2
|
||
|
enddo
|
||
|
|
||
|
uee = 0q0
|
||
|
do ix = 0, nsite-1
|
||
|
do iy = 0, nsite-1
|
||
|
if (ix+iy==0) cycle
|
||
|
aux = sqrt(sin2(ix+1)+sin2(iy+1))
|
||
|
uee = uee + 1q0/aux
|
||
|
enddo
|
||
|
enddo
|
||
|
|
||
|
factor=sqrt(acos(-1q0))/(nsite*2q0)
|
||
|
uee=uee*factor
|
||
|
|
||
|
ubb = nelec*bbfac/nside
|
||
|
|
||
|
eta0 = uee - ubb
|
||
|
|
||
|
print*,'eta0 (in Ry and Ha) =', 2q0*eta0, eta0
|
||
|
print*, uee,ubb
|
||
|
|
||
|
deallocate(sin2)
|
||
|
|
||
|
call cpu_time(finish)
|
||
|
print '("Time = ",f12.3," seconds.")',finish-start
|
||
|
|
||
|
end program square
|