# tktransport APIリファレンス

> 対象ソース: `tklib2.zip`（解析日: 2026-08-03）。この文書はソースコードを静的解析して生成しています。

## APIの読み方

- **パッケージ公開API**は、原則としてトップレベルの `__all__` に含まれる名前です。
- **モジュールAPI**には、公開名（先頭が `_` でない関数・クラス・メソッド）を列挙しています。
- docstringがないAPIでは、シグネチャとソースパスを一次情報として扱ってください。
- 生成AIは、この文書に存在しない引数・戻り値・メソッドを推測で追加しないでください。

## パッケージ公開API

```python
from tktransport import (
    FermiIntegral_fast,
    LORENZ_NUMBER_FREE_ELECTRON,
    ScatteringModel,
    SingleParabolicBand,
    TransportProperties,
    HallProperties,
    TransportSweep,
    HallSweep,
    effective_density_of_states,
    effective_mass_from_density_of_states,
    density_of_states_prefactor,
    eta_grid,
    calculate_transport_sweep,
    calculate_hall_sweep,
)
```

| 名前 | 推奨用途 |
|---|---|
| `FermiIntegral_fast` | トップレベルから安定してimportできる公開API |
| `LORENZ_NUMBER_FREE_ELECTRON` | トップレベルから安定してimportできる公開API |
| `ScatteringModel` | トップレベルから安定してimportできる公開API |
| `SingleParabolicBand` | トップレベルから安定してimportできる公開API |
| `TransportProperties` | トップレベルから安定してimportできる公開API |
| `HallProperties` | トップレベルから安定してimportできる公開API |
| `TransportSweep` | トップレベルから安定してimportできる公開API |
| `HallSweep` | トップレベルから安定してimportできる公開API |
| `effective_density_of_states` | トップレベルから安定してimportできる公開API |
| `effective_mass_from_density_of_states` | トップレベルから安定してimportできる公開API |
| `density_of_states_prefactor` | トップレベルから安定してimportできる公開API |
| `eta_grid` | トップレベルから安定してimportできる公開API |
| `calculate_transport_sweep` | トップレベルから安定してimportできる公開API |
| `calculate_hall_sweep` | トップレベルから安定してimportできる公開API |

## モジュール一覧

| モジュール | ソース | 関数 | クラス |
|---|---|---:|---:|
| `tktransport` | `tktransport/__init__.py` | 0 | 0 |
| `tktransport.band` | `tktransport/band.py` | 3 | 0 |
| `tktransport.cli` | `tktransport/cli.py` | 6 | 0 |
| `tktransport.constants` | `tktransport/constants.py` | 0 | 0 |
| `tktransport.fermi` | `tktransport/fermi.py` | 14 | 0 |
| `tktransport.mobility` | `tktransport/mobility.py` | 0 | 1 |
| `tktransport.results` | `tktransport/results.py` | 0 | 2 |
| `tktransport.single_carrier` | `tktransport/single_carrier.py` | 0 | 1 |
| `tktransport.sweep` | `tktransport/sweep.py` | 3 | 2 |

## `tktransport`

ソース: `tktransport/__init__.py`

Independent single-parabolic-band transport library.

_このモジュールには静的解析で検出された公開関数・クラス・定数はありません。_

## `tktransport.band`

ソース: `tktransport/band.py`

Parabolic-band density-of-states utilities.

### function `effective_density_of_states`

```python
def effective_density_of_states(effective_mass: float, temperature: float) -> float
```

Return the 3D parabolic-band effective DOS in cm^-3.

``effective_mass`` is measured in units of the free-electron mass.

### function `effective_mass_from_density_of_states`

```python
def effective_mass_from_density_of_states(density_of_states: float, temperature: float) -> float
```

Invert :func:`effective_density_of_states`.

Parameters
----------
density_of_states:
    Effective DOS in cm^-3.
temperature:
    Temperature in K.

### function `density_of_states_prefactor`

```python
def density_of_states_prefactor(effective_mass: float) -> float
```

