pw1d プログラム仕様

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

エネルギーバンド構造を計算し、自由電子バンドと共にプロットする。

詳細: 異なる波数`k`に対して固有方程式を解き、エネルギー固有値を計算する。

計算されたバンド構造は、自由電子のエネルギーバンドと比較してMatplotlibでプロットされる。

戻り値:

None

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

空間グリッド上のポテンシャル分布を構築する。

詳細: pot 関数を使用して、指定された範囲とステップでポテンシャル値を計算し、x座標とポテンシャル値の配列を返す。 :param xmin: float: ポテンシャル計算を開始するx座標。 :param xstep: float: x座標のステップサイズ。 :param n: int: 計算する点の数。 :returns: tuple[numpy.ndarray, numpy.ndarray]: x座標の配列と対応するポテンシャル値の配列。

Quantum.pw1d.cal_fft(na, a, ypot)[ソース]

実空間ポテンシャルのフーリエ変換を計算し、物理的な逆格子空間の表現に変換する。

詳細: numpyのFFT関数を使用し、結果をG<0の成分が負のG値に対応するようにシフトする。 :param na: int: FFTに用いるサンプリング点の数。 :param a: float: 格子定数(単位長さ)。 :param ypot: numpy.ndarray[float]: 実空間のポテンシャル値の配列。 :returns: tuple:

  • xft0 (list[int]): FFTの生の結果のx軸インデックス(0からna-1)。

  • yft0 (numpy.ndarray[complex]): FFTの生の結果のフーリエ変換されたポテンシャル。

  • xft (numpy.ndarray[float]): 物理的に並べ替えられた逆格子座標 (G値)。

  • yft (numpy.ndarray[complex]): 物理的に並べ替えられたフーリエ変換されたポテンシャル。

  • iGlist (list[int]): G値に対応する逆格子点の整数インデックス。

  • nahalf (int): FFT点の数の半分。

  • xftstep (float): 逆格子空間のステップサイズ。

Quantum.pw1d.cal_wf(xwmin, xwmax, nxw, kw, ci, Glist)[ソース]

平面波係数から実空間の波動関数を計算する。

詳細: 指定された空間範囲とグリッドで、平面波の重ね合わせとして波動関数とその確率密度を計算する。 :param xwmin: float: 波動関数を計算するx座標の最小値。 :param xwmax: float: 波動関数を計算するx座標の最大値。 :param nxw: int: 計算するx点の数。 :param kw: float: ブロッホ波の波数。 :param ci: list[complex] or numpy.ndarray[complex]: 各G点に対応する平面波の係数。 :param Glist: list[int] or numpy.ndarray[int]: 考慮する逆格子点(G値)のリスト。 :returns: tuple[numpy.ndarray[complex], numpy.ndarray[complex], numpy.ndarray[float]]:

  • xwf (numpy.ndarray[complex]): 波動関数を評価したx座標の配列。

  • ywf (numpy.ndarray[complex]): 計算された波動関数の複素数値の配列。

  • charge (numpy.ndarray[float]): 波動関数の確率密度(|Ψ|^2)の配列。

Quantum.pw1d.extract_basis(yft0, nG)[ソース]

フーリエ変換されたポテンシャルから、指定された数のG点基底(平面波基底)を抽出する。

詳細: `nG`に基づき、中心(G=0)から対称的にG点を抽出し、それに対応するポテンシャル値をリストに格納する。 :param yft0: numpy.ndarray[complex]: FFTの生の結果のフーリエ変換されたポテンシャル。 :param nG: int: 抽出するG点の総数。 :returns: tuple:

  • Glist (numpy.ndarray[int]): 抽出されたG点の整数インデックスのリスト。

  • Vftlist (numpy.ndarray[complex]): 抽出されたG点に対応するフーリエ変換されたポテンシャル値のリスト。

  • nGmax (int): Glistにおける最大の正のG値(またはnGが小さい場合の特定のインデックス)。

Quantum.pw1d.find_Vft(dij, Glist, Vft)[ソース]

指定された逆格子座標`dij`に対応するフーリエ変換されたポテンシャル値`Vft`を検索する。

詳細: `Glist`を使用して`dij`のインデックスを見つけ、そのインデックスに対応する`Vft`の値を返す。

見つからなかった場合は0.0を返す。

パラメータ:
  • dij -- int: 検索する逆格子座標。

  • Glist -- list[int] or numpy.ndarray[int]: 逆格子座標のリスト。

  • Vft -- list[complex] or numpy.ndarray[complex]: フーリエ変換されたポテンシャル値のリスト。

戻り値:

complex or float: `dij`に対応する`Vft`の値、または0.0。

Quantum.pw1d.find_iG(dij, Glist)[ソース]

指定された逆格子座標`dij`に対応する`Glist`のインデックスを検索する。

詳細: `Glist`内の要素と`dij`を比較し、一致する要素のインデックスを返す。 :param dij: int: 検索する逆格子座標。 :param Glist: list[int] or numpy.ndarray[int]: 逆格子座標のリスト。 :returns: int or None: `dij`が見つかった場合のインデックス、見つからなかった場合はNone。

