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

必要な非標準ライブラリとインストール方法

本ライブラリは数値計算や特殊関数のために、以下の非標準ライブラリに依存しています。

  • numpy

  • scipy

これらがインストールされていない場合は、以下のコマンドを実行してインストールしてください。

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) 文字列形式で与えられた指定(例: 3dxy210c)を正規表現で解析し、表現タイプ(実数か複素数かなど)と、抽出されたパラメータリストを返します。

  • 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 として実行した場合、関数や変数の定義が行われるだけで何も出力されず、即座に終了します。