Return ``D0`` for ``D(E)=D0*sqrt(E-Eedge)``.

The returned unit is cm^-3 eV^-3/2.  Unlike the legacy function, this
quantity is temperature independent and therefore has no temperature
argument.

## `tktransport.cli`

ソース: `tktransport/cli.py`

Command-line application for SPB transport and Hall sweeps.

### function `save_transport_excel`

```python
def save_transport_excel(path: Path, sweep: TransportSweep, parameters: dict[str, object]) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `save_hall_excel`

```python
def save_hall_excel(path: Path, sweep: HallSweep, parameters: dict[str, object]) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `plot_transport`

```python
def plot_transport(sweep: TransportSweep, title: str, figure_path: Path | None, show: bool) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `plot_hall`

```python
def plot_hall(sweep: HallSweep, title: str, figure_path: Path | None, show: bool) -> None
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `build_parser`

```python
def build_parser() -> argparse.ArgumentParser
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `main`

```python
def main(argv: list[str] | None = None) -> int
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tktransport.constants`

ソース: `tktransport/constants.py`

Physical constants and reusable prefactors for transport calculations.

_このモジュールには静的解析で検出された公開関数・クラス・定数はありません。_

## `tktransport.fermi`

ソース: `tktransport/fermi.py`

Fermi-Dirac積分を高速かつ堅牢に計算するためのライブラリ。

このモジュールは、フェルミ・ディラック積分 `F_r(eta)` の様々な次数 `r` に対する効率的な計算を提供します。
半導体物理学や統計物理学におけるキャリア密度や関連する熱力学的特性の計算に利用できます。
特に、整数次数 `r=-1, 0, 1` に対しては解析解を用いた高速化が施されており、
その他の次数では漸近展開や数値積分を組み合わせて高い精度と性能を実現しています。

:doc:`tkfermi_integral_usage`

### 公開定数・モジュール変数

| 名前 | 型/値 |
|---|---|
| `xlim_exp` | `40.0` |
| `n_deg_coeffs` | `10` |

### function `generate_sommerfeld_coeffs`

```python
def generate_sommerfeld_coeffs(n_terms)
```

ゾンマーフェルト展開に使用される係数を生成します。

この関数は、フェルミ・ディラック積分の縮退近似（ゾンマーフェルト展開）
において使用される定数 `z_k = (1 - 2^(1-2k)) * zeta(2k)` を計算します。
`zeta(s, q)` はフルヴィッツのゼータ関数です。

:param n_terms: 生成する係数の数。
:type n_terms: int
:returns: 生成されたゾンマーフェルト展開係数のタプル。
:rtype: tuple[float]

### function `fermi_dirac_e_npvector`

```python
def fermi_dirac_e_npvector(x)
```

与えられたエネルギー `x = (E - E_f) / kT` のNumpy配列に対するフェルミ・ディラック分布関数を計算します。

この関数は、数値的な安定性を確保するために、`x` の値を `[-xlim_exp, xlim_exp]` の範囲にクリップします。
また、`x` の符号に応じて計算方法を切り替えることで、大きな `x` の値に対してもオーバーフローやアンダーフローを防ぎます。

:param x: 無次元エネルギー `(E - E_f) / kT` を表すNumpy配列。
:type x: numpy.ndarray
:returns: 各エネルギー `x` に対応するフェルミ・ディラック分布関数の値。
:rtype: numpy.ndarray

### function `fermi_dirac_e_if`

```python
def fermi_dirac_e_if(x, eta, g = 1.0)
```

フェルミ・ディラック分布関数 `f = 1 / (1 + g * exp(x - eta))` を計算します。

この関数は、`x - eta` の値に基づいて条件分岐を使用し、
指数関数 `exp()` の引数が非常に大きくなったり小さくなったりする場合の
数値的な安定性（オーバーフローやアンダーフロー）を確保します。
`xlim_exp` の範囲外では、結果を `0.0` または `1.0` にクリップします。

:param x: 無次元エネルギー `E / kT`。
:type x: float
:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: フェルミ・ディラック分布関数の値。
:rtype: float

### function `fermi_dirac_e`

```python
def fermi_dirac_e(x, eta, g = 1.0)
```

フェルミ・ディラック分布関数 `f = 1 / (1 + g * exp(x - eta))` を計算します。

この関数は、`scipy.special.expit` (ロジスティックシグモイド関数) を使用して、
`exp(x - eta)` が非常に大きいまたは小さい場合に発生する可能性のある
数値的な不安定性（オーバーフローやアンダーフロー）を回避し、
よりロバストな計算を提供します。

:param x: 無次元エネルギー `E / kT`。
:type x: float or numpy.ndarray
:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float or numpy.ndarray
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: フェルミ・ディラック分布関数の値。`x` または `eta` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `log_fermi_dirac_e`

```python
def log_fermi_dirac_e(x, eta, g = 1.0)
```

フェルミ・ディラック分布関数 `f` の自然対数 `log(f)` を安定的に計算します。

この関数は `f = 1 / (1 + g * exp(x - eta))` の対数を計算しますが、
`scipy.special.log_expit` を使用することで、`f` が非常に小さい（0に近い）場合に
`log(f)` を直接計算する際のアンダーフロー問題を回避します。

:param x: 無次元エネルギー `E / kT`。
:type x: float or numpy.ndarray
:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float or numpy.ndarray
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: フェルミ・ディラック分布関数の自然対数値。`x` または `eta` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `fermi_dirac_h`

```python
def fermi_dirac_h(x, eta, g = 1.0)
```

正孔（ホール）の占有確率 `1 - f` を計算します。

この関数は、`1 - f = 1 / (1 + g * exp(eta - x))` という形で定義される正孔の確率を、
`scipy.special.expit` を使用して数値的に安定な方法で計算します。
フェルミ・ディラック分布関数 `f` と同様に、`g` はスピン縮重因子です。

:param x: 無次元エネルギー `E / kT`。
:type x: float or numpy.ndarray
:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float or numpy.ndarray
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: 正孔の占有確率 `1 - f` の値。`x` または `eta` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `log_fermi_dirac_h`

```python
def log_fermi_dirac_h(x, eta, g = 1.0)
```

正孔（ホール）の占有確率 `1 - f` の自然対数 `log(1 - f)` を安定的に計算します。

この関数は `1 - f = 1 / (1 + g * exp(eta - x))` の対数を計算しますが、
`scipy.special.log_expit` を使用することで、`1 - f` が非常に小さい（0に近い）場合に
`log(1 - f)` を直接計算する際のアンダーフロー問題を回避します。

:param x: 無次元エネルギー `E / kT`。
:type x: float or numpy.ndarray
:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float or numpy.ndarray
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: 正孔の占有確率の自然対数値。`x` または `eta` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `ionized_acceptor_frac`

```python
def ionized_acceptor_frac(eta, xA, g = 1.0)
```

イオン化されたアクセプターの割合を計算します。

この関数は、アクセプター準位が電子で占有されている確率として定義される、
イオン化されたアクセプターの割合 `N_A^- / N_A` を計算します。
基本的なフェルミ・ディラック分布関数 `fermi_dirac_e` のラッパーです。

:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float or numpy.ndarray
:param xA: 無次元アクセプター準位エネルギー `E_A / kT`。
:type xA: float or numpy.ndarray
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: イオン化されたアクセプターの割合。`eta` または `xA` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `ionized_donor_frac`

```python
def ionized_donor_frac(eta, xD, g = 1.0)
```

イオン化されたドナーの割合を計算します。

この関数は、ドナー準位が正孔で占有されている（つまり電子を放出した）確率として定義される、
イオン化されたドナーの割合 `N_D^+ / N_D` を計算します。
基本的な正孔の占有確率関数 `fermi_dirac_h` のラッパーです。

:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float or numpy.ndarray
:param xD: 無次元ドナー準位エネルギー `E_D / kT`。
:type xD: float or numpy.ndarray
:param g: スピン縮重因子。デフォルトは1.0です。
:type g: float
:returns: イオン化されたドナーの割合。`eta` または `xD` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `FermiIntegral_fast`

```python
def FermiIntegral_fast(eta, r, *, epsabs = 1e-10, epsrel = 1e-08, limit = 50, use_cache = True)
```

一般的なフェルミ・ディラック積分 `F_r(eta)` を高速かつ高精度に計算します。

この関数は、以下の優先順位で計算方法を適用します。

1.  **整数次数 `r = -1, 0, 1` の場合**:
    それぞれ `expit(eta)`, `log(1 + exp(eta))`, および `dilogarithm`
    （`scipy.special.spence`）を用いた解析解または特殊関数によって高速に計算されます。
    `r = 1` の非常に大きな `eta` に対しては、漸近展開も利用されます。
2.  **その他の次数および `eta` の範囲**:
    `_FermiIntegral_core` を呼び出して、縮退近似、非縮退近似、または数値積分を適用します。
    `use_cache` が `True` の場合、計算結果は `_FermiIntegral_cached` を通じてキャッシュされます。

:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float
:param r: フェルミ・ディラック積分の次数。
:type r: float
:param epsabs: (キーワード引数) 数値積分の絶対許容誤差。デフォルトは1.0e-10です。
:type epsabs: float
:param epsrel: (キーワード引数) 数値積分の相対許容誤差。デフォルトは1.0e-8です。
:type epsrel: float
:param limit: (キーワード引数) `scipy.integrate.quad` で使用される最大部分区間数。デフォルトは50です。
:type limit: int
:param use_cache: (キーワード引数) 計算結果をキャッシュするかどうか。デフォルトはTrueです。
:type use_cache: bool
:returns: フェルミ・ディラック積分の値。
:rtype: float

### function `FermiIntegral_half`

```python
def FermiIntegral_half(eta, *, epsabs = 1e-10, epsrel = 1e-08, limit = 50)
```

フェルミ・ディラック積分 `F_{1/2}(eta)` を計算します。

この関数は、`FermiIntegral_fast` 関数のラッパーであり、
積分の次数 `r` を `0.5` に固定して呼び出すことで、特定の次数を便利に計算できるようにします。
半導体中の電子濃度計算によく用いられます。

:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float
:param epsabs: (キーワード引数) 数値積分の絶対許容誤差。デフォルトは1.0e-10です。
:type epsabs: float
:param epsrel: (キーワード引数) 数値積分の相対許容誤差。デフォルトは1.0e-8です。
:type epsrel: float
:param limit: (キーワード引数) `scipy.integrate.quad` で使用される最大部分区間数。デフォルトは50です。
:type limit: int
:returns: フェルミ・ディラック積分 `F_{1/2}(eta)` の値。
:rtype: float

### function `FermiIntegral_3half`

```python
def FermiIntegral_3half(eta, *, epsabs = 1e-10, epsrel = 1e-08, limit = 50)
```

フェルミ・ディラック積分 `F_{3/2}(eta)` を計算します。

この関数は、`FermiIntegral_fast` 関数のラッパーであり、
積分の次数 `r` を `1.5` に固定して呼び出すことで、特定の次数を便利に計算できるようにします。
非放物型バンドにおけるキャリア密度や、その他の物理量の計算に利用されます。

:param eta: 無次元化学ポテンシャル `E_f / kT`。
:type eta: float
:param epsabs: (キーワード引数) 数値積分の絶対許容誤差。デフォルトは1.0e-10です。
:type epsabs: float
:param epsrel: (キーワード引数) 数値積分の相対許容誤差。デフォルトは1.0e-8です。
:type epsrel: float
:param limit: (キーワード引数) `scipy.integrate.quad` で使用される最大部分区間数。デフォルトは50です。
:type limit: int
:returns: フェルミ・ディラック積分 `F_{3/2}(eta)` の値。
:rtype: float

### function `electron_density`

```python
def electron_density(Nc, eta_c, *, epsabs = 1e-10, epsrel = 1e-08, limit = 50)
```

導電帯における電子濃度を計算します（非放物型効果は無視し、標準的な放物型バンドを仮定）。

このライブラリで定義される（非正規化）フェルミ・ディラック積分 `I_{1/2}(eta)` は、
`∫_0^∞ ε^{1/2} / (1 + exp(ε - eta)) dε` であり、ガンマ関数による除算は行われません。
したがって、電子濃度 `n` は以下の式で与えられます。

`n = Nc * (2/sqrt(pi)) * I_{1/2}(eta_c)`

この関数は `eta_c` がスカラーでもNumpy配列でも対応し、それぞれの `eta_c` に対して
`FermiIntegral_half` を呼び出して電子濃度を計算します。

:param Nc: 導電帯の実効状態密度 [cm^-3] または [m^-3]。単位は結果に引き継がれます。
:type Nc: float
:param eta_c: 電子に対する無次元化学ポテンシャル `eta_c = (Ef - Ec) / (kT)`。
:type eta_c: float or numpy.ndarray
:param epsabs: (キーワード引数) 数値積分の絶対許容誤差。デフォルトは1.0e-10です。
:type epsabs: float
:param epsrel: (キーワード引数) 数値積分の相対許容誤差。デフォルトは1.0e-8です。
:type epsrel: float
:param limit: (キーワード引数) `scipy.integrate.quad` で使用される最大部分区間数。デフォルトは50です。
:type limit: int
:returns: `Nc` と同じ単位の電子濃度。`eta_c` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

### function `hole_density`

```python
def hole_density(Nv, eta_v, *, epsabs = 1e-10, epsrel = 1e-08, limit = 50)
```

価電子帯における正孔濃度を計算します（標準的な放物型バンドを仮定）。

このライブラリで定義される（非正規化）フェルミ・ディラック積分 `I_{1/2}` を使用して、
正孔濃度 `p` は以下の式で計算されます。

`p = Nv * (2/sqrt(pi)) * I_{1/2}( beta(Ev - Ef) )`

`eta_v = (Ef - Ev) / (kT)` として渡される場合、`beta(Ev - Ef) = -eta_v` となるため、
`FermiIntegral_half(-eta_v)` を呼び出す必要があります。
この関数は `eta_v` がスカラーでもNumpy配列でも対応し、それぞれの `eta_v` に対して
`FermiIntegral_half` を呼び出して正孔濃度を計算します。

:param Nv: 価電子帯の実効状態密度 [cm^-3] または [m^-3]。単位は結果に引き継がれます。
:type Nv: float
:param eta_v: 無次元化学ポテンシャル `eta_v = (Ef - Ev) / (kT)`。
:type eta_v: float or numpy.ndarray
:param epsabs: (キーワード引数) 数値積分の絶対許容誤差。デフォルトは1.0e-10です。
:type epsabs: float
:param epsrel: (キーワード引数) 数値積分の相対許容誤差。デフォルトは1.0e-8です。
:type epsrel: float
:param limit: (キーワード引数) `scipy.integrate.quad` で使用される最大部分区間数。デフォルトは50です。
:type limit: int
:returns: `Nv` と同じ単位の正孔濃度。`eta_v` がNumpy配列の場合、結果もNumpy配列となります。
:rtype: float or numpy.ndarray

## `tktransport.mobility`

ソース: `tktransport/mobility.py`

Energy-dependent scattering model for a single parabolic band.

### class `ScatteringModel`

Power-law mean-free-path model.

The model follows the convention used by the original program::

    tau(E) = sqrt(m* m_e / 2) * (l0 / e**r) * (E e)**(r - 1/2)

where ``E`` is supplied in eV, ``l0`` is in m, and the returned relaxation
time is in seconds.  ``charge_sign`` is +1 for holes and -1 for electrons.

**データクラス相当の初期化フィールド**

```python
ScatteringModel(charge_sign: int = 1, scattering_factor: float = 0.5, mean_free_path: float = 1e-08)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `charge_sign` | `int` | `1` |
| `scattering_factor` | `float` | `0.5` |
| `mean_free_path` | `float` | `1e-08` |

