Seebeck_ZT プログラム仕様

electrical.Seebeck_ZT.Fj(j, xi)[ソース]

概要: フェルミ・ディラック積分 F_j(xi) = ∫_0^∞ x^j / (1+exp(x-xi)) dx を計算します。

詳細説明: SciPyの`quad`関数を使用して数値積分を実行します。結果は`lru_cache`でキャッシュされ、 同じ引数での再計算を回避し、パフォーマンスを向上させます。 この関数は、ガンマ関数による正規化(1/Gamma(j+1))は含まれていません。

パラメータ:
  • j (float) -- 積分の次数。

  • xi (float) -- 還元フェルミ準位 (reduced Fermi level)。

戻り値:

フェルミ・ディラック積分 F_j(xi) の値。

戻り値の型:

float

electrical.Seebeck_ZT.Nc_3D(T, m_eff=1.0)[ソース]

概要: 3次元放物線バンドにおける有効状態密度 Nc を計算します。

詳細説明: 以下の公式を用いて有効状態密度を計算します。 Nc = 2 * (2π m* kB T / h^2)^(3/2) ここで、m* は有効質量、kB はボルツマン定数、T は温度、h はプランク定数です。

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

  • m_eff (float, optional) -- 有効質量の比率 (m*/m0)。m0 は自由電子質量です。デフォルトは1.0。

戻り値:

有効状態密度 Nc [m^-3]。

戻り値の型:

float

electrical.Seebeck_ZT.electron_density_from_xi(xi, T, m_eff=1.0)[ソース]

概要: 還元フェルミ準位 xi から電子濃度 n を計算します。

詳細説明: 電子濃度は以下の式で計算されます。 n [m^-3] = Nc * F_{1/2}^{std}(xi) ここで、Nc は有効状態密度、F^{std}_{1/2}(xi) = Fj(1/2, xi) / Gamma(3/2) は 標準化されたフェルミ・ディラック積分です。

パラメータ:
  • xi (float) -- 還元フェルミ準位。

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

  • m_eff (float, optional) -- 有効質量の比率 (m*/m0)。デフォルトは1.0。

戻り値:

電子濃度 n [m^-3]。

戻り値の型:

float

electrical.Seebeck_ZT.equivalent_l0_from_tau_pref(tau_pref, r, m_eff=1.0)[ソース]

概要: 緩和時間の前因子 tau_pref から等価な平均自由行程 l0 を計算します。

詳細説明: 一部のスライドでの慣例的な定義 tau(E) = sqrt(m*/2) * [ l0(T) * e_chg^(-r) ] * E^(r-1/2) から、l0(T) を逆算します。 したがって、l0(T) = tau_pref * sqrt(2/m*) * e_chg^r となります。

パラメータ:
  • tau_pref (float) -- 緩和時間の前因子 [s / J^(r-1/2)]。

  • r (float) -- 散乱因子。

  • m_eff (float, optional) -- 有効質量の比率 (m*/m0)。デフォルトは1.0。

戻り値:

等価な平均自由行程 l0 [m]。

戻り値の型:

float

electrical.Seebeck_ZT.lorenz_from_xi_transport(xi, r)[ソース]

概要: 還元フェルミ準位 xi と散乱因子 r からローレンツ因子 L を計算します。

詳細説明: ローレンツ因子は厳密な輸送積分を用いて以下の式で計算されます。 L = (kB/e)^2 * ( I2/I0 - (I1/I0)^2 )

パラメータ:
  • xi (float) -- 還元フェルミ準位。

  • r (float) -- 散乱因子。

戻り値:

ローレンツ因子 L [V^2/K^2 (または W ohm / K^2)]。

戻り値の型:

float

electrical.Seebeck_ZT.m0 = 9.1093837015e-31

散乱因子 r は tau(E) ∝ E^(r-1/2) で定義

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

概要: スクリプトの主要な実行フローを定義します。コマンドライン引数を解析し、 熱電輸送特性を計算・プロット・保存します。

