API リファレンス
トップレベル export
from kineticEQ import Config, Engine, run, Result, BGK1D, BGK2D2V
BGK1D と BGK2D2V は、それぞれモデル固有の dataclass 群を束ねた namespace 的モジュールとして振る舞う。
Config
Config(
model: str = "BGK1D1V",
scheme: str = "explicit",
backend: str = "torch",
device: str = "cuda",
dtype: str = "float64",
log_level: str = "info",
model_cfg: Any | None = None,
use_tqdm: str = "true",
)
主要フィールド
model:BGK1D1V/BGK2D2Vscheme:explicit/implicit/holobackend:torch/cuda_kernel/cpu_kerneldevice:cuda/cpu/mpsdtype:float32/float64model_cfg: モデル固有 dataclassuse_tqdm:true/false
alias
model:bgk1d,bgk1d1v,bgk2d2vscheme:exp,imp,hlbackend:pytorch,cuda_backend,cpu_backenddtype:fp32,fp64
アクセサ
Config は正規化済み Enum に対する以下のプロパティを持つ。
model_namescheme_namebackend_namedtype_namelog_level_nameuse_tqdm_nameuse_tqdm_boolas_dict
Engine
Engine(config: Config, apply_logging_flag: bool = True)
役割
model_cfgの補完と型検証scheme_paramsの既定値補完- logger 設定
- device 検証
- state 構築
- stepper 構築
run
engine.run() -> Result
run() は model_cfg.time.n_steps 回の時間発展を実行し、progress bar と benchlog を扱う。stepper が benchlog 属性を持つ場合、一定間隔で進捗出力に反映される。
run
run(config: Config) -> Result
Engine(config).run() の薄いショートカットである。
Result
@dataclass
class Result:
metrics: dict[str, float] | None = None
payload: dict[str, Any] | None = None
現時点ではコンテナのみが定義されており、トップレベル実行結果の自動格納は未実装である。
BGK1D パラメータ
BGK1D.ModelConfig
BGK1D.ModelConfig(
grid: Grid1D1V = Grid1D1V(),
time: TimeConfig = TimeConfig(),
params: BGK1D1VParams = BGK1D1VParams(),
initial: InitialCondition1D = InitialCondition1D(),
scheme_params: Any = None,
)
BGK1D.Grid1D1V
nx: int = 124nv: int = 64Lx: float = 1.0v_max: float = 10.0
BGK1D.TimeConfig
dt: float = 5e-4T_total: float = 0.05n_steps = ceil(T_total / dt)
BGK1D.BGK1D1VParams
tau_tilde: float = 0.5
BGK1D.InitialCondition1D
initial_regions: tuple[Any, ...]- 各要素は
x_range,n,u,Tを持つ dict もしくは同等属性をもつ object
BGK1D.explicit.Params
- 追加パラメータなし
BGK1D.implicit.Params
picard_iter: int = 16picard_tol: float = 1e-4abs_tol: float = 1e-16conv_type: str = "f"aa_enable: bool = Falseaa_m: int = 6aa_beta: float = 1.0aa_stride: int = 1aa_start_iter: int = 2aa_reg: float = 1e-10aa_alpha_max: float = 50.0warm_enable: bool | None = Nonemoments_cnn_modelpath: str | None = Nonewarm_delta_weight_mode: str = "none"warm_delta_weight_floor: float = 0.2warm_delta_weight_center: float = 0.5warm_delta_weight_sharpness: float = 10.0warm_delta_weight_sigma: float = 3.0warm_delta_exclude_cells: int = 0
BGK1D.holo.Params
ho_iter: int = 8ho_tol: float = 1e-4ho_abs_tol: float = 1e-12lo_iter: int = 16lo_tol: float = 1e-4lo_abs_tol: float = 1e-12Con_Terms_do: bool = Trueflux_consistency_do: bool = True
BGK2D2V パラメータ
BGK2D2V.Grid2D2V
nx: int = 124ny: int = 124nx_v: int = 16ny_v: int = 16Lx: float = 1.0Ly: float = 1.0v_max: float = 10.0
BGK2D2V.TimeConfig
dt: float = 5e-3T_total: float = 0.05n_steps = int(T_total / dt)
BGK2D2V.BGK2D2VParams
tau_tilde: float = 0.5
注記:
- 現行
BGK2D2V.ModelConfigにはscheme_paramsが存在しないため、Engine経路では未対応である。
実務上の注意
BGK1D + cuda_kernelは fused binding の都合でfloat64を前提に考えるべきである。BGK1D + cpu_kernelは implicit 専用である。BGK2D2Vは API 名としては公開されているが、実行可能モデルとしては扱わない方がよい。