**メソッド／プロパティ**

#### property `ScatteringModel.normalized_mean_free_path`

```python
def normalized_mean_free_path(self) -> float
```

Return ``l0/e**r`` in the SI normalization used by the model.

#### method `ScatteringModel.relaxation_time`

```python
def relaxation_time(self, energy_ev: float, effective_mass: float) -> float | None
```

Return tau(E) in seconds, or ``None`` for non-positive energy.

## `tktransport.results`

ソース: `tktransport/results.py`

Typed results returned by the transport models.

### class `TransportProperties`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**データクラス相当の初期化フィールド**

```python
TransportProperties(eta: float, temperature: float, reduced_chemical_potential_ev: float, carrier_density_cm3: float, conductivity_s_cm: float, mobility_cm2_v_s: float, average_relaxation_time_fs: float, seebeck_uv_k: float, electronic_thermal_conductivity_w_m_k: float, total_thermal_conductivity_w_m_k: float, lorenz_number_w_ohm_k2: float, power_factor_w_m_k2: float, power_factor_uw_cm_k2: float, zt: float)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `eta` | `float` | `必須` |
| `temperature` | `float` | `必須` |
| `reduced_chemical_potential_ev` | `float` | `必須` |
| `carrier_density_cm3` | `float` | `必須` |
| `conductivity_s_cm` | `float` | `必須` |
| `mobility_cm2_v_s` | `float` | `必須` |
| `average_relaxation_time_fs` | `float` | `必須` |
| `seebeck_uv_k` | `float` | `必須` |
| `electronic_thermal_conductivity_w_m_k` | `float` | `必須` |
| `total_thermal_conductivity_w_m_k` | `float` | `必須` |
| `lorenz_number_w_ohm_k2` | `float` | `必須` |
| `power_factor_w_m_k2` | `float` | `必須` |
| `power_factor_uw_cm_k2` | `float` | `必須` |
| `zt` | `float` | `必須` |

**メソッド／プロパティ**

#### method `TransportProperties.as_dict`

```python
def as_dict(self) -> dict[str, float]
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### class `HallProperties`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**データクラス相当の初期化フィールド**

