> ## Documentation Index
> Fetch the complete documentation index at: https://docs.ionworks.com/llms.txt
> Use this file to discover all available pages before exploring further.

# 直接エントリ

> ionworks-schema の直接エントリで、文献由来のパラメータセットをパイプラインに投入します

直接エントリは、計算もフィッティングも行わずにパラメータ値を供給する要素です。2 つの形態があります。

* **`iws.direct_entries.DirectEntry`** — 自分で指定したフラットな値の dict。
* **`iws.direct_entries.*`** 関数スキーマのサブクラス(例: `LandesfeindElectrolyte`)— 文献由来のパラメータセット。

電解液パラメータ化の物理的背景と選択基準は、[電解液直接エントリ (英語ガイド)](/guide/pipelines/direct-entries/electrolyte) および [電解液輸送 (英語ガイド)](/guide/modeling/electrolyte-transport) を参照してください。

## カスタム DirectEntry

```python theme={null}
import ionworks_schema as iws

known = iws.direct_entries.DirectEntry(
    parameters={
        "Ambient temperature [K]": 298.15,
        "Nominal cell capacity [A.h]": 3.0,
        "Lower voltage cut-off [V]": 2.5,
        "Upper voltage cut-off [V]": 4.2,
    },
    source="manufacturer datasheet",
)

pipeline = iws.Pipeline({"known": known})
```

`parameters` には float、配列、および pybamm でシリアライズ可能なシンボルを指定できます。

### `pybamm.ParameterValues` を介した callable パラメータ

濃度や温度に依存する補間関数など、callable をパラメータとして渡したい場合は、`pybamm.ParameterValues` でラップしてから渡してください。`pybamm.ParameterValues` 独自のシリアライズによって、各 callable がサーバ側で再構築できる記号形式に変換されます。callable を含む素の `dict` は**自動シリアライズされません**。明示的にラップする必要があります。

```python theme={null}
import numpy as np
import pybamm
import ionworks_schema as iws

x = np.linspace(100.0, 3000.0, 6)

pv = pybamm.ParameterValues(
    {
        "Electrolyte conductivity [S.m-1]": lambda c_e, T: pybamm.Interpolant(
            x, 0.1 + 1e-3 * x, c_e, name="conductivity"
        ),
        "Electrode height [m]": 0.1,
    }
)

known = iws.direct_entries.DirectEntry(parameters=pv, source="custom fit")
```

補間 lambda のシグネチャは厳密に `(c_e, T)`(または対応する pybamm 入力変数)としてください。ルックアップ配列や名前などの追加入力は、デフォルト引数ではなくクロージャで取り込みます。デフォルト引数はシリアライズ時に関数入力として推論されてしまい、再構築に失敗します。

## 電解液の直接エントリ

| スキーマ                                                             | 設定内容                                                         |
| ---------------------------------------------------------------- | ------------------------------------------------------------ |
| `iws.direct_entries.ConstantElectrolyte(c_e=...)`                | 初期塩濃度のみ                                                      |
| `iws.direct_entries.NymanElectrolyte(c_e=...)`                   | Nyman ら (2008) の $\kappa(c_e)$、$D_e(c_e)$、$\chi$、$t_+^0$(等温) |
| `iws.direct_entries.LandesfeindElectrolyte(c_e=..., system=...)` | Landesfeind & Gasteiger (2019) の温度・濃度依存パラメータ一式               |
| `iws.direct_entries.ArrheniusElectrolyteDiffusivity()`           | 参照 $D_e(c_e)$ にアレニウス温度依存性を乗算                                 |
| `iws.direct_entries.ArrheniusElectrolyteConductivity()`          | 参照 $\kappa(c_e)$ にアレニウス温度依存性を乗算                              |

```python theme={null}
import ionworks_schema as iws
from ionworks import Ionworks

electrolyte = iws.direct_entries.LandesfeindElectrolyte(
    c_e=1000.0,
    system="EC:EMC (3:7)",
)

pipeline = iws.Pipeline({"electrolyte": electrolyte})

client = Ionworks()
submission = client.pipeline.create(pipeline)
```

`system` は `"EC:DMC (1:1)"`、`"EC:EMC (3:7)"`、`"EMC:FEC (19:1)"` のいずれかを指定します。

## マテリアルデータセットから電解液輸送を構築

