kronig_penney プログラム仕様

Quantum.kronig_penney.band()[ソース]

概要: Kronig-Penneyモデルのエネルギーバンド構造を計算し、プロットする。 詳細説明: 指定された波数範囲 (kmin から kmax) で複数の k 点に対して許容エネルギー準位を計算し、

E-k図(バンド構造)をプロットする。

Quantum.kronig_penney.build_potential(xmin, xstep, n)[ソース]

概要: 指定された範囲でポテンシャルプロファイルを作成する。 詳細説明: xmin から開始し、n 個の点に対して xstep 間隔でポテンシャル値を計算する。 :param xmin: float 最初のx座標 (A)。 :param xstep: float x座標のステップ幅 (A)。 :param n: int 計算する点の数。 :returns: tuple (numpy.ndarray, numpy.ndarray) x座標の配列と対応するポテンシャル値の配列のタプル。

Quantum.kronig_penney.cal_delta(E, k, w, b, V0)[ソース]

概要: Kronig-Penneyモデルのエネルギー方程式の左辺 delta(E) を計算する。 詳細説明: エネルギー E と波数 k、ポテンシャルパラメータ w、b、V0 を用いて、

周期的な結晶における電子のエネルギー準位を決定する方程式の値を計算する。 delta(E) = cos(ka) となる E が許容エネルギーとなる。

パラメータ:
  • E -- float 電子のエネルギー (eV)。

  • k -- float ブロッホ波数 (単位: pi/a)。

  • w -- float ポテンシャル井戸の幅 (A)。

  • b -- float ポテンシャル障壁の幅 (A)。

  • V0 -- float ポテンシャル障壁の高さ (eV)。

戻り値:

float Kronig-Penneyモデル方程式の左辺の値。

Quantum.kronig_penney.cal_wavefunction(ci, x, kw, Ei, w, b, V0)[ソース]

概要: 指定された係数 ci を用いて、Kronig-Penneyモデルの波動関数 Psi(x) を計算する。 詳細説明: ブロッホの定理に基づき Psi(x) = exp(ikx) * u(x) の形式で波動関数を構築する。

u(x) は周期関数で、ポテンシャル障壁内外で異なる形を取る。

パラメータ:
  • ci -- list of complex 波動関数の係数リスト。

  • x -- float 波動関数を評価する位置 (A)。

  • kw -- float ブロッホ波数 (単位: pi/a)。

  • Ei -- float 電子のエネルギー (eV)。

  • w -- float ポテンシャル井戸の幅 (A)。

  • b -- float ポテンシャル障壁の幅 (A)。

  • V0 -- float ポテンシャル障壁の高さ (eV)。

戻り値:

complex 位置 x における複素波動関数の値。

Quantum.kronig_penney.check_ci(ci, kw, Ei, w, b, V0, eps, IsPrint=0)[ソース]

概要: 波束係数 ci がKronig-Penneyモデルの境界条件を満たしているか検証する (デバッグ用)。 詳細説明: 4つの境界条件式に ci を代入し、その結果が eps より小さいかを確認する。

満たさない場合はエラーで終了する。

パラメータ:
  • ci -- list of complex 波動関数の係数リスト。

  • kw -- float ブロッホ波数 (単位: pi/a)。

  • Ei -- float 電子のエネルギー (eV)。

  • w -- float ポテンシャル井戸の幅 (A)。

  • b -- float ポテンシャル障壁の幅 (A)。

  • V0 -- float ポテンシャル障壁の高さ (eV)。

  • eps -- float 許容誤差。

  • IsPrint -- int 詳細を出力するかどうかのフラグ (0: なし, 1: あり)。

Quantum.kronig_penney.find_Elist(Emin, Emax, nEsearch, k, w, b, V0)[ソース]

概要: 指定されたエネルギー範囲でKronig-Penneyモデルの許容エネルギー準位と対応する係数を見つける。 詳細説明: Emin から Emax までを nEsearch 分割して cal_delta(E) の符号反転を探索し、

Secant法で厳密なエネルギー値を特定する。同時に波動関数の係数 ci も計算する。

パラメータ:
  • Emin -- float 探索するエネルギー範囲の最小値 (eV)。

  • Emax -- float 探索するエネルギー範囲の最大値 (eV)。

  • nEsearch -- int エネルギー範囲の探索ステップ数。

  • k -- float ブロッホ波数 (単位: pi/a)。

  • w -- float ポテンシャル井戸の幅 (A)。

  • b -- float ポテンシャル障壁の幅 (A)。

  • V0 -- float ポテンシャル障壁の高さ (eV)。

戻り値:

tuple (list of float, list of list of complex) 許容エネルギー準位のリストと、各準位に対応する波動関数係数のリストのタプル。

Quantum.kronig_penney.getarg(position, defval=None)[ソース]

概要: コマンドライン引数を安全に取得する。 詳細説明: 指定された位置の引数が存在しない場合、デフォルト値を返す。 :param position: int 取得する引数の位置(インデックス)。 :param defval: Any 引数が存在しない場合に返すデフォルト値。 :returns: Any 指定された位置の引数、またはデフォルト値。