```python
HallProperties(eta: float, temperature: float, reduced_chemical_potential_ev: float, carrier_density_cm3: float, conductivity_s_cm: float, drift_mobility_cm2_v_s: float, average_relaxation_time_fs: float, hall_factor: float, hall_coefficient_cm3_c: float, classical_hall_coefficient_cm3_c: float, hall_density_cm3: float, hall_mobility_cm2_v_s: float)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `eta` | `float` | `必須` |
| `temperature` | `float` | `必須` |
| `reduced_chemical_potential_ev` | `float` | `必須` |
| `carrier_density_cm3` | `float` | `必須` |
| `conductivity_s_cm` | `float` | `必須` |
| `drift_mobility_cm2_v_s` | `float` | `必須` |
| `average_relaxation_time_fs` | `float` | `必須` |
| `hall_factor` | `float` | `必須` |
| `hall_coefficient_cm3_c` | `float` | `必須` |
| `classical_hall_coefficient_cm3_c` | `float` | `必須` |
| `hall_density_cm3` | `float` | `必須` |
| `hall_mobility_cm2_v_s` | `float` | `必須` |

**メソッド／プロパティ**

#### method `HallProperties.as_dict`

```python
def as_dict(self) -> dict[str, float]
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

## `tktransport.single_carrier`

