D:/git/sphinx/tkProg/source/Quantum/tkWavefunction_H.py
ライブラリの機能や目的
本ライブラリは、量子力学における水素様原子の波動関数を計算するためのPythonモジュールです。 主な機能として、エネルギー準位の計算、量子数(主量子数 \(n\)、方位量子数 \(l\)、磁気量子数 \(m\))に基づく軌道名の取得と解析、動径波動関数および球面調和関数の算出、そして空間座標(極座標および直交座標)上の全体波動関数の振幅計算を提供します。 水素原子の電子軌道の可視化や、量子力学的な数値シミュレーションを実装する際、複雑な数式を直接コーディングする手間を省き、安定した計算基盤を提供することを目的としています。
importする方法
このライブラリを他のPythonプログラムから利用するには、モジュールが配置されているディレクトリにパスを通した上で、以下のようにインポートします。
import tkWavefunction_H
特定の関数や変数のみを利用したい場合は、以下のように記述します。
from tkWavefunction_H import psi_xyz, En
必要な非標準ライブラリとインストール方法
本ライブラリは数値計算や特殊関数のために、以下の非標準ライブラリに依存しています。
numpyscipy
これらがインストールされていない場合は、以下のコマンドを実行してインストールしてください。
pip install numpy scipy
importできる変数と関数
本ライブラリからインポートして利用できる主な変数と関数は以下の通りです。
変数
a0: ボーア半径(オングストローム単位)。h: プランク定数 (J·s)。h_bar: ディラック定数 (J·s)。m_e: 電子の質量 (kg)。e: 電子の電荷 (C)。e0: 真空の誘電率 (F/m)。pi: 円周率(numpy.piと同等)。kRnl: 動径波動関数の規格化係数。KPhi: 球面調和関数の \(\phi\) 成分の規格化係数。KYlm: 球面調和関数の規格化係数。
関数
En(n)主量子数 \(n\) に基づき、水素原子のエネルギー準位を計算します。戻り値は電子ボルト (eV) 単位です。以下の数式を用いて計算されます。\[E_n = - \frac{m_e e^4}{8 \epsilon_0^2 h^2 n^2}\]get_orb_name(n, l, m)量子数 \(n, l, m\) を受け取り、「3dxy」のような軌道名を表す文字列を返します。get_qnumbers(n, l, m)文字列で与えられた軌道記号(「s」や「xy」など)を対応する量子数の数値に変換し、\((n, l, m)\) のタプルとして返します。analyze_function(s)文字列形式で与えられた指定(例:3dxyや210c)を正規表現で解析し、表現タイプ(実数か複素数かなど)と、抽出されたパラメータリストを返します。get_by_type(f, rettype='c')複素数値の波動関数データfから、指定されたrettype(実部r、虚部i、絶対値a、二乗絶対値a2、またはそのまま)に従って値を抽出し、位相角などの情報と合わせて返します。Rnl_if(r, n, l, Z=1.0)主量子数 \(n \le 4\) までの特定の組み合わせに対して、条件分岐を用いて動径波動関数の解析解を直接計算します。rは中心からの距離、Zは原子番号です。Rnl(r, n, l)ラゲールの陪多項式(scipy.special.assoc_laguerre)を用いて、任意の量子数に対する一般的な動径波動関数を計算します。\[R_{nl}(r)\]Ylm_phi_r(phi, m)/Ylm_phi(phi, m)球面調和関数の \(\phi\) 依存成分の実数表現および複素数表現を計算します。Ylm_theta(theta, l, m)ルジャンドルの陪多項式(scipy.special.lpmv)を用いて、球面調和関数の \(\theta\) 依存成分を計算します。Ylm(theta, phi, l, m, phase_m=0.0)極座標 \((\theta, \phi)\) における球面調和関数の複素数値を計算します。Ylm_r(theta, phi, l, m, phase_m=0.0)極座標 \((\theta, \phi)\) における球面調和関数の実数表現成分を計算します。Ylm_xyz(x, y, z, l, m, phase_m=0.0)直交座標 \((x, y, z)\) における球面調和関数の実数表現成分を計算します。内部で極座標に変換処理を行っています。Ylm_real(theta, phi, l, m, phase_m=0.0)/Ylm_xyz_real(x, y, z, l, m, phase_m=0.0)極座標および直交座標における実数球面調和関数を計算します。磁気量子数 \(m\) の符号によって実部または虚部を選択します。psi_r(r, theta, phi, n, l, m, phase=0.0)極座標における水素原子の全体波動関数(複素数)を計算します。動径成分と球面調和関数の積として以下の数式で表されます。\[\psi_{nlm}(r, \theta, \phi) = R_{nl}(r) Y_l^m(\theta, \phi)\]psi_xyz(x, y, z, n, l, m, phase=0.0)直交座標における水素原子の全体波動関数(複素数)を計算します。psi_r_real(r, theta, phi, n, l, m, phase=0.0)/psi_xyz_real(x, y, z, n, l, m, phase=0.0)極座標および直交座標における、実数化された水素原子の全体波動関数を計算します。磁気量子数 \(m\) の符号によって実部または虚部を取得し、軌道の形状を実空間で表現します。
main scriptとして実行したときの動作
本ファイルはモジュールとしてインポートされることを前提として設計されており、ファイルの末尾等に実行ブロック(例えば if __name__ == '__main__': など)が存在しません。
そのため、このスクリプトを単独の main script として実行した場合、関数や変数の定義が行われるだけで何も出力されず、即座に終了します。