tb1d プログラム仕様
1Dタイトバインディング法による量子井戸ポテンシャル下でのバンド計算スクリプト。
- 概要:
量子井戸構造における電子の波動関数、エネルギー準位、そしてそれらを用いたタイトバインディング法によるエネルギーバンド構造の計算と可視化を行うPythonスクリプト。 主に、量子井戸内の基底関数計算 (`basis`モード)、バンド構造計算 (`band`モード)、波動関数描画 (`wf`モード、現在未実装) の機能を提供する。
- 詳細説明:
本スクリプトは以下の主要な機能を持つ。 1. 量子井戸ポテンシャルの定義と可視化:
与えられた結晶構造と原子情報に基づき、周期的な矩形量子井戸ポテンシャルを構築する。
単一量子井戸のエネルギー準位と波動関数の計算: 無限障壁近似と有限障壁(セカント法を用いた数値解法)の両方で、単一量子井戸内のエネルギー準位と対応する波動関数を計算する。 計算された波動関数は、タイトバインディング法の基底関数として使用される。
タイトバインディング行列の構築: 計算された基底関数と定義されたポテンシャルを用いて、ハミルトニアン行列 (Fij) および重なり積分行列 (Sij) を構築する。 近接サイトとの相互作用を考慮し、周期境界条件 (Blochの定理) を導入する。
エネルギーバンド構造の計算: 構築された行列を対角化することで、さまざまな波数kにおけるエネルギー準位(エネルギーバンド)を計算する。
結果の可視化: ポテンシャル、波動関数、エネルギー準位、エネルギーバンド構造をmatplotlibを用いてグラフ表示する。
- 関連リンク:
tb1d.py の技術ドキュメント (使用方法に関するドキュメントへのリンク、仮)
- Quantum.tb1d.atominf(i, atoms)[ソース]
atomsリストから指定された原子の情報を取得します。
- 概要:
指定されたインデックスiに対応する原子のプロパティ(名前、井戸幅、基底電位、有効質量)を返します。
:param : param i: atomsリスト内の原子のインデックス。 :param : type i: int :param : param atoms: 原子情報の辞書リスト。 :param : type atoms: list[dict]
- 戻り値:
returns: (名前, 井戸幅, 基底電位, 有効質量) のタプル。 :rtype: tuple[str, float, float, float]
- Quantum.tb1d.band()[ソース]
タイトバインディング法によるエネルギーバンド構造の計算と描画を行います。
- 概要:
量子井戸のエネルギー準位から基底関数を構築し、それらを用いてハミルトニアン行列と重なり積分行列を形成します。 Blochの定理を適用して波数kの関数としてエネルギーバンドを計算し、結果をプロットします。
- 戻り値:
returns: None (結果はmatplotlibで表示されます)
- Quantum.tb1d.basis(dx, orbital, Nx=0)[ソース]
単一の矩形量子井戸における波動関数(基底関数)の値を計算します。
- 概要:
与えられた相対座標dxと波動関数軌道情報(orbital)に基づき、 量子井戸内の電子の波動関数(偶関数または奇関数)の値を返します。 井戸の内外で異なる関数形式を使用します。
:param : param dx: 原子サイトの中心からの相対x座標 (Å)。 :param : type dx: float :param : param orbital: 波動関数軌道の詳細情報を含む辞書。
"parity", "wwidth", "E", "kb", "kw", "Cb", "Cw" のキーを含む。
:param : type orbital: dict :param : param Nx: 未使用の引数。デフォルトは0。 :param : type Nx: int, optional
- 戻り値:
returns: 指定されたdxにおける波動関数の値。 :rtype: float
- Quantum.tb1d.build_basisset(crystal)[ソース]
タイトバインディング計算のための基底関数セットを構築します。
- 概要:
結晶構造(crystal)内の各サイトと、各原子タイプに属する軌道(orbitals)を組み合わせて、 計算に使用する全ての基底関数を表すリストを生成します。
- :paramparam crystal: 結晶サイト情報の辞書リスト。各サイトは iatom で atoms リストの原子を指す。
atoms リストの各原子には orbitals キーで波動関数のリストが追加されている必要がある。
:param : type crystal: list[dict]
- 戻り値:
- returns: 各基底関数に関する詳細情報を含む辞書のリスト。
各辞書には"isite", "iorb", "atom", "name", "x0", "orbital"のキーが含まれる。
- rtype:
list[dict]
- Quantum.tb1d.build_potential(xmin, xstep, n, Vvac, crystal)[ソース]
指定された範囲でポテンシャルエネルギーのプロファイル配列を構築します。
- 概要:
xminからxstep刻みでn点までのx座標と、それに対応するポテンシャルエネルギーの配列を計算します。 主にポテンシャルプロファイルの描画に使用されます。
:param : param xmin: プロファイルの開始x座標 (Å)。 :param : type xmin: float :param : param xstep: x座標の刻み幅 (Å)。 :param : type xstep: float :param : param n: 計算する点の数。 :param : type n: int :param : param Vvac: 真空準位のポテンシャルエネルギー (eV)。 :param : type Vvac: float :param : param crystal: 結晶サイト情報の辞書リスト。 :param : type crystal: list[dict]
- 戻り値:
returns: (x座標のnumpy配列, ポテンシャルエネルギーのnumpy配列) のタプル。 :rtype: tuple[numpy.ndarray, numpy.ndarray]
- Quantum.tb1d.cal_E(orbital, xmin, xmax, nx)[ソース]
波動関数軌道の運動エネルギー、ポテンシャルエネルギー、全エネルギーを数値的に計算します。
- 概要:
与えられた波動関数軌道(orbital)に対して、指定された空間範囲で数値積分を実行し、 <ψ|ψ>, <ψ|K|ψ>, <ψ|U|ψ>, <ψ|H|ψ> を計算します。 H = K + U であり、Kは運動エネルギー演算子 (-hbar^2/2m * d^2/dx^2)、Uはポテンシャルエネルギー演算子です。
:param : param orbital: 波動関数軌道の詳細情報を含む辞書。 :param : type orbital: dict :param : param xmin: 積分範囲の最小x座標 (Å)。 :param : type xmin: float :param : param xmax: 積分範囲の最大x座標 (Å)。 :param : type xmax: float :param : param nx: 積分に使用する点の数。 :param : type nx: int
- 戻り値:
returns: (波動関数の二乗ノルム, 運動エネルギー, ポテンシャルエネルギー, 全エネルギー) のタプル。 :rtype: tuple[float, float, float, float]
- Quantum.tb1d.cal_E_analytical(orbital)[ソース]
波動関数軌道の運動エネルギー、ポテンシャルエネルギー、全エネルギーを解析的に計算します。
- 概要:
与えられた波動関数軌道(orbital)のパラメータを用いて、 矩形量子井戸ポテンシャル下での波動関数のノルムの2乗、運動エネルギー、ポテンシャルエネルギー、 そして全エネルギーを解析的に計算します。 井戸の内側と外側(障壁領域)で積分を分けて計算します。
- :paramparam orbital: 波動関数軌道の詳細情報を含む辞書。
"parity", "wwidth", "E", "kb", "kw", "Cb", "Cw", "Vvac", "Vbase" のキーを含む。
:param : type orbital: dict
- 戻り値:
returns: 井戸外のSii, 井戸内のSii, 全Sii, 井戸外のK, 井戸内のK, 全K, 井戸外のU, 井戸内のU, 全U, 井戸外のE, 井戸内のE, 全E のタプル。 :rtype: tuple[float, float, float, float, float, float, float, float, float, float, float, float]
- Quantum.tb1d.cal_Sij(xmin, xmax, nx, orbital1, orbital2, x01, x02, Nx)[ソース]
重なり積分行列要素S_ijを数値的に計算します。
- 概要:
与えられた2つの軌道(orbital1, orbital2)と、それぞれのサイト位置(x01, x02)および周期オフセット(Nx)に基づき、 重なり積分行列の非対角要素 S_ij = <ψ_i|ψ_j> を数値積分により計算します。
:param : param xmin: 積分範囲の最小x座標 (Å)。 :param : type xmin: float :param : param xmax: 積分範囲の最大x座標 (Å)。 :param : type xmax: float :param : param nx: 積分に使用する点の数。 :param : type nx: int :param : param orbital1: 最初の波動関数軌道の詳細情報を含む辞書。 :param : type orbital1: dict :param : param orbital2: 2番目の波動関数軌道の詳細情報を含む辞書。 :param : type orbital2: dict :param : param x01: 最初の軌道が属するサイトの中心x座標 (Å)。 :param : type x01: float :param : param x02: 2番目の軌道が属するサイトの中心x座標 (Å)。 :param : type x02: float :param : param Nx: 2番目のサイトの周期オフセット (2番目のサイトは x02 + Nx*a の位置にあるとみなす)。 :param : type Nx: int
- 戻り値:
returns: 計算された重なり積分行列要素 S_ij の複素数値。 :rtype: complex
- Quantum.tb1d.cal_basis(x0, wfmin, wfmax, nwf, orbital)[ソース]
特定の軌道に対応する波動関数プロファイルを計算します。
- 概要:
指定された軌道(orbital)について、`wfmin`から`wfmax`の範囲を`nwf`点に分割し、 `basis`関数を用いて波動関数の値を計算します。 結果は、サイト中心`x0`からの絶対座標と、対応する波動関数値のリストとして返されます。
:param : param x0: 波動関数の中心となるサイトのx座標 (Å)。 :param : type x0: float :param : param wfmin: 波動関数計算範囲の最小相対x座標 (Å)。 :param : type wfmin: float :param : param wfmax: 波動関数計算範囲の最大相対x座標 (Å)。 :param : type wfmax: float :param : param nwf: 波動関数を計算する点の数。 :param : type nwf: int :param : param orbital: 波動関数軌道の詳細情報を含む辞書。`basis`関数に渡される。 :param : type orbital: dict
- 戻り値:
returns: (絶対x座標のリスト, 波動関数値のリスト) のタプル。 :rtype: tuple[list[float], list[float]]
- Quantum.tb1d.cal_cdiff2(h, f)[ソース]
複素配列の2階中心差分を計算します。
- 概要:
与えられた複素数の配列 f に対して、2階中心差分法を用いて2階微分を近似計算します。 境界点では前方/後方差分に準じた方法で計算されます。
:param : param h: サンプリング間隔(x軸の刻み幅)。 :param : type h: float :param : param f: 2階微分を計算する複素数の配列。 :param : type f: numpy.ndarray
- 戻り値:
returns: 計算された2階微分の複素数配列。 :rtype: numpy.ndarray
- Quantum.tb1d.cal_delta_even(E, w, V0, meff)[ソース]
偶関数波動関数のエネルギーに対するΔ関数を計算します。
- 概要:
矩形量子井戸の偶関数解に対するエネルギーEのΔ関数を計算します。 この関数が0になるEが、偶関数のエネルギー準位に対応します。
:param : param E: 井戸底からのエネルギー (eV)。E = E_total - Vbase に相当。 :param : type E: float :param : param w: 量子井戸の幅 (Å)。 :param : type w: float :param : param V0: 障壁の高さ (eV)。V0 = Vvac - Vbase に相当。 :param : type V0: float :param : param meff: 有効質量 (me単位)。 :param : type meff: float
- 戻り値:
returns: 計算されたΔ関数の値。 :rtype: float
- Quantum.tb1d.cal_delta_odd(E, w, V0, meff)[ソース]
奇関数波動関数のエネルギーに対するΔ関数を計算します。
- 概要:
矩形量子井戸の奇関数解に対するエネルギーEのΔ関数を計算します。 この関数が0になるEが、奇関数のエネルギー準位に対応します。
:param : param E: 井戸底からのエネルギー (eV)。E = E_total - Vbase に相当。 :param : type E: float :param : param w: 量子井戸の幅 (Å)。 :param : type w: float :param : param V0: 障壁の高さ (eV)。V0 = Vvac - Vbase に相当。 :param : type V0: float :param : param meff: 有効質量 (me単位)。 :param : type meff: float
- 戻り値:
returns: 計算されたΔ関数の値。 :rtype: float
- Quantum.tb1d.cal_tij(xmin, xmax, nx, orbital1, orbital2, x01, x02, Nx)[ソース]
ハミルトニアン行列要素t_ijを数値的に計算します。
- 概要:
与えられた2つの軌道(orbital1, orbital2)と、それぞれのサイト位置(x01, x02)および周期オフセット(Nx)に基づき、 ハミルトニアン行列の非対角要素 t_ij = <ψ_i|H|ψ_j> を数値積分により計算します。 H = T + U であり、ここではポテンシャルエネルギー項 <ψ_i|U|ψ_j> を計算します。 (運動エネルギー項は省略されている可能性、または基底関数がシュレディンガー方程式の解であるためゼロと仮定されることがある。) この実装ではポテンシャルエネルギー項 <ψ_i|V(x)|ψ_j> を計算しています。
:param : param xmin: 積分範囲の最小x座標 (Å)。 :param : type xmin: float :param : param xmax: 積分範囲の最大x座標 (Å)。 :param : type xmax: float :param : param nx: 積分に使用する点の数。 :param : type nx: int :param : param orbital1: 最初の波動関数軌道の詳細情報を含む辞書。 :param : type orbital1: dict :param : param orbital2: 2番目の波動関数軌道の詳細情報を含む辞書。 :param : type orbital2: dict :param : param x01: 最初の軌道が属するサイトの中心x座標 (Å)。 :param : type x01: float :param : param x02: 2番目の軌道が属するサイトの中心x座標 (Å)。 :param : type x02: float :param : param Nx: 2番目のサイトの周期オフセット (2番目のサイトは x02 + Nx*a の位置にあるとみなす)。 :param : type Nx: int
- 戻り値:
returns: 計算されたハミルトニアン行列要素 t_ij の複素数値。 :rtype: complex
- Quantum.tb1d.find_eigenstates(Vvac, Vbase, wwidth, meff, Emin, Emax, nE, nmaxiter, eps)[ソース]
矩形量子井戸の全てのエネルギー準位(偶関数および奇関数)を探索します。
- 概要:
cal_delta_evenおよびcal_delta_odd関数を使用して、偶関数と奇関数の両方のエネルギー準位を見つけます。 見つかった全ての準位を結合し、エネルギーの昇順にソートします。 各準位について、波動関数の係数(Cb, Cw)や特性値(kb, kw)を計算し、辞書に追加して返します。
:param : param Vvac: 真空準位のポテンシャルエネルギー (eV)。 :param : type Vvac: float :param : param Vbase: 量子井戸の基底電位 (eV)。 :param : type Vbase: float :param : param wwidth: 量子井戸の幅 (Å)。 :param : type wwidth: float :param : param meff: 有効質量 (me単位)。 :param : type meff: float :param : param Emin: 探索開始エネルギー (eV)。 :param : type Emin: float :param : param Emax: 探索終了エネルギー (eV)。 :param : type Emax: float :param : param nE: エネルギー走査の点数。 :param : type nE: int :param : param nmaxiter: セカント法での最大反復回数。 :param : type nmaxiter: int :param : param eps: セカント法での収束判定に使用する許容誤差 (eV)。 :param : type eps: float
- 戻り値:
- returns: 量子井戸の全てのエネルギー準位の詳細情報を含む辞書リスト。
各辞書には"parity", "E", "kb", "kw", "Cb", "Cw", "Vvac", "Vbase", "wwidth"が含まれます。
- rtype:
list[dict]
- Quantum.tb1d.find_eigenstates_base(parity, Vvac, Vbase, wwidth, meff, Emin, Emax, nE, nmaxiter, eps, IsPrint=0)[ソース]
指定されたパリティ(偶奇性)を持つ量子井戸のエネルギー準位を探索します。
- 概要:
量子井戸の全エネルギー範囲 (EminからEmax) を走査し、cal_delta関数が符号を反転する点(根)を特定します。 セカント法 (refine_E) を用いてこれらの根を精密化し、指定されたパリティのエネルギー準位のリストを生成します。
:param : param parity: 探索する波動関数のパリティ (0: 偶関数, 1: 奇関数)。 :param : type parity: int :param : param Vvac: 真空準位のポテンシャルエネルギー (eV)。 :param : type Vvac: float :param : param Vbase: 量子井戸の基底電位 (eV)。 :param : type Vbase: float :param : param wwidth: 量子井戸の幅 (Å)。 :param : type wwidth: float :param : param meff: 有効質量 (me単位)。 :param : type meff: float :param : param Emin: 探索開始エネルギー (eV)。 :param : type Emin: float :param : param Emax: 探索終了エネルギー (eV)。 :param : type Emax: float :param : param nE: エネルギー走査の点数。 :param : type nE: int :param : param nmaxiter: セカント法での最大反復回数。 :param : type nmaxiter: int :param : param eps: セカント法での収束判定に使用する許容誤差 (eV)。 :param : type eps: float :param : param IsPrint: デバッグ情報を出力するかどうかのフラグ。デフォルトは0。 :param : type IsPrint: int, optional
- 戻り値:
returns: 見つかったエネルギー準位の辞書リスト。各辞書は"parity"と"E"のキーを持つ。 :rtype: list[dict]
- Quantum.tb1d.getarg(position, defval=None)[ソース]
コマンドライン引数を安全に取得します。
- 概要:
sys.argvリストから指定された位置の引数を取得します。 指定された位置に引数がない場合は、デフォルト値を返します。
:param : param position: 取得する引数のsys.argvにおけるインデックス。 :param : type position: int :param : param defval: 引数が存在しない場合に返すデフォルト値。デフォルトはNone。 :param : type defval: Any, optional
- 戻り値:
returns: コマンドライン引数の値、またはデフォルト値。 :rtype: str or Any
- Quantum.tb1d.getfloatarg(position, defval=None)[ソース]
コマンドライン引数をfloat型に安全に変換して取得します。
- 概要:
指定された位置のコマンドライン引数を取得し、pfloat関数を使ってfloat型に変換します。 引数が存在しない場合やfloat型に変換できない場合は、デフォルト値を返します。
:param : param position: 取得する引数のsys.argvにおけるインデックス。 :param : type position: int :param : param defval: 引数が存在しない場合や変換できない場合に返すデフォルト値。デフォルトはNone。 :param : type defval: float or None, optional
- 戻り値:
returns: 変換された浮動小数点数、またはデフォルト値。 :rtype: float or None
- Quantum.tb1d.getintarg(position, defval=None)[ソース]
コマンドライン引数をint型に安全に変換して取得します。
- 概要:
指定された位置のコマンドライン引数を取得し、pint関数を使ってint型に変換します。 引数が存在しない場合やint型に変換できない場合は、デフォルト値を返します。
:param : param position: 取得する引数のsys.argvにおけるインデックス。 :param : type position: int :param : param defval: 引数が存在しない場合や変換できない場合に返すデフォルト値。デフォルトはNone。 :param : type defval: int or None, optional
- 戻り値:
returns: 変換された整数、またはデフォルト値。 :rtype: int or None
- Quantum.tb1d.integrate2(h, y1, y2)[ソース]
2つの配列の積の数値積分(長方形近似)を計算します。
- 概要:
与えられた2つの配列 y1 と y2 の積 y1[i] * y2[i] を、 長方形近似(リーマン和)を用いて`h`の刻み幅で数値積分します。
:param : param h: 積分区間の刻み幅。 :param : type h: float :param : param y1: 最初の配列。 :param : type y1: numpy.ndarray or list :param : param y2: 2番目の配列。 :param : type y2: numpy.ndarray or list
- 戻り値:
returns: 計算された積分値。 :rtype: float
- Quantum.tb1d.integrate3(h, y1, y2, y3)[ソース]
3つの配列の積の数値積分(長方形近似)を計算します。
- 概要:
与えられた3つの配列 y1, y2, y3 の積 y1[i] * y2[i] * y3[i] を、 長方形近似(リーマン和)を用いて`h`の刻み幅で数値積分します。
:param : param h: 積分区間の刻み幅。 :param : type h: float :param : param y1: 最初の配列。 :param : type y1: numpy.ndarray or list :param : param y2: 2番目の配列。 :param : type y2: numpy.ndarray or list :param : param y3: 3番目の配列。 :param : type y3: numpy.ndarray or list
- 戻り値:
returns: 計算された積分値。 :rtype: float
- Quantum.tb1d.main()[ソース]
スクリプトのメインエントリポイントです。
- 概要:
コマンドライン引数で指定された`mode`に基づいて、適切な機能(view_basis、band、wf)を呼び出します。 無効なモードが指定された場合は、エラーメッセージを表示してプログラムを終了します。
- 戻り値:
returns: None
- Quantum.tb1d.make_list2(dim1, dim2)[ソース]
指定された次元の2次元リストを生成し、0.0で初期化します。
- 概要:
dim1 x dim2 の浮動小数点数で初期化された2次元リストを作成します。
:param : param dim1: リストの第一次元(行数)。 :param : type dim1: int :param : param dim2: リストの第二次元(列数)。 :param : type dim2: int
- 戻り値:
returns: 0.0で初期化された2次元リスト。 :rtype: list[list[float]]
- Quantum.tb1d.make_list3(dim1, dim2, dim3)[ソース]
指定された次元の3次元リストを生成し、0.0で初期化します。
- 概要:
dim1 x dim2 x dim3 の浮動小数点数で初期化された3次元リストを作成します。
:param : param dim1: リストの第一次元。 :param : type dim1: int :param : param dim2: リストの第二次元。 :param : type dim2: int :param : param dim3: リストの第三次元。 :param : type dim3: int
- 戻り値:
returns: 0.0で初期化された3次元リスト。 :rtype: list[list[list[float]]]
- Quantum.tb1d.make_list4(dim1, dim2, dim3, dim4)[ソース]
指定された次元の4次元リストを生成し、0.0で初期化します。
- 概要:
dim1 x dim2 x dim3 x dim4 の浮動小数点数で初期化された4次元リストを作成します。
:param : param dim1: リストの第一次元。 :param : type dim1: int :param : param dim2: リストの第二次元。 :param : type dim2: int :param : param dim3: リストの第三次元。 :param : type dim3: int :param : param dim4: リストの第四次元。 :param : type dim4: int
- 戻り値:
returns: 0.0で初期化された4次元リスト。 :rtype: list[list[list[list[float]]]]
- Quantum.tb1d.pfloat(str)[ソース]
文字列をfloat型に安全に変換します。
- 概要:
与えられた文字列をfloat型に変換します。変換できない場合はNoneを返します。 変換エラーが発生してもプログラムは終了しません。
:param : param str: 変換する文字列。 :param : type str: str
- 戻り値:
returns: 変換された浮動小数点数、または変換できなかった場合はNone。 :rtype: float or None
- Quantum.tb1d.pint(str)[ソース]
文字列をint型に安全に変換します。
- 概要:
与えられた文字列をint型に変換します。変換できない場合はNoneを返します。 変換エラーが発生してもプログラムは終了しません。
:param : param str: 変換する文字列。 :param : type str: str
- 戻り値:
returns: 変換された整数、または変換できなかった場合はNone。 :rtype: int or None
- Quantum.tb1d.pot(x, Vvac, crystal)[ソース]
指定された位置xにおけるポテンシャルエネルギーを計算します。
- 概要:
与えられたx座標において、結晶構造に基づいて矩形量子井戸ポテンシャルを決定します。 結晶周期aでx座標を還元し、どのサイトの井戸内にあるかを確認します。
:param : param x: ポテンシャルを評価するx座標 (Å)。 :param : type x: float :param : param Vvac: 真空準位のポテンシャルエネルギー (eV)。 :param : type Vvac: float :param : param crystal: 結晶サイト情報の辞書リスト。 :param : type crystal: list[dict]
- 戻り値:
returns: 指定されたx座標におけるポテンシャルエネルギー (eV)。 :rtype: float
- Quantum.tb1d.pot_atom(dx, Vvac, crystal)[ソース]
単一原子サイトの相対座標dxにおけるポテンシャルエネルギーを計算します。
- 概要:
単一の原子サイト内での相対座標dxに基づき、矩形量子井戸ポテンシャルを決定します。 この関数は通常、タイトバインディングの積分計算などで、原点に中心を持つ原子サイトのポテンシャルを評価する際に使用されます。
:param : param dx: 原子サイトの中心からの相対x座標 (Å)。 :param : type dx: float :param : param Vvac: 真空準位のポテンシャルエネルギー (eV)。 :param : type Vvac: float :param : param crystal: 結晶サイト情報の辞書リスト。この関数では各サイトのwellwidthとVbaseが使われる。 :param : type crystal: list[dict]
- 戻り値:
returns: 指定された相対dxにおけるポテンシャルエネルギー (eV)。 :rtype: float
- Quantum.tb1d.quantization_level_inifinite(Vbase, meff, wwidth, iL)[ソース]
無限に深い矩形量子井戸の量子化エネルギー準位を計算します。
- 概要:
与えられた量子井戸の基底電位、有効質量、井戸幅、および量子数iLに基づいて、 無限に深い量子井戸モデルにおけるエネルギー準位を計算します。
:param : param Vbase: 量子井戸の基底電位 (eV)。 :param : type Vbase: float :param : param meff: 有効質量 (me単位)。 :param : type meff: float :param : param wwidth: 量子井戸の幅 (Å)。 :param : type wwidth: float :param : param iL: 量子数 (n=1, 2, 3...)。 :param : type iL: int
- 戻り値:
returns: 計算された量子化エネルギー準位 (eV)。 :rtype: float
- Quantum.tb1d.reduce(x, x0)[ソース]
xをx0の周期で還元します(モジュロ演算に相当)。
- 概要:
与えられたxを、周期x0の範囲 [0, x0) または [-x0, 0) にマッピングします。 物理的な周期性を考慮した座標の還元に使用されます。
:param : param x: 還元する値。 :param : type x: float :param : param x0: 周期。 :param : type x0: float
- 戻り値:
returns: 周期x0で還元されたxの値。 :rtype: float
- Quantum.tb1d.refine_E(cal_delta, E0, E1, nmaxiter, eps, w, V0, meff, IsPrint=0)[ソース]
セカント法を用いてエネルギー準位を精密化します。
- 概要:
cal_delta関数がゼロとなるエネルギーEを、セカント法(二分法に似た方法)を用いて探索し、精密化します。 与えられた初期エネルギー範囲 [E0, E1] 内に根があることを前提とします。
:param : param cal_delta: エネルギーEの関数で、根を求める対象となる関数 (cal_delta_even または cal_delta_odd)。 :param : type cal_delta: callable :param : param E0: 探索範囲の下限エネルギー (eV、井戸底からの相対値)。 :param : type E0: float :param : param E1: 探索範囲の上限エネルギー (eV、井戸底からの相対値)。 :param : type E1: float :param : param nmaxiter: 最大反復回数。 :param : type nmaxiter: int :param : param eps: 収束判定に使用する許容誤差 (エネルギー差) (eV)。 :param : type eps: float :param : param w: 量子井戸の幅 (Å)。 :param : type w: float :param : param V0: 障壁の高さ (eV)。 :param : type V0: float :param : param meff: 有効質量 (me単位)。 :param : type meff: float :param : param IsPrint: デバッグ情報を出力するかどうかのフラグ (0:なし, 1:簡易, 2:詳細)。デフォルトは0。 :param : type IsPrint: int, optional
- 戻り値:
- returns: (収束したエネルギー, 最後のエネルギー差, 最後のdelta値) のタプル。
収束しない場合は (None, None, None) を返します。
- rtype:
tuple[float or None, float or None, float or None]
- Quantum.tb1d.search_neighbors(rmax, Nxmax, crystal)[ソース]
指定された最大距離内で近接サイトを検索します。
- 概要:
結晶構造(crystal)内の各サイトについて、指定された格子周期範囲(Nxmax)と最大距離(rmax)内で 相互作用する可能性のある近接サイトを検索し、リストとして返します。 このリストは、タイトバインディング行列の構築に使用されます。
:param : param rmax: 近接サイトとみなす最大距離 (Å)。 :param : type rmax: float :param : param Nxmax: 検索する格子周期の最大オフセット (例: Nxmax=2 なら -2a, -a, 0, +a, +2a)。 :param : type Nxmax: int :param : param crystal: 結晶サイト情報の辞書リスト。 :param : type crystal: list[dict]
- 戻り値:
- returns: 各サイトに対する近接サイトのリストを含むリスト。
各近接サイトの情報は"isite2", "Nx", "atom2", "name2", "x02", "r"のキーを持つ辞書。
- rtype:
list[list[dict]]
- Quantum.tb1d.siteinf(i, crystal)[ソース]
crystalリストから指定されたサイトの全ての情報を取得します。
- 概要:
指定されたインデックスiに対応する結晶サイトのプロパティ(名前、原子インデックス、原子情報、位置x0、井戸幅、井戸の最小/最大x座標、基底電位、有効質量)を返します。
:param : param i: crystalリスト内のサイトのインデックス。 :param : type i: int :param : param crystal: 結晶サイト情報の辞書リスト。 :param : type crystal: list[dict]
- 戻り値:
returns: (名前, 原子インデックス, 原子辞書, x0, 井戸幅, 井戸のxmin, 井戸のxmax, 基底電位, 有効質量) のタプル。 :rtype: tuple[str, int, dict, float, float, float, float, float, float]
- Quantum.tb1d.solve_eigenstates(k, basisset, neighborlist, IsPrint=0)[ソース]
指定された波数kにおけるタイトバインディング法によるエネルギー固有状態を解きます。
- 概要:
波数k (Bloch波数) に対応するBlochの定理を考慮したハミルトニアン行列 (Fij) と重なり積分行列 (Sij) を構築し、 一般化固有値問題 Hc = ES c を解きます。ただし、この実装では S^(-1) H の固有値を計算しています。 得られた固有値がエネルギーバンドの各点に対応します。
:param : param k: 波数 (単位は π/a)。 :param : type k: float :param : param basisset: タイトバインディング計算に使用する基底関数のリスト。 :param : type basisset: list[dict] :param : param neighborlist: 各サイトの近接サイト情報を含むリスト。 :param : type neighborlist: list[list[dict]] :param : param IsPrint: デバッグ情報を出力するかどうかのフラグ (0:なし, 1:簡易, 2:詳細)。デフォルトは0。 :param : type IsPrint: int, optional
- 戻り値:
- returns: (エネルギー固有値の実部配列, 固有ベクトル配列, 計算結果の詳細辞書) のタプル。
固有ベクトルは現在空のリストとして返されます。
- rtype:
tuple[numpy.ndarray, list, dict]
- Quantum.tb1d.terminate(message=None)[ソース]
プログラムを終了し、オプションでメッセージと使用法を表示します。
- 概要:
指定されたメッセージ(オプション)を表示し、usage関数を呼び出してスクリプトの使用法を表示した後、プログラムを終了します。
:param : param message: 終了前に表示するメッセージ。デフォルトはNone。 :param : type message: str or None, optional
- 戻り値:
returns: None (プログラムは終了します)
- Quantum.tb1d.usage()[ソース]
スクリプトのコマンドライン引数の使用法を表示します。
- 概要:
スクリプトの正しい実行方法とオプションの引数に関する情報を標準出力に出力します。
- 戻り値:
returns: None
- Quantum.tb1d.view_basis()[ソース]
量子井戸のポテンシャル、エネルギー準位、波動関数(基底関数)を表示します。
- 概要:
設定された結晶構造と原子情報に基づいて、矩形量子井戸ポテンシャルを描画します。 無限に深い量子井戸と有限の量子井戸の両方についてエネルギー準位を計算し、 有限量子井戸のエネルギー準位に対応する波動関数もプロットします。 また、波動関数の数値積分によるエネルギー期待値も計算し、解析解と比較します。
- 戻り値:
returns: None (結果はmatplotlibで表示されます)
- Quantum.tb1d.wf()[ソース]
波動関数描画モードのエントリポイントです。(現在未実装)
- 概要:
この関数は現在、実装されておらず、呼び出されるとプログラムを終了し、使用法を表示します。 将来的に個々の波動関数を詳細に描画する機能が追加される可能性があります。
- 戻り値:
returns: None (プログラムは終了します)
- Quantum.tb1d.wf_innerproduct(x, y1, y2)[ソース]
2つの波動関数の内積を数値的に計算します(台形近似)。
- 概要:
与えられたx座標と2つの波動関数 y1 および y2 を用いて、 ∫y1*(x)y2(x)dx の内積を台形近似により数値積分します。
:param : param x: x座標のリストまたは配列。 :param : type x: list[float] or numpy.ndarray :param : param y1: 最初の波動関数値のリストまたは配列(複素数可)。 :param : type y1: list[complex] or numpy.ndarray :param : param y2: 2番目の波動関数値のリストまたは配列(複素数可)。 :param : type y2: list[complex] or numpy.ndarray
- 戻り値:
returns: 計算された内積の複素数値。 :rtype: complex