schrodinger1d プログラム仕様
概要: 1次元シュレーディンガー方程式ソルバー
- 詳細説明:
このスクリプトは、1次元の定常シュレーディンガー方程式を射撃法を用いて数値的に解きます。 原子単位系 (atomic units) を使用し、Verlet積分を用いて波動関数を計算します。 境界条件として「漸近条件 (asymptotic)」または「ゼロ条件 (zero)」を選択でき、 結果はExcelファイルに保存され、matplotlibで可視化されます。
- 関連リンク:
schrodinger1d_usage
- Quantum.schrodinger1d.V(x)
概要: ポテンシャルエネルギーを計算します。
- 詳細説明:
現在の実装では、調和振動子ポテンシャル V(x) = 0.5 * x**2 (Ha) を使用しています。 他のポテンシャルを使用する場合は、この関数を変更してください。
- 引数:
- param x:
位置 (原子単位)
- type x:
float or numpy.ndarray
- 戻り値:
- returns:
ポテンシャルエネルギー V(x) (Ha)
- rtype:
float or numpy.ndarray
- Quantum.schrodinger1d.initialize()
概要: コマンドライン引数を初期化し、パースします。
- 詳細説明:
argparse モジュールを使用して、エネルギーの推定値、計算領域、メッシュ点数、 波動関数の発散閾値、レポート間隔、出力ファイル名、境界条件、初期微分値といった パラメータを定義します。
- 戻り値:
- returns:
argparse.ArgumentParserオブジェクトとargparse.Namespaceオブジェクトを含むタプルです。
- rtype:
tuple[argparse.ArgumentParser, argparse.Namespace]
- Quantum.schrodinger1d.main()
概要: プログラムのメイン処理を実行します。
- 詳細説明:
本関数は、まずコマンドライン引数をパースして初期設定を行います。 次に、パースされた引数を使用して solve_schrodinger 関数を呼び出し、 1次元シュレーディンガー方程式を解きます。 その後、計算結果のメッセージと終了点の波動関数値を出力し、 最後に save_and_plot 関数を呼び出して結果をExcelに保存し、グラフを表示します。
- 戻り値:
- returns:
なし
- rtype:
None
- Quantum.schrodinger1d.save_and_plot(x, psi, outfile, diverged=False, diverged_x=None)
概要: 計算結果の波動関数データをExcelファイルに保存し、matplotlibでプロットします。
- 詳細説明:
波動関数 psi と確率密度 abs(psi)**2 をExcelファイル (outfile) に保存します。 matplotlibを用いて psi と abs(psi)**2 をグラフ表示します。 波動関数が発散した場合は、発散が始まったx座標に垂直な破線が追加され、y軸が対数スケールになります。
- 引数:
- param x:
x座標の配列
- type x:
numpy.ndarray
- param psi:
計算された波動関数の配列
- type psi:
numpy.ndarray
- param outfile:
データ保存先のExcelファイル名
- type outfile:
str
- param diverged:
波動関数が計算中に発散したかどうかを示すフラグ。デフォルトはFalse。
- type diverged:
bool
- param diverged_x:
波動関数が発散し始めたx座標。diverged がTrueの場合にのみ使用されます。 デフォルトはNone。
- type diverged_x:
float or None
- 戻り値:
- returns:
なし
- rtype:
None
- Quantum.schrodinger1d.solve_schrodinger(E, L, nx, psi_max, report_step, bc, eps)
概要: 1次元シュレーディンガー方程式を射撃法で解きます。
- 詳細説明:
Verlet積分を用いて波動関数を数値的に伝播させます。 指定された境界条件 (bc) に基づいて初期条件を設定し、 計算中に波動関数が psi_max を超えた場合、発散と判断して計算を中断します。 計算の進行状況は report_step 間隔で出力されます。
- 引数:
- param E:
エネルギー固有値の推定値 (Ha)
- type E:
float
- param L:
計算領域の半分のサイズ。xは[-L, L]の範囲になります。
- type L:
float
- param nx:
メッシュ点の数
- type nx:
int
- param psi_max:
波動関数の発散を検出するための閾値
- type psi_max:
float
- param report_step:
計算の進行状況を報告するステップ間隔。0以下の場合は報告しません。
- type report_step:
int
- param bc:
境界条件のタイプ ("asymptotic" または "zero")
- type bc:
str
- param eps:
bc="zero" の場合に使用される、x=-Lにおける波動関数の初期微分値
- type eps:
float
- 戻り値:
- returns:
x座標の配列 x_full、波動関数の配列 psi_full、および計算情報を含む辞書 info のタプルを返します。 info辞書には、"success" (bool)、"diverged" (bool)、"diverged_x" (float or None)、 "message" (str) のキーが含まれています。
- rtype:
tuple[numpy.ndarray, numpy.ndarray, dict]