光格子中のボソン
一様な光格子のバンド構造
理論
まずは最も単純な場合、すなわち周期ポテンシャルを感じる質量 の単一粒子を考えます。
ここで は反跳エネルギー を単位とした格子の深さであり、長さは格子間隔 を単位とします。
単一粒子の量子力学的な振る舞いは次の式に従います。
これは明らかに変数分離でき、例えば 成分については
となります。ここで です。
平面波基底は次のとおりです。
これを用いると、三重対角行列の対角化問題に帰着します。
ワニエ関数は次のように定義されます。
そこから、オンサイト相互作用を計算できます。
少し計算すると、ホッピングの強さが得られます。
最後に、ワニエ関数のフーリエ変換は次のようになります。
Python による実装
スクリプト tutorials/optical-lattice-01-bandstructure/bandstructure.py はこれらの式を評価します。各方向について、すべての に対して上の三重対角問題を対角化し、バンドエネルギー から を求め、 を積分して を求めます。そのディレクトリで次を実行してください。
import numpy as np
import bandstructure
V0 = np.array([8., 8., 8.]) # 格子の深さ(反跳エネルギー単位)
wlen = np.array([843., 843., 843.]) # レーザー波長(nm 単位)
a = 114.8 # s 波散乱長(ボーア半径単位)
m = 86.99 # 質量(原子質量単位)
L = 200 # 格子サイズ(1 方向あたり)
t, U = bandstructure.hubbard_parameters(V0, wlen, a, m, L)
print(t) # t(nK 単位): [4.77051684 4.77051684 4.77051684]
print(U) # U(nK 単位): 38.70187649673881
print(U / t) # U/t: [8.11272191 8.11272191 8.11272191]光格子トラップ中のボソン
ボース・ハバードモデル
ハミルトニアン
光格子トラップ中のボソンは、単一バンドのボース・ハバードモデルによって実効的に記述できます。
ここで、ホッピングの強さ 、オンサイト相互作用の強さ 、化学ポテンシャル を持つ系を、有限温度 において、ディレクテッドループ確率級数展開(SSE)量子モンテカルロコード dirloop_sse で扱います。()は消滅(生成)演算子、 はサイト における数演算子です。光格子中のボソンは、3 次元の放物型トラップポテンシャルに閉じ込められています。
このトラップは、ガウシアンビームのウエストやその他のトラップ源によるものです。
有限温度
有限温度 では、物理は本質的に次の分配関数によって捉えられます。
局所密度のような物理量は次のように与えられます。
ここで は全配置空間中のある配置、 は逆温度です。単位については後ほど巧妙に規格化します。
Python による実装
スクリプト tutorials/optical-lattice-02-density-profile/density_profile.py は、このモデルを の格子上で dirloop_sse によりシミュレーションし、局所密度 をプロットします。上のバンド構造の例から得た 、温度 、格子の中心に置いた等方的なトラップ を用います。トラップは inhomogeneous simple cubic lattice 上のサイトに依存する化学ポテンシャルとして取り込まれます。
import numpy as np
import pyalps
L = 9
K = 0.65 # トラップの曲率 V_T = K r^2(t 単位)
c = (L - 1) / 2.
parms = [{
'LATTICE' : 'inhomogeneous simple cubic lattice',
'L' : L,
'MODEL' : 'boson Hubbard',
'Nmax' : 4,
't' : 1.,
'U' : 8.11,
'mu' : '4.05 - %g*((x-%g)*(x-%g) + (y-%g)*(y-%g) + (z-%g)*(z-%g))' % ((K,) + (c,) * 6),
'T' : 1.,
'THERMALIZATION' : 1000,
'SWEEPS' : 5000,
'MEASURE_LOCAL[Local Density]' : 'n',
}]
input_file = pyalps.writeInputFiles('parm_trap', parms)
pyalps.runApplication('dirloop_sse', input_file)
data = pyalps.loadMeasurements(pyalps.getResultFiles(prefix='parm_trap'), 'Local Density')[0][0]
n = np.asarray(data.y.mean).reshape(L, L, L)
print('Total number of bosons: %.2f' % n.sum())
print('Density at the trap center: %.3f' % n[L // 2, L // 2, L // 2])完全なスクリプトでは、トラップ中心を通る断面と、中心層の密度もプロットします。

例が数分で実行できるように格子を小さくしているため、格子はまだ原子雲の内側に収まっています。密度は端に向かって減少しますが、端で完全には消えません。より大きな格子を用いると、端での密度はゼロにより近づきます。
貢献者
- Ping Nang Ma
- Matthias Troyer