Examples

1. BGK1D explicit (torch)

from kineticEQ import Config, Engine, BGK1D

cfg = Config(
    model="BGK1D1V",
    scheme="explicit",
    backend="torch",
    device="cpu",
    dtype="float64",
    use_tqdm="false",
    model_cfg=BGK1D.ModelConfig(
        grid=BGK1D.Grid1D1V(nx=256, nv=128, Lx=1.0, v_max=10.0),
        time=BGK1D.TimeConfig(dt=5e-6, T_total=5e-4),
        params=BGK1D.BGK1D1VParams(tau_tilde=5e-5),
    ),
)

Engine(cfg).run()

2. BGK1D implicit (cpu_kernel)

from kineticEQ import Config, Engine, BGK1D

cfg = Config(
    model="BGK1D1V",
    scheme="implicit",
    backend="cpu_kernel",
    device="cpu",
    dtype="float64",
    model_cfg=BGK1D.ModelConfig(
        grid=BGK1D.Grid1D1V(nx=257, nv=129, Lx=1.0, v_max=10.0),
        time=BGK1D.TimeConfig(dt=5e-5, T_total=5e-3),
        params=BGK1D.BGK1D1VParams(tau_tilde=5e-7),
        scheme_params=BGK1D.implicit.Params(
            picard_iter=200,
            picard_tol=1e-6,
            abs_tol=1e-13,
            conv_type="w",
            aa_enable=True,
        ),
    ),
)

Engine(cfg).run()

3. BGK1D implicit (cuda_kernel + AA + CNN warm-start)

from kineticEQ import Config, Engine, BGK1D

cfg = Config(
    model="BGK1D1V",
    scheme="implicit",
    backend="cuda_kernel",
    device="cuda",
    dtype="float64",
    model_cfg=BGK1D.ModelConfig(
        grid=BGK1D.Grid1D1V(nx=512, nv=256, Lx=1.0, v_max=10.0),
        time=BGK1D.TimeConfig(dt=5e-5, T_total=5e-3),
        params=BGK1D.BGK1D1VParams(tau_tilde=5e-7),
        scheme_params=BGK1D.implicit.Params(
            picard_iter=400,
            picard_tol=1e-7,
            abs_tol=1e-13,
            conv_type="f",
            aa_enable=True,
            aa_m=6,
            moments_cnn_modelpath="/path/to/checkpoint.pt",
            warm_delta_weight_mode="w_grad",
        ),
    ),
)

Engine(cfg).run()

4. BGK1D holo (cuda_kernel)

from kineticEQ import Config, Engine, BGK1D

cfg = Config(
    model="BGK1D1V",
    scheme="holo",
    backend="cuda_kernel",
    device="cuda",
    dtype="float64",
    model_cfg=BGK1D.ModelConfig(
        grid=BGK1D.Grid1D1V(nx=257, nv=129, Lx=1.0, v_max=10.0),
        time=BGK1D.TimeConfig(dt=2e-5, T_total=2e-3),
        params=BGK1D.BGK1D1VParams(tau_tilde=1e-5),
        scheme_params=BGK1D.holo.Params(
            ho_iter=8,
            ho_tol=1e-5,
            lo_iter=16,
            lo_tol=1e-5,
            Con_Terms_do=True,
            flux_consistency_do=True,
        ),
    ),
)

Engine(cfg).run()

5. 解析ユーティリティの利用

from kineticEQ.analysis.BGK1D.benchmark import run_benchmark
from kineticEQ.analysis.BGK1D.plotting import plot_timing_benchmark

result = run_benchmark(
    bench_type="time",
    scheme="explicit",
    backend="cuda_kernel",
    device="cuda",
    nx_list=[65, 129, 257],
    nv_list=[65, 129, 257],
)
plot_timing_benchmark(result, out_dir="./results/benchmarks")

6. 現時点で避けるべき構成

  • model="BGK2D2V": state 生成は可能でも Engine 実行経路が未完成である。
  • BGK1D + cuda_kernel/cpu_kernel + dtype="float32": binding 側 dtype 制約により失敗する。