Quantum.pw1d.free_KE(k, iG)[ソース]

自由電子の運動エネルギーを計算する。

詳細: ブロッホ波の波数`k`と逆格子ベクトル`iG`を用いて、運動エネルギーを求める。 :param k: float: ブロッホ波の波数。単位は`pi/a`の係数。 :param iG: int: 逆格子点の整数インデックス。 :returns: float: 計算された運動エネルギー(eV)。

Quantum.pw1d.ft()[ソース]

ポテンシャルのフーリエ変換を計算し、実空間ポテンシャルとフーリエ変換されたポテンシャルをプロットする。

詳細: 設定されたパラメータに基づいて実空間ポテンシャルを構築し、そのフーリエ変換を実行する。

結果はMatplotlibを用いて、実空間と逆格子空間の両方で可視化される。

戻り値:

None

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

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

詳細: 指定されたインデックスの引数が存在しない場合は、デフォルト値を返す。 :param position: int: 取得する引数の位置(sys.argvのインデックス)。 :param defval: any, optional: 引数が存在しない場合に返すデフォルト値。デフォルトはNone。 :returns: str or any: 取得した引数の文字列、またはデフォルト値。

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

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

詳細: getargpfloat を組み合わせて、引数を浮動小数点数に変換して返す。 :param position: int: 取得する引数の位置。 :param defval: any, optional: 引数が存在しない場合、または変換できなかった場合に返すデフォルト値。デフォルトはNone。 :returns: float or any: 変換された浮動小数点数、またはデフォルト値。

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

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

詳細: getargpint を組み合わせて、引数を整数に変換して返す。 :param position: int: 取得する引数の位置。 :param defval: any, optional: 引数が存在しない場合、または変換できなかった場合に返すデフォルト値。デフォルトはNone。 :returns: int or any: 変換された整数、またはデフォルト値。

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

スクリプトの主要な実行ロジック。

詳細: グローバル変数 mode に基づいて、ft(), band(), wf() のいずれかの関数を呼び出す。

無効なモードが指定された場合はエラーメッセージと共に終了する。

戻り値:

None

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

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

詳細: 変換できない場合はNoneを返し、プログラムは終了しない。 :param str: str: 変換する文字列。 :returns: float or None: 変換された浮動小数点数、または変換できなかった場合はNone。

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

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

詳細: 変換できない場合はNoneを返し、プログラムは終了しない。 :param str: str: 変換する文字列。 :returns: int or None: 変換された整数、または変換できなかった場合はNone。

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

指定された位置でのポテンシャルエネルギーを計算する。

詳細: グローバル変数`pottype`によって矩形障壁 (rect) またはガウス型ポテンシャル (gauss) のいずれかを計算する。

周期境界条件を考慮して reduce 関数を使用する。

パラメータ:

x -- float: ポテンシャルを評価する空間座標。

戻り値:

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

Quantum.pw1d.reduce(x, x0)[ソース]

xをx0の周期で還元する。

詳細: xを`[0, x0)`の範囲にマッピングする。負の値の場合も正しく処理される。 :param x: float: 還元する値。 :param x0: float: 周期。 :returns: float: 還元された値。

Quantum.pw1d.solve_pw(Glist, Vftlist, nGmax, nG, k, IsPrint=0)[ソース]

平面波基底を用いて固有方程式を解き、エネルギー固有値と平面波係数を計算する。

詳細: フォック行列(ハミルトニアン行列)を構築し、Numpyの線形代数ソルバーを用いて固有値問題(Schrödinger方程式)を解く。 :param Glist: numpy.ndarray[int]: 考慮する逆格子点(G値)のリスト。 :param Vftlist: numpy.ndarray[complex]: 各G点に対応するフーリエ変換されたポテンシャル。 :param nGmax: int: `Glist`における最大の正のG値。 :param nG: int: 基底関数の総数。 :param k: float: 計算を行うブロッホ波の波数。 :param IsPrint: int, optional: デバッグ情報の出力レベル。0はなし、1は主要な値、2は詳細な値を出力。デフォルトは0。 :returns: tuple[numpy.ndarray[float], numpy.ndarray[complex]]:

  • ei (numpy.ndarray[float]): 計算されたエネルギー固有値の配列。

  • ci (numpy.ndarray[complex]): 各エネルギー固有値に対応する平面波係数(固有ベクトル)。

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

メッセージを表示し、使用方法を表示してプログラムを終了する。

詳細: エラーが発生した場合などに呼び出され、ユーザーに情報を提供し、スクリプトの実行を停止する。 :param message: str, optional: 終了前に表示するエラーメッセージ。デフォルトはNone。 :returns: None (プログラムが終了するため)

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

スクリプトの正しい使用方法を標準出力に表示する。

詳細: コマンドライン引数の形式と、利用可能なモード(ft, band, wf)およびそれに対応するパラメータの例を示す。 :returns: None

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

波動関数を計算し、ポテンシャルと合わせてプロットする。

詳細: 設定されたパラメータに基づき、ポテンシャル、フーリエ変換されたポテンシャル、固有値、

選択されたエネルギー準位の波動関数を計算し、Matplotlibで可視化する。

戻り値:

None