transfer_matrix プログラム仕様

伝達行列法を用いて1次元の波動関数と透過確率を計算するモジュール。

このスクリプトは、多層構造における電子の1次元波動関数と透過確率を、 伝達行列法(Transfer Matrix Method)を用いて計算します。 ポテンシャルプロファイルは、Excelファイルから読み込むか、 または多重量子井戸(Multiple Quantum Well, MQW)モデルに基づいて生成することができます。 計算結果はグラフとして表示され、透過確率データはExcelファイルに保存されます。

関連リンク: transfer_matrix.py 技術ドキュメント

IsInBarrier(z)[ソース]

指定されたz座標がポテンシャル障壁内にあるかを判定します。

グローバル変数 wellwidth, barrierwidth, nbarriers に基づき、 多重量子井戸構造における障壁領域にzが属するかをチェックします。

パラメータ:

z (float) -- 判定するz座標 (Å)。

戻り値:

zが障壁内にある場合は1、それ以外の場合は0。

戻り値の型:

int

U(z)[ソース]

指定されたz座標におけるポテンシャルエネルギーを返します。

IsInBarrier 関数を使用してz座標が障壁内にあるかを判断し、 障壁内であれば barrierheight (eV) を、そうでなければ0.0 eVを返します。

パラメータ:

z (float) -- ポテンシャルエネルギーを評価するz座標 (Å)。

戻り値:

zにおけるポテンシャルエネルギー (eV)。

戻り値の型:

float

analytical_check(Ez, a)[ソース]

無限に深い井戸型ポテンシャルの解析解との比較情報を提供します。

指定されたエネルギー Ez と井戸幅 a を用いて、自由粒子の波数と、 無限に深い井戸型ポテンシャルの基底状態エネルギーを計算し、表示します。 これは、計算結果の妥当性を確認するための参考情報です。

パラメータ:
  • Ez (float) -- 比較に使用するエネルギー (eV)。

  • a (float) -- 無限井戸の幅 (Å)。

build_U(pottype, xz=None)[ソース]

ポテンシャルエネルギーと有効質量プロファイルを作成または読み込みます。

pottype が 'mqw' の場合、多重量子井戸モデルに基づいてポテンシャル yU と 有効質量 ym を生成します。それ以外の場合、指定されたExcelファイルから ポテンシャルと有効質量のデータを読み込みます。

パラメータ:
  • pottype (str) -- ポテンシャルの種類 ('mqw' または Excelファイルパス)。

  • xz (numpy.ndarray, optional) -- 'mqw'タイプの場合に使用されるz座標の配列。Noneの場合は生成される。

戻り値:

(データ点の数, z座標配列, ポテンシャルエネルギー配列, 有効質量配列)。

戻り値の型:

tuple[int, numpy.ndarray, numpy.ndarray, numpy.ndarray]

cal_wf(xz, yU, ym, Ez)[ソース]

伝達行列法を用いて1次元波動関数と透過確率を計算します。

与えられたz座標、ポテンシャル、有効質量、およびエネルギーに対して、 各セクションの波数 kz、振幅 AB、および波動関数 Psi を計算します。 最終的に透過確率 T も算出します。

パラメータ:
  • xz (numpy.ndarray) -- z座標の配列 (Å)。

  • yU (numpy.ndarray) -- 各z座標におけるポテンシャルエネルギーの配列 (eV)。

  • ym (numpy.ndarray) -- 各z座標における有効質量の配列 (電子質量 me の倍数)。

  • Ez (float) -- 電子の入射エネルギー (eV)。

戻り値:

(波数配列, A振幅配列, B振幅配列, 波動関数配列, 透過確率)。

戻り値の型:

tuple[numpy.ndarray, numpy.ndarray, numpy.ndarray, numpy.ndarray, float]

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

コマンドライン引数を安全に取得します。

sys.argv から指定された位置の引数を取得します。 指定された位置に引数が存在しない場合は、デフォルト値を返します。

パラメータ:
  • position (int) -- 取得する引数の位置 (0-indexed)。

  • defval (any, optional) -- 引数が存在しない場合に返すデフォルト値。

戻り値:

指定された位置の引数、またはデフォルト値。

戻り値の型:

str or any

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

コマンドライン引数を浮動小数点数として安全に取得します。

sys.argv から指定された位置の引数を取得し、pfloat 関数を使って 浮動小数点数に変換します。引数が存在しない、または変換できない場合は デフォルト値を返します。

パラメータ:
  • position (int) -- 取得する引数の位置 (0-indexed)。

  • defval (float or None, optional) -- 引数が存在しない、または変換できない場合に返すデフォルト値。

戻り値:

変換された浮動小数点数、またはデフォルト値。

戻り値の型:

float or None

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

コマンドライン引数を整数として安全に取得します。

sys.argv から指定された位置の引数を取得し、pint 関数を使って 整数に変換します。引数が存在しない、または変換できない場合は デフォルト値を返します。

パラメータ:
  • position (int) -- 取得する引数の位置 (0-indexed)。

  • defval (int or None, optional) -- 引数が存在しない、または変換できない場合に返すデフォルト値。

戻り値:

変換された整数、またはデフォルト値。

戻り値の型:

int or None

meff(z)[ソース]

指定されたz座標における有効質量を返します。

z座標に基づいて、井戸領域または障壁領域の有効質量(電子質量meの倍数)を返します。 この関数はハードコードされた領域に依存します。

パラメータ:

z (float) -- 有効質量を評価するz座標 (Å)。

戻り値:

zにおける有効質量(電子質量 me の倍数)。

戻り値の型:

float

pfloat(str)[ソース]

文字列を浮動小数点数に安全に変換します。

float() 関数と同様に文字列を浮動小数点数に変換しますが、 変換に失敗した場合はエラーを発生させずにNoneを返します。

パラメータ:

str (str) -- 変換する文字列。

戻り値:

変換された浮動小数点数、または変換できなかった場合はNone。

戻り値の型:

float or None

pint(str)[ソース]

文字列を整数に安全に変換します。

int() 関数と同様に文字列を整数に変換しますが、 変換に失敗した場合はエラーを発生させずにNoneを返します。

パラメータ:

str (str) -- 変換する文字列。

戻り値:

変換された整数、または変換できなかった場合はNone。

戻り値の型:

int or None

terminate(message=None)[ソース]

指定されたメッセージを表示し、プログラムを終了します。

エラーメッセージなどを表示した後、usage() 関数を呼び出して使用方法を表示し、 システムを終了します。

パラメータ:

message (str, optional) -- 終了時に表示するメッセージ。

tr()[ソース]

エネルギーに対する透過確率を計算し、結果をプロットします。

コマンドライン引数またはグローバル設定に基づき、指定されたエネルギー範囲で 透過確率を計算します。計算されたポテンシャルプロファイルと透過確率は Excelファイルに保存され、複数のグラフとして表示されます。

usage()[ソース]

プログラムの正しい使用方法を標準出力に表示します。

プログラムの実行モード (wf または tr) に応じたコマンドライン引数の例を示します。

wf()[ソース]

特定のエネルギーにおける波動関数を計算し、結果をプロットします。

コマンドライン引数またはグローバル設定に基づき、指定された単一のエネルギー Ez0 に対して 波動関数 Psi を計算します。計算されたポテンシャルプロファイルと波動関数は 複数のグラフとして表示されます。