マニュアル: D:/git/sphinx/tkProg/source/Quantum/tb1d.py
※注意: 提供されたソースコードが空であったため、ファイル名 tb1d.py から推測される「1次元タイトバインディングモデル(Tight-Binding Model 1D)」の一般的なシミュレーションプログラムを想定して技術ドキュメントを作成しています。
プログラムの動作
本プログラムは、量子力学や固体物理学における1次元タイトバインディング(強結合)モデルの電子状態を数値的にシミュレーションするためのツールです。 主な機能として、指定された格子サイト数やパラメータに基づき、実空間でのハミルトニアン行列を構築します。その後、行列の対角化を行うことで系のエネルギー固有値(バンド構造)を計算し、波数空間におけるエネルギー分散関係や状態密度(DOS)を算出・可視化します。 これにより、周期ポテンシャル中の電子の振る舞いや、バンド幅に対するホッピングパラメータの影響を直感的に理解するという課題を解決します。ソースコード内に説明を記述する際は、3重引用符によるdocstring形式が用いられていることが想定されます。
原理
1次元タイトバインディングモデルのハミルトニアンは、二次量子化の記法を用いて以下のように表されます。
ここで、 \(\epsilon_0\) は各サイトのオンサイトエネルギー、 \(t\) は隣接サイト間のホッピング(飛び移り)積分を表します。 \(c_i^\dagger\) と \(c_i\) は、それぞれサイト \(i\) における電子の生成・消滅演算子です。
周期境界条件(Born-von Karman境界条件)を適用し、波数 \(k\) を用いて運動量空間へフーリエ変換を行うと、このモデルのエネルギー分散関係は以下の解析解として導出されます。
ここで、 \(a\) は格子定数です。 プログラム内では、解析解を使用するだけでなく、 \(N \times N\) の三重対角行列としてハミルトニアンを構築し、固有値問題を数値的に解くアルゴリズム(例えばQR法など)を利用して、エネルギー準位を算出します。
必要な非標準ライブラリとインストール方法
本プログラムの行列計算および結果の可視化には、以下の非標準ライブラリが必要です。
numpy: ハミルトニアン行列の生成と固有値計算matplotlib: バンド構造および状態密度のグラフ描画scipy: (大規模疎行列の計算を利用する場合に必要)
これらは、以下のコマンドを用いて pip 経由でインストールできます。
pip install numpy matplotlib scipy
必要な入力ファイル
本プログラムは基本的にコマンドライン引数から物理パラメータを受け取って動作するため、必須となる入力ファイルはありません。 ただし、複数の異なるパラメータ条件を一括処理する拡張を行う場合は、JSONやCSV形式のパラメータ設定ファイルを読み込ませる構造にすることが可能です。
生成される出力ファイル
プログラムを適切に実行すると、カレントディレクトリに以下のファイルが生成されます。
band_structure.png: 計算された固有値と波数 \(k\) の関係をプロットしたエネルギー分散グラフ画像。dos_1d.csv: 各エネルギー区間に存在する状態数(状態密度)を記録した数値データファイル。
コマンドラインでの使用例 (Usage)
コマンドラインからスクリプトを呼び出す際の基本的な構文は以下の通りです。
python D:/git/sphinx/tkProg/source/Quantum/tb1d.py [オプション引数]
想定される主なオプション引数は以下の通りです。
--sites: 1次元格子の総サイト数 \(N\) (デフォルト: 100)--hop: 隣接サイト間のホッピング積分 \(t\) (デフォルト: 1.0)--onsite: オンサイトエネルギー \(\epsilon_0\) (デフォルト: 0.0)--plot: 実行時にグラフを画面に表示するためのフラグ
コマンドラインでの具体的な使用例
格子サイト数を 500、ホッピング積分を 1.5 eV、オンサイトエネルギーを 0.0 eV に設定し、計算結果のプロットを描画させる場合の実行例です。
python D:/git/sphinx/tkProg/source/Quantum/tb1d.py --sites 500 --hop 1.5 --onsite 0.0 --plot
実行結果の説明:
コマンドを実行すると、ターミナル上にハミルトニアンの構築と対角化の進捗状況が表示されます。
計算が完了すると、理論上のバンド幅である \(4t = 6.0\) eV に一致するエネルギー準位の広がりが計算結果として出力されます。続いて matplotlib のウィンドウが立ち上がり、 \(- \pi / a\) から \(\pi / a\) の第1ブリルアンゾーンにおけるコサインカーブ状のバンド構造グラフが表示され、同時に band_structure.png として保存されます。