tkTransport プログラム仕様
輸送現象計算モジュール
このモジュールは、フェルミ積分、キャリア統計、ホール効果、磁気抵抗など、半導体や金属における輸送現象に関連する様々な計算機能を提供します。 積分関数、フェルミ・ディラック分布関数、状態密度、移動度モデル、ホール係数計算、磁気抵抗計算などが含まれます。 また、外部ファイルからのデータ読み込み・書き込み機能も提供します。
関連リンク: tkTransport.py 技術ドキュメント
- tklib.tktransport.tkTransport.BMShift_FEA(Ne, D0)[ソース]
ボルツマンシフト (フェルミ準位) を計算します。
自由電子近似モデルに基づき、電子数密度 Ne と状態密度係数 D0 からフェルミ準位を計算します。 この関数は、グローバル変数 D0 に依存しますが、このモジュール内では定義されていません。
- tklib.tktransport.tkTransport.CalEF_metal(N, T, EF0, dE)[ソース]
金属におけるフェルミ準位を計算します。
与えられた電子数密度 N、温度 T、初期フェルミ準位の推定値 EF0 を基に、数値的にフェルミ準位を求めます。 \(T=0\) の場合は、単純な自由電子モデルによる近似式を使用します。 この関数は、optimize.newton およびグローバル変数 D0、関数 Ne に依存しますが、これらはこのモジュール内では定義されていません。
- tklib.tktransport.tkTransport.CalNe_metal(T, EF)[ソース]
金属における電子数密度を計算し、様々な積分方法で検証します。
与えられた温度 T とフェルミ準位 EF を基に、電子数密度を計算し、その結果を scipy.integrate.quad および scipy.integrate.romberg の両方で検証します。 また、異なる積分範囲での結果も比較表示します。 この関数は、グローバル変数 D0、関数 De、Defe、eps、ncycle、maxorder に依存しますが、これらはこのモジュール内では定義されていません。
- tklib.tktransport.tkTransport.CalPlasmaFrequency(Ne, meff)[ソース]
プラズマ周波数を計算します。
与えられたキャリア密度 Ne と有効質量 meff から、プラズマ周波数を計算します。 この関数は、グローバル変数 e0 に依存しますが、このモジュール内では定義されていません。
- tklib.tktransport.tkTransport.DC02meff_FEA(DC0, T)[ソース]
状態密度係数から有効質量を計算します。
自由電子近似に基づき、状態密度係数 \(D_C0\) から有効質量 \(m_{eff}\) を計算します。 結果は自由電子質量 \(m_e\) の倍数で返されます。
- tklib.tktransport.tkTransport.DegenerateFD_z = (0.822467, 0.947033, 0.985551, 0.996233, 0.99904, 0.999758, 0.999939, 0.999985, 0.999996, 0.999999)
縮退フェルミ・ディラック積分で使用される係数群。 Sommerfeld展開に現れる項の係数に対応します。
- tklib.tktransport.tkTransport.DegenerateFermiDirac(eta, r, eps=1e-07)[ソース]
縮退フェルミ・ディラック積分を計算します。
フェルミ準位が大きく正の値 (縮退状態) である場合に適用される近似式を用いて、フェルミ積分を計算します。 Sommerfeld展開に基づいた多項式近似を使用します。
- tklib.tktransport.tkTransport.DiffFermiDiracDistribution(w, w0, x)[ソース]
フェルミ・ディラック分布関数の微分を計算します。
- 詳細説明:
引数 x0 が定義されていないため、この関数は実行時にエラーを発生させます。 もし x0 が w0 のタイプミスである場合、修正が必要です。 現状のコードは変更しないというルールに従い、x0 の記述はそのまま残します。
- tklib.tktransport.tkTransport.FermiIntegral_Simpson(eta, r, dx=0.01, eps=1e-07)[ソース]
シンプソン法を用いてフェルミ積分を計算します。
scipy.integrate.simps を用いて、フェルミ積分の数値積分を行います。 非縮退極限 (\(\eta < -13.0\)) では、ガンマ関数を用いた近似式を使用します。 それ以外の領域では、定義された刻み幅 dx と推定された積分範囲 xmax に基づいて積分を実行します。 コメントアウトされている箇所には、リーマン、台形、シンプソン、ボーデの各数値積分法のコード例が含まれています。
- tklib.tktransport.tkTransport.FermiIntegral_fast(eta, r, eps=1e-07)[ソース]
フェルミ積分を高速に計算するための統合関数です。
換算フェルミ準位 eta の値に応じて、縮退近似、非縮退近似、または数値積分 (関数 func_Fr_x2 を使用) を切り替えます。 中間的な eta の範囲では、数値積分を複数の区間に分割して scipy.integrate.quad で計算し、精度と速度を両立させます。
- tklib.tktransport.tkTransport.FermiIntegral_simple(eta, r, eps=1e-07)[ソース]
scipy.integrate.quad を使用してフェルミ積分を直接計算します。
非縮退極限 (\(\eta < -13.0\)) では、ガンマ関数を用いた近似式を使用します。 それ以外の領域では、scipy.integrate.quad を用いて数値積分を実行します。
- tklib.tktransport.tkTransport.FermiIntegral_x2(eta, r, eps=1e-07)[ソース]
変数変換 \(z=x^2\) を使用してフェルミ積分を高速に計算します。
非縮退極限 (\(\eta < -13.0\)) では、ガンマ関数を用いた近似式を使用します。 それ以外の領域では、scipy.integrate.quad を用いて数値積分を実行しますが、func_Fr_x2 を使用することで積分範囲を短縮し、計算を高速化します。
- tklib.tktransport.tkTransport.LorentzNumber_FEA = 2.4430045090736663e-08
フェルミ・エイゼンシュタインモデルにおけるローレンツ数 自由電子模型における理想的な金属の熱伝導度と電気伝導度の比率を表す定数。 単位は W ohm / K^2。
- tklib.tktransport.tkTransport.MR(model, nh, muh, ne, mue, B)[ソース]
指定されたモデルに基づいて磁気抵抗とホール効果を計算する汎用関数です。
model 引数の値に応じて、単一キャリアモデル、二種類キャリアモデル、 または移動度が同じ二種類キャリアモデルのいずれかの関数を呼び出します。
- パラメータ:
- 戻り値:
選択されたモデルの磁気抵抗計算関数からの戻り値 (rhoxx, rhoxx0, MRxx, MRxy)。
- 戻り値の型:
- tklib.tktransport.tkTransport.MR_samemu(nh, mu, ne, B)[ソース]
二種類のキャリアが存在し、両方のキャリア移動度が同じである場合の磁気抵抗とホール効果を計算します。
この関数は、MR_twocarrier 関数に muh と mue を同じ値 (mu) として渡すラッパー関数です。
- パラメータ:
- 戻り値:
MR_twocarrier 関数からの戻り値と同じく、タプル (rhoxx, rhoxx0, MRxx, MRxy) - rhoxx (float): 磁場中の比抵抗 (\(\rho_{xx}(B)\))。 - rhoxx0 (float): 磁場ゼロでの比抵抗 (\(\rho_{xx}(0)\)、すなわち \(\rho_0\))。 - MRxx (float): 磁気抵抗 (\(\rho_{xx}(B) - \rho_{xx}(0)\))。 - MRxy (float): ホール比抵抗 (\(\rho_{xy}(B)\))。
- 戻り値の型:
- tklib.tktransport.tkTransport.MR_singlecarrier(n, mu, B)[ソース]
単一キャリアが存在する系の磁気抵抗とホール効果を計算します。
キャリア密度 n、移動度 mu、および磁場 B を用いて、 比抵抗の変化 (\(\rho_{xx}\) と \(\rho_{xx0}\))、磁気抵抗 (\(MR_{xx}\))、およびホール比抵抗 (\(MR_{xy}\)) を計算します。
- パラメータ:
- 戻り値:
タプル (rhoxx, rhoxx0, MRxx, MRxy) - rhoxx (float): 磁場中の比抵抗 (\(\rho_{xx}(B)\))。 - rhoxx0 (float): 磁場ゼロでの比抵抗 (\(\rho_{xx}(0)\)、すなわち \(\rho_0\))。 - MRxx (float): 磁気抵抗 (\(\rho_{xx}(B) - \rho_{xx}(0)\))。 - MRxy (float): ホール比抵抗 (\(\rho_{xy}(B)\))。
- 戻り値の型:
- tklib.tktransport.tkTransport.MR_twocarrier(nh, muh, ne, mue, B)[ソース]
二種類のキャリアが存在する系の磁気抵抗とホール効果を計算します。
正孔のキャリア密度 nh と移動度 muh、電子のキャリア密度 ne と移動度 mue、および磁場 B を用いて、 比抵抗の変化 (\(\rho_{xx}\) と \(\rho_{xx0}\))、磁気抵抗 (\(MR_{xx}\))、およびホール比抵抗 (\(MR_{xy}\)) を計算します。
- パラメータ:
- 戻り値:
タプル (rhoxx, rhoxx0, MRxx, MRxy) - rhoxx (float): 磁場中の比抵抗 (\(\rho_{xx}(B)\))。 - rhoxx0 (float): 磁場ゼロでの比抵抗 (\(\rho_{xx}(0)\)、すなわち \(\rho_0\))。 - MRxx (float): 磁気抵抗 (\(\rho_{xx}(B) - \rho_{xx}(0)\))。 - MRxy (float): ホール比抵抗 (\(\rho_{xy}(B)\))。
- 戻り値の型:
- tklib.tktransport.tkTransport.NC2meff_FEA(NC, T)[ソース]
実効状態密度から有効質量を計算します。
自由電子近似に基づき、与えられた実効状態密度 \(N_C\) と温度 \(T\) から有効質量を計算します。 結果は自由電子質量 \(m_e\) の倍数で返されます。
- tklib.tktransport.tkTransport.NonDegenerateFermiDirac(eta, r, eps=1e-07)[ソース]
非縮退フェルミ・ディラック積分を計算します。
フェルミ準位が大きく負の値 (非縮退状態) である場合に適用される近似式を用いて、フェルミ積分を計算します。 この近似は、フェルミ・ディラック分布関数をボルツマン分布で近似することで導出されます。
- tklib.tktransport.tkTransport.RichardsonDushman_FEA(meff=1.0)[ソース]
リチャードソン・ダッシュマン定数を計算します。
自由電子近似に基づき、熱電子放出におけるリチャードソン・ダッシュマン定数を計算します。 有効質量 meff を自由電子質量 me で割った比率として考慮し、実効リチャードソン定数を導出します。
- tklib.tktransport.tkTransport.cal_statistics(self, T)[ソース]
半導体におけるキャリア統計量を計算します。
与えられた温度 T に対し、二分法を用いてフェルミ準位 EF を求めます。 この EF に基づいて、電子密度 Neh、正孔密度 Nhh、イオン化アクセプタ密度 NAmh、イオン化ドナー密度 NDph を計算します。 最後に、二種類キャリアモデルでの比抵抗、ホール係数、ホールキャリア密度を計算します。 この関数は、self および mat オブジェクトに依存するメソッドおよびプロパティを使用しますが、これらはこのモジュール内では定義されていません。
- パラメータ:
- 戻り値:
タプル (EFhalf, Neh, Nhh, NDph, NAmh, Ns) - EFhalf (float): 計算されたフェルミ準位 (eV)。 - Neh (float): 電子のキャリア密度。 - Nhh (float): 正孔のキャリア密度。 - NDph (float): イオン化ドナー密度。 - NAmh (float): イオン化アクセプタ密度。 - Ns (float): ホールキャリア密度。
- 戻り値の型:
tuple[float, float, float, float, float, float] または (None, None, ...) (エラー時)
- tklib.tktransport.tkTransport.cal_transport(self, T)[ソース]
半導体における輸送特性を計算します。
与えられた温度 T に対し、cal_statistics を呼び出してフェルミ準位とキャリア統計量を計算します。 その後、クラスメソッド cal_muh と cal_mue を用いて正孔と電子の移動度を計算し、電気伝導率 sigma を導出します。 この関数は、self オブジェクトに依存するメソッドを使用しますが、これらはこのモジュール内では定義されていません。
- パラメータ:
- 戻り値:
タプル (EF, Ne, Nh, NDph, NAm, Ns, mue, muh, sigma) - EF (float): フェルミ準位 (eV)。 - Ne (float): 電子のキャリア密度。 - Nh (float): 正孔のキャリア密度。 - NDph (float): イオン化ドナー密度。 - NAm (float): イオン化アクセプタ密度。 - Ns (float): ホールキャリア密度。 - mue (float): 電子の移動度。 - muh (float): 正孔の移動度。 - sigma (float): 電気伝導率。
- 戻り値の型:
tuple[float, float, float, float, float, float, float, float, float]
- tklib.tktransport.tkTransport.cal_twocarriers(mue, ne, muh, nh)[ソース]
二種類のキャリア (電子と正孔) が存在する系の輸送パラメーターを計算します。
電子の移動度 mue とキャリア密度 ne、正孔の移動度 muh とキャリア密度 nh を用いて、 比抵抗 (rhoxx) およびホール係数 (RH) を計算します。 この関数はホールキャリア密度 Ns も計算しますが、その定義は 1.0 / RH / e です。
- tklib.tktransport.tkTransport.fe(E, T, EF)[ソース]
フェルミ・ディラック分布関数 (電子用) を計算します。
エネルギー \(E\) における電子の占有確率をフェルミ・ディラック分布関数に従って計算します。 \(T=0\) の場合はステップ関数として動作します。 数値的な安定性を確保するため、指数関数がオーバーフローまたはアンダーフローする可能性のある大きな値に対しては、直接0または1を返します。
- tklib.tktransport.tkTransport.fh(E, T, EF)[ソース]
フェルミ・ディラック分布関数 (正孔用) を計算します。
エネルギー \(E\) における正孔の占有確率をフェルミ・ディラック分布関数に従って計算します。 これは電子のフェルミ・ディラック分布関数 \(f_e\) の \(1 - f_e\) に相当します。 \(T=0\) の場合はステップ関数として動作します。 数値的な安定性を確保するため、指数関数がオーバーフローまたはアンダーフローする可能性のある大きな値に対しては、直接0または1を返します。
- tklib.tktransport.tkTransport.func_Fr(x, eta, r)[ソース]
標準的なフェルミ積分 \(F_r(\eta)\) の被積分関数を定義します。
被積分関数は \(x^r / (exp(x - \eta) + 1)\) の形を取ります。 数値的な安定性を確保するため、x が大きいまたは小さい値のときに、指数関数のオーバーフロー/アンダーフローを避けるために適切な値を返します。
- tklib.tktransport.tkTransport.func_Fr_x2(x, eta, r)[ソース]
変数変換 \(z=x^2\) を行った場合のフェルミ積分被積分関数を定義します。
この関数は、積分範囲を短縮し高速化するために、変数変換後の被積分関数 \(2x^{2r+1} / (exp(x^2 - \eta) + 1)\) を計算します。 数値的な安定性を確保するため、x が大きいまたは小さい値のときに、指数関数のオーバーフロー/アンダーフローを避けるために適切な値を返します。
- tklib.tktransport.tkTransport.integrate_Simpson(func, E0, E1, h, nmin=8)[ソース]
シンプソン法による定積分を計算します。
与えられた関数と積分範囲、刻み幅を用いて、シンプソン法(台形公式の改良版)で定積分の近似値を計算します。 積分範囲が0の場合は0を返します。
- tklib.tktransport.tkTransport.integrate_Simpson_list(xlist, ylist)[ソース]
データリストからシンプソン法による累積積分を計算します。
与えられた離散データ点 (xlist, ylist) を用いて、シンプソン法(台形公式の改良版)で累積積分の近似値を計算します。
- tklib.tktransport.tkTransport.main()[ソース]
モジュールが直接実行された場合に呼び出されるメイン関数。
このモジュールがライブラリとして使用されることを示し、実行可能ではないことをユーザーに通知します。
- 戻り値:
None
- 戻り値の型:
None
- tklib.tktransport.tkTransport.meff2DC0_FEA(meff, T)[ソース]
有効質量から状態密度係数 (\(D_C0\)) を計算します。
自由電子近似に基づき、有効質量 \(m_{eff}\) から状態密度のエネルギー依存性 \(D(E) = D_C0 \cdot E^{0.5}\) における係数 \(D_C0\) を計算します。 結果は \(cm^{-3}eV^{-1.5}\) 単位で返されます。
- tklib.tktransport.tkTransport.meff2NC_FEA(meff, T)[ソース]
有効質量から実効状態密度 (Effective Density of States, \(N_C\)) を計算します。
自由電子近似に基づき、与えられた有効質量 \(m_{eff}\) と温度 \(T\) から伝導帯または価電子帯の実効状態密度を計算します。 結果は \(cm^{-3}\) 単位で返されます。
- tklib.tktransport.tkTransport.read_Hall_excel(infile)[ソース]
Excelファイルからホール効果測定データを読み込みます。
指定されたExcelファイルを開き、最初のシートから温度 (T)、キャリア密度 (N)、移動度 (mu)、電気伝導率 (sigma) のデータを抽出します。 1行目をヘッダーとして解釈し、2行目以降の数値を読み込みます。
- パラメータ:
infile (str) -- 読み込むExcelファイルのパス。
- 戻り値:
タプル ([Tlabel, Nlabel, mulabel, slabel], xT, yN, ymu, ys) - [Tlabel, Nlabel, mulabel, slabel] (list[str]): 各データのヘッダーラベルのリスト。 - xT (list[float]): 温度データのリスト。 - yN (list[float]): キャリア密度データのリスト。 - ymu (list[float]): 移動度データのリスト。 - ys (list[float]): 電気伝導率データのリスト。
- 戻り値の型:
tuple[list[str], list[float], list[float], list[float], list[float]]
- tklib.tktransport.tkTransport.read_csv(infile, xmin=None, xmax=None, delimiter=',')[ソース]
CSVファイルからデータを読み込みます。
指定されたCSVファイルを読み込み、ヘッダーと最初の2列のデータを抽出します。 xmin と xmax が指定されている場合、1列目の値がその範囲内にある行のみを読み込みます。 この関数は pfloat 関数に依存しますが、これはこのモジュール内では定義されていません。
- パラメータ:
- 戻り値:
タプル (header, data_col1, data_col2) - header (list[str]): ヘッダー行の文字列リスト。 - data_col1 (list[float]): 1列目のデータのリスト。 - data_col2 (list[float]): 2列目のデータのリスト。
- 戻り値の型:
- tklib.tktransport.tkTransport.read_datafile(infile, usage=None)[ソース]
汎用的なデータファイル (.dat や .txt など) から輸送特性データを読み込みます。
tkVariousData クラスを利用して、ファイルからデータとラベルを抽出し、 特に S (ゼーベック係数), sigma (電気伝導率), N (キャリア密度), mu (移動度) のデータを抽出します。 正規表現を用いてカラムを識別します。
- パラメータ:
infile (str) -- 読み込むデータファイルのパス。
usage (Any, optional) -- tkVariousData に渡される用途指定パラメーター (詳細不明)。
- 戻り値:
タプル (label_sample, xsample, label_S, yS, label_sigma, ysigma, label_N, yN, label_mu, ymu) - label_sample (str): 汎用データX軸のラベル。 - xsample (list[float]): 汎用データX軸のデータ。 - label_S (str): ゼーベック係数のラベル。 - yS (list[float]): ゼーベック係数のデータ。 - label_sigma (str): 電気伝導率のラベル。 - ysigma (list[float]): 電気伝導率のデータ。 - label_N (str): キャリア密度のラベル。 - yN (list[float]): キャリア密度のデータ。 - label_mu (str): 移動度のラベル。 - ymu (list[float]): 移動度のデータ。
- 戻り値の型:
tuple[str, list[float], str, list[float], str, list[float], str, list[float], str, list[float]]
- tklib.tktransport.tkTransport.read_excel(infile)[ソース]
Excelファイルから汎用データを読み込みます。
指定されたExcelファイルを開き、最初のシートから温度 (T)、キャリア密度 (N)、ゼーベック係数 (S) のデータを抽出します。 1行目をヘッダーとして解釈し、2行目以降の数値を読み込みます。
- パラメータ:
infile (str) -- 読み込むExcelファイルのパス。
- 戻り値:
タプル ([Tlabel, Nlabel], xT, yN, yS) - [Tlabel, Nlabel] (list[str]): 各データのヘッダーラベルのリスト (Slabel は返されない)。 - xT (list[float]): 温度データのリスト。 - yN (list[float]): キャリア密度データのリスト。 - yS (list[float]): ゼーベック係数データのリスト。
- 戻り値の型:
- tklib.tktransport.tkTransport.rieman(x0, dx, y, xmin, xmax)[ソース]
リーマン和による積分を計算します。
与えられたデータ点と範囲に基づいて、リーマン和を用いて積分の近似値を計算します。