ソース: `tktransport/single_carrier.py`

Single-parabolic-band transport and Hall properties.

### class `SingleParabolicBand`

Single isotropic parabolic band.

Parameters
----------
effective_mass:
    Density-of-states effective mass in units of the free-electron mass.
band_edge_ev:
    Absolute conduction- or valence-band edge in eV.  The core methods use
    the carrier reduced chemical potential ``eta``: ``(EF-EC)/kBT`` for
    electrons and ``(EV-EF)/kBT`` for holes.

**データクラス相当の初期化フィールド**

```python
SingleParabolicBand(effective_mass: float, band_edge_ev: float = 0.0)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `effective_mass` | `float` | `必須` |
| `band_edge_ev` | `float` | `0.0` |

**メソッド／プロパティ**

#### method `SingleParabolicBand.effective_density_of_states`

```python
def effective_density_of_states(self, temperature: float) -> float
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SingleParabolicBand.density_of_states_prefactor`

```python
def density_of_states_prefactor(self) -> float
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SingleParabolicBand.reduced_chemical_potential_ev`

```python
def reduced_chemical_potential_ev(eta: float, temperature: float) -> float
```

Return ``eta*kBT`` in eV using the carrier-band convention.

#### method `SingleParabolicBand.eta_from_fermi_level`

```python
def eta_from_fermi_level(self, fermi_level_ev: float, temperature: float, charge_sign: int) -> float
```

Convert an absolute Fermi level to carrier ``eta``.

For electrons (``charge_sign=-1``), eta=(EF-EC)/kBT.
For holes (``charge_sign=+1``), eta=(EV-EF)/kBT.

#### method `SingleParabolicBand.fermi_level_from_eta`

```python
def fermi_level_from_eta(self, eta: float, temperature: float, charge_sign: int) -> float
```

Convert carrier ``eta`` to an absolute Fermi level in eV.

#### method `SingleParabolicBand.carrier_density`

```python
def carrier_density(self, eta: float, temperature: float) -> float
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SingleParabolicBand.calculate_transport_properties`

```python
def calculate_transport_properties(self, eta: float, temperature: float, scattering: ScatteringModel, lattice_thermal_conductivity: float = 0.0) -> TransportProperties
```

Calculate SPB transport coefficients for a dimensionless ``eta``.

Units are encoded in the result field names.  The Seebeck and Hall
signs are controlled by ``scattering.charge_sign``.

#### method `SingleParabolicBand.calculate_transport_from_fermi_level`

```python
def calculate_transport_from_fermi_level(self, fermi_level_ev: float, temperature: float, scattering: ScatteringModel, lattice_thermal_conductivity: float = 0.0) -> TransportProperties
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SingleParabolicBand.calculate_hall_properties`

```python
def calculate_hall_properties(self, eta: float, temperature: float, scattering: ScatteringModel) -> HallProperties
```

Calculate single-carrier Hall properties for dimensionless ``eta``.

#### method `SingleParabolicBand.calculate_hall_from_fermi_level`

```python
def calculate_hall_from_fermi_level(self, fermi_level_ev: float, temperature: float, scattering: ScatteringModel) -> HallProperties
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

