c g.f
c evaluates bare greens function for 2d kronig-penny model calculation.
c r. b. laughlin - 24 jan 07.
      parameter(n=20)
      dimension f(n),e(10)
      complex z,g
c establish desired numerical accuracy.
      eps=0.0001
c fill reciprocal lattice regularization array.
      x=n**2
      beta=-2.0*alog(eps)/x    
      do 1 j=1,n
      x=j-1
      f(j)=exp(-beta*x**2/2.0)
    1 continue
      nn=2*n-1
c open output file.
      open(7,file=\"output.dat\",status=\"new\")
c pick q.
      qx=0.0
      qy=0.0
c loop on energies
      de=0.01
      do 3 i=1,1001
      e0=(i-1)*de-4.0
c for this energy generate bare green's function.
      z=e0+cmplx(0.0,eps)
      g=0.0
      do 2 jj=1,nn
      do 2 kk=1,nn
      j=jj-n
      k=kk-n
      x=qx+j
      y=qy+k
      if(j.lt.0) j=-j
      if(k.lt.0) k=-k
      g=g+f(j+1)*f(k+1)/(z-(x**2+y**2)/2.0)
    2 continue
c clip real part for better plotting
      gr=real(g)
      gi=aimag(g)
      if(gr.gt.50.0) gr=50.0
      if(gr.lt.-50.0) gr=-50.0
      write(7,20) e0,gr,gi
    3 continue
   20 format(f10.4,2e18.7)
      stop
      end