eigen¶
収束したハミルトニアンの固有値、固有ベクトルをnpz形式で出力します。
ファイル名は、環境設定ファイルの file.output
セクション eigen
で指定された文字列 (以下、 eigen_str
) を用いて、 eigen_str.npz
という名前で出力されます。
以下、データを読み込む例となります。
import numpy as np
data = np.load("eigen_str.npz")
eigenvalue = data["eigenvalue"]
eigenvector = data["eigenvector"]
wavevector_unit = data["wavevector_unit"]
wavevector_index = data["wavevector_index"]
eigenvalue
には波数ごとの固有値 \(\lambda_l(\vec{k})\) が格納されます。
副格子を指定している場合は、副格子を単位とした値になります。
データ形式は numpy ndarray で、データの並びは eigenvalue[k][l]
です。
k
は波数ベクトル \(\vec{k}\) を一次元化したインデックス、
l
はセル内の固有値のインデックスです。
Sz固定の場合は、固有値のインデックスは軌道部分 l'
とスピン s
(up-spin は 0, down-spin は 1)
に対して l' + Norb * s
となります。 Norb
はセル内の軌道数です。
eigenvector
には対応する固有ベクトルが格納されます。
データ形式は numpy ndarray で、データの並びは eigenvector[k][j][l]
です。
k
, l
は対応する波数および固有値のインデックス、
j
はセル内の軌道・スピンのインデックスです。
ファイルには波数の情報も出力されます。
wavevector_unit
には逆格子ベクトル \(\vec{b}_i\) を用いて
\(2\pi\vec{b}_i/N_i\) で表される単位波数ベクトルが格納されます。
wavevector_index
には波数のインデックスと1次元化したインデックスとの対応が格納されます。
インデックス k
に対応する波数ベクトルは以下で求められます。
k_vec = np.dot(wavevector_index[k], wavevector_unit)