Debye Function Calculation

このドキュメントは、Pythonプログラム debye_function.py の技術的な側面について解説します。

プログラムの動作

debye_function.py は、固体物理学におけるデバイ模型のデバイ関数 \(f_D(y)\) を計算し、その温度依存性を視覚化するプログラムです。

主な機能は以下の通りです。

  • コマンドライン引数としてデバイ温度 \(T_D\)、計算対象の最低温度 \(T_{min}\)、最高温度 \(T_{max}\)、および温度ステップ \(T_{step}\) を受け取ります。

  • 指定された温度範囲で、数値積分によってデバイ関数 \(f_D(y)\) を計算します。ここで、\(y = T_D / T\) です。

  • 計算結果を標準出力に表形式で表示します。

  • matplotlib を使用して、デバイ関数の温度依存性をグラフとして表示します。

本プログラムは、デバイ模型における固体の定積モル熱容量の計算などに用いられるデバイ関数の挙動を、ユーザー指定のパラメータで簡単に確認できることを目的としています。

原理

本プログラムは、以下のデバイ関数の定義式に基づいて計算を行います。

\[f_D(y) = \frac{3}{y^3} \int_{0}^{y} \frac{x^4 e^x}{(e^x - 1)^2} dx\]

ここで、\(y = T_D / T\) であり、\(T_D\) はデバイ温度、\(T\) は絶対温度です。

プログラムでは、被積分関数 \(g(x) = \frac{x^4 e^x}{(e^x - 1)^2}\)func(x) 関数として定義しています。 デバイ関数の値は、scipy.integrate.quad 関数を使用して、0 から \(y\) までの \(g(x)\) の定積分を数値的に計算し、その結果に \(3/y^3\) を乗じることで求められます。

特殊なケースとして、計算温度 \(T\)\(0\) K 以下の場合、プログラムは \(y=0.0\) とみなし、デバイ関数 \(f_D(y)\) の値も \(0.0\) と定めています。これは数値計算上の安定性を考慮した処理です。

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

本プログラムの実行には、以下の非標準Pythonライブラリが必要です。

  • NumPy: 数値計算を効率的に行うためのライブラリ。

  • SciPy: 科学技術計算のためのライブラリ。特にintegrateモジュールが数値積分に用いられます。

  • Matplotlib: グラフ描画のためのライブラリ。

これらのライブラリは、以下の pip コマンドでインストールできます。

pip install numpy scipy matplotlib

必要な入力ファイル

本プログラムは、実行時に必要な全てのパラメータをコマンドライン引数として受け取ります。したがって、特別な入力ファイルは必要ありません。

生成される出力ファイル

本プログラムは、実行時に以下の出力を生成します。

  • 標準出力: 計算された各温度 \(T\) における \(T/T_D\)\(y\)\(積分値 (integ)\)、およびデバイ関数 \(f_D(T_D/T)\) の値が表形式で表示されます。

  • グラフ表示: matplotlib によって生成されたグラフィックウィンドウが表示され、デバイ関数 \(f_D(T_D/T)\) の温度依存性が視覚化されます。グラフの横軸は温度 \(T\) (K)、縦軸はデバイ関数 \(f_D(T_D/T)\) の値です。デバイ温度 \(T_D\)\(f_D=1.0\) のラインが破線で示されます。グラフは、ユーザーがEnterキーを押すまで表示され続けます。

プログラムはファイルとして結果を保存しません。

コマンドラインでの使用例 (Usage)

基本的な実行コマンドと引数の説明は以下の通りです。

python debye_function.py TD Tmin Tmax Tstep
  • TD: デバイ温度 (\(T_D\)) をケルビン (K) で指定します。浮動小数点数。

  • Tmin: 計算を開始する最低温度 (\(T_{min}\)) をケルビン (K) で指定します。浮動小数点数。

  • Tmax: 計算を終了する最高温度 (\(T_{max}\)) をケルビン (K) で指定します。浮動小数点数。

  • Tstep: 温度の計算ステップ (\(T_{step}\)) をケルビン (K) で指定します。浮動小数点数。

引数を省略した場合、プログラムはデフォルト値を使用します。引数が与えられない場合は使用法が表示されます。

コマンドラインでの具体的な使用例

デバイ温度を \(300\) K、温度範囲を \(0\) K から \(500\) K まで、\(10\) K刻みでデバイ関数を計算する場合の例です。

python debye_function.py 300 0 500 10

このコマンドを実行すると、以下のような結果が標準出力に表示され、同時にデバイ関数のグラフが新しいウィンドウで表示されます。

  T(K)   T/TD   integ  fD(T/TD)
   0.0  0.0000        0.0     0.0000
  10.0 30.0000 0.000000e+00    0.0000
  20.0 15.0000 0.000000e+00    0.0000
  ...
 300.0  1.0000 6.493939e-01    0.6494
  ...
 500.0  0.6000 2.219080e-01    0.9995
Press ENTER to exit>> 

グラフウィンドウは、横軸に温度 (K)、縦軸に \(f_D(T_D/T)\) の値を示し、デバイ温度 \(T_D=300\) K と \(f_D=1.0\) のラインが破線で示されます。ユーザーがEnterキーを押すまでグラフは表示されたままになります。