#### method `SingleParabolicBand.seebeck_nondegenerate_uv_k`

```python
def seebeck_nondegenerate_uv_k(self, carrier_density_cm3: float, temperature: float, scattering: ScatteringModel) -> float
```

Non-degenerate Seebeck approximation in microvolt/K.

#### method `SingleParabolicBand.seebeck_degenerate_uv_k`

```python
def seebeck_degenerate_uv_k(self, carrier_density_cm3: float, temperature: float, scattering: ScatteringModel) -> float
```

Degenerate Seebeck approximation in microvolt/K.

#### method `SingleParabolicBand.approximate_lorenz_number_from_seebeck`

```python
def approximate_lorenz_number_from_seebeck(seebeck_uv_k: float) -> float
```

Empirical Lorenz-number approximation in W ohm K^-2.

This preserves the approximation used by the original program.
The magnitude is used so that electron and hole inputs give the same
Lorenz estimate.

## `tktransport.sweep`

ソース: `tktransport/sweep.py`

Convenience functions for eta sweeps.

### class `TransportSweep`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**データクラス相当の初期化フィールド**

```python
TransportSweep(eta: np.ndarray, reduced_chemical_potential_ev: np.ndarray, carrier_density_cm3: np.ndarray, conductivity_s_cm: np.ndarray, mobility_cm2_v_s: np.ndarray, relaxation_time_at_fermi_fs: np.ndarray, average_relaxation_time_fs: np.ndarray, seebeck_uv_k: np.ndarray, seebeck_nondegenerate_uv_k: np.ndarray, seebeck_degenerate_uv_k: np.ndarray, electronic_thermal_conductivity_w_m_k: np.ndarray, total_thermal_conductivity_w_m_k: np.ndarray, lorenz_number_w_ohm_k2: np.ndarray, approximate_lorenz_number_w_ohm_k2: np.ndarray, power_factor_w_m_k2: np.ndarray, power_factor_uw_cm_k2: np.ndarray, zt: np.ndarray)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `eta` | `np.ndarray` | `必須` |
| `reduced_chemical_potential_ev` | `np.ndarray` | `必須` |
| `carrier_density_cm3` | `np.ndarray` | `必須` |
| `conductivity_s_cm` | `np.ndarray` | `必須` |
| `mobility_cm2_v_s` | `np.ndarray` | `必須` |
| `relaxation_time_at_fermi_fs` | `np.ndarray` | `必須` |
| `average_relaxation_time_fs` | `np.ndarray` | `必須` |
| `seebeck_uv_k` | `np.ndarray` | `必須` |
| `seebeck_nondegenerate_uv_k` | `np.ndarray` | `必須` |
| `seebeck_degenerate_uv_k` | `np.ndarray` | `必須` |
| `electronic_thermal_conductivity_w_m_k` | `np.ndarray` | `必須` |
| `total_thermal_conductivity_w_m_k` | `np.ndarray` | `必須` |
| `lorenz_number_w_ohm_k2` | `np.ndarray` | `必須` |
| `approximate_lorenz_number_w_ohm_k2` | `np.ndarray` | `必須` |
| `power_factor_w_m_k2` | `np.ndarray` | `必須` |
| `power_factor_uw_cm_k2` | `np.ndarray` | `必須` |
| `zt` | `np.ndarray` | `必須` |

### class `HallSweep`

_ソース内docstringはありません。シグネチャと実装を参照してください。_

**データクラス相当の初期化フィールド**

```python
HallSweep(eta: np.ndarray, reduced_chemical_potential_ev: np.ndarray, carrier_density_cm3: np.ndarray, conductivity_s_cm: np.ndarray, drift_mobility_cm2_v_s: np.ndarray, average_relaxation_time_fs: np.ndarray, hall_factor: np.ndarray, hall_coefficient_cm3_c: np.ndarray, classical_hall_coefficient_cm3_c: np.ndarray, hall_density_cm3: np.ndarray, hall_mobility_cm2_v_s: np.ndarray)
```

**フィールド**

| 名前 | 型 | 既定値 |
|---|---|---|
| `eta` | `np.ndarray` | `必須` |
| `reduced_chemical_potential_ev` | `np.ndarray` | `必須` |
| `carrier_density_cm3` | `np.ndarray` | `必須` |
| `conductivity_s_cm` | `np.ndarray` | `必須` |
| `drift_mobility_cm2_v_s` | `np.ndarray` | `必須` |
| `average_relaxation_time_fs` | `np.ndarray` | `必須` |
| `hall_factor` | `np.ndarray` | `必須` |
| `hall_coefficient_cm3_c` | `np.ndarray` | `必須` |
| `classical_hall_coefficient_cm3_c` | `np.ndarray` | `必須` |
| `hall_density_cm3` | `np.ndarray` | `必須` |
| `hall_mobility_cm2_v_s` | `np.ndarray` | `必須` |

### function `eta_grid`

```python
def eta_grid(xmin: float, xmax: float, count: int) -> np.ndarray
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `calculate_transport_sweep`

```python
def calculate_transport_sweep(band: SingleParabolicBand, scattering: ScatteringModel, temperature: float, eta_values: np.ndarray, lattice_thermal_conductivity: float = 0.0) -> TransportSweep
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_

### function `calculate_hall_sweep`

```python
def calculate_hall_sweep(band: SingleParabolicBand, scattering: ScatteringModel, temperature: float, eta_values: np.ndarray) -> HallSweep
```

_ソース内docstringはありません。シグネチャと実装を参照してください。_
