メインコンテンツへスキップ
直接エントリは、計算もフィッティングも行わずにパラメータ値を供給する要素です。2 つの形態があります。
  • iws.direct_entries.DirectEntry — 自分で指定したフラットな値の dict。
  • iws.direct_entries.* 関数スキーマのサブクラス(例: LandesfeindElectrolyte)— 文献由来のパラメータセット。
電解液パラメータ化の物理的背景と選択基準は、電解液直接エントリ (英語ガイド) および 電解液輸送 (英語ガイド) を参照してください。

カスタム DirectEntry

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自動シリアライズされません。明示的にラップする必要があります。
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) の κ(ce)\kappa(c_e)De(ce)D_e(c_e)χ\chit+0t_+^0(等温)
iws.direct_entries.LandesfeindElectrolyte(c_e=..., system=...)Landesfeind & Gasteiger (2019) の温度・濃度依存パラメータ一式
iws.direct_entries.ArrheniusElectrolyteDiffusivity()参照 De(ce)D_e(c_e) にアレニウス温度依存性を乗算
iws.direct_entries.ArrheniusElectrolyteConductivity()参照 κ(ce)\kappa(c_e) にアレニウス温度依存性を乗算
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)" のいずれかを指定します。

区分的補間直接エントリ

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

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

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

電解液直接エントリ (理論)

4 つの輸送物性の物理 (英語ガイド)。

パイプライン概要

直接エントリがパイプライン全体でどう位置付くか。