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)[ソース]
コマンドライン引数を浮動小数点数として安全に取得する。
詳細: getarg と pfloat を組み合わせて、引数を浮動小数点数に変換して返す。 :param position: int: 取得する引数の位置。 :param defval: any, optional: 引数が存在しない場合、または変換できなかった場合に返すデフォルト値。デフォルトはNone。 :returns: float or any: 変換された浮動小数点数、またはデフォルト値。
- Quantum.pw1d.getintarg(position, defval=None)[ソース]
コマンドライン引数を整数として安全に取得する。
詳細: getarg と pint を組み合わせて、引数を整数に変換して返す。 :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 (プログラムが終了するため)