Quantum.kronig_penney.getfloatarg(position, defval=None)[ソース]

概要: コマンドライン引数をfloat型に変換して安全に取得する。 詳細説明: 指定された位置の引数が存在しない場合やfloatに変換できない場合、デフォルト値を返す。 :param position: int 取得する引数の位置(インデックス)。 :param defval: float または None 引数が存在しない場合や変換できない場合に返すデフォルト値。 :returns: float または None 変換されたfloat値の引数、またはデフォルト値。

Quantum.kronig_penney.getintarg(position, defval=None)[ソース]

概要: コマンドライン引数をint型に変換して安全に取得する。 詳細説明: 指定された位置の引数が存在しない場合やintに変換できない場合、デフォルト値を返す。 :param position: int 取得する引数の位置(インデックス)。 :param defval: int または None 引数が存在しない場合や変換できない場合に返すデフォルト値。 :returns: int または None 変換されたint値の引数、またはデフォルト値。

Quantum.kronig_penney.graphview()[ソース]

概要: Kronig-Penneyモデルの許容エネルギー方程式の delta(E) 関数をプロットする。 詳細説明: 特定の波数 kg に対して、エネルギー E の関数としての cal_delta(E) の値を計算し、

グラフ表示する。delta(E)=0 となる点が許容エネルギー準位を示す。

Quantum.kronig_penney.main()[ソース]

概要: プログラムのエントリポイント。 詳細説明: コマンドライン引数で指定された mode に応じて、graphview、band、または wf 関数を呼び出す。

無効なモードが指定された場合はエラーメッセージを表示して終了する。

Quantum.kronig_penney.pfloat(str)[ソース]

概要: 文字列をfloat型に安全に変換する。 詳細説明: 変換できない場合はNoneを返す。 :param str: str 変換する文字列。 :returns: float または None 変換されたfloat値、またはNone。

Quantum.kronig_penney.pint(str)[ソース]

概要: 文字列をint型に安全に変換する。 詳細説明: 変換できない場合はNoneを返す。 :param str: str 変換する文字列。 :returns: int または None 変換されたint値、またはNone。

Quantum.kronig_penney.pot(x)[ソース]

概要: 矩形ポテンシャル関数を定義する。 詳細説明: 0 <= x < a - bwidth の範囲ではポテンシャルは0、a - bwidth <= x < a の範囲では bpot のポテンシャルを返す。周期 a を持つ。 :param x: float 位置 (A)。 :returns: float 指定された位置 x におけるポテンシャル値 (eV)。

Quantum.kronig_penney.refine_E(E0, E1, nmaxiter, eps, dump, k, w, b, V0, IsPrint=0)[ソース]

概要: Secant法を用いてKronig-Penneyモデルの許容エネルギー E を高精度化する。 詳細説明: cal_delta(E)=0 となる E をSecant法で探索し、収束したエネルギー値を返す。 :param E0: float 探索範囲の下限エネルギー (eV)。 :param E1: float 探索範囲の上限エネルギー (eV)。 :param nmaxiter: int 最大繰り返し回数。 :param eps: float 収束判定の許容誤差。 :param dump: float 収束を助けるための微小な値。 :param k: float ブロッホ波数 (単位: pi/a)。 :param w: float ポテンシャル井戸の幅 (A)。 :param b: float ポテンシャル障壁の幅 (A)。 :param V0: float ポテンシャル障壁の高さ (eV)。 :param IsPrint: int 詳細を出力するかどうかのフラグ (0: なし, 1: あり)。 :returns: tuple (float, float, float) または (None, None, None)

収束したエネルギー (float)、最終的なエネルギー変化 (float)、最終的なdelta値 (float) のタプル。 収束しない場合はNoneのタプル。

Quantum.kronig_penney.round01(x, a)[ソース]

概要: 数値を区間 [0, a) にマッピングし、周期的なオフセットを計算する。 詳細説明: x = n * a + x0 となるような x0 と整数 n を計算する。x0 は 0 <= x0 < a の範囲に収まる。 :param x: float マッピング対象の数値。 :param a: float 周期の幅。 :returns: tuple (float, int) x を a で割った余り x0 と整数 n のタプル。

Quantum.kronig_penney.terminate(message=None)[ソース]

概要: エラーメッセージを表示してプログラムを終了する。 詳細説明: usage() 関数を呼び出した後、指定されたメッセージ(任意)を表示してプログラムを終了する。 :param message: str または None 表示するエラーメッセージ(オプション)。

Quantum.kronig_penney.usage()[ソース]

概要: スクリプトの正しい使用方法を標準出力に表示する。 詳細説明: コマンドライン引数の形式といくつかの使用例を示す。

Quantum.kronig_penney.wf()[ソース]

概要: Kronig-Penneyモデルにおける波動関数を計算し、プロットする。 詳細説明: 特定の波数 kw と準位番号 iLevel に対応するエネルギー準位を計算し、

その波動関数を xwmin から xwmax の範囲で描画する。 ポテンシャルプロファイルも重ねて表示する。