# Bandstructure of an homogeneous optical lattice

## Theory

At this first moment, we shall look at the simplest case, i.e. a single particle of mass m which experiences a periodic potential $V(\vec{r})$, where

$V(\vec{r}) = \sum_{x_\alpha = x,y,z} V_0^{x_\alpha} \sin^2 (\pi x_\alpha)$

in the units of recoil energy $E_r^\alpha = \frac{\hbar^2}{2m} \left( \frac{2\pi}{\lambda_\alpha} \right)^2$ and lattice spacing $\frac{\lambda_\alpha}{2}$.

The quantum mechanical behaviour of the single particle follows

$\left[\frac{1}{\pi^2} \left( -i \nabla + 2\pi \vec{k} \right)^2 + \sum_{x_\alpha = x,y,z} V_0^{x_\alpha} \sin^2 (\pi x_\alpha) \right] u_k (\vec{r}) = \epsilon_k u_k(\vec{r})$

which is clearly separable to say the x-component:

$\left[\frac{1}{\pi^2} \left( -i \partial_x + 2\pi k_x \right)^2 + V_0^{x} \sin^2 (\pi x) \right] u_{k_x} (x) = \epsilon_{k_x} u_{k_x}(x) \,\,\,\,\, ,\,\,\,\,\, k_x = 0, \frac{1}{L_x} ,\cdots \frac{L_x-1}{L_x}$

In the plane wave basis,

$u_{k_x} (x) = \frac{1}{\sqrt{L_x}} \sum_{m \in \mathbf{Z}} c_m^{(k_x)} e^{i2m\pi x}$

we arrive at a tridiagonal diagonalization problem:

$\left[ 4(m + k_x)^2 + \frac{V_0^x}{2} \right] c_m^{(k_x)} - \frac{V_0^x}{4} c_{m-1}^{(k_x)} - \frac{V_0^x}{4} c_{m+1}^{(k_x)} = \epsilon_{k_x} c_m^{(k_x)}$

The wannier function is defined as:

$w(x) = \frac{1}{\sqrt{L_x}} \sum_{k_x} u_{k_x} (x) e^{i 2\pi k_x x} = \frac{1}{L_x} \sum_{k_x} \sum_{m \in \mathbf{Z}} c_m^{(k_x)} e^{i 2\pi (m+k_x) x}$

and from there, one can calculate the onsite interaction:

$U = g \int | w(x) |^4 dx = \frac{4 \pi a_s \hbar^2}{m} \int | w(x) |^4 dx$

After a little bit of algebra, we arrive at the hopping strength:

$t = -\frac{1}{L_x} \sum_{k_x} \epsilon_{k_x} e^{-i2\pi k_x}$

Finally, the Fourier transform of the wannier function is:

$\tilde{w}(q_x) = \frac{1}{\sqrt{L_x}} \int w(x) e^{-i2\pi q_x x} dx = \frac{1}{\sqrt{L_x}} \sum_{k_x} \sum_{m \in \mathbf{Z}} c_m^{(k_x)} \delta_{q_x, k_x+m}$

## Implementation in Python

### An example

For instance:

import numpy;
import pyalps.dwa;

V0   = numpy.array([8. , 8. , 8.]);      # in recoil energies
wlen = numpy.array([843., 843., 843.]);  # in nanometer
a    = 114.8;                            # s-wave scattering length in bohr radius
m    = 86.99;                            # mass in atomic mass unit
L    = 200;                              # lattice size (along 1 direction)

band = pyalps.dwa.bandstructure(V0, wlen, a, m, L);


A first glance of the band structure:

>>> band

Optical lattice:
================
V0    [Er] = 8	8	8
lamda [nm] = 843	843	843
Er2nK      = 154.89	154.89	154.89
L          = 200
g          = 5.68473

Band structure:
===============
t [nK] : 4.77051	4.77051	4.77051
U [nK] : 38.7018
U/t    : 8.11272	8.11272	8.11272

wk2[0 ,0 ,0 ] : 5.81884e-08
wk2[pi,pi,pi] : 1.39558e-08


Well, the values of t (nK), U (nK), and U/t can be obtained via:

>>> numpy.array(band.t())
array([ 4.77050984,  4.77050984,  4.77050984])
>>>
>>> numpy.array(band.U())
array(38.7018197381118)
>>>
>>> numpy.array(band.Ut())
array([ 8.11272192,  8.11272192,  8.11272192])