測定済みの電解液輸送物性(導電率、拡散係数、輸率、熱力学因子)の濃度依存データを [マテリアル物性データセット](/ja/data/materials) として保有している場合、`client.electrolyte.transport_from_dataset()` を使うとそのデータセットを濃度依存関数の `pybamm.ParameterValues` に変換でき、そのまま `DirectEntry` に投入できます。

各物性は、パラメータごとに次の 2 通りのいずれかで表現できます。

* `"interpolant"`(デフォルト) — 測定点をテーブル化した `pybamm.Interpolant`(線形外挿)。
* `"landesfeind"` — その物性に対する等温の [Landesfeind & Gasteiger (2019)](https://doi.org/10.1149/2.0571912jes) 関数形を測定点にフィットしたもの。テーブル補間と異なり、フィットされた導電率および拡散係数の関数形は最小測定濃度を下回っても正かつ有限に保たれるため、電極近傍で電解液が枯渇する高レート DFN 解析でも数値安定性が維持されます。

```python theme={null}
from ionworks import Ionworks
import ionworks_schema as iws

client = Ionworks()

params = client.electrolyte.transport_from_dataset(
    "dataset-uuid",
    forms={
        "Electrolyte conductivity [S.m-1]": "landesfeind",
        "Electrolyte diffusivity [m2.s-1]": "landesfeind",
        "Cation transference number": "interpolant",
    },
)

electrolyte = iws.direct_entries.DirectEntry(parameters=params, source="in-house measurements")
pipeline = iws.Pipeline({"electrolyte": electrolyte})

submission = client.pipeline.create(pipeline)
```

### 引数

| 引数                     | 説明                                                                                                                                                                                                                                                                                                                                                                               |
| ---------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| `dataset_id`           | 電解液濃度に対する輸送物性を保持する [マテリアル物性データセット](/ja/data/materials) の UUID。                                                                                                                                                                                                                                                                                                                   |
| `forms`                | pybamm パラメータ名から `"interpolant"` または `"landesfeind"` への省略可能なマッピング。指定されなかったパラメータは `"interpolant"` がデフォルトになります。                                                                                                                                                                                                                                                                     |
| `columns`              | pybamm パラメータ名からデータセットの列名への省略可能なマッピング。デフォルトは `{"Electrolyte conductivity [S.m-1]": "Electrolyte conductivity", "Electrolyte diffusivity [m2.s-1]": "Electrolyte diffusivity", "Cation transference number": "Transference number"}`。データセットに熱力学因子が含まれる場合は、例えば `{"Thermodynamic factor": "My TDF column"}` のようにここに追加してください(キーは pybamm パラメータ名 `Thermodynamic factor`、値はデータセットの列名です)。 |
| `concentration_column` | データセット内の電解液濃度列(mol.m-3)の名称。デフォルトは `Electrolyte concentration`。                                                                                                                                                                                                                                                                                                                   |

`"landesfeind"` 形式は `Electrolyte conductivity [S.m-1]`、`Electrolyte diffusivity [m2.s-1]`、`Cation transference number`、`Thermodynamic factor` で利用可能です。データセットは等温として扱われ、フィットされた各関数形は濃度のみに依存します。

## 区分的補間直接エントリ

SOC または温度に依存するパラメータには、`iws.direct_entries.PiecewiseInterpolation1D` / `PiecewiseInterpolation2D` を使用します。[計算 → 区分的補間](/ja/pipelines/calculations/piecewise) を参照してください。

## 直接エントリの係数をフィッティング

`LandesfeindElectrolyte` 内部の輸送物性係数は、フィット未知数として上書きできるよう名前付きパラメータとして公開されています。直接エントリをパイプラインに置き、後段の [`DataFit`](/ja/pipelines/data-fitting/overview) で同じパラメータ名を参照してください — 公表値がベースとなり、上書きされた係数を最適化器が探索します。

<CardGroup cols={2}>
  <Card title="電解液直接エントリ (理論)" icon="flask" href="/guide/pipelines/direct-entries/electrolyte">
    4 つの輸送物性の物理 (英語ガイド)。
  </Card>

  <Card title="パイプライン概要" icon="diagram-project" href="/ja/pipelines/overview">
    直接エントリがパイプライン全体でどう位置付くか。
  </Card>
</CardGroup>
