tb_harrison プログラム仕様
Slater-Kosterタイトバインディングモデルを実装するモジュール。
s, p, d軌道を持つ有限クラスター(分子)用の最小限のSlater-Kosterタイトバインディング(TB)モデルを提供します。 直交基底(S = I)と実対称ハミルトニアン(H)を仮定します。ハリスン則による積分パラメータのスケーリングに対応しています。
- class Quantum.tb_harrison.SlaterKosterTB
ベースクラス:
objectSlater-Kosterタイトバインディング法を実装するクラス。
s, p, d軌道を持つ有限クラスター(分子)用の最小限のSlater-Kosterタイトバインディング(TB)モデルを提供します。 直交基底(S = I)と実対称ハミルトニアン(H)を仮定します。
ハリスン則によるスケーリングをサポートしており、sk_params の "harrison" エントリを通じて積分キーごとの指数を指定できます。
harrison パラメータの例:
"harrison": { "d0": 1.0, "power_default": 2.0, "power_map": { "sd_sigma": 3.5, "pd_sigma": 3.5, "pd_pi": 3.5, # "dd_sigma": 5.0, "dd_pi": 5.0, "dd_delta": 5.0, # if you implement dd later }, # オプション: キーごとのd0 # "d0_map": {"pd_sigma": 2.0} }
harrison が省略された場合、スケーリングは行われません(スケールは1)。 後方互換性のため、{"d0":..., "power":...} のみが与えられた場合、それがデフォルトとして使用されます。
- add_atom(symbol, orb_type, x, y, z)
モデルに原子を追加します。
指定された記号、軌道タイプ、および空間座標を持つ原子を内部リストに追加します。 軌道タイプが`orbitals`辞書に存在しない場合はエラーを発生させます。
- パラメータ:
symbol -- str: 原子の元素記号。
orb_type -- str: 原子の軌道タイプ(例: "s", "p", "d")。
x -- float: 原子のX座標。
y -- float: 原子のY座標。
z -- float: 原子のZ座標。
- 戻り値:
None
- 例外:
ValueError -- 未知の軌道タイプが指定された場合。
- build_hamiltonian(sk_params, onsite_energies)
システムのハミルトニアン行列を構築します。
追加された原子とその軌道情報、Slater-Kosterパラメータ、オンサイトエネルギーに基づいて、 全体のハミルトニアン行列を構築します。 まず、オンサイト項を対角要素に設定します。次に、異なる原子間のオフサイト項を _get_sk_elements を使用して計算し、行列を埋めます。 ハミルトニアンは実対称行列として構築されます。
- パラメータ:
sk_params -- dict: Slater-Kosterパラメータを含む辞書。
onsite_energies -- dict: 原子の記号と軌道タイプごとのオンサイトエネルギーを含む辞書。
- 戻り値:
numpy.ndarray: 構築されたハミルトニアン行列。
- orbital_labels()
各原子の軌道に対応するラベルのリストを生成します。
各原子の位置と軌道タイプを組み合わせて、ハミルトニアン行列の各要素に対応する 識別のための文字列ラベルを生成します。 例: "Ba(0.000,0.000,0.000)_s", "N(0.000,0.000,0.800)_px"
- 戻り値:
list[str]: 各軌道に対応するラベルのリスト。
- Quantum.tb_harrison.main()
SlaterKosterTB クラスの使用例を示します。
SlaterKosterTB クラスを初期化し、複数の原子をモデルに追加します。 定義済みのSlater-Kosterパラメータとオンサイトエネルギーを使用してハミルトニアンを構築し、 scipy.linalg.eigh を使用してハミルトニアンを対角化し、固有値(軌道エネルギー)と固有ベクトルを計算します。 結果として得られたエネルギーと、それぞれの固有状態における支配的な軌道成分を表示します。