ヒルベルト空間の構成 ==================== 本節では :math:`{\mathcal H}\Phi` がヒルベルト空間を構成・管理する方法を説明します。 ビット表現 ---------- :math:`{\mathcal H}\Phi` は量子状態を効率的に格納・操作するためにビット表現を使用します。 **Hubbardモデル(1サイトあたり4状態)** 各サイトには4つの状態があります:空、スピン上向き電子、スピン下向き電子、二重占有。 これらは1サイトあたり2ビットでエンコードされます: - ``00``: 空 - ``01``: スピン上向き電子 - ``10``: スピン下向き電子 - ``11``: 二重占有 **Spin-1/2モデル(1サイトあたり2状態)** 各サイトにはスピン上向きとスピン下向きの2状態があります。 1サイトあたり1ビットでエンコードされます: - ``0``: スピン下向き - ``1``: スピン上向き **SpinlessFermionモデル(1サイトあたり2状態)** 各サイトは空かフェルミオン1個で占有されています: - ``0``: 空 - ``1``: 占有 状態インデックス ---------------- 状態はビット表現を整数に変換することでインデックス化されます。 :math:`N` サイト系の全状態数は以下の通りです: - Hubbard: :math:`4^N` - Spin-1/2: :math:`2^N` - SpinlessFermion: :math:`2^N` 対称性による制限 ---------------- 計算コストを削減するため、 :math:`{\mathcal H}\Phi` は保存量子数を利用して ヒルベルト空間を制限することができます。 **粒子数保存** カノニカルアンサンブルでは、電子の総数が固定されます。 指定された粒子数を持つ状態のみが含まれます。 **Sz保存** スピン系では、全 :math:`S_z` を固定できます。 これによりヒルベルト空間の次元が大幅に削減されます。 **例** :math:`S_z = 0` の半充填8サイトHubbardモデルの場合: - 全ヒルベルト空間: :math:`4^8 = 65,536` 状態 - 粒子数保存あり(電子4個): 削減 - :math:`S_z = 0`(上向き2個、下向き2個): :math:`\binom{8}{2}^2 = 784` 状態 リスト配列 ---------- :math:`{\mathcal H}\Phi` は状態インデックスとビット表現の間のマッピングにリスト配列を使用します: ``list_1[i]`` 状態インデックス :math:`i` をビット表現にマップします ``list_2_1[b]``, ``list_2_2[b]`` ビット表現から状態インデックスへの逆マッピング (大規模系での効率のため分割) これらの配列は演算子の適用やMPI通信の実行に不可欠です。