詳細説明: 1. argparse モジュールを使用してコマンドライン引数(温度、有効質量、参照移動度、

格子熱伝導率、キャリア種別、還元フェルミ準位の範囲と点数、散乱因子`r`のリスト、 出力ファイル名など)を解析します。

  1. 指定されたパラメータに基づいて、各散乱因子 r に対して輸送特性(電子濃度、 ゼーベック係数、ローレンツ因子、電気伝導度、移動度、電子熱伝導度、パワーファクター、ZT因子)を計算します。

  2. 計算されたデータは save_results_to_excel 関数を使用してExcelファイルに保存されます。

  3. 計算結果は matplotlib を用いてキャリア濃度に対する各特性のグラフとしてプロットされ、表示されます。

戻り値:

なし

戻り値の型:

None

electrical.Seebeck_ZT.mobility_from_sigma_n(sigma, n)[ソース]

概要: 電気伝導度 sigma と電子濃度 n から移動度 mu を計算します。

詳細説明: 電気伝導度 sigma、電子濃度 n、素電荷 e、移動度 mu の間に成り立つ関係式 sigma = n * e * mu を用いて移動度を計算します。 したがって、mu = sigma / (n * e) となります。

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

  • n (float) -- 電子濃度 [m^-3]。

戻り値:

移動度 mu [m^2/V/s]。

戻り値の型:

float

electrical.Seebeck_ZT.save_results_to_excel(outfile, meta_rows, data_rows)[ソース]

概要: 計算結果とメタデータをExcelファイルに保存します。

詳細説明: 指定された出力ファイル名で新しいExcelワークブックを作成し、 "metadata"と"transport_vs_Ne"の2つのシートにデータを書き込みます。 "metadata"シートには計算条件などのメタデータが保存され、 "transport_vs_Ne"シートにはキャリア濃度に対する輸送特性の計算結果が保存されます。

パラメータ:
  • outfile (str) -- 出力するExcelファイル名。例: "results.xlsx"。

  • meta_rows (list[list]) -- メタデータを含む行のリスト。各要素はExcelの1行に対応するリストです。

  • data_rows (list[list]) -- 計算結果データを含む行のリスト。各要素はExcelの1行に対応するリストです。

戻り値:

なし

戻り値の型:

None

electrical.Seebeck_ZT.seebeck_from_xi_transport(xi, r, carrier='electron')[ソース]

概要: 還元フェルミ準位 xi と散乱因子 r からゼーベック係数 S を計算します。

詳細説明: ゼーベック係数は厳密な輸送積分を用いて以下の式で計算されます。 S = (kB/q) * I1/I0 q はキャリアの種類によって異なり、電子の場合は -e、正孔の場合は +e となります。

パラメータ:
  • xi (float) -- 還元フェルミ準位。

  • r (float) -- 散乱因子。tau(E) ∝ E^(r-1/2) で定義されます。

  • carrier (str, optional) -- キャリアの種類。"electron"または"hole"を指定します。デフォルトは"electron"。

戻り値:

ゼーベック係数 S [V/K]。

戻り値の型:

float

例外:

ValueError -- carrier が "electron" または "hole" 以外の場合。

electrical.Seebeck_ZT.sigma_from_xi_tau_pref(xi, r, T, tau_pref, m_eff=1.0)[ソース]

概要: 還元フェルミ準位 xi、散乱因子 r、温度 T、緩和時間の前因子 tau_pref から 電気伝導度 sigma を計算します。

詳細説明: 電気伝導度は以下の式で計算されます。 sigma = A_sigma * tau_pref * (kB T)^(r + 1.0) * I0 ここで、A_sigmatransport_prefactor_sigma で計算される前因子、 I0transport_I0 で計算される輸送積分です。

パラメータ:
  • xi (float) -- 還元フェルミ準位。

  • r (float) -- 散乱因子。

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

  • tau_pref (float) -- 緩和時間の前因子 tau_pref [s / J^(r-1/2)]。

  • m_eff (float, optional) -- 有効質量の比率 (m*/m0)。デフォルトは1.0。

戻り値:

電気伝導度 sigma [S/m]。

戻り値の型:

float

electrical.Seebeck_ZT.tau_at_energy(E_J, tau_pref, r)[ソース]

概要: 特定のエネルギー E_J における緩和時間 tau(E_J) を計算します。

詳細説明: 緩和時間は以下の式で定義されます。 tau(E) = tau_pref * E^(r-1/2) E_J が0以下の場合は np.nan を返します。

