S2L.py 技術ドキュメント

プログラムの動作

S2L.py は、Single Parabolic Band (SPB) モデルと緩和時間近似(緩和時間指数 \(r=0\))を用いて、熱電材料のローレンツ数 \(L\) と電子熱伝導率 \(k_e\) を実験データから推定するPythonプログラムです。

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

  1. データ読み込み: Excel (.xlsx) または CSV 形式の入力ファイルから、温度 (\(T\)), ゼーベック係数 (\(S\)), 電気伝導率 (\(\sigma\)), 全熱伝導率 (\(\kappa\)) のデータを読み込みます。

  2. フェルミ準位の計算: 入力されたゼーベック係数 \(S\) と温度 \(T\) を基に、SPBモデルにおける規格化フェルミ準位 \(\eta = E_F/k_B T\) を二分法(Bisection Method)により数値的に計算します。

  3. ローレンツ数の計算: 計算された規格化フェルミ準位 \(\eta\) を用いて、SPBモデルに基づくローレンツ数 \(L\) を算出します。

  4. 電子熱伝導率の計算: 電気伝導率 \(\sigma\) と温度 \(T\)、計算されたローレンツ数 \(L\) から、電子熱伝導率 \(k_e = L \sigma T\) を計算します。

  5. キャリア濃度の計算: 有効質量 (meff) と温度 \(T\) から有効状態密度 \(N_C\) を算出し、規格化フェルミ準位 \(\eta\) を用いてキャリア濃度 \(N_e\) を計算します。

  6. 結果の出力: 計算された規格化フェルミ準位、フェルミ準位、キャリア濃度、ローレンツ数、電子熱伝導率を元の入力データとともに新しいExcelファイルに出力します。

  7. グラフ表示: 計算結果(キャリア濃度 \(N_e\) とゼーベック係数 \(S\) の温度依存性、ローレンツ数 \(L\) の温度依存性、キャリア濃度 \(N_e\) に対する電気伝導率 \(\sigma\) とゼーベック係数 \(S\) およびローレンツ数 \(L\) の関係)をグラフとして表示します。

このプログラムは、熱電材料の電子輸送特性をSPBモデルに基づいて解析し、ローレンツ数を実験的に決定することで、格子熱伝導率などを分離・評価する際に役立ちます。

原理

S2L.py は、熱電材料の輸送特性を記述するために、Single Parabolic Band (SPB) モデルと緩和時間近似を適用しています。緩和時間指数は \(r=0\) (音響フォノン散乱が支配的である場合) に固定されています。

1. ゼーベック係数 \(S\) から規格化フェルミ準位 \(\eta\) の導出

SPBモデルにおいて、緩和時間指数 \(r=0\) の場合のゼーベック係数 \(S\) は、規格化フェルミ準位 \(\eta = E_F / k_B T\) を用いて以下のフェルミ積分で表されます。

\[ S = \frac{k_B}{e} \left( \frac{2F_1(\eta)}{F_0(\eta)} - \eta \right) \]

ここで、\(F_r(\eta)\)\(r\) 次のフェルミ積分です。

\[ F_r(\eta) = \int_0^\infty \frac{x^r}{1 + e^{x-\eta}} dx \]

プログラムでは、S_comparison 関数がこの式に基づいて計算された理論的な \(S\) と実験値の \(S\) との差を評価します。cal_EF_from_S_bisection 関数は、この差がゼロになるように二分法を用いて \(\eta\) を探索します。

2. ローレンツ数 \(L\) の計算

緩和時間指数 \(r=0\) の場合のローレンツ数 \(L\) は、規格化フェルミ準位 \(\eta\) を用いて以下のフェルミ積分で表されます。

\[ L = \left(\frac{k_B}{e}\right)^2 \left( \frac{3F_2(\eta)}{F_0(\eta)} - \left( \frac{2F_1(\eta)}{F_0(\eta)} \right)^2 \right) \]

