S2L プログラム仕様

SPBモデルを用いたゼーベック係数からのローレンツ数と電子熱伝導率の推定スクリプト

このスクリプトは、Single Parabolic Band (SPB) モデルを用いて、与えられた電気伝導率と ゼーベック係数からフェルミ準位を推定し、ローレンツ数および電子熱伝導率を計算します。 主に熱電材料の特性評価に利用されます。

関連リンク: S2L.py 技術ドキュメント

electrical.S2L.Fr(EF, r)[ソース]

フェルミ・ディラック積分 (F_r(eta)) を計算します。

積分下限0から無限大までのE^r / (1 + exp(E - EF))の積分を計算します。 ここでEは規格化されたエネルギー、EFは規格化されたフェルミ準位 (eta = E_F/k_B T) です。 `scipy.integrate.quad`を使用して数値積分を実行します。

パラメータ:
  • EF (float) -- 規格化されたフェルミ準位 (eta = E_F/k_B T)。

  • r (float) -- フェルミ積分の次数。

戻り値:

計算されたフェルミ・ディラック積分値。

戻り値の型:

float

electrical.S2L.Lorenz(EF)[ソース]

規格化フェルミ準位からローレンツ数を計算します。

Single Parabolic Band (SPB) モデルに基づき、規格化されたフェルミ準位 (EF/kT) から ローレンツ数 (L) を計算します。フェルミ・ディラック積分は、次数 r=0.0, r=1.0, r=2.0 で使用されます。

パラメータ:

EF (float) -- 規格化されたフェルミ準位 (eta = E_F/k_B T)。

戻り値:

計算されたローレンツ数 (WΩ/K²)。

戻り値の型:

float

electrical.S2L.S_comparison(T, S, sigma, EF)[ソース]

測定されたゼーベック係数とSPBモデルから計算されたゼーベック係数の差を計算します。

Single Parabolic Band (SPB) モデルに基づき、与えられた規格化フェルミ準位 (EF) で計算されるゼーベック係数と、 実験的に測定されたゼーベック係数 (S) の差を評価します。この関数は通常、 フェルミ準位を決定するための数値解法(例:二分法)内で使用されます。 フェルミ・ディラック積分は、次数 r=0.0 および r=1.0 で計算されます。 引数`sigma`は渡されますが、この関数内では直接使用されません。

パラメータ:
  • T (float) -- 温度 (K)。

  • S (float) -- 実験的に測定されたゼーベック係数 (V/K)。

  • sigma (float) -- 電気伝導率 (S/cmまたはS/m)。この関数では直接使用されません。

  • EF (float) -- 規格化されたフェルミ準位 (eta = E_F/k_B T)。

戻り値:

測定SとSPBモデルから計算されたSの差 (V/K)。

戻り値の型:

float

electrical.S2L.cal_EF_from_S_bisection(T, S, sigma, max_ef, min_ef, err)[ソース]

二分法を用いてゼーベック係数から規格化フェルミ準位 (EF/kT) を推定します。

与えられた温度 (T) とゼーベック係数 (S) に対して、`S_comparison`関数を評価しながら 指定された探索範囲 (min_ef, max_ef) で二分法を実行し、規格化フェルミ準位 (EF/kT) を収束させます。 収束しない場合、エラーメッセージを出力し、プログラムを終了します。 引数`sigma`は`S_comparison`関数に渡されますが、この関数内では直接使用されません。 この関数に渡される`S`は絶対値が取られ、`sigma`はS/mに変換されて渡されることが想定されます。

パラメータ:
  • T (float) -- 温度 (K)。

  • S (float) -- 測定されたゼーベック係数 (V/K)。この関数に渡される前に絶対値が取られます。

  • sigma (float) -- 電気伝導率 (S/m)。`S_comparison`関数に渡されますが、この関数では直接使用されません。

  • max_ef (float) -- フェルミ準位の探索範囲の上限(`a`に相当する初期値、例: 1000)。

  • min_ef (float) -- フェルミ準位の探索範囲の下限(`b`に相当する初期値、例: -300)。

  • err (float) -- 収束判定に使用される許容誤差。

戻り値:

推定された規格化フェルミ準位 (EF/kT)。

戻り値の型:

float

例外:

SystemExit -- 探索範囲に解がない場合、または最大反復回数を超えて収束しなかった場合。

electrical.S2L.cal_Ne(T, xEF, NC)[ソース]

キャリア濃度 (Ne) を計算します。

Single Parabolic Band (SPB) モデルに基づき、温度 (T)、規格化フェルミ準位 (xEF = EF/kT)、 および有効状態密度 (NC) からキャリア濃度を計算します。 フェルミ・ディラック積分は次数 r=0.5 で使用されます。 引数`T`は渡されますが、この関数内では直接使用されません。

パラメータ:
  • T (float) -- 温度 (K)。この関数では直接使用されません。

  • xEF (float) -- 規格化されたフェルミ準位 (eta = E_F/k_B T)。

  • NC (float) -- 有効状態密度 (cm^-3)。tklib.tktransport.tkTransport.meff2NC_FEAで計算されます。

戻り値:

計算されたキャリア濃度 (cm^-3)。

戻り値の型:

float

electrical.S2L.cal_ke(sigma, L, T)[ソース]

電子熱伝導率 (kappa_e) を計算します。

Wiedemann-Franzの法則に基づいて、電気伝導率、ローレンツ数、および温度から電子熱伝導率を計算します。 この関数では、入力される電気伝導率sigmaの単位はS/mを想定しています。

パラメータ:
  • sigma (float) -- 電気伝導率 (S/m)。

  • L (float) -- ローレンツ数 (WΩ/K²)。

  • T (float) -- 温度 (K)。

戻り値:

電子熱伝導率 (W/m/K)。

戻り値の型:

float

electrical.S2L.main()[ソース]

スクリプトのメイン実行関数です。

入力ファイルの読み込み、ゼーベック係数からのフェルミ準位、ローレンツ数、 電子熱伝導率の計算、結果のファイルへの保存、およびグラフの描画を行います。 コマンドライン引数から入力ファイル名とデータ列のラベルを読み取ります。

electrical.S2L.read_file(fname)[ソース]

指定されたファイルからデータを読み込みます。

tkVariousDataクラスを使用して、指定されたファイルからラベルとデータリストを抽出します。 ファイル形式はtkVariousDataがサポートするものに従います。

パラメータ:

fname (str) -- 読み込むファイルのパス。

戻り値:

(データファイルオブジェクト, ラベルリスト, データリスト) のタプル。

戻り値の型:

tuple[tklib.tkvariousdata.tkVariousData, list[str], list[list[float]]]

electrical.S2L.savecsv(outfile, header, datalist)[ソース]

データをCSVファイルに保存します。

指定されたファイル名でCSVファイルを新規作成し、ヘッダーとデータリストを書き込みます。 書き込み中にエラーが発生した場合は、エラーメッセージを標準出力に表示します。

パラメータ:
  • outfile (str) -- 出力CSVファイルのパス。

  • header (list[str]) -- CSVのヘッダー行のリスト。

  • datalist (list[list[float]]) -- 保存するデータを含むリストのリスト。各サブリストは列を表します。

戻り値:

なし

戻り値の型:

None

electrical.S2L.usage(app)[ソース]

スクリプトの正しい使用方法を表示します。

実行時の引数の指定方法に関するガイダンスを標準出力に表示します。

パラメータ:

app (tklib.tkapplication.tkApplication) -- アプリケーションインスタンス (tkApplication)。エラー終了時に使用されることがあります。

戻り値:

なし

戻り値の型:

None