パラメータ:
  • E_J (float) -- エネルギー [J]。

  • tau_pref (float) -- 緩和時間の前因子 [s / J^(r-1/2)]。

  • r (float) -- 散乱因子。

戻り値:

エネルギー E_J における緩和時間 tau(E_J) [s]。

戻り値の型:

float

electrical.Seebeck_ZT.tau_pref_from_mu_ref(mu_ref_cm2_Vs, xi_ref, r, T, m_eff=1.0)[ソース]

概要: 参照移動度 mu_ref と参照還元フェルミ準位 xi_ref に基づいて、 緩和時間の前因子 tau_pref を決定します。

詳細説明: 緩和時間 tau(E)tau(E) = tau_pref * E^(r-1/2) で定義されるとき、 指定された xi_refT における移動度が mu_ref となるように tau_pref を逆算します。 参照移動度 mu_ref_cm2_Vs は cm^2/V/s 単位で与えられますが、計算ではSI単位に変換されます。

パラメータ:
  • mu_ref_cm2_Vs (float) -- 参照移動度 [cm^2/V/s]。

  • xi_ref (float) -- 参照還元フェルミ準位。この xi で参照移動度が再現されます。

  • r (float) -- 散乱因子。

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

  • m_eff (float, optional) -- 有効質量の比率 (m*/m0)。デフォルトは1.0。

戻り値:

緩和時間の前因子 tau_pref [s / J^(r-1/2)]。

戻り値の型:

float

electrical.Seebeck_ZT.transport_I0(xi, r)[ソース]

概要: 輸送積分 I0 を計算します。

詳細説明: tau(E) ∝ E^(r-1/2) の緩和時間に対する輸送積分の一つである I0 を計算します。 I0 = (r + 1) * F_r(xi)

パラメータ:
  • xi (float) -- 還元フェルミ準位。

  • r (float) -- 散乱因子。緩和時間のエネルギー依存性 E^(r-1/2) を定義します。

戻り値:

輸送積分 I0 の値。

戻り値の型:

float

electrical.Seebeck_ZT.transport_I1(xi, r)[ソース]

概要: 輸送積分 I1 を計算します。

詳細説明: tau(E) ∝ E^(r-1/2) の緩和時間に対する輸送積分の一つである I1 を計算します。 I1 = (r + 2) * F_{r+1}(xi) - xi * (r + 1) * F_r(xi)

パラメータ:
  • xi (float) -- 還元フェルミ準位。

  • r (float) -- 散乱因子。緩和時間のエネルギー依存性 E^(r-1/2) を定義します。

戻り値:

輸送積分 I1 の値。

戻り値の型:

float

electrical.Seebeck_ZT.transport_I2(xi, r)[ソース]

概要: 輸送積分 I2 を計算します。

詳細説明: tau(E) ∝ E^(r-1/2) の緩和時間に対する輸送積分の一つである I2 を計算します。 I2 = (r + 3) * F_{r+2}(xi) - 2 * xi * (r + 2) * F_{r+1}(xi) + xi^2 * (r + 1) * F_r(xi)

パラメータ:
  • xi (float) -- 還元フェルミ準位。

  • r (float) -- 散乱因子。緩和時間のエネルギー依存性 E^(r-1/2) を定義します。

戻り値:

輸送積分 I2 の値。

戻り値の型:

float

electrical.Seebeck_ZT.transport_prefactor_sigma(T, m_eff=1.0)[ソース]

概要: 電気伝導度 sigma の計算における前因子 A_sigma を計算します。

詳細説明: 電気伝導度は sigma = A_sigma * tau_pref * (kB T)^(r+1) * I0 の形で表されます。 この関数は、tau(E) = tau_pref * E^(r-1/2) と定義される緩和時間において、 以下の物理定数を含む前因子 A_sigma を計算します。 A_sigma [SI] = e^2 * 2^(3/2) * sqrt(m*) / (3 π^2 ħ^3) ここで、e は素電荷、m* は有効質量、ħ は換算プランク定数です。

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

  • m_eff (float, optional) -- 有効質量の比率 (m*/m0)。デフォルトは1.0。

戻り値:

電気伝導度の前因子 A_sigma [SI単位]。

戻り値の型:

float