プログラムでは、Lorenz(EF) 関数がこの式を用いて \(L\) を計算します。ここで EF\(\eta\) に対応します。

3. 電子熱伝導率 \(k_e\) の計算

電子熱伝導率 \(k_e\) は、ローレンツ数 \(L\)、電気伝導率 \(\sigma\)、および温度 \(T\) を用いてワィーデマン-フランツの法則の拡張版として以下のように計算されます。

\[ k_e = L \sigma T \]

プログラムでは、cal_ke 関数がこの式を用いて \(k_e\) を計算します。入力の電気伝導率 \(\sigma\)S/cm 単位ですが、計算時には S/m に変換されます。

4. キャリア濃度 \(N_e\) の計算

キャリア濃度 \(N_e\) は、有効質量 \(m^*\) と温度 \(T\) から計算される有効状態密度 \(N_C\) および規格化フェルミ準位 \(\eta\) を用いて以下のように計算されます。

\[ N_C = 2 \left( \frac{2 \pi m^* k_B T}{h^2} \right)^{3/2} \]
\[ N_e = N_C \cdot \frac{2}{\sqrt{\pi}} F_{1/2}(\eta) \]

プログラムでは、meff2NC_FEA 関数が有効状態密度 \(N_C\) を計算し、cal_Ne 関数がキャリア濃度 \(N_e\) を計算します。ここで、\(m^*\) は自由電子質量に対する有効質量 meff です。

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

このプログラムは、以下のPython非標準ライブラリに依存しています。

  • numpy: 数値計算

  • scipy: 科学技術計算(特に積分 scipy.integrate.quad を使用)

  • pandas: データ構造とデータ解析(Excel入出力に使用)

  • openpyxl: Excelファイル (.xlsx) の読み書き

  • matplotlib: グラフ描画

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

pip install numpy scipy pandas openpyxl matplotlib

また、プログラムは tklib というカスタムライブラリ内のモジュールに依存しています。 from tklib.tkutils import ... from tklib.tkapplication import ... from tklib.tkvariousdata import ... from tklib.tktransport.tkTransport import ...

tklib は一般的なPyPIライブラリではないため、別途提供されるか、環境に応じて入手・設定する必要があります。

必要な入力ファイル

プログラムは、熱電材料の実験データを含むExcelファイル (.xlsx) または CSV ファイルを読み込みます。

期待されるファイル形式: Excel (.xlsx) または CSV (.csv) 形式。

期待されるデータ構造: ファイルには、以下の物理量に対応するデータ列が含まれている必要があります。各列のヘッダーはコマンドライン引数で指定します。

  • 温度 (\(T\)): 単位はケルビン (K)。

  • ゼーベック係数 (\(S\)): 単位はボルト毎ケルビン (V/K) であることを想定しています。もし入力が \(\mu\)V/K の場合は、事前にV/Kに変換してください。

  • 電気伝導率 (\(\sigma\)): 単位はジーメンス毎センチメートル (S/cm)。

  • 全熱伝導率 (\(\kappa\)): 単位はワット毎メートル毎ケルビン (W/m/K)。

: mydata.xlsx (Excelファイル)

T (K)

S (V/K)

sigma (S/cm)

kappa (W/mK)

300

0.00015

1000

2.5

400

0.00020

800

2.0

...

...

...

...

生成される出力ファイル

プログラムは、入力ファイルと同じディレクトリに新しいExcelファイル (.xlsx) を生成します。ファイル名は入力ファイル名に -out.xlsx を付加した形式です(例: mydata.xlsxmydata-out.xlsx)。

保存されるファイル名: {入力ファイル名(拡張子除く)}-out.xlsx

出力ファイルの内容: 生成されるExcelファイルには、以下のデータ列が含まれます。

列名

単位

説明

T(K)

K

温度 (入力データ)

Ne(cm^-3)

cm\(^{-3}\)

キャリア濃度

S(V/K)

V/K

ゼーベック係数 (入力データ)

simga(S/cm)

S/cm

電気伝導率 (入力データ)

kappa(W/m/K)

W/m/K

全熱伝導率 (入力データ)

EF/kBT

-

規格化フェルミ準位 \(\eta\)

EF(eV)

eV

フェルミ準位 \(E_F\)

L

V\(^2\)/K\(^2\)

ローレンツ数

kappa_e(W/m/K)

W/m/K

電子熱伝導率 \(k_e\)

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

S2L.py はコマンドラインから実行します。引数として入力ファイル名と各データの列ラベルを指定します。

基本形式:

python S2L.py <infile> <T_label> <S_label> <sigma_label> <kappa_label> [meff]
  • <infile>: 入力ファイル名(例: mydata.xlsx)。

  • <T_label>: 温度データの列ヘッダー名(例: 'T (K)')。

  • <S_label>: ゼーベック係数データの列ヘッダー名(例: 'S (V/K)')。

  • <sigma_label>: 電気伝導率データの列ヘッダー名(例: 'sigma (S/cm)')。

  • <kappa_label>: 全熱伝導率データの列ヘッダー名(例: 'kappa (W/mK)')。

  • [meff]: オプション。自由電子質量に対する有効質量比 \(m^*/m_e\)。デフォルト値は 1.0

引数の単位に関する注意:

  • <S_label>V/K 単位のデータであることを想定しています。

  • <sigma_label>S/cm 単位のデータであることを想定しています。

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

以下の例では、sample_data.xlsx というファイルを入力として使用し、有効質量 \(m^*/m_e = 1.5\) を指定します。

sample_data.xlsx の内容の例:

T (K)

S (V/K)

sigma (S/cm)

kappa (W/mK)

300

0.00010

1200

1.8

350

0.00012

1000

1.6

400

0.00014

850

1.5

実行コマンド:

python S2L.py sample_data.xlsx 'T (K)' 'S (V/K)' 'sigma (S/cm)' 'kappa (W/mK)' 1.5

実行結果の説明:

プログラムを実行すると、標準出力に以下の情報が表示されます。

  1. 入力ファイル名、出力ファイル名、および各データの列ラベル。

  2. meff の値。

  3. 入力データのサマリー。

  4. 各データポイントに対する計算の詳細(温度、ゼーベック係数、規格化フェルミ準位、フェルミ準位、キャリア濃度、ローレンツ数、電子熱伝導率など)。

  5. 計算結果が sample_data-out.xlsx という名前のExcelファイルに保存される旨のメッセージ。

  6. 計算結果をプロットしたグラフウィンドウが表示されます。グラフは自動的に閉じず、ユーザーが手動で閉じるまで表示され続けます。

  7. 最後に「NOTE: r is limited to 0」という注意書きが表示され、プログラムが一時停止します。

sample_data-out.xlsx ファイルには、元のデータに加えて、Ne(cm^-3), EF/kBT, EF(eV), L, kappa_e(W/m/K) の計算結果が追加された形式で保存されます。 グラフは以下の4つのサブプロットで構成されます。

  • 上左: 温度 \(T\) vs キャリア濃度 \(N_e\) (対数スケール)、温度 \(T\) vs ゼーベック係数 \(S\)

  • 下左: 温度 \(T\) vs ローレンツ数 \(L\)

  • 上右: キャリア濃度 \(N_e\) (対数スケール) vs 電気伝導率 \(\sigma\)、キャリア濃度 \(N_e\) vs ゼーベック係数 \(S\)

  • 下右: キャリア濃度 \(N_e\) vs ローレンツ数 \(L\)

この出力により、熱電材料のキャリア濃度、フェルミ準位、ローレンツ数、電子熱伝導率の温度依存性やキャリア濃度依存性を一目で確認し、材料